Forum: Mikrocontroller und Digitale Elektronik AVR/PIC umsetzen


von Andi (Gast)


Lesenswert?

Hallo,

ich möchte ein Beispielprogramm für einen AVR umschreiben, damit es auf 
einem PIC läuft. Der Code ist in C geschrieben und ich muss eig. nur 
noch die defines ändern. Leider versteh ich nicht ganz was diese defines 
bedeuten.

1
#define RF_PORT  PORTB
2
#define RF_DDR  DDRB
3
#define RF_PIN  PINB
4
5
#define SDI    5
6
#define SCK    6
7
#define CS    7
8
#define SDO    0


DDRB entspricht den TRIS bits (soweit ich weis genau andersrum)
PORTB ist der entsprechende Port, eig. auch klar

aber was ist denn jetzt der PINB?! Normalerweise habe ich doch einen 
PORTB und dann die entsprechenden Bits, also PB0 bis PB7 oder so...

Kann mir mal jemand auf die sprünge helfen damit ich weis was ich 
anpassen muss...

Thx
Andi

von Julian R. (tuefftler)


Lesenswert?

Beim AVR gibt es drei Register zur Pinsteuerung:
-DataDirectionRegister(DDR) steuert EINGANG/AUSGANG
-PORT steuert AUSGANGSPEGEL
-PIN enthält den EINGANGSPEGEL, also nur lesbar!

julian

von Andi (Gast)


Lesenswert?

ach so aber in meinem Beispiel ist PORTB und PINB der gleiche IO, einmal 
zum lesen und einmal zum schreiben?!?!

von steffen (Gast)


Lesenswert?

das sieht so aus als würdest du SPI verwenden. Auch wenn alles in C 
geschrieben ist, kannst du das nicht 1:1 übernehmen.

Es wird dir nicht erspart bleiben -dich- durch das Datenblatt zu wälzen. 
Da AVR und PIC ähnlich sind, versteht du dann auch die Sache mit 
PORT/PIN/DDR.

von Andi (Gast)


Lesenswert?

ja wird spi verwendet aber kein hardware spi!! das bedeutet das ich 
lediglich die IOs anpassen muss...

von steffen (Gast)


Lesenswert?

es geht mir darum dass die Ein- und Ausgänge setzen/lesen das einfachste 
ist was man mit nem uC so macht.
Und das sollte dir hier keiner vorkauen, das bekommste echt selbst hin.
Datenblatt -> Kapitel Digital I/O -> 1. Seite davon lesen und umsetzen

SDI muss als Eingang, die anderen als Ausgang gesetzt werden.

von holger (Gast)


Lesenswert?

Bei PIC16:

PORTx     PORTx
DDRx      TRISx
PINx      PORTx

geht ja nicht anders.

Bei PIC18:

PORTx     LATx
DDRx      TRISx
PINx      PORTx

von Andi (Gast)


Lesenswert?

super danke :)

von usuru (Gast)


Lesenswert?

> Bei PIC18:

Auch einige neuere PIC16xxxx haben schon die LATx-Register.

Noch ein Tip: lies Dich mal bei www.sprut.de ein, das ist DIE Seite für 
PIC-Anfänger und es gibt es viele gute Beispiele.

von Maik M. (myco)


Lesenswert?

Julian R. schrieb:
> -PIN enthält den EINGANGSPEGEL, also nur lesbar!

Das ist so nur für ältere AVRs richtig. Bei den neueren kann man in das 
PIN-Register schreiben, und löst damit ein Umschalten des Ausgangs aus 
(Pin-Toggle).

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.