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; } }
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
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
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
Der Kurzschluss Aref -> VCC ist zwar nicht Fehlerursache, sollte aber trotzdem weg.
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.