Forum: Mikrocontroller und Digitale Elektronik µC ATmega 8515 LEDs leuchten nach Tastendruck nicht


von Martin M. (silent_max)


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

von Andre S. (andys)


Lesenswert?


von Karl H. (kbuchegg)


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.

: Bearbeitet durch User
von Martin M. (silent_max)


Lesenswert?

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...

von Karl H. (kbuchegg)


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.

von Martin M. (silent_max)


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...

von Karl H. (kbuchegg)


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.

von Martin M. (silent_max)


Lesenswert?

Ich habe mich dennoch zu entschuldigen, da ich nicht genau geschaut habe 
bzw. nicht darauf gekommen bin bzw. nicht genau genug gearbeitet habe.

Ich will es jetzt nicht über das Knie brechen, aber ich werde mich jetzt 
mehr anstrengen

von Karl H. (kbuchegg)


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.

von Martin M. (silent_max)


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.

von Martin M. (silent_max)


Lesenswert?

Sorry ...

Habe in
1
.include "m8515.inc"
 das def vergessen.

P.S.:

Mein Kater ist noch nicht ganz weg.

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.