Eigene Kommunikation IO-Warrior <-> PIC Mikrokontrolle

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
stefan-tiger
Posts: 33
Joined: Wed Mar 15, 2006 2:37 pm
Location: Pforzheim

Eigene Kommunikation IO-Warrior <-> PIC Mikrokontrolle

Post by stefan-tiger »

Hallo,

ich möchte hier mal kurz unseren Entwurf für eine eigene Kommunikation zwischen dem IOW und einem PIC vorstellen.

Ziel: der PIC soll über den IOW den PC steuern

RS232 und IIC wollen wir zunächst nicht wverwenden, weil man dazu entweder kein IOW bräuchte oder der IOW nicht den gewünschten slave-Modus kann.

Auf der IOW-Seite wurden die letzten 8 IO-Pins, auf der PIC-Seite der komplette Port C als Kommunikationsleitungen festgelegt.

Bei der Verdrahtung sind wir uns noch unsicher ob wir Sie direkt verbinden oder noch Widerstände einfügen müssen (Was könnte passiert wenn zwei aufeinandergeschaltete PINs von IOW und PIC High oder Low oder unterschiedlich sind? Tipps sind Willkommen).

Abgefragt werden die Leitungen mit einem Interrupt auf der PIC-Seite, und mit einem Nebenläufigen Polling auf der PC-Seite.

Da alle Leitungen für PIC und IOW sowohl Sende- als auch Empfangsleitungen sind kam es bei ersten versuchen mit 200ms und 50 ms Sendeimpulsen manchmal zu Überlagerungen.
Hat der PIC eine 16 (also 5. Leitung) aktiv gesetzt und der IOW gleichzeitig eine 128 (also 8. Leitung) kam der "Datensalat" von 144 dabei raus.

Wir müssen nun noch eine Steuerleitung spendieren die anzeigt ob der Kommunikationsweg frei oder belegt ist.
Bei belegt soll eine Zufällige Zeit gewartet werden und dann erneut Versucht, bis es geklappt hat.

Was haltet Ihr davon?

Gruß Stefan
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Ohne Handshake keine gute Idee. Wie findet die Gegenstelle raus, das neue Daten anliegen?
stefan-tiger
Posts: 33
Joined: Wed Mar 15, 2006 2:37 pm
Location: Pforzheim

Post by stefan-tiger »

Guido Körber wrote:Ohne Handshake keine gute Idee. Wie findet die Gegenstelle raus, das neue Daten anliegen?
Die PC Seite pollt den IOW.

Beim PIC wird bei Änderung an EINEM bestimmten PIN ein Interruppt ausgelößt. In der ISR werden dann die Kommunikationsleitungen gelesen und ausgewertet.
Wir haben den PIN momentan mit der 8. Leitung verbunden, d.h. wenn der IOW eine 128 sendet.
Das funktioniert dann so:

1. IOW legt für X ms das Datum an (z.B. eine 4 => Leitung 3 aktiv)
2. IOW legt für X ms das (Datum+128) an (z.B. eine 4+128 => Leitung 3 und 8 aktiv)
3. IOW legt für X ms das Datum an (z.B. eine 4 => Leitung 3 aktiv)

Schema (low aktiv):

Phase:..............1. 2. 3.
Leitung 3: -----|..........|-----
Leitung 8: --------|...|--------- (ist auch mit external Interruppt verbunden)

Zum Beginn der Phase 2 springt der PIC in die ISR und hat dann 2 mal X ms Zeit alle Leitungen zu lesen
Post Reply