www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik P4 bei SiLabs 500 ansprechen


Autor: Mr Bean (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich arbeite hier gerade mit dem SiLabs F500 und möchte die Pins von Port 
4 gerne als Ein/Ausgänge benutzen. Leider kann ich diese nicht 
ansprechen. Habe versucht die Ausgänge gleich wie bei den anderen Ports 
zu definieren:

SBIT (RUN_3V3, SFR_P4, 0);
SBIT (RUN_1V2, SFR_P4, 1);

Bei Port 1 und 3 funktioniert das wunderbar. Nur wenn ich den Port 4 
benutzen will bekomme ich folgende Compilermeldung:

"*** ERROR C142 IN LINE 25 OF MAIN.C: 'SFR': invalid base address"
"*** ERROR C142 IN LINE 26 OF MAIN.C: 'SFR': invalid base address"

Ich habe schon versucht die Datei C8051F500_defs.h anzupassen. Leider 
ohne Erfolg.
Die Adresse des P4 Latch registers ist 0xB5. Es scheint aber so dass 
dieses Register nicht Bitaddresierbar ist. Das sollte es doch aber, 
damit ich jeden Pin einzeln ansprechen kann!?

Hat von euch schon jemand mit diesem Controller gearbeite und kann mir 
sagen was ich bei Port 4 beachten muss?
Scheint schon ein etwas besonderer Port zu sein, ist ja auch nur bei der 
großen Package Variante verfügbar.

Vielen Dank schonmal im Voraus!

Grüße

Bean

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mr Bean schrieb:
> Die Adresse des P4 Latch registers ist 0xB5. Es scheint aber so dass
> dieses Register nicht Bitaddresierbar ist.

Stimmt.
Bits ändern, lesen geht nur über &,|,^.


Peter

Autor: Bernd N (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#define TestPin    P4_1

TestPin = 1;
TestPin = 0;

So sollte sich ein PIN von P4 ansprechen lassen.

Verwendest du den SDCC oder den Keil Compiler ?

Autor: Bernd N (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehe gerade P4 nicht BITadressierbar... das wußte ich nicht.

Autor: Mr Bean (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Hm, also ich verwende den Keil compiler. Werde aber später auf den 
Tasking compiler umsteigen. Wie spreche ich den Port dann an, wenn 
dieser nicht Bitaddressierbar ist?

Grüße

Bean

Autor: Mr Bean (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, habs mit Makros hin bekommen:

#define SETBIT(x,n) ((x)|=1<<(n))
#define CLEARBIT(x,n) ((x)&=~(1<<(n)))
#define GETBIT(x,n) ((x)&1<<(n))

Danke!

Bean

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.