Hallo liebe Mikrocontrollergemeinde, ich habe mal vor Jahren ein bisschen mit meinem ATMega16 rumgespielt. Jetzt hat es mich wieder gepackt und ich möchte wieder angreifen. Jedoch gabs gleich am ersten Tag nen bösen Dämpfer da ich anscheinend zu blöde bin den 16-Bit Timer von meinem Mega16 anzureissen :-( Der scheint einfach nicht loszählen zu wollen. Kann mir einer sagen was ich vergessen habe oder falsch gemacht habe? Vielen Dank! Holger #include <avr/io.h> #include <avr/interrupt.h> int i=0; ISR( TIMER1_OVF_vect ) { i++; } int main (void) { DDRC=0xFF; sei(); TCNT1H= 0xF0; TCNT1L= 0x00; TCCR1A=0x00; // no compare/capture/pwm mode TCCR1B=0x05; // start counter; prescale ck/1024 TIMSK |= (1<<TOIE1); while(1) { PORTC=i; if (i>255) { i=0; } } } P.S.: Ich habe an PORTC eine LED-Leiste dran. Und die zeigt immer nur genau den PIN an mit dem ich i initialisiere.
Holger schrieb: > Kann mir einer sagen was ich vergessen habe oder falsch gemacht habe? Vergessen: volatile. Falsch: Keine Ahnung. So etwas wie: >TCCR1B=0x05; musst du selber nachprüfen. Holger schrieb: > TCNT1H= 0xF0; > TCNT1L= 0x00; Das ist zwar nicht falsch, aber unnötig. >TCNT1 = 0xF000; tut es auch. Oliver
Holger schrieb: > ich habe mal vor Jahren ein bisschen mit meinem ATMega16 rumgespielt. Nachtrag: Vor vielen Jahren war der gcc wesentlich toleranter gegenüber einem vergessenen "volatile". Es kann also gut sein, daß dein Beispiel mit einem alten gcc funktioniert. Oliver
Hallo Oliver, danke für die rasche Antwort und dem Tip mit dem Register :-) Muss ich beim "i" ein volatile davorsetzen? Sorry, bin nicht so der C-Gott :-| Viele Grüße Holger
arbeite doch einfach mal das Tutorial hier durch...
Holger schrieb: > Muss ich beim "i" ein volatile davorsetzen? genau. guggst du auch hier: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Datenaustausch_mit_Interrupt-Routinen Oliver
Bei mir wills einfach nicht laufen ( JA-ich hab das tut gelesen und och viel mehr ;) ) welchen gcc benutzt du denn ?? AVR-Toolchain oder WinAvr ? Fred
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.