Schön guten Tag die Damen und Herren! Ich habe mehrere Wochen an einem Programm(in Basic)für einen ATMega8 geschrieben. Alles Prima. Der Test an einem zweiten ATMega8 ebenfalls. Nun ein dritter Microcontroller(der gleiche ATMega8) und es kommt wie es kommen musste, es funktioniert nichts. Da alles auf einer Uhr(habe Timer0 genommen) basiert, habe ich alles "Unnütze" aus dem Programm genommen und getestet, ob er denn überhaupt auf Sekunden reagiert: 'hier die Einstellungen für den Microcontroller $regfile = "m8def.dat" $crystal = 4000000 $hwstack = 32 $swstack = 8 $framesize = 24 'der Strom nachdem ein Taster gedrückt wurde an Config Portd.0 = Output Portd.0 = 1 'eine LED konfigurieren Led_a Alias Portd.2 Config Portd.2 = Output 'der Timer konfiguriert Config Timer0 = Timer , Prescale = 1024 On Timer0 Timer0_overflow Enable Timer0 'Interrupts aktivieren Enable Interrupts 'die Programmschleife Do If Sekunden = 2 Then Toggle Led_a End If Loop 'und der Interrupt Timer0_overflow: Incr Zwanzigstel_sekunden2 If Zwanzigstel_sekunden2 = 20 Then Incr Sekunden Zwanzigstel_sekunden2 = 0 End If Return Natürlich ist das gesamte Programm viel länger, jedoch konnte ich das Problem hier ausmachen. Jemand eine Idee? Lieben Dank im Voraus für die Hilfe
Fuses und Taktung richtig gesetzt bei allen Controllern?
Sebastian P. schrieb: > Natürlich ist das gesamte Programm viel länger, jedoch konnte ich das > Problem hier ausmachen. welches Problem denn, du hast nur geschrieben "es geht nichts" geht es auch etwas genauer - was geht denn nicht?
>welches Problem denn, du hast nur geschrieben "es geht nichts" geht es >auch etwas genauer - was geht denn nicht? Im Programm selbst wird anfangs eine Pumpe angeschaltet und nach einer gewissen Zeit dann ausgeschaltet. Sie läuft auf dem dritten Microcontroller die gesamte Zeit. >fehlt eventuell ein start timer0 ? Kann ich mir nicht vorstellen, da das Programm auf den beiden Anderen astrein ohne eine start timer0 läuft. >Fuses und Taktung richtig gesetzt bei allen Controllern? Bin noch neu, deswegen weiß ich das nicht. Da das Programm aber auf den ersten Beiden mit exakt denselben Einstellungen läuft, sag ich einfach mal ja. Danke schonmal für die Unterstüzung!
Ich denke, daß wenn die Sekunden 2 erreicht haben, LED_A nur einmal eingeschaltet wird und dann nicht wieder aus. Die Sekunden werden nicht wieder zurückgesetzt und laufen immer weiter hoch. MfG Paul
Sebastian P. schrieb: >>Fuses und Taktung richtig gesetzt bei allen Controllern? > > Bin noch neu, deswegen weiß ich das nicht. Da das Programm aber auf den > ersten Beiden mit exakt denselben Einstellungen läuft, sag ich einfach > mal ja. Da du es nicht weist, kann die Antwort nur NEIN lauten. Daher erst mal die Fuses vergleichen.
Habe jetzt mal eine Erweiterung geschrieben: Declare Sub Anzeige Do ... call anzeige wert = sekunden ... loop Sub Anzeige() Erste_zahl = wert / 100 'die zahl in drei zahlen aufteilen Rest = wert Mod 100 Zweite_zahl = Rest / 10 Dritte_zahl = Rest Mod 10 If B = 0 Then 'led 1 Taster_auto_1 = 0 Taster_auto_2 = 1 Taster_auto_3 = 1 B = 1 Zahl = Erste_zahl Elseif B = 1 Then 'led 2 Taster_auto_1 = 1 Taster_auto_2 = 0 Taster_auto_3 = 1 B = 2 Zahl = Zweite_zahl Elseif B = 2 Then 'led 3 Taster_auto_1 = 1 Taster_auto_2 = 1 Taster_auto_3 = 0 B = 0 Zahl = Dritte_zahl End If Portd = Portd Or &B11111110 Portb = Portb Or &B00000001 Select Case Zahl Case 0 : Portd = Portd And &B00000011 Case 1 : Portd = Portd And &B11100111 Case 2 : Portd = Portd And &B10010011 Portb = Portb And &B11111110 Case 3 : Portd = Portd And &B11000011 Portb = Portb And &B11111110 Case 4 : Portd = Portd And &B01100111 Portb = Portb And &B11111110 Case 5 : Portd = Portd And &B01001011 Portb = Portb And &B11111110 Case 6 : Portd = Portd And &B00001011 Portb = Portb And &B11111110 Case 7 : Portd = Portd And &B11100011 Case 8 : Portd = Portd And &B00000011 Portb = Portb And &B11111110 Case 9 : Portd = Portd And &B01100011 Portb = Portb And &B11111110 End Select End Sub der sub-befehl funktioniert. im programm sollen mir die sekunden angeziegt werden, er sagt die ganze zeit null, dh er zählt die sekunden nicht hoch. weiß jem warum?
Sebastian P. schrieb: > Da das Programm aber auf den > ersten Beiden mit exakt denselben Einstellungen läuft Welche Einstellungen sind denn das? mfg.
schalte die LED doch einfach in der ISR an....wenn sie dann nicht angehen sollte, ist davon auszugehen, dass die isr nicht ausgeführt wird.
habe den Fehler gefunden, auch wenn es sehr unglaubwürdig klingt: Ist der Microcontroller mit Batterie betrieben funktioniert der Timer nicht. Fragt mich nicht wieso, aber habe das jetzt nach mehreren Tests herausgefunden. Sobald ich ihn an ein Netzteil anschließe läufts. Danke aber für die Hilfe :) MfG
wird etwa die Timer-Clock aus den Netzspannung gewonnen?
Wie sieht es mit den Abblock-Kondensatoren aus? ...
Sebastian P. schrieb: > habe den Fehler gefunden, auch wenn es sehr unglaubwürdig klingt: Ist > der Microcontroller mit Batterie betrieben funktioniert der Timer nicht. In den Fuses ist Brown-out Detection bei 2,7V aktiviert. Da war die Spannung wohl darunter.
Wie hoch ist die Betriebsspannung am ATMega8 im Falle des Batteriebetriebs? Du hast nur einen Satz Fuses gezeigt, ist dies bei allen 3 Prozessoren gleich?
Piep schrieb: > In den Fuses ist Brown-out Detection bei 2,7V aktiviert. Da war die > Spannung wohl darunter. Also ich betreibe etliche AVRs mit BOD 2,7V an einer Lithium-Zelle und deren Timer laufen alle wie sie sollen. Deshalb frage ich nochmal: Sind alle erforderlichen Stützkondensatoren vorhanden??? Dies wären am ATMega8 je ein Keramik-C 100nF zwischen Vcc und GND sowie AVcc und AGND, jeweils möglichst dicht an den AVR-Pins. Wird der ADC benutzt, so sollte noch ein weiterer 100nF-Kerko zwischen Aref und AGND. ...
Sebastian P. schrieb: > habe den Fehler gefunden, auch wenn es sehr unglaubwürdig klingt: Ist > der Microcontroller mit Batterie betrieben funktioniert der Timer nicht. Sowas hatte ich mit einem Atmega48 auch schon. Wenn die Spannung zu weit abfällt und der Timer2 mit Uhrenquarz und 8MHz intern, den Controller aus dem Sleepmode holt, verzählt sich das Timer-Counter-Register. Mit 1 MHz läuft das problemlos. Hannes Lux schrieb: > Also ich betreibe etliche AVRs mit BOD 2,7V an einer Lithium-Zelle und > deren Timer laufen alle wie sie sollen. Alle anderen Timer und sonstige Peripherie betrifft das nicht. Nur die Konstellation Timer2, Uhrenquarz, Sleepmode. 1000 Mal debugged. Der läuft einfach aus der Spezifikation raus. Spannung/Takt. Ansonsten habe ich auch nie Probleme gehabt bei 20MHz und 3V. mfg.
Hannes Lux schrieb: > Also ich betreibe etliche AVRs mit BOD 2,7V an einer Lithium-Zelle und > deren Timer laufen alle wie sie sollen. Er hat nur geschrieben "mit Batterie", aber nicht welche. Wahrscheinlich werden wir das aber nicht mehr erfahren.
Piep schrieb: > Er hat nur geschrieben "mit Batterie", aber nicht welche. Wahrscheinlich > werden wir das aber nicht mehr erfahren. Naja, ich hatte vorausgesetzt, dass soviel Schmalz zwischen den Ohren vorhanden ist, dass es sinnvollerweise eine Li-Zelle, 3 Alkalizellen oder 4 NiCd- bzw. NiMH-Zellen sind. ;-) ...
Es lag an einer leeren Batterie. Die Spannung war einfach zu gering. Eigentlich sollte sie 9V haben und mittlerweile hat sie irgendwas mit 6,5, was offenbar nicht genug ist. Danke für eure Hilfe!!
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.