Forum: Mikrocontroller und Digitale Elektronik Probleme einfache Programmierung STK500 Atmega8


von Marcel L. (superhans)


Lesenswert?

Tag zusammen,

ich habe angefangen das Tutorial durchzuarbeiten. Leider habe ich im 
ersten Kapitel  I/O Grundlagen schon Probleme. Ich habe mir auf einem 
Steckbrett die Grundschaltung (siehe 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment) 
aufgebaut und diese mit LED's und Tastern erweitert (Kapitel Eingabe bei 
I/O Grundlagen).
Weiterhin habe ich den Quellcode 1 zu 1 ins Atmel Studio kopiert und 
über ein STK500 auf den Controller geflasht. Wenn ich den Taster an PD0 
betätige (dann soll eigentlich nur PB0=0 werden) wird ebenfalls der 
PB5=0. Manchmal wird PB5 auch 0 (also LED geht an) wenn ich nichts 
drücke. Ich habe alles zig mal kontrolliert, keine Brücken oder 
Kurzschlüsse. Auch wenn ich die LED an PB5 entferne, wird der Ausgang 0. 
Ähnlich verhält es sich mit PD3 und PB4, Anstatt das nur PB3 0 wird, 
wird auch PB4=0. Das es was mit dem ISP zu tun hat schließe ich aus, da 
auch diese Phänomene auftreten, wenn ich die Schaltung mit Batterie 
betreibe und sie vom Stk500 getrennt ist.
Welches Problem ist das und wo kann ich nach Lösungen suchen??

von Karl H. (kbuchegg)


Lesenswert?

Marcel L. schrieb:


> Weiterhin habe ich den Quellcode 1 zu 1 ins Atmel Studio kopiert

welchen?
Den hier
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Eingabe

> und
> über ein STK500 auf den Controller geflasht. Wenn ich den Taster an PD0
> betätige (dann soll eigentlich nur PB0=0 werden) wird ebenfalls der
> PB5=0. Manchmal wird PB5 auch 0 (also LED geht an) wenn ich nichts
> drücke.

Das ist ok.
Du hast nur an den ersten 4 Pins einen Taster (und einen externen 
Pullup). Du hast doch die erste Schaltung mit den externen 
Pullup-Widerständen genommen, oder?

Der springende Punkt ist der, dass in diesem Programm keine internen 
Pullup-Widerstände gesetzt sind. D.h. an allen Pins, an denen nichts 
hängt (PD4 bis PD7) kann alles mögliche passieren. Die Eingänge sind 
offen und je nachdem wie gerade der Wasserstand in der Donau ist, der 
Fernseher eingeschaltet ist, dein Handy sich gerade was mit dem 
Telefon-Provider aushandelt, ... fängt sich so ein offener Eingang alles 
mögliche an elektromagnetischer Strahlung aus der Umgbung ein.
PD5 ist ein offener Eingang und mittels

    in r16, PIND
    out PORTB, r16

wird der komplette Port, also auch der Zustand aller offenen Eingänge 
vom Port D auf den Port B 'gespiegelt'. Deine PB5 zeigt dir also gerade 
an, dass sich der offene Eingang etwas 'eingefangen' hat.


> Ähnlich verhält es sich mit PD3 und PB4, Anstatt das nur PB3 0 wird,
> wird auch PB4=0.

Selbe Ursache. Kein Grund zur Panik.
Merk dir daraus: ein Eingang an dem nichts hängt, ist nicht sicher 
gestellt, dass er sich mit 0 meldet.

Schliess deine Taster mal ohne externen Pullup an, so wie das dann in 
weiterer Folge gezeigt wird und schalte dafür den internen Pullup am 
kompletten Port D ein.

von Marcel L. (superhans)


Lesenswert?

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH, schon 10 mal davon gelesen aber 
wenn das Problem vor der Tür steht erkennt man es nicht. Klar 1-4 lässt 
sich sauber schalten, weil dort Taster dran hängen (mit Widerstand). 
Aber da durch die Software nicht nur 1-4 sondern der komplette Port 1-8 
angesprochen wird, habe ich an den hinteren diese Effekte.

Karl Heinz Buchegger schrieb:
> welchen?
> Den hier

Ja genau diesen habe ich. Hatte auch schon selbst versucht einzelnen 
Pins anzusprechen, aber auch dabei traten merkwürdige Sachen auf. Aber 
das wird wohl alles die gleiche Ursache gehabt haben. Vielen Dank

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.