Forum: Mikrocontroller und Digitale Elektronik Problem, µC läuft nur nach "frischem" flashen


von Michael G. (groebar)


Lesenswert?

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

von Ralf G. (ralg)


Lesenswert?

Michael G. schrieb:
> --> Controller programmiert und läuft.
reproduzierbar?

von troll (Gast)


Lesenswert?

Welcher µC?
Schaltplan?
Programm?

von Michael G. (groebar)


Lesenswert?

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 ^^

von Karl H. (kbuchegg)


Lesenswert?

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.

von Michael G. (groebar)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

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.

von Michael G. (groebar)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von nicht Gast (Gast)


Lesenswert?

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.

von amateur (Gast)


Lesenswert?

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.

von Bronco (Gast)


Lesenswert?

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?

von Peter D. (peda)


Lesenswert?

Bronco schrieb:
> Ich würde mal die üblichen Verdächtigen abchecken:

Bei SPI Benutzung: /SS nicht rechtzeitig als Ausgang gesetzt.

von Michael G. (groebar)


Lesenswert?

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
Noch kein Account? Hier anmelden.