Timer Atmega2560 nur ein Durchlauf

OP #4418171
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???
OP #4469124
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren