Hi, ich möchte den 8bit timer in ctc modus betreiben, prescaler 1 leider stimmt was bei meinem code nicht, könnt ihr mir helfen? int sec=0; void inttimer() { TIMSK=(1<<OCIE0); OCR0=250; TCNT0=0; TCCR0=(1<<WGM01) | (1 << CS00); } ISR(TIMER0_COMPA_vect) { sec++; } int main() { inttimer(); sei(); while(1) { sec an 7 segmentanzeige ausgeben } }
es wird sec nicht an der segmentanzeige angezeigt Die funktion zur ansteuerung der segmente hab ich ausgiebig getestet und hat keinen fehler
kann es sein, dass du beim Kompilieren eine Warnung bekommst und diese ignorierst?
Was gibt dein Compiler denn für Meldungen 'raus?
>int main()
kommt mir ohne return etwas merkwürdig vor.
Auch die leere Klammer dürfte so nicht funktionieren.
Probier's mal mit 'int main (void)'
und am Ende der Funktion mit 'return;'
Hab ich im nur hier vergessen Die Sekunden werden einfach nicht an der Segment Anzeige Angezeigt hab schon static sec und volatile probiert wird aber immer 0 ausgegeben.
Folgende warnungen:
TIMER0_COMPA_vect appears to be a misspelled signal handler
bei zeile
ISR(TIMER0_COMPA_vect)
suggest parentheses around assignment used as truth value
bei zeile
if (sec=0)
>if (sec=0) hab ich korrigiert zu if (sec==0)
dann hatte ich keine fehler mehr funktioniert aber noch immer nicht.
frank wrote: > TIMER0_COMPA_vect appears to be a misspelled signal handler > bei zeile > ISR(TIMER0_COMPA_vect) und warum ignorierst du diese Warnung einfach? Da steht doch genau der (oder ein) Fehler...
frank wrote: > wie kann ich ihn beheben? Indem du im Datenblatt oder der AVR-Libc-Doku nachschaust, wie der Interrupt richtig heißt, und den Namen im deinem Programm entsprechend korrigierst.
der Timer0 kennt nur einen Compare, siehe iom32.h, richtig wäre : /* Timer/Counter0 Compare Match */ #define TIMER0_COMP_vect _VECTOR(10) der Timer1 kennt dagegen COMPA und COMPB, siehe Datenblatt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.