Hvordan skriver/læser man til/fra en bestemt pin på Atmel's AVR?

Hejsa

Jeg har købt mig et STK500 fra Atmel samt downloadet CodeVision i en evaluationversion til at skrive kode i.

Hvis jeg ønker at læse knapperne på boardet og bare skrive dem ud på de respektive LED's kan man bare skrive:

PORTB=PIND;

hvilket jo er såre simpelt, men hvordan gør man det for en bestemt pin? (både læse og skrive).

Håber, I kan hjælpe mig

--
Mvh.

Tomas
Reply to
Tomas .
Loading thread data ...

Du skal maske de ikke-relevante bits væk. Hvis du er interesseret i D3, AND'er du med 08H, eller OR'er med F7H, afhængig af hvordan din logik vender.

/Bo.

Reply to
Bo Braendstrup

Du skriver f.eks. PORTB.6, for at skrive til PORTB, ben 6. Tilsvarende f.eks. PINA.3 for læsning.

Alternativt som Bo skriver.

-- MVH Troels

Reply to
Troels B. Pedersen

Denne metode synes jeg, jeg har forsøgt - men uden held. Må bare prøve igen - ellers prøver jeg, som Bo foreslår :-)

--
Mvh.

Tomas
Reply to
Tomas .

hey, du skal jo lige huske at sætte direction regisrteret.... den er jo lidt anderledes end en 8031......

/f

Tomas . wrote:

Reply to
Finn Bindeballe

Hvis dette virker:

Går jeg ud fra at DDR er sat! ;)

Brian

Reply to
Brian Lund

Brian Lund skrev:

Jeps, DDRD=0x00; DDRB=0xff; sætter jo hhv. port B som output og port D som input.

--
Mvh.

Tomas
Reply to
Tomas .

Der er åbenbart ingen der kan svare dig!? - Jeg roder selv meget med AVR men jeg roder ikke med det der C-pjat! ;) Jeg kan godt fortælle dig hvordan du kan gøre det i assembler hvis det er? Tilmeld dig evt. på

formatting link
og spørg der!

Brian

Reply to
Brian Lund

Brian Lund skrev:

Det er jo lidt som religion, om man vælger Assembler eller C Jeg ved dog godt, at skal man programmere et system i Real-time er assembler helt klart at foretrække, da du har fat i hardwaren helt anderledes, men er ikke videre stærk i assembler, så jeg holder mig til C :-)

Jeg prøver avrfreak - takker

--
Mvh.

Tomas
Reply to
Tomas .

Hej

Jeg har ikke den store erfaring med AVR, men en mulighed til at lave maskningen kunne være at definere nogle macroer som vist i følgende eks.:

// Define pin connections #define DispDataOutPort PORTB #define DispDataOutBit 0

// Define IO macro's #define DispDataOut_H DispDataOutPort |= (1

Reply to
Bjarke Jensen

Hej Tomas

En lille hurtig guide, som dybest set ikke indeholder mere end hvad andre allerede har skrevet:

L=E6se ben 3 (Bit 2, siger vi bare) fra port D: input =3D PIND & (1

Reply to
Jesper H

Hej Jesper

Tak for din udførlige guide. Lige lidt kommentarer/spørgsmål:

OK. Her vil input så være = 1, hvis PIND = 4dec og 0, hvis den antager alle andre værdier, korrekt?

Reply to
Tomas .

Bjarke Jensen skrev:

Så på denne måde kan du måske hjælpe dig selv til at skabe en sammenhængende port, du kan skrive til bit 0 - 7, hvis du rent HW mæssigt har været nødsaget til at benytte enkelte pinne til andre operationer (INTR, TIMER etc)?

--
Mvh.

Tomas
Reply to
Tomas .

Hej Tomas

Lidt kommentarer/svar:

Reply to
Jesper H

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.