Virtueller Port auf PIC32

Gast #3835948
Lesenswert?

Hallo,

ich möchte Werte parallel an einen AD-Wandler schicken. Mir ist es aber
nicht möglich einen kompletten zusammengehörenden Port für diesen Zweck 
zu nutzen. Ich habe 16 verschiedene Bits (beispielsweise RA7, RB5, RC3, 
usw..) Natürlich könnte ich jedes Bit einzeln setzen. Eleganter wäre es 
aber, wenn ich mir einen "virtuellen" Port aus eben diesen Bits
erstellen könnte und so immer alle Bits gleichzeitig schreiben. Ist das 
möglich? Ich nutze einen PIC32 und programmiere in C unter MPLAB (C32 
Compiler). Wäre echt eine große Hilfe, wenn das gehen würde. Könnte das 
auch an vielen anderen Stellen einsetzen.

Deshalb schonmal Danke für die Unterstützung!!!
Gast #3836018
Lesenswert?

ab2501 schrieb:

> Mir ist es aber
> nicht möglich einen kompletten zusammengehörenden Port für diesen Zweck
> zu nutzen.
[...]
> Eleganter wäre es
> aber, wenn ich mir einen "virtuellen" Port aus eben diesen Bits
> erstellen könnte und so immer alle Bits gleichzeitig schreiben. Ist das
> möglich?

Höchstens virtuell (aus Sicht der Logik der Anwendung). Physisch aber 
ist es unmöglich.

Alles, was man in einem solchen Fall unternehmen kann, ist eine Art 
Schadensminimierung. D.h.: man setzt immer wenigstens all die Bits auf 
einmal, die sich physisch tatsächlich auf einmal setzen lassen. Bei 
kluger Wahl der Bitverteilung auf die physischen Ports reicht dieser 
Ansatz oft auch bereits, um letztlich das gewünschte Ergebnis erzielen 
zu können.

Ob es überhaupt geht und wenn ja, wie genau die optimale Verteilung dazu 
aussehen muß, das sind Sachen, die leider sehr stark von der konkreten 
Hardwareperipherie abhängen. Deren Funktionsweise muß man dazu bis in's 
Detail verstehen, zumindest den Teil, der die Kommunikation der Hardware 
mit dem Steuercontroller betrifft.
Gast #3837720
Lesenswert?

Danke für die Antworten.. hatte schon befürchtet, dass so etwas nicht 
geht und ärger mich jetzt etwas, dass ich nicht den Mehraufwand beim 
Layout in Kauf genommen habe, um wirklich einen kompletten Port nutzen 
zu können.

Habe jetzt auch das gleiche Problem bei der Ansteuerung eines 2x16 
Displays (LCD). Also habe die 8 Datenbits auch von drei verschiedenen 
Ports. Hättet ihr da vielleicht eine Idee, wie ich es zumindest in der 
Software halbwegs sauber hinbekomme, dass ich nicht jedes Bit einzeln 
setzen muss. Da ich die Werte erst nach abgeschlossener Messung anzeigen 
möchte, ist es auch keine zeitkritische Anwendung. Die Ausgänge physisch 
nacheinander zu setzen, sollte also kein Problem sein. Ich möchte nur in 
der Software nicht jedes Bit einzeln aufrufen, sondern möchte zum 
Beispiel einfach nur "DisplayDaten = 527" schreiben können.

Ich habe beim Display eh noch ein grundsätzliches Problem. Nehmen wir 
mal an ich möchte "Drehzahl: 543 rpm" auf dem Display anzeigen. Muss ich 
dann wirklich das ganze Font-Map aus dem Display-Datenblatt in meinem 
PIC speichern (beispielsweise "LHLLLHLL" für das große "D") und dann 
jedes Zeichen des Wortes durchgehen und die entsprechenden Bits senden?

Nochmals Danke für die Hilfe!
#3837819
Lesenswert?

ab2501 schrieb:

> Ich habe beim Display eh noch ein grundsätzliches Problem. Nehmen wir
> mal an ich möchte "Drehzahl: 543 rpm" auf dem Display anzeigen. Muss ich
> dann wirklich das ganze Font-Map aus dem Display-Datenblatt in meinem
> PIC speichern (beispielsweise "LHLLLHLL" für das große "D") und dann
> jedes Zeichen des Wortes durchgehen und die entsprechenden Bits senden?

Wahrscheinlich bist du jetzt total überrascht, dass der Compiler schon 
"weiß", dass mit "D" ein "LHLLLHLL" oder 0x44 gemeint ist. Dieses 
Kunststück nennt sich ASCII-Code.

;-)


PS: Ich glaube, du stehst noch gaaanz am Anfang eines langen Weges.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren