pic dimmer?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK, jag ska ta lite mer tid (om inte någon annan hinner före :-) ).
Just nu är det Miss Marple och i morgon har jag en "mini-semester"
(något medeltidsjippo i Vadstena). Men men... :-)

Banksel, *inte* blanksel (får du inget fel ???).

Du måste räkna lite på det, prescaler, tmr0 o.s.v tillsammans...

Du behöver absolut inte kopiera hela kapirel från databladet, jag har det också.
Ange bara sida, kapitel och citera eventuell mening som är oklar...
basmicke
Inlägg: 63
Blev medlem: 11 juli 2007, 15:25:04
Ort: Munkfors

Inlägg av basmicke »

Jag komplimerar inte min kod är inte hemma så jag komplimerar inte på deras dator ska mer tänka på å göra det när jag kommer hem. Men sen så tänkte jag inte komplimera för ens programmet är färdigt.
Jag vet att det finns simulatorer och har en hemma, kommer inte ihår vad den heter men den finns på microchips hemsida.
Ok. det är bara 1 stort problem, hur jag ska räkna men jag ska kolla databladet å se om jag kan hitta något.
JO det kappitlet om Oscillator konfigerna fattade jag inte mycket av. jag förstår det att om man har en keramisk "RESONATORS " är det en hastighet och om man har en "CRYSTAL OSCILLATOR" är det en annan. Eller?
Och sen kunde man välja hastiget genom det här HS och alla dem "funktionerna". Sen så är det nog lite oklart än har inte orkat å läst igenom all, men ska nog göra det.
Det känns mycket positivare för mig nu när du ill hjälpa mig lite mer. Jag tycker personligen att det är enklare att få det förklarat för sig på svenska och med egna ord än å försöka förstå allt i databladet. Men jag ska skärpa mig lite och läsa mer om timer modulerna och lite annat som man kanske behöver.
basmicke
Inlägg: 63
Blev medlem: 11 juli 2007, 15:25:04
Ort: Munkfors

Inlägg av basmicke »

men du får ha det så trevligt på "mini-semestern".. så hörs vi senare..
basmicke
Inlägg: 63
Blev medlem: 11 juli 2007, 15:25:04
Ort: Munkfors

Inlägg av basmicke »

Jo om du hinner kolla det här innan du åker på semester, så kanske du skullekunna svara på en fråga som jag inte blir klok på.
Vad är en prescaler?
Kan inte lista ut vad det är, har kollat databladet men blir inget klokare på det :?
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Prescaler är en delare (scaler) Pre att den ligger "före" i kedjan (uttrycket postscaler finns också). På picar så kan man antigen använde den till att förlänga WDT-perioden eller dela ner räknarna så att de får längre räknarområde. Står bra i databladet, men obervera att 16-serien är lite rolig då man bara har en och man väljer mellan att ha den till WDT eller till TIMER
basmicke
Inlägg: 63
Blev medlem: 11 juli 2007, 15:25:04
Ort: Munkfors

Inlägg av basmicke »

Hittade den här länken när jag sökte på "prescaler".
http://www.md.kth.se/met/pdf/Mik/Timer.pdf
förklarade rätt så bra vad det betydde, och lite andra trevliga funktioner.
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Men varför läsa en massa obskyra länkar - svaren står i databladet..... Ett tips bara - följ råden för hur att assigna prescalern till TIMER för slippa risk för det händer skumma saker (om man kör med WDT).

Note: To avoid an unintended device RESET, the instruction sequence shown in the PICmicroTM Mid-Range MCU
Family Reference Manual (DS33023) must be executed when changing the prescaler assignment from
Timer0 to the WDT. This sequence must be followed even if the WDT is disabled.
basmicke
Inlägg: 63
Blev medlem: 11 juli 2007, 15:25:04
Ort: Munkfors

Inlägg av basmicke »

Ja vet. Men det står väll i databladet.

Kod: Markera allt

CLRWDT
BSF STATUS, RP0
MOVLW b'xxxx0xxx'
MOVWF OPTION_REG
BCF STATUS, RP0
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Yepp ;)

talar bara av erfarenhet - missade det en gång och fick ett skumt sytem....


En rolig sak med prescalern är att man kan räkna riktigt snabbt även vid lite lägre klockfrekvenser. Med bra insignaler kan man räkna upp till 50MHz och det kan ju vara lite coolt ibland ;) Bygga en 50MHz frekvensräknare med en 16Fxxx och en LCD, en pot och en konding är rätt coolt onekligen. Erkänner direkt att det finns bättre räknare och skall man bygga en snabb räknare är det ofta bättre med en separat snabb logikkrets som prescaler, men då är det ju också en till krets att cadda in och som drar ström och har sig...
basmicke
Inlägg: 63
Blev medlem: 11 juli 2007, 15:25:04
Ort: Munkfors

