µC ATmega 8515 LEDs leuchten nach Tastendruck nicht

OP #3458951
Lesenswert?

Hallo und guten morgen liebe Gemeinde.

Ich habe mich gerade eben über das zweite Progrämmchen im AVR-Tutorial 
gemacht.

Hier der ASM Code:
1
.include "m8515def.inc"
2

3
ldi r16, 0xFF
4
out DDRB, r16   ;Alle Pins an Port B durch Ausgabe von 0xFF ins
5
                ;Richtungsregister DDRB als Ausgang konfigurieren
6

7
ldi r16, 0x00   
8
out DDRB, r16   ;Alle Pins an Port D durch Ausgabe von 0x00 ins
9
                ;Richtungsregister DDRD als Eingang konfigurieren
10

11
loop:
12

13
in r16, PIND    ;an Port D anliegende Werte (Taster nach r16 einlesen
14
out PORTB, r16  ;Inhalt von r16 an Port B ausgeben
15
rjmp loop       ;Sprung zu "loop" -> Endlosschleife

Das komische ist, dass bei mir jetzt die LEDs nicht leuchten, nachdem 
ich einen der Taster gedrückt habe.

Ist denn am Programmcode etwas verkehrt?

Vielen Dank für die Antworten im Voraus.

Gruß

Max
#3458954
Lesenswert?

Martin Müller schrieb:

>
1
> ldi r16, 0xFF
2
> out DDRB, r16   ;Alle Pins an Port B durch Ausgabe von 0xFF ins
3
>                 ;Richtungsregister DDRB als Ausgang konfigurieren
4
> 
5
> ldi r16, 0x00
6
> out DDRB, r16   ;Alle Pins an Port D durch Ausgabe von 0x00 ins
7
>                 ;Richtungsregister DDRD als Eingang konfigurieren
8
>

vergleich mal Kommentar mit dem was im Programmtext selber steht.
Wenn du nicht einfach nur Programme abtippst, sondern das bisherige auch 
verstanden hast, dann müsstest du selbst drauf kommen, was da falsch ist 
bzw. was dein Fehler bewirkt und warum daher die LED nicht leuchten.
#3458960
Lesenswert?

Martin Müller schrieb:
> Andre St. schrieb:
>> warum machst du denn noch eins auf???
>>
>> Beitrag "Erstes Programm vom AVR-Tutorial mit dem ATmega8515"
>
> Achso...
>
> Ich dachte einen neuen Thread zu erstellen, weil es sich um ein neues
> Programm handelt...
>
> Ich werde es in Zukunft unterlassen...

Nein, das ist schon ok.
Das hier ist keine Fortführung des dortigen Problems.
OP #3458961
Lesenswert?

> vergleich mal Kommentar mit dem was im Programmtext selber steht.
> Wenn du nicht einfach nur Programme abtippst, sondern das bisherige auch
> verstanden hast, dann müsstest du selbst drauf kommen, was da falsch ist
> bzw. was dein Fehler bewirkt und warum daher die LED nicht leuchten.

Sorry, ich habe es nicht gesehen, dass ich zweimal DDRB geschrieben 
habe...

Jetzt funktioniert es...
#3458964
Lesenswert?

Martin Müller schrieb:
>> vergleich mal Kommentar mit dem was im Programmtext selber steht.
>> Wenn du nicht einfach nur Programme abtippst, sondern das bisherige auch
>> verstanden hast, dann müsstest du selbst drauf kommen, was da falsch ist
>> bzw. was dein Fehler bewirkt und warum daher die LED nicht leuchten.
>
> Sorry, ich habe es nicht gesehen, dass ich zweimal DDRB geschrieben
> habe...
>
> Jetzt funktioniert es...

Du brauchst dich nicht entschuldigen :-)
Das wird dir noch oft passieren, dass du Dinge nicht siehst, die du 
verbockt hast. Es wird dich lehren auf Details zu achten, mehr Sorgfalt 
an den Tag zu legen und in Zukunft, bei größeren Programmen, selbst erst 
mal all die kleinen Details zu überprüfen.
#3458977
Lesenswert?

Du musst auch lernen, den Simulator vom AVR-Studio zu benutzen.
Der simuliert deinen µC (wenn auch in manchen Bereichen etwas 
fehlerhaft) und hat eine Anzeige über den Zustand der Portbits. Dort 
siehst du, ob ein Bit auf 0 oder auf 1 steht. Dein Programm kannst du in 
Einzelschritten durchgehen und dann das, was du in dieser Anzeige siehst 
mit dem vergleichen, was der Programmidee entsprechend eigentlich 
passieren sollte. Und wenn das nicht übereinstimmt, dann ist entweder
* die Programmidee falsch
* oder die Idee ist fehlerhaft umgesetzt worden

Beschäftige dich mal mit der Simulation. Du wirst sie noch oft brauchen, 
d.h. du kannst gar nicht früh genug anfangen sie zu erkunden und ihre 
Möglichkeiten auszuloten.
OP #3466672
Lesenswert?

Hallo und guten Tag mal wieder.

Ich wollte ein weiteres Beispielprogramm aus dem Kapitel IO Grundlagen 
des AVR Tutorials ausprobieren.

Dazu das Beispielprogramm aus dem Tutorial:
1
ldi r17, 15  ;Register r17 wird mit der Konstanten 15 geladen
2
mov r16, r17 ;Register r16 wird mit dem Inhalt des Registers r17 geladen
3
out PORTB, r16;IO-Register "PORTB" wird mit dem Inhalt des Registers r16     geladen
4
in r16, PIND ;Register 16 wird mit dem Inhalt des IO-Registers "PIND" geladen

Wenn ich jedoch am Anfang des Programms
1
.include "m8515.inc"

eingebe, dann moniert bei mir das Programm mit der Aussage

error: Cannot find include file: m8515.inc

Woran liegt das?

Weil ich habe es von dem ersten Progrämmchen so übernommen und dachte, 
dass es funktioniert...

Vielen Dank für die Antworten im Voraus.

By the way ...

An der Stelle allen Beteiligten ein gutes neues Jahr 2014.

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