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