mikrocontroller.net

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


Autor: Florian Koch (fkoch)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.