Forum: Mikrocontroller und Digitale Elektronik Timer Atmega2560 nur ein Durchlauf


von Juli D. (juli_d)


Lesenswert?

Hi Leute,

Ich hänge seit einigen Stunden an einem Timer im Atmega2560. Im Internet 
habe ich auch einiges gefunden, aber meinen Fehler bekomme ich nicht 
weg.. der Timer soll im ctc Modus laufen und jede Sekunde einen neuen 
Pixel in eine Reihe zeichnen.

meine Timer Einstellung ist:

  TCCR4B|= (1<<WGM42) | (1<<CS42) | (1<<CS40); //prescaler 1024
  TIMSK4|= (1<<OCIE4A);
  OCR4A=15625;
  sei();

Meine ISR lautet:
ISR(TIMER4_COMPA_vect)
{
  count++; if(count>100)count=0;

  myGLCD.drawPixel(count,10);
}

Das Problem: der Timer geht genau einmal in die ISR..
Hat jemand ne Idee???

von Juli D. (juli_d)


Lesenswert?

Das Problem wurde gelöst und falls Jemand ein ähnliches Problem haben 
sollte:
Ich hatte die Variablen auf die ich in der ISR zugreife "normal" global 
geklariert. Das sieht man oben im Sketch nicht (ich dachte halt es liegt 
am setup). Das lässt dem Compiler wohl die Möglichkeit offen den 
Variablen einen Gültigkeitsbereich zuzuweisen den er für angemessen 
hält. Der Compiler will optimieren und macht alles kaputt :D:D .... 
Lösung ist die Variable als Volatile zu deklarieren. Dann kann sie immer 
und überall geändert werden.
lg

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
Noch kein Account? Hier anmelden.