Forum: Mikrocontroller und Digitale Elektronik ADC funktioniert nach Bootloader Rücksprung nicht mehr


von Nils (Gast)


Lesenswert?

Hallo Spezialisten,

ich habe folgenden "Effekt" den ich mir nicht erklären kann:

In einem ATmega168A habe ich eine Application laufen, die unter anderem 
den ADC verwendet. Funktioniert alles bestens. Zusätzlich habe ich mir 
einen Bootloader geschrieben (über die UART). Dieser funktioniert auch 
einwandfrei und ich kann Hexfiles in den AVR programmieren. Rücksprung 
in die Application geht auch problemlos und die Application startet dann 
auch wie gewollt.

Ich muss nur leider immer wieder feststellen, dass der ADC nach dem 
Rücksprung in die Application nicht mehr funktioniert. Erst nach einem 
Power-On-Reset funktioniert er wieder. Das Programm an sich ist also in 
Ordnung und wurde offenbar korrekt geflasht, nur hakt es nach dem 
Rücksprung und ich kann nichts aus den ADC-Registern lesen. Alle anderen 
Peripherien kann ich hingegen problemlos wieder nutzen nach dem 
Rücksprung, also Timer, UART etc...  Der ADC wird im Bootloader übrigens 
nicht benutzt, also auch nichts an dessen Registern gemacht. An den 
Interruptvektoren liegt es auch nicht, der ADC wird ohne Interrupt 
verwendet bei mir.

Hat jemand eine Idee was das sein könnte? Ich bin hier wirklich ratlos 
und habe auch keine Idee wie ich das "debuggen" könnte...

Vielen Dank für alle Tips!

Nils

von Purzel H. (hacky)


Lesenswert?

Ich wuerde auf einen Fehler in Zeile 42 tippen...

Es gibt 2 Unterschiede. Der erste ist der Bootloader Code, der andere 
ist die Anfangsort, wo der Usercode anfaengt.

Ich wuerde nach dem Bootloaden des Programmes den Beginn des Bootloader 
mit einem Jump auf den Beginn des Userprogrammes ueberschreiben und dann 
vergleichen.

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.