Forum: Mikrocontroller und Digitale Elektronik Port B bei Nichtprogrammierung?


von Empir (Gast)


Lesenswert?

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

von Jonas Diemer (Gast)


Lesenswert?

dann stimmt was nicht. die ports werden normalerwese alle mit 0x00 
initialisiert.

von Empir (Gast)


Lesenswert?

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.

von Niki Hammler (Gast)


Lesenswert?

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

von Empir (Gast)


Lesenswert?

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!

von Phagsae (Gast)


Lesenswert?

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

von Igor (Gast)


Lesenswert?

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.

von Empir (Gast)


Lesenswert?

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!

von Jonas Diemer (Gast)


Lesenswert?

@ 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?)

von Günter König (Gast)


Lesenswert?

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

von Empir (Gast)


Lesenswert?

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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Beim Reset werden alle IO-Register auf 0 gesetzt -> Ports sind Eingänge 
ohne Pullup.

MfG
Andreas

von Empir (Gast)


Lesenswert?

äh sorry für meine Unwissenheit, aber was genau heißt Pullup?
Danke im Voraus.

von Lennzo (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.