Was passiert eigentlich wenn man bei Nichtprogrammierung des AT90S4433 LED's an Port B (z.B. Pin 14) mit Vorwiderstand gegen VCC anschließt. (siehe http://www.mikrocontroller.net/tutorial2.htm). Bei mir passiert gar nichts... Sollte die LED leuchten? Die Spannung zwischen Vcc und Pin 14 ist 0 und zwischen GND und Pin 14 ist sie auch null...
dann stimmt was nicht. die ports werden normalerwese alle mit 0x00 initialisiert.
Das habe ich mir irgendwie gedacht und deshalb auch gefragt... Aber was koennte denn nicht stimmen? Ich hab alles angeschlossen wie es im Tutorial (mikrocontroller.net) im Schaltplan steht. Erschwerend kommt noch hinzu, dass ich ein Newbie bin und nicht allzu viele Elektronik-Erfahrungen habe.
Du könntest einmal messen ob zwischen VCC und GND Pins am Sockel des AVR genau und schön 5 Volt rauskommen. Wenn ja dann scheint entweder der uC oder der Quarzoszillator kaputt zu sein. So einen hab ich auch schon (ziemlich am Anfang) aus unerklärlichen Gründen abgeschossen. Niki
An den Pins (7: Vcc und 8: GND) liegen genau 5.00V an. Das kann doch gar nicht sein, dass irgendetwas kaputt ist, ist doch alles neu! Wie teste ich, ob mein Quarzoszillator kaputt ist? (mir steht aber im Prinzip nur ein Multimeter zur Verfügung)... und wie verifiziere ich, ob der uC kaputt ist? Danke für eure Hilfe!
Das ist völlig korrekt Nicht nur PORTB sondern auch das DDRB werden $00 nach RESET -> Hi_Z Input Vorsicht Einschalten von Sonderfunktionen ( zb SPI ) ändert manchmal die Datenrichtungsregister automatisch Phagsae
In der Atmel-Doku steht, daß die Ports bei und nach einem Reset (also auch einschalten) "ge-Tri-Stated" sind. Das soll bedeuten, daß sie hochohmig sind, also darf die LED auch gar nicht leuchten. Den Oszillator müßtest Du testen können, in dem Du einfach mal das Multimeter auf ACV stellst und es zwischen Ausgang und GND klemmst.
Heißt das, dass die LED erst leuchtet wenn man in das Datenrichtungsregister von PORT B diesen explizit als Ausgang definiert hat? Dann bin ich ja beruhigt. Beim Oszillatortest kommt 1.46 V heraus. Der Oszillator liefert doch eine Rechteckspannung mit Amplitude 5 V. Dann kann da doch was nicht stimmen, oder? Danke für eure nette Hilfe!
@ Phagsae: sag ich ja, all ports, d.h. das komplette portfile (ddrx sind ja auch ports, so wie das sreg u.a.) @Igor: dennoch müsste zwischen portpin und vcc ne spannung von 5V sein (oder irre ich da?)
Hi Empir, kann stimmen, weil dein Voltmeter so schnell garnicht messen kann. Du kannst das Multimeter ruhig im DC-Bereich schalten. Wenn ein exakt symetrischer Rechteck anliegt mit einer Spitzenspannung von 5V wirst du 2,5V messen. Dein AVR scheint also in Ordnung zu sein. So denn, Günter
Auf welcher Seite von der Doku steht denn, dass die Ports nach dem Reset ge-tri-statd sind. Ich hab' auf Seite 5 gefunden, dass sie während einer Resets ge-tri-stated sind, was danach geschieht ist mir immer noch unklar...
Beim Reset werden alle IO-Register auf 0 gesetzt -> Ports sind Eingänge ohne Pullup. MfG Andreas
äh sorry für meine Unwissenheit, aber was genau heißt Pullup? Danke im Voraus.
Hi, ein "Pull up" ( zieh hoch ) - Widerstand liegt zwischen einem Eingang und +5V. Dadurch wird erreicht, das der Eingang immer ein definiertes Signal ( in diesem Fall high-Signal ) erhält und er nicht "in der Luft hängt", denn damit könnte der Controller oder andere Digitaltechnik manchmal nichts anfangen. Dies ist sehr wichtig. Ist der Eingang mit Pull up nun unbeschaltet, so liegt an ihm trotzdem eine Spannung von 5Volt an ( über den Widerstand ) und er wird als high erkannt. Als low wird er erkannt wenn man den Eingang auf Masse zieht ( z.B. einen Schalter zwischen Eingang und Masse schaltet ). Einen Schaltplan für dieses Beispiel findest du auch bei der eingangsbeschaltung im Tutorial 2. Gruß Lennzo
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.