Hallo zusammen, ich bin Anfänger im µC Bereich und stehe auch schon vor dem ersten Problem. Ich benutze das STK500 mit einem ATMEGA8515. Ich habe in anderen Beiträgen schon gelesen dass die Ausgänge invertiert sind nur dann verstehe ich folgendes nicht. Bei diesem Programm leuchten alle LEDs, obwohl ich PORTB 0x00 übergeben habe. --------------------------------------------------- .include "m8515def.inc" .def temp = r16 ldi temp, 0xFF out DDRB, temp ldi temp, 0x00 out DDRD, temp out portb, temp loop: rjmp loop --------------------------------------------------- Bei diesem Testprogramm wo ich die Tasten an PortD abfrage und direkt an PortB weiterleite, ist es so wie es sein soll. Also bei 0 ist die LED dunkel. --------------------------------------------------- .include "m8515def.inc" .def temp = r16 ldi temp, 0xFF out DDRB, temp ldi temp, 0x00 out DDRD, temp loop: in temp, pind out portb, temp rjmp loop --------------------------------------------------- Wie kann das sein?? Ich habe bei beiden Programmen "temp" in das Watch-Fenster gegeben (AVR-Studio 4) und in der Simulation beobachtet. Der Wert ist immer 0, trotzdem verhalten sich die LEDs bei beiden Programmen anders!? Für eure Hilfe währe ich sehr Dankbar. Ich blick einfach nicht durch :) Mfg Markus
Hi Die Taster sind auch invertiert (gedrückt=L). MfG Spess
Leds schalten bei L-Pegel ein, die Schalter schalten nach Masse. Schalte mal die pullups an PortD ein, damit du auch wirklich ein H liest, wenn der Taster nicht gedrückt ist. ldi temp, 0xff out PortD, temp ldi temp, 0x00 out DDRD, temp
Danke für die schnelle Antwort. Ich verstehe das aber immer noch nicht, denn in der Simulation ist PIND = 0x00. Dann ist die Simulation falsch!? Oder wird in der Simulation das STK500 ignoriert? Danke Markus
Hi
>Oder wird in der Simulation das STK500 ignoriert?
Ja.
MfG Spess
Also ich habe jetzt die Pullups in beiden Testprogs aktiviert. Hat sich aber nichts geändert. So wie es aussieht muss ich es wohl akzeptieren. Trotzdem Danke! Markus
Ist doch alles richtig, im 1. Beispiel schreibst du 0x00 auf den Port = Leds an. Im zweiten Beispiel liest du PIND ein (0xFF wenn kein Taster aktiv) und schreibst das auf den Port = Leds aus.
Der Simulator hat mit dem STK500 überhaupt nichts zu tun. Im Simulator gibts weder LEDs noch Taster; es gibt nur Bits in Kästchen. Die kannst Du natürlich per Mausklicks STK500-konform setzen oder löschen, aber das obliegt Deiner Verantwortung.
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.