So, hallo erst mal :) Also, ich habe folgendes Problem. Ich habe ein Programm geschrieben, bei dem mehrere Sensoren und ein LCD angesteuert wird. Lief bisher, nur habe ich das Programm jetzt aufgeteilt in verschiedene .c und .h files. --> Controller programmiert und läuft. Wenn ich jetzt aber den Strom wegnehme (externe Stromversorgung, nicht über PC) und wieder hinzuschalte, Initialisiert weder mein LCD, noch laufen irgendwelche Sensoren. Sprich, geht nicht. Nun meine Frage, ob irgendjemand so etwas schon einmal gehabt hat und eine Ahnung hat was ich hierbei verbrochen haben könnte :) Falls ihr noch Daten braucht bitte nur melden :) Viele Grüße
Immer. Ich steck den Strom an den Controller (Atmega 16 btw), geht nicht, neu programmieren --> geht bis jetzt ca. ... 7? mal versucht. Also ich denke man kann sagen reproduzierbar ^^
Michael G. schrieb: > Nun meine Frage, ob irgendjemand so etwas schon einmal gehabt hat und > eine Ahnung hat was ich hierbei verbrochen haben könnte :) Warte mal am Anfang in main() ein bischen, ehe du dann die Initialisierungen durchführst. Gib den angeschlossenen Schaltungen ein bischen Zeit, sich selbst nach Anlagen der Stromversorgung zu initialisieren bzw. der Stromversorgung selbst Zeit, sich zu stabilisieren.
Am Schaltplan kanns (fast) nicht liegen, nachdem mein "altes" programm, welches ohne header und c-files geschrieben war ohne Probleme funktionierte. Uhm, was sollte ich posten vom Code?
Michael G. schrieb: > Immer. > Ich steck den Strom an den Controller (Atmega 16 btw), geht nicht, neu > programmieren --> geht Beim neu programmieren schaltest du den Strom nicht ab. Nach einem Reset des µC sind daher die angeschlossenen Komponenten sicher schon so weit, deine Initialisierung anzunehmen. Anstatt neu zu programmieren, zieh einfach nur mal den Reset-Pin des µC kurz auf Masse. Wenn dann alles anläuft, dann legt dein µC etwas zu früh los. D.h. der entscheidende Punkt ist nicht das neu flashen, sondern dass der µC bei bereits anliegender Stromversorgung resettet wird.
hmm, das könnte sein.. wobei die startup-time mit 64ms wäre.. Aber werde ich auf jeden Fall versuchen, habe das Zeug leider nur gerade nicht da, muss ich morgen schaun! ich hätte jetzt einfach noch ein _delay_ms(100) drangehängt, sollte das mit dem Reset-Pin der Fehler sein... Vorläufig einmal Danke, ich melde mich sobald ichs getestet habe! Lg
Michael G. schrieb: > ich hätte jetzt einfach noch ein _delay_ms(100) drangehängt, sollte das > mit dem Reset-Pin der Fehler sein... yep. probiers mal so. Vielleicht liege ich ja auch komplett falsch.
Das weckt Erinnerungen. Das gleiche Phänomen hatte ich vor ein paar Jahren mit ATmega161. Die Applikation war nichts exotisches (LANC-Kamerasteuerung); funktionierte nur direkt nach der Programmierung (Reset ohne Abnahme der Betriebsspannung) und bei erneuter Inbetriebnahme nicht. Die Ursache für das Problem habe ich nicht klären können - ich hatte es zum Schluss bis auf "eine LED Einschalten"-Aufgabe reduziert. Mit ATmega161 habe ich danach nichts mehr gemacht.
Mach doch Nägel mit Köpfen: Ich halte zwar nichts von Delay aber in diesem Falle einfach eine Sekunde, vor allem warten. Das stört, wenn es vor der Initialisierung eingebaut wird nicht, höchstens die Einschaltzeit, aber wenn dann die Peripherie noch nicht "ausgeschlossen" ist, hast Du wahrscheinlich Programmierproblem.
Ich würde mal die üblichen Verdächtigen abchecken: - Brownout-Detektor an? - Watchdog korrekt bedient? - Fuses korrekt gesetzt? - Spannungsversorgung schnell genug okay? - Reset-Schaltung okay?
Bronco schrieb: > Ich würde mal die üblichen Verdächtigen abchecken: Bei SPI Benutzung: /SS nicht rechtzeitig als Ausgang gesetzt.
Also :D Vielen Dank für die vielen Antworten ^^ Habe es heute getestet - 100ms Wartezeit vor dem gesamten Programm und geht :) Vielen Dank trotzdem für alle Lösungsideen die im Nachhinein kamen! Viele Grüße und ein schöne Wochenende ;)
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.