Forum: Mikrocontroller und Digitale Elektronik ATMega schaltet sich ab.


von Martin B. (nutnic)


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;
  }
}

von Matthias S. (Firma: matzetronics) (mschoeldgen)


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.

: Bearbeitet durch User
von Martin B. (nutnic)


Angehängte Dateien:

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

von Jobst M. (jobstens-de)


Lesenswert?

Martin B. schrieb:
> Ich hjabe dir mal den Schaltplan hoch geladen.

Tja. Basics!

Jedes IC bekommt mindestens einen Blocker nächstmöglich an den Pins.
Der Mega32 bekommt mindestens 2 Blocker. Vref gehört nicht an +, aber 
ein weiterer 100nF daran.



Gruß

Jobst

von Planlos (Gast)


Lesenswert?

Der Kurzschluss Aref -> VCC ist zwar nicht Fehlerursache, sollte aber 
trotzdem weg.

von Jobst M. (jobstens-de)


Lesenswert?

Kindchen, nicht per PN - hier geht es weiter!

von Johannes S. (Gast)


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?

von Einer K. (Gast)


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.

von Johannes S. (Gast)


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.

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.