Inlägg av basmicke »

ok...
enligt databladet har man ju 3 timer tmr0,tmr1 och tmr2 men jag har ju använta alla 3, 2 till pwm modulen och en som ska räkna 100us och skapa en interupt signal, men jag ska ju har en som räknar ner till 0 på varje led och vid noll släcker den.
Och så tror jag att sodjan skrv något mer om en som skuller räkna ner huvud utgångarna eller ingångarna eller vad han skrev, ska kolla upp det.

Så hur ska jag kunna göra det?
basmicke
Inlägg: 63
Blev medlem: 11 juli 2007, 15:25:04
Ort: Munkfors

Inlägg av basmicke »

Sedan vill du ha t.ex 100 olika nivår, så då får vi en bas-räknare på
100 us.

Så var 100'de us så gör du följande :

1. Räka ner var och en av LED-räknarna, om någon blir "noll", släck
motsvarande LED.

2. Räkna ner huvud-räknaren, om den blir noll så återståll den till
100, ladda om alla LED-räknarna med resp "nivå" och tänd alla LED.

Enklast sätts en timer upp att genera ett interrupt var 100 us (ca,
det är inte speciellt kritiskt, så klart). Sedan går allt av sig själv,
så att säga...

Jag vet inte vilken hastighet du kör med, men vid 20 Mhz så är
100 us ca 500 instruktioner, vilket är *massor* av tid.
Ovanstående tar ca 40-50 instruktioner att göra...
Så skrev han att jag skulle göra men hur?
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

basmicke: Följde det inte med demo-kod med din velleman-programmerare? Tror det fanns ett demo där som blinkar en diod (iaf med min gammla velleman), varför använder du inte det demot och modifierar det så du dimmar dioden? Demot använder iofs inte hårdvaru timers, men jag tror att du lär dig mer om hur assembler-instruktionerna funkar om du börjar med det.

Du bör lära dig mer om bitar och bytes och filregister m.m. innan du ger dig på det du försöker nu.

. bitar och bytes finns en länk om här http://w3.msi.vxu.se/multimedia/km/dato ... Bytes.html eller här http://www.kjell.com/kjellfakta/bit_o_byte/

Att blinka en diod är ju grunden till att "dimma" eller PWM om man vill. Du blinkar den helt enkelt snabbare så ögat inte uppfattar att den blinkar (c.a. 50 - 100 ggr i sekunden) och varierar själva tiden den lyser proportionellt mot tiden den inte lyser. ju längre den lyser vid varje blink ju starkare uppfattar ögat att den lyser, och motsvarande ju kortare den lyser vid varje blink, ju svagare tycks den lysa.

När du fixat det på en diod kan du kanske börja fundera på timers och liknande.

Du måste bli så pass duktig på hur assembler fungerar så du kan översätta sodjans instruktioner ovan till ett assembler-program själv.


/Mats
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Nej nej nej...

För det som *jag* beskrev så behövs det *EN* *TIMER*.
Som jag *OCKSÅ* skrev så ska du *INTE* kalla de inbyggda timers
för "räknare", gör du det så rör du till det som du har gjort nu...

(Även om "counter" är ett sätt som dessa timers kan användas på, men
det är något helt annat än det vi talar om här...)

PWM styrningen köts av *EN* timer som ger grundklockan
(till exempel 100 us, men det beror ju bl.a på hur många olika
nivåer du vill ha i styrningen, och det är inte speciellt kritiskt heller,
välj ett värde som dels fungerar, dels är enkelt att konfigurera).

Sedan har du några *RÄKNARE*, en för varje led och en gemensam.
Dessa räknare är inget annat än vanliga variabler (register, bytes eller
vad du vill kalla dom).
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Jag tycker nog att Kaggen har en bra synpunkt. Sodjan och alla andra här är väldigt hjälpsamma, men när nästan varje svar ger tre nya följdfrågor istället för att komma vidare så känns det som att du försöker ta ett alldeles för stort steg. Gör som Kaggen säger och ge dig på något enklare tills du iallafall börjar lära dig hur grundfunktionerna fungerar.

Ge inte upp utan ta nya tag och ta en bit i taget så ska du se att det går mycket lättare! :wink:
basmicke
Inlägg: 63
Blev medlem: 11 juli 2007, 15:25:04
Ort: Munkfors

Inlägg av basmicke »

Ok jag började fundera..
Så om jag skulle välja värdet 100 på alla är det fel då?
Ok men en "räkanre" är alltså en variabel?
hur ska man skriva då för att få en "räknare"?
Hänger inte riktigt med på erat resonemang, så skulle villja ha ett exempel så man kan kolla lite på det om det är någon som har ork och tid att göra ett?
Skriv svar