Forum: Mikrocontroller und Digitale Elektronik Mikro brauch nach übertragen meistens noch einen Reset


von Markus P. (sebastianwurst)


Angehängte Dateien:

Lesenswert?

Hallo,
nachdem ich meinen Atmega168 übertragen habe startet der yC zu 50% nicht 
von selber, sondern benötigt noch einen Reset indem ich z.B. mit dem 
Programmer einmnal die Fuses auslese oder händisch einen Reset sende.
Wodran kann das wohl liegen?

Im Anhang ist der Anschlussplan und das makefile, ich hoffe das genügt.
Vielen Dank.

von Heinz (Gast)


Lesenswert?

Was für einen Programmer verwendeast du?

von Ingo (Gast)


Lesenswert?

Eigentlich gehts nach dem Flashen gleich los. Welchen Programmer bzw. 
Programming Tool?


Ingo

von Markus P. (sebastianwurst)


Angehängte Dateien:

Lesenswert?

http://shop.myavr.de/Programmer/mySmartUSB%20MK2%20%28Programmer%20und%20Bridge%29.htm?sp=article.sp.php&artID=42

Das ist der Porgrammer, im Anhang noch die .pdf. Den Anschlussplan muss 
ich gerad noch genau zeichnen...kommt sofort.

Und das Porgramming tool. Auch wenn ich den Haken "send Exit after 
programming" setze ändert sich nichts...

von Heinz (Gast)


Lesenswert?

Wenn er nicht losläuft, miss mal den Pegel am Reset-Pin, der muss high 
sein. ist er das nicht, läßt der Programmer ihn nicht los.

von Markus P. (sebastianwurst)


Lesenswert?

Heinz schrieb:
> Wenn er nicht losläuft, miss mal den Pegel am Reset-Pin, der muss high
> sein. ist er das nicht, läßt der Programmer ihn nicht los.

Während dem Programming ist er low, ganz sauber ohne zacken, danach ist 
er sofort auf 5Volt.
Wenn ich dann "Send exit" sende geht der PEgel einmal kurz auf zero und 
ggf. startet dann der yC. Aber auch nicht immer beim ersten mal...

von Markus P. (sebastianwurst)


Lesenswert?

Auch bei Spannungswiederkehr läuft der yC nicht selbstständig hoch, 
obwohl nichts am Programm passiert ist.
Ich habe mit "Brown-out detection" auch schon gespielt.

von Markus P. (sebastianwurst)


Lesenswert?

Muss ich dafür irgendetwas an den Fuses beachten, oder kann sogar etwas 
im Programm falsch  sein (main.c) ???

Ich muss auch noch dazu sagen das ich die Schaltung so neu aufgebaut 
habe, und sie von Anfang an nicht stabil lief!

von ge-nka (Gast)


Lesenswert?


von Jochen (Gast)


Lesenswert?

hast mal den 10K PullUp am Reset weggelassen? der interne sollte 
eigentlich reichen ... es könnte sein dass der 
Power.Off-Power-On-Reset-Zyklus nach dem brennen nicht sauber rüber 
kommt ... StartUpTime wärte ne idee und mal schauen was nach dem 
berennvorgang an VCC laos ist ... speist du über den Programmer oder 
autonom? es sollte nach dem brennen einen komplettes power-off geben und 
power on ...

von Bernd (Gast)


Lesenswert?

Habt ihr alle Tomaten auf den Augen, oder hab ich was
falsch gelernt?

Auf den ersten Blick fehlt mir ein C = 27...100 nF am
Reset-Pin.

Wann soll denn der µC die Reset-Aktionen durchführen,
wenn er in NULL Systemtakten vom Prog- in den Arbeitsmodus
geschubst wird?????

von holger (Gast)


Lesenswert?

>Auf den ersten Blick fehlt mir ein C = 27...100 nF am
>Reset-Pin.

Überflüssig wenn der Brown Out aktiviert ist.
Grosse Kondensatoren am Reset können den Prommer
stören. Ein kleiner 1nF dagegen hilft gegen Glitches
und nervt den Prommer nicht so. Mehr sollte man da
nicht dran machen.

von Fragi (Gast)


Lesenswert?

>Grosse Kondensatoren am Reset können den Prommer stören.

Nur wenn der nichts taugt. Der amtliche Programmer von Atmel 
(AvrIspmkII) erlaubt bis zu 10µF!

>Ein kleiner 1nF dagegen hilft gegen Glitches und nervt den Prommer nicht
>so. Mehr sollte man da nicht dran machen.

Atmel selbst empfiehlt da ja deutlich mehr als 1nF. Viele haben deshalb 
dort auch wesentlich mehr. Ein guter Programmer muß das 
selbstverständlich können.

Ich frage mich hier sowieso, warum nicht ein vom Hersteller empfohlener 
Programmer zum Einsatz kommt. Immer der Ärger mit diesen 
Toy-Programmern...

von Bernd (Gast)


Lesenswert?

@ holger

Das klingt verwegen!

Besonders deine Gewissheit, dass jeder, der nicht
weiß, wozu ein C am Reset-Pin gut ist, den Brown Out
gefuset hat...

Wie wird der BOD denn vom "mysmartusb-mk2" ausgelöst?

von Peter D. (peda)


Lesenswert?

Markus P. schrieb:
> nachdem ich meinen Atmega168 übertragen habe startet der yC zu 50% nicht
> von selber

Ist in der Regel ein Fehler in Deinem Programm.
Irgendwas wird nicht richtig initialisiert.

Ein beliebter Fehler ist z.B., den /SS-Pin nicht vor SPI-Master-Mode 
auf Ausgang zu setzen.


Peter

von Markus P. (sebastianwurst)


Lesenswert?

Peter Dannegger schrieb:
> Markus P. schrieb:
>> nachdem ich meinen Atmega168 übertragen habe startet der yC zu 50% nicht
>> von selber
>
> Ist in der Regel ein Fehler in Deinem Programm.
> Irgendwas wird nicht richtig initialisiert.
>
> Ein beliebter Fehler ist z.B., den /SS-Pin nicht vor SPI-Master-Mode
> auf Ausgang zu setzen.
>
>
> Peter

Guter tip Peter, evtl poste ich den Code heut Abend, wenn ich's selber 
nicht finde!

von Markus P. (sebastianwurst)


Lesenswert?

Peter Dannegger schrieb:
> Markus P. schrieb:
>> nachdem ich meinen Atmega168 übertragen habe startet der yC zu 50% nicht
>> von selber
>
> Ist in der Regel ein Fehler in Deinem Programm.
> Irgendwas wird nicht richtig initialisiert.
>
> Ein beliebter Fehler ist z.B., den /SS-Pin nicht vor SPI-Master-Mode
> auf Ausgang zu setzen.
>
>
> Peter

Wie muss ich denn jetzt den PORTB an den der SPI hängt initialisieren?

Ich dachte als Eingang:

DDRB    = 0b00000000;       // Port B als Eingang definieren
PORTB   = 0b11111111;       // Port B Pullup aktivieren

von Markus P. (sebastianwurst)


Angehängte Dateien:

Lesenswert?

Peter, ich weiss es nicht mehr.... ich habe jetzt einmal mein code 
angehängt, in der Hoffnung das du einmal drüber schaust...
Danke schonmal...

von Markus P. (sebastianwurst)


Lesenswert?

Kann mir da vielleicht jemand weiter helfen. Der yC startet immer noch 
nicht sauber, auch auf meinen myAvr-Testboard. Also es muss am Programm 
liegen...
Danke

von Fragi (Gast)


Lesenswert?

>Kann mir da vielleicht jemand weiter helfen. Der yC startet immer noch
>nicht sauber, auch auf meinen myAvr-Testboard. Also es muss am Programm
>liegen...

Lieber Markus, das kannst du doch ganz einfach selbst herausfinden: 
Jetzt programmierst du erst einmal einen ganz einfachen Code, der nur 
aus ein paar Zeilen besteht und beispielsweise einen Port toggelt. Wenn 
das klappt liegt es schon mal nicht am Programmer.

Dann gehst du weiter und programmierst einzelne Teile von deinem Code, 
zum Beispiel die ganzen Initialisierungen. Wenn es wirklich am Code 
liegt, dann wird er irgendwann aussteigen...

Divide and conquer!

von Peter D. (peda)


Lesenswert?

Markus P. schrieb:
> ich habe jetzt einmal mein code
> angehängt

Du hast nur einen kleinen Schnipsel angehängt, den man nichtmal 
compilieren kann.
Ne so wird das nix.

Du gehst ja auch nicht zur Autowerkstatt: "Meister, hier bringe ich ein 
Rad vorbei. Schauen Sie mal drauf, warum mein Auto schlecht anspringt."


Peter

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.