Guten Abend. Ich möchte eine Spannung messen, aber ich komme nicht zu dem Ergebnis, welches ich eigentlich haben möchte. Ich verwende: uC: Atmega88-20PU Programmer: AVRISP mk2 Programm AVR-Studio Schaltung auf Steckbrett. aus dem Tutorial hab ich das Programm verwendet: .include "m8def.inc" ldi r16, 0xFF ; lade Arbeitsregister r16 mit out DDRB, r16 ; Inhalt von r16 ins IO-Register DDRB au ldi r16, 0b00000000 ; 0b11111100 in r16 laden out PORTB, r16 ; r16 ins IO-Register PORTB ausgeben ende: rjmp ende ; Sprung zur Marke "ende" -> Endlosschleife Laut Datenblatt sind PortBs die Beinchen 14,15,16,17,18,19, B ist 5bit-Breit, dennoch verwende ich 8bit-Register, weil ich 5bit nicht darstellen kann. Wenn ich nun 0b00000000 in den uC flashe, dann müste an den Kontakten 14-19 die Spannung gegen Masse 0V sein (keine LED leuchtet). Schreibe ich 0b0011111 in den uC, dann müsste die Spannung 5 Volt betragen bei den Kontakten 14-19, also die LEDs aufleuchten. Ich habe zur Zeit keine LEDs dran, nur ein Multimeter. Ich messe immer egal ob gegen Masse oder +5Volt aus der Spannungsversorgung immer 0,8 Volt. Beim Compilieren und Flashen meckert AVR-Studio nicht, also muss doch das Programm korrekt übertragen worden sein. Bei den Fusebits hab ich nix verändert, da ist bei SPIEN und CKDIV ein Häkchen gesetzt und bei SUT_CKSEL steht: "Int. RC OSC 8MHZ StartUPtime ... 6CK14CK+65ms. Worin besteht vielleicht mein Fehler? Da das AVR-Studio nix meckert, gehe ich davon aus, dass keine Fehler bei der Bedrahtung gemacht wurden, sonst hätt es ja bestimmt nicht geklappt. Oder hab ich einen Denkfehler in Bezug auf die Spannungsmessung? Ich hab halt grade keine LEDs zur Hand und so dacht ich, mit dem Multimeter gegen Masse kann man auch die Spannung messen, die 5 Volt betragen müsste, wenn die jeweiligen Bits auf 1 stehen und 0V, wenn sie auf 0 stehen. Vielen Dank im Voraus.
Mauritio di Mauro schrieb: > Hand und so dacht ich, mit dem Multimeter gegen Masse kann man auch die > Spannung messen, die 5 Volt betragen müsste, wenn die jeweiligen Bits > auf 1 stehen und 0V, wenn sie auf 0 stehen. Ganz genau so funktioniert das. Miss mal die Spannung an allen Versorungspins deines Mega88 an. Und miss auch mal die Spannung am Reset-Pin nach. Die muss 5V sein.
Moin, das auf Port B das SPI + ISP Interface hängt wurde beachtet? MfG
Ja gut, Mess-Potential gegen Masse: Reset-Pin: 5V (Pin 1) Vcc: 5V (Pin 7) GND: 0V (Pins 8+22)
Sauger schrieb: > Moin, > > das auf Port B das SPI + ISP Interface hängt wurde beachtet? > > MfG Also, in dem Tutorial steht ja, es würde nix ausmachen, wenn der Programmer daran hängt. Aber ich habe immer, wenn ich den uC geflasht habe den Steckverbinder von dem Programmer rausgemacht, das Netzteil kurz abgestellt und es dann "neu" gestartet.
Jetzt hab ich einfach mal anstelle von DDRB und PORTB DDRD und PortD verwendet, um es an einem anderen Kontakt zu probieren, also nicht da, wo der Programmer dransitzt, aber es klappt da auch nicht :-(
Mauritio di Mauro schrieb: > Beim Compilieren und Flashen meckert AVR-Studio nicht, also muss doch > das Programm korrekt übertragen worden sein. richtige Datei zum Flashen eingestellt? MfG
Sauger schrieb: > richtige Datei zum Flashen eingestellt? Ja, ich hab nochmal nachgeschaut. Das AVR-Studio speichert nach dem Compilieren nicht alte .hex-Dateien ab, sondern es wird immer die genommen, die nach dem Drücken von F7 erstellt wurde.
Sauger schrieb: > was sagen die Fuse bits zum Watchdog meinst Du damit das FuseBit "SUT_CKSEL"? Dass steht auf "Int. RS Osc. 8Mhz StartUpTime PWRDWN/RESET 6CK/14 CK + 65ms".
Oder muss ich den uC erstmal noch irgendwie starten? Fängt der von selber an, das geflashte Programm abzuspielen, wenn ich den ISP-Programmer herausziehe? Oder muss ich nochmal das Netzteil Ein- und Ausschalten ...?
noch ein Tipp: teste dein Programm mal im Simulator.
Das FuseBit WDTON ist nicht gesetzt. Ich habe es aber grade mal gesetzt, alles neu draufgespielt, aber leider klappt es immer noch nicht .-(
wieder ausschalten. Probier mal den Simulator, um ein Gefühl für die Register zu bekommen.
Also, alle Register bis auf R16 mit 0xFF haben den Wert 0x00.
sehe gerade das du einen Mega88 verwendest. Mach mal aus .include "m8def.inc" ein .include "m88def.inc"
Hmm, also jetzt gibt es in der Tat eine kleine Verbesserung. Jetzt unterscheiden sich zumindest schon mal die Spannungen, somit lag der Fehler wohl bei der include-Datei. Ich messe jetzt, wo das Bit gesetzt ist, knapp 1,9 Volt, bei Bit nicht gesetzt 0,7 Volt etwa. Aber ich komme noch nicht auf 5 Volt, woran könnte dass denn liegen?
Mauritio di Mauro schrieb: > Ja gut, Mess-Potential gegen Masse: > > Reset-Pin: 5V (Pin 1) > Vcc: 5V (Pin 7) > GND: 0V (Pins 8+22) Beschalte auch AVCC (5V)
Hmm, ich habe einen anderen Fehler gemacht, AVCC war auch mit +5V verbunden, jedoch stand der Trafo nur auf 3 Volt, jetzt steht er auf 6 Volt und ich bekomme saubere 5 Volt. Der Fehler lag dann wohl in der Hauptsache bei der Verwendung der falschen HeaderDatei. Ich danke Dir sehr herzlich für Deine Unterstützung, so dass Du mir die Welt der Mikrocontroller etwas näher gebracht hast - trotz so später Stunde.
Moin,
>trotz so später Stunde.
ist doch er früh. Viel spaß noch
MfG
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.