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
>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.
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?
Wie sieht deine restliche Beschaltung aus? Quarz? Reset?
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
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.
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! :-)
@ 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
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.