Sen förstår jag inte varför du använder PWM. Är det inte enklare och använda CTC? Vidare, det är riskabelt att skriva nya värden till TCNT1 om man nu vill att timern ska gå som tänkt.
Precis som cykze säger så är det också missledande att använda TOIE0 då detta avser timer0. Funktionen är dock densamma.
cykze:
- sec är deklarerad som uint32_t med det kan väl inte påverka timern.
- Naturligtvis ska det vara TOEI1 (klipp och klistra kan ställa till mycket oreda).
syltkaka:
- Hur nära? Jag har inte suttit och testat i ngn större utsträckning men det är i alla fall så pass fel att jag "känner" att siffran borde slagit om tidigare. 2-3 ggr kanske.
- Använder jag PWM det var mer än jag visste och vad är CTC (är inte det en tillverkare av vedpannor)
Jag är helt grön på AVR och tänkte försöka göra "ngt riktigt" istället för alla dessa "Hello world" som man ska börja med. Dessutom tror jag att jag är förbi det eftersom jag kan skriva ut datum och tid på LCD:n. Fast nu är ju tiden ur led...
> sec är deklarerad som uint32_t med det kan väl inte påverka timern.
Man bör deklarera alla variabler som används både innefrån interrupt-rutiner och utanför som "volatile". Detta för att kompilatorn inte ska optimera bort dom på något sätt. Dessutom får du tänka dig för när du delar variabler mellan interrupt och "resten". Dvs så att en interrupt inte kan inträffa när variabeln används någonstans i programmet. En interrupt kan ju inträffa när som helst.
Kolla sidan 129 i databladet. Där finns en tabell som visar vilka timer-lägen som finns. Det du vill ha är CTC. Men då får du ändra från TOIE1 till OCIE1A och från SIG_OVERFLOW1 till TIMER1_COMPA_vect. Sen ändrar du i OCR1A istället för TCNT1, och tar bort minustecknet framför 625. TCNT-raden i interrupt-rutinen ska bort. CTC nollställer TCNT automatiskt.
Något sånt här borde det bli. Jag vet inte frekvens du kör AVR:en från, så om tiden blir rätt vet jag inte.
Nu börjar(?) jag att få lite bättre koll på det här men min tid verkar inte rätt.
Alltså är min gissning om frekvensen inte riktig. Alltså ställer jag några dumma(?) frågor i form av påståenden.
Jag kör alltså på STK-500. Alla "jumprar" står i samma läge som vid köpet.
- Det betyder att klockan till timern snurrar med processorns default hastighet?
- Klockans default hastighet är 8 MHz?
Jag antar att ngt i ovanstående resonemang är fel men vad?
Jag har en gissning.
Jag tror att du inte klickat i internal RC-oscillator(8MHz), utan att uCn går på STK500ns egen oscillator(som är default på 3,686MHz).
Hej!
Efter att först låtit den snurra ett tag på "hög" fart utan prescaler med parallell tidtagning och lite räknande kom jag fram till ~1MHz. I praktiken går den lite fortare. Sedan efter syltkakas svar så tittade jag i manualen och såg det jag missat förra gången. Ja jag vet j****a blindstyre. Default är 8Mhz:en neddelad till 1MHz.
Tack för hjällpen alla!!!!
/Erik
P.S
Det blir säkert inte den sista dumma frågan.
D.S