Komisches Verhalten von leds/taster

OP #1031441
Lesenswert?

Hallo,

ich benutze das STK500 board und einen atmega8 mikrocontroller. Habe 
zuerst ein Programm geschrieben, beidem einfach nur alle LEDS 
eingeschalten werden sollen, allerdings leuchteten die LEDs 6 und 7 
nicht. (Habe PORTB und PORTC benutzt). Als ich dann anschließend PortD 
benutzt habe, ging es wieder. Heißt das, dass ich jetzt nur noch PortD 
benutzen kann? Das kann es ja nicht sein oder?
Danach habe ich noch ein kleines Testprogramm geschrieben, beidem über 
PortB die Taster abgefragt werden und anschließend über PortD auf die 
LEDs ausgegeben werden. Also wenn man einen Taster drückt, soll die 
Lampe leuchten, solange man gedrückt hält. Hier hat es wiederrum nur bei 
den LEDs 0-5 funktioniert, LED 6 leuchtete die ganze Zeit und LED 7 
überhaupt nicht?
Hab mir schon die Userguid vom STK500 durchgelesen, das Datenblatt vom 
atmega8 und auch schon hier im Forum gesucht, allerdings ergebnislos. 
(Ok habe irgendwo den Tipp gefunden, dass PortB nicht funktioniert und 
ich deshalb einen anderen nehmen soll, aber warum funktioniert dann 
PortC auch nicht und was soll das Verhalten bei meinem zweiten 
Programm?)

Wäre wirklich froh, wenn mir jemand da helfen könnte! Danke schonmal.

edit: Habe noch 2 Versionen hierzu:

.include "m8def.inc"

    ldi r16,0x00
    out DDRC, r16  ; C als Eingang

    ldi r16, 0xFF
    out DDRD, r16  ; D als Ausgang

    out PortD, r16  ; Alle Lampen aus

loop:
    in r16, PinC  ; PinC einlesen
    com r16      ;r16 invertieren
    out PortD, r16  ; Lampen ein
    rjmp loop

Der einzige Unterschied von dem Programm zu dem vorigen ist, dass das 
com dabei ist. Wenn ich das mit PortC starte, leuchten wieder LED 0-5 
und 6 und 7 nicht. Starte ich das gleiche Programm aber mit PortB 
leuchten alle LEDs, 0-5 kann man ausschalten, aber 6 und 7 nicht?
Bin wirklich gerade ein bisschen verwirrt
OP #1031504
Lesenswert?

Ok danke schonmal, jetzt weiß ich zumindest schonmal warum es nicht 
funktioniert. Ich muss also die clock selection fuse settings ändern und 
die RSTDISBL settings ändern, aber wo geht das? Wenn ich zu dem 
mikrocontroller connecte steht unter dem Registerpunkt Fuses nichts von 
diesen settings ( benutze das AVR Studio ). Mit den Jumpersettings hat 
das nichts zu tun oder?
OP #1031554
Lesenswert?

Ok soweit hab ichs schonmal verstanden, dann würde ich das ganze 
wahrscheinlich mit high voltage programmieren müssen. (Ok jetzt weiß ich 
auch was hv ist :D ).
Trotzdem weiß ich immer noch nicht, was ich aktivieren bzw. deaktivieren 
muss, damit ich von PortB die Pins 6 und 7 benutzen kann.
Gast #1031661
Lesenswert?

Quatsch!

bitte streichen:

>man nun stell Dich nicht so an.

>(XTAL1/TOSC1) PB6
>(XTAL2/TOSC2) PB7

>sind für den Prog. Takt vorbelegt und auf dem STK in ISP-Mode
>nicht nutzbar!

Der Prog. Takt kommt über PB5(SCK).
Hab jetzt hin und her probiert mit OSCSEL und XTAL1
BP6+7 lässt sich nicht nutzen!

Hab jetzt mal das STK "durchgeklingelt"!

Pin 9 und 10 des M8 sind garnicht mit den Pfostensteckern von
PB6 und PB7 auf dem STK verbunden!

( Design Fehler oder bewußt ? )

jetzt wirds interessant!

Klaus
#1031673
Lesenswert?

Klaus wrote:
> Pin 9 und 10 des M8 sind garnicht mit den Pfostensteckern von
> PB6 und PB7 auf dem STK verbunden!
>
> ( Design Fehler oder bewußt ? )
Steht sogar im Manual des STK500. Die liegen auf dem PORTE/AUX-Header 
(und zwar, o Wunder, an XTAL1 und 2), weil sie nunmal primär mit 
Sonderfunktionen belegt sind!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren