PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pic 16f84 und parallele schnittstelle



msp
31.03.2005, 21:09
hi leute,
ich versuche seit einiger zeit meinem pic daten ueber die parallele schnittstelle zu uebergeben, nur leider gelingt es mir nicht. ich habe den pin ra0 direkt an die parallele schnittstelle angeschlossen (auf datenleitung0). wenn ich ein programm schreibe was nur porta.0 ausliest und auf portb aus gibt funktioniert alles. sobald ich aber mehrere bits seriell uebergeben will funktioniert es nicht mehr und der pic erkennt sachen wie
while(PORTA.0); nicht mehr als endlosschleife, sobald PORTA.0 1 ist. er ueberlaeuft einfach diese schleife. erklaeren kann ich mir das nicht. ich habe schon viel getestet aber noch nichts gefunden was falsch sein koennte. vielleicht habt ihr noch eine idee was bzw wie man was testen kann.
ich sag einfach nochmal was ich eigentlich will:
ich moechte eigentlich nur ein schieberegister simulieren. einfach 12 bit dem pic uebertragen ueber maximal 2 leitungen, damit dann die ersten 4 bit die adresse des pics bilden, die naechsten 4 bit ausgange zu einem demultiplexer und die anderen 4 bit eine auswahl bilden welcher demultiplexer gemeint ist.

danke.
msp

Smi
22.04.2005, 08:54
sieh dir mal die beschreibung der Paralelen schnittstelle an.Baudrate!!
Parallel heißt mehrere bits auf ein mal. Ist schneller als seriell brauch aber mehr anschlüße.
Wenn du 2 Leitungen haben willst und seriell datan übertragen willst bitet sich doch die rs232 Schnittstelle an die ist auch recht einfach anzusteuern.

Mobius
22.04.2005, 23:43
Also die Baudrate kann es nicht sein (außer du läufst schneller als, sag ma Clock/4, doch das ist recht unwahrscheinlich), da du, wie ich aus deinem Text entnehmen kann, einfach den PIC in einer Schleife warten lässt, bis der nächste bit (high) ankommt.

Kannst du mal ein Codeschnipsel posten (vor allem, wo die die Daten empfängst, mit der while() schleife). So kann ich nur raten, was falsch sein könnte (wobei es schon recht seltsam ist)...

Ansonsten, welchen Chip benutzt du, weil vielleicht ist er wirklich einfacher, wenn du den Com-Port für die serielle Übertragung nimmst (natürlich einen MAX232 dazwischenschalten ;) ), vor allem, wenn dein PIC einen internen USART hat.

@Testen... Wenn du einen Qsci hast, kannst du ganz einfach mal abhören (-sehen), was der Port eigentlich dem PIC schickt....

@Parallel-Port: Ich kenn mich erlich geasgt bei dem parallel-port net so gut aus, aber kann es nicht sein, dass du nur alle Data-Pins auf Input oder Output haben kannst? Weil wenn ja, ist es verständlich, dass du die Daten verlierst, wenn DataPin 1 gerade auf high war und du anfängst etwas auf dem Pin0 einzulesen... Ist nur so eine Idee von mir... Ansonsten, hast du geschaut, dass du NUR das jeweilige Pin setzt, also, dass beim Lesen von Pin0 der Status von Pin1 nbicht verändert wird?

MfG
Mobius

msp
24.04.2005, 19:54
hi leute,

zuerst mal danke.

2.
die parallele schnittstelle hat 8 datenleitungen, also kann man sie auch unterschiedlich setzen, jede einzelne. daran kann es also nicht liegen, aber es sollte trotzdem eine parallele datenuebertragung moeglich sein.

zum 3. benutze ich den 16f84a.

4. ich werde wenn ich mehr zeit habe mal den code reinstellen.

gruss
msp