ATMega schaltet sich ab.

OP #4887623
Lesenswert?

Guten Abend,
Ich habe das Problem das ich das Programm starten kann und es dan auch 
läuft.
Aber nach ein paar Minuten Quittiert der Controller seinen Dienst. Das 
Dispaly ist aus und
Sprich er reagiert auf nichts mehr nicht auf Reset Taster noch auf 
Spannung wegnehmen und wieder anlegen.

Ich muss dann immer einen alten Software Stand auf spielen und danach 
kann ich dieses Programm wieder auf spielen der Fehler bleibt aber.

Hier mein Code:

#include <avr/io.h>
#include <avr/interrupt.h>

int overflowCounter = 0 ;
char text[20];

int main(void)
{
  TIMSK |= (1<<TOIE0);
  TCCR0 |= (1<<CS00)|(1<<CS02);

  sei();
  while (1)
  {  DOGM204_Clear_Display();

    _delay_ms(1000);
    DOGM204_Set_Cursor(1,1);
    sprintf(text,"COUNT: %i",overflowCounter );
    DOGM204_Write_Text(text, true);
  }
}
ISR(TIMER0_OVF_vect)
{
  overflowCounter++;
  DOGM204_Set_Cursor(1,1);
  sprintf(text,"COUNT: %i",overflowCounter );
  DOGM204_Write_Text(text, true);

  switch (overflowCounter)
    case 10:

    DOGM204_Set_Cursor(2,1);
    sprintf(text,"COUNT: %i",overflowCounter );
    DOGM204_Write_Text(text, true);

    overflowCounter = 0;
    break;

    default:
    break;
  }
}
(Firma: matzetronics) #4887637
Lesenswert?

Es ist keine gute Idee, im Hauptprogramm aufs LCD zu schreiben und das 
gleiche auch in der ISR zu tun. Erstens kann es ja sein, das das 
Hauptprogramm unterbrochen wird (und das auch mitten im sprintf) und 
zweitens kostet die LCD Nummer in der ISR verdammt viel Rechenzeit.
Was passiert z.B., wenn der ISR Counter 10 ist, aber die Ausgabe auf dem 
LCD gerade aktiv ist? Die ISR wird sofort wieder getriggert und so 
weiter.


Wenn aber auch Reset nicht funktioniert, musst du dich mal um die 
Beschaltung des MC kümmern. Abblockkondensatoren sind obligatorisch an 
allen Versorgungs- und Groundpärchen. AVCC muss versorgt werden.
OP #4888041
Lesenswert?

Guten Morgen Matthias S,

Das mit der ISR und mit main ist eigentlich nur so, weilich das Programm 
erst zum laufen bringen wollte.

Ich habe auch mit anderen Progammteilen meine Problem.
das das Display sich abschaltet und ich den MC jedes mal reseten muss.

Aber das der MC garnicht mehr reagiert war bis jetzt nicht der Fall.

Ich hjabe dir mal den Schaltplan hoch geladen.

Gruß Nutnic
Angehängte Dateien:
Gast #4888596
Lesenswert?

um die SW zu testen würde ich erstmal die ISR leer machen und nur das 
overflowCounter++; drin stehen lassen, der overflowCounter muss dann 
noch als volatile deklariert werden. Der Counter wird ja in der main() 
ausgegeben und müsste hochzählen.
Dann noch Versorgungsstrom/spannung beobachten. Wird da evtl. etwas 
heiss wg. Hardwarefehler?
Gast #4888613
Lesenswert?

Ich sehe nicht, wie die Transistoren jemals schalten sollen.......
Verdächtig... verdächtig...

Und Aref auf 3.3V zu klemmen, kann/wird böse sein, z.B. kann es diese 
"Abschmierer" verursachen.
Gast #4888616
Lesenswert?

Ich kenne das DOGM Display und die verwendete Lib nicht, gibt es da 
evtl. noch ein Init() das als erstes aufgerufen werden muss? Bei 
gleichzeitigem Schreiben von main und ISR auf das Display könnte der Mix 
auch das Display verprogrammieren.

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