PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pic und Com Kommunikations Hilfe



gw-tuning
18.10.2011, 21:02
Guten Abend, ich habe zu meinem anderen Tread noch eine Frage.

Wir hatten heute ein Gruppentreffen und nun ja wir hängen fest. Das Anwenderprogramm wird in C# geschrieben und soll dann die Daten über die COM Schnittstelle mit dem Pic austauschen.

Nun wir dachten wie folgt. Damit der Pic nicht viel rechnen soll, wollen wir die Analogwerte 1zu1 an den Rchner übertragen in dem dann über eine Tabelle in einem Array die mA verglichen und ausgegeben werden.

Wir haben zu der Pic Platine noch 4 weitere Karten :

- Analogausgang mit einem 12BIT DA Wandler und Ansteuerung von 4 Ausgangsmgöichkeiten ( Port B 0-7;Port C 0-5; Port E 0-2)Port B und E für die 12Bit und Port E für die Auswahl des Ausgangs;
- Ausgangsrelaiskarte mit 3 Kaskarden mit je 8 Relais( Port B 0-7 für alle Relais aller Kaskarden und Port D 0-2 für die Kaskarde 1-8,9-16,17-24; Port A 4 zur Aktivierung der Karte, weil der Port B ja Zweimal genutzt wird)
- Eingangsplatine mit Diodenmatrix 24 Eingänge auf 5 Bit verteilt ( Port D 3-7)
- Analogeingangskarte (dank eurem Forum) mit Bürdewiderstand ingesamt 4 A-IN Port A 0 - 3)

So alle Digitalen Signale werden über Inverter passend zum Pic LowAktiv geschaltet.Das war unsere vorgabe von der Schulexperimentier Platine.

So was fehlt noch...


Die digitalen Signale wollen wir für die Ausgangskarte an den Pic schicken als Hex Zahl, die dann direkt das Ausgangsbit schaltet.

So ich glaube es ist nur möglich 8 Bit über die Schnittstell auf einmal zu senden.

Unsere Idee:

100x xxxx besagt starte das Programm 1 für Eingangskarte
010x xxxx besagt starte das Programm 2 für Ausgangskarte
110x xxxx besagt starte das Programm 3 für Analogausgangskarte
001x xxxx besagt starte das Programm 4 für Analogeingangskarte

Nach dem "Startsignal soll er dann die jeweiligen Code bekommen für die Entsprechende Bitbestückung/beschaltung. Bis ein Stop-Programm signal kommt... nur da wissen wir nichts mehr, vielleicht hat jemand ne idee ob das funtkionieren könnte und wenn nicht was wir machen könnten...

Danke danke, ich hoffe ich habe viele Infos geben können...

Unser Pic ist der 16F877A

Danke

Gruss Uwe, Rene, Markus, Alex

-schumi-
18.10.2011, 22:30
100x xxxx besagt starte das Programm 1 für Eingangskarte
010x xxxx besagt starte das Programm 2 für Ausgangskarte
110x xxxx besagt starte das Programm 3 für Analogausgangskarte
001x xxxx besagt starte das Programm 4 für Analogeingangskarte

Gewohnt euch lieber nicht an, das niederwertigste Bit links hinzumachen, sonst kommt ihr wahrscheinlich die ganze Zeit durcheinander, wenn ihr im Programm mal eine Zahl mit "0bxxxxxxxx" angebt.. ^^
Besser:
001
010
011
100

Allerdings verstehe ich das Problem nicht ganz...

Wenn euch 5 Bit als "Befehl" reichen, müsst ihr ja nur die jeweilige Adresse der Karte (0b00100000 bis 0b0b10000000) mit dem Befehl oder-Verknüpfen. Dann bekommt ihr einen 8 Bit wert, den ihr einfach über die Serielle jagen könnt... Auf der anderen Seite von µC halt wieder zerlegen lassen, sprich
Adresse = Empfangen &0b11100000
Befehl = Empfangen & 0b00011111

Gruß