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.
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 ...?
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?
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.