Forum: Mikrocontroller und Digitale Elektronik ATmega8 an 230V->5V Netzteil macht Probleme


von Adrian Z. (adrian__)


Lesenswert?

Hallo,

wenn ich einen ATmega8 an das myAVR USB MK 2 Board anschließe, läuft 
alles einwandfrei. Auch wenn ich nur die Stromversorgung von dem Board 
nehme läuft alles. Sobald ich aber ein USB-HUB-Netzteil mit 5V nehme, 
läuft der AVR nur sporadisch oder bleibt mittendrin im Programmablauf 
einfach stehen. Kondensatoren habe ich auch eingebaut, falls das 
Netzteil nur eine wellige Gleichspannung erzeugt. Leider funktioniert es 
trotzdem nicht mit dem Netzteil.

Woran könnte das liegen?

Adrian

von syn_error (Gast)


Lesenswert?

>USB-HUB-Netzteil mit 5V nehme
der eingebaute spannungsregler 7806 braucht um zu arbeiten selbst 2-3 
volt.
also hat den atmega nur noch 2-3 volt zum arbeiten.

von Adrian Z. (adrian__)


Lesenswert?

Ich habs mit nem Multimeter gemessen, es kommen wirklich 5,1 V aus dem 
Netzteil heraus und ich habe den ATmega auch ohne Spannungsregler 
getestet. Es geht leider sowohl mit als auch ohne Spannungsregler nicht. 
Zum Testen habe ich aber keinen 7806 sondern ein 2940 verwendet, da 
lagen immerhin noch 4,8V dahinter an, müsste also auch ok sein.

Woran könnte es sonst noch liegen?

von STK500-Besitzer (Gast)


Lesenswert?

Wie sieht deine restliche Beschaltung aus?
Quarz? Reset?

von Adrian Z. (adrian__)


Lesenswert?

Ich vermute jetzt nach weiterem Herumprobieren, dass es mit an den 
Interrupts liegen könnte, da die Interrupt-Pins beim Testaufbau frei in 
der Luft hangen... Da könnte es natürlich sein, dass das Programm stehen 
bleibt, weil die Interrupts willkürlich immer wieder ausgelöst werden.
Ich muss erstmal schauen, obs wirklich an den Interrupts liegt...

Gruß,
Adrian

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Das kann nur passieren, wenn Du diese Interrupte erlaubst und keine 
Sprungadresse in den dafür vorgesehenen Vektoren zu den entsprechenden 
Service-Routinen eingetragen hast.

von Adrian Z. (adrian__)


Lesenswert?

Ich hab den Fehler gefunden!!! :-)
Ich habe mittels SPI Befehle an ein LCD-Display geschickt, hier hats 
irgendwie gehapert:
Vorher: (ging nicht, sobald mehr als ein Byte geschickt wurde)

    SPDR = cmd;
    while (!(SPSR & 0b10000000));

Nachher: (so gehts jetzt)

    SPSR |= (1 << 7);
    SPDR = cmd;
    while (SPSR & 0b10000000);

Anscheinend muss man das Bit dann vorher per Hand unbedingt auf "1" 
setzen, wenn es wieder "0" wird, ist die Übertragung abgeschlossen. 
Naja, prima, so geht es jedenfalls! :-)

von Falk B. (falk)


Lesenswert?

@  Adrian Zinke (adrian__)

>Anscheinend muss man das Bit dann vorher per Hand unbedingt auf "1"
>setzen,

Keineswegs. Das kann man gar nicht schreiben, nur lesen. Allerdings ist 
dort schon ein kleiner Bug im AVR. Denn das Bit ist ist beim ersten 
Aktivieren des SPI eben 0, was theoretisch bedeutet, dass eine 
Übertragung läuft. Tut sie aber nicht.

> wenn es wieder "0" wird, ist die Übertragung abgeschlossen.
>Naja, prima, so geht es jedenfalls! :-)

Nöö, das ist Murks. Das kann man sauber lösen. Einfach einmal ganz am 
Anfang nach Aktivierung des SPI ein Datenbyte senden, ohne vorher das 
Bit SPIF abzufragen. Dann passt alles.

MFG
Falk

von Adrian Z. (adrian__)


Lesenswert?

@ Falk Brunner (falk)

Okay habs ausprobiert, du hast Recht. Allerdings hatte ich noch ein 
Problem, weil SS bei mir nicht als Ausgang definiert war.
Das ist der eigentliche Grund, warum der mega8 gesponnen hatte. Je 
nachdem, wie sich der SS-Pin aufgeladen hatte, gings mal und mal nicht. 
(siehe Beitrag "[AVR] SPI wartet endlos auf SPIF Flag") Als Ausgang 
geschaltet und schon gehts :-)

Danke!

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.