Forum: Mikrocontroller und Digitale Elektronik ATtiny2313 und STK500 - Seltsames Verhalten


von Hilfesuchender (Gast)


Lesenswert?

Hi,

ich dachte eigentlich, dass ich mittlerweile schon durchblicke in Sachen 
Mikrocontrollerprogrammierung mit AVR, aber was hier passiert, will mir 
beim Besten Willen nicht in den Kopf. Ich habe das Problem mittlerweile 
so stark vereinfacht, dass da eigentlich gar nichts mehr falsch sein 
kann.

Und zwar hantiere ich hier mit einem ATtiny2313 sowie dem STK500. 
Eingesteckt ist der Controller in Sockel SCKT3300D3 und wird mittels ISP 
programmiert. Eine Verifizierung nach dem Programmieren bestätigt auch, 
dass der Inhalt im Flash richtig ist.

Es geht gerade um folgendes "Problem":
1
.include "tn2313def.inc"
2
3
ldi r16, 0x01
4
out DDRB, r16
5
out PORTB, r16
6
out DDRD, r16
7
out PORTD, r16
8
9
main: rjmp main

Nun würde ich erwarten, dass sich bis auf PB0 sowie PD0 alle anderen 
Pins auf 0 Volt befinden. PB0 sowie PD0 auf Vcc (5V). Wenn ich jetzt die 
Spannungen an den Ports messe, dann stelle ich zwar fest, dass PB0 sowie 
PD0 sich jeweils auf 5V "befinden", allerdings sind die anderen Pins 
nicht 0 V, so wie erwartet.

Ganz im Gegenteil. PB1 - PB4 befinden sich bei 0,9 V, wobei PB5, PB6 und 
PB7 z.B. sogar ganze 5V aufweisen.

PD1 - PD7 liegen bei etwa 1 Volt. Es ist keinerlei Peripherie 
angeschlossen. Die Spannungen messe ich jeweils an den entsprechenden 
Anschlüssen des STK500 gegenüber GND.

Ich habe es mittlerweile sogar mit zwei verschiedenen ATtiny2313's 
probiert, jeweils mit dem selben Fehlverhalten.

Kann mir das jemand erklären? Vielen Dank!

von Hans Peter B. (Gast)


Lesenswert?

Du hast offene Eingänge (B1-B7 und D1-D7), darum misst du irgend was.
Aktivier die Int. Pullups, dann wirst du definierte Pegel erhalten
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen
Hans Peter

von Herr M. (herrmueller)


Lesenswert?

PB 5 6 7 sind die ISP Anschlüsse, die werden wohl von der 
'Programmierschaltung' auf 5V gelegt. Diese und auch alle anderen Ports 
hast Du aber als Eingang programmiert (mit 0). Deshalb sind die 
hochohmig und Du kannst keine vernünftigen Messungen machen.
Wenn Du sie auf 0V haben willst, dann musst Du auch diese als Ausgang 
schalten. zB:

ldi r16, 0xFF
out DDRB, r16
ldi r16, 01
out PORTB, r16

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.