Forum: Mikrocontroller und Digitale Elektronik Probleme beim AVR-Tutorial mit Pollin EvaBoard


von Adrian (Gast)


Lesenswert?

Ich habe ein Problem beim Eingang einlesen.

.include "m8def.inc"

         ldi r16, 0xFF
         out DDRB, r16

         ldi r16, 0x00

         ldi r16, 0xFF
         out PORTD, r16

loop:
         in r16, PIND

         out PORTB, r16
         rjmp loop

Mein Problem ist das bei dem Pollin Board sowohl Taster und auch die 
Leds alle an Port D angeschlossen sind. Ich bräuchte es vom Sinn her so:

         in r16, PIND3
         out PB5, r16
         rjmp loop

So funktioniert das aber nicht. Ich habe schon alle möglichen 
Schreibweisen probiert und Anleitungen durchforstet, finde aber nicht 
wie man in Assembler nur einen Eingang ausliest und auch direkt wieder 
ausgibt.

Danke schon mal

von Achim M. (minifloat)


Lesenswert?

Hallo
1
Pseudocode:
2
3
PIND in Register1 einlesen
4
5
Bitmaske mit gesetztem 3.Bit in Register2 stecken
6
7
Register1 mit Register2 ver&en, 3.Bit ist jetzt herausgegriffen
8
9
Register1 um 2 bits verschieben
10
11
Register1 auf PortB ausgeben

Wenn du noch mehr Bits brauchst, oder mehr Bits umsortieren musst,
brauchst du noch ein Register wo du den kram zwischenspeicherst.
Einzelne Bits in ein Register zu bekommen machst du mit verODERn.

mfg mf

von Martin V. (oldmax)


Lesenswert?

Hi
Im Prinzip mußt du lernen, das dies nix mit dem pollin Board zu tun hat, 
sondern nur eine allgemeine Anleitung ist, wie Portbits eingelesen und 
ausgegeben werden. Wie das geht, steht im Tutorial drin. Mit C&P wird 
das nix. Verstehe erst einmal, welcher Befehl einen Portpin 
konfiguriert, also ihn zum Eingang oder Ausgang macht. Des weiteren mußt 
du wissen, ob es was bringt, die PullUp-Widerstände einzuschalten. Wird 
dir beim Pollin Board nix nützen, da die Taster an 5 V sind, daher 
brauchst du schon mal PullUp, also Widerstände gegen GND, das geht nur 
extern. Mein Tip: arbeite dich erst mal durch die Tutorials durch.
Gruß oldmax

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.