Forum: Compiler & IDEs Portzugriff M16C/62 (M30624FGPGP)


von Florian K. (fkoch)


Lesenswert?

Hallo.

Ich ärgere mich nun schon etwas länger mit einem Problem herum und 
hoffe, dass ich hier vielleicht ein paar Anregungen zur Problemlösung 
bekomme.

Also folgendes:

Ich habe mir für den im Titel angegebenen Mikrocontroller den 
kostenlosen KPIT GNU C Compiler mit dem Renesas 
"High-Performance-Embedded-Workshop" installiert. Mittels Wizard habe 
ich die entprechend benötigten Header und C-Dateien erstellt und im 
großen und ganzen funktioniert auch alles. Nur eine Sache bekomme ich 
einfach nicht so hin wie es dokumentiert ist: Die Bytausgabe / -eingabe 
auf Ports.

Lt. Doku muss ich, um bspw. ein Byte auf Port 0 zu legen folgendes tun:

Datenrichtung des Ports setzen:
pd0 = 0xFF;

Gewünschtes Byte ausgeben:
p0 = 0XFE;

Möchte ich dies allerdings kompilieren, so spuckt der Compiler folgendes 
aus:
"error: incompatible types in assignment" (mit der Zeilenangabe des eben 
geschriebenen).

Setze ich die Bits einzeln, also z.B.
pd0_0 = 1;
p0_0 = 1;
dann funktioniert es wunderbar.

Nach langem herumprobieren habe ich herausgefunden, dass es teilweise 
klappt wenn ich schreibe
pd0.byte = 0xFF;
p0.byte = 0xFE;

Dies ist aber nirgendwo dokomentiert und ich weiss nicht, ob es 
ebenfalls beim einlesen von Daten klappt, also
unsigned char byte = p0.byte;

Was mache ich hier nur falsch? Wieso kann ich die direkte Zuweisung 
nicht nutzen?

Mit frdl. Grüßen,

F. Koch

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Welchen Typ haben denn pd0 und p0?
Das sollte in einem Includefile (sfr62.h beim Renesas Compiler) stehen.

Möglicherweise tritt dich nur der Effekt, dass pd0 und p0 falsch 
geschrieben sind. Gelegentlich (oft?) sind diese special function 
register als Makros mit #define angelegt und du brauchst die 
Grossschreibweise PD0 =...; P0 =...;

Ich hätte selbst nachgesehen (http://www.kpitgnutools.com/), aber hier 
habe ich aufgegeben

> Register now for FREE and get access to downloads and support.

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.