hi leute,
ich versuch gerade ein protokoll zwischen meinem pc und einem kleinen gerät rauszufinden.
Das Gerät ist am lpt-port angeschlossen.
Eigentlich ist es ganz leicht, weil der computer an das gerät nichts sendet, sondern nur das gerät an den computer und zwar nur mit einer datenleitung bzw. nur an einem pin des lpt.
zwischen meinem pc und dem gerät hängt mein pic, der alles aufzeichen soll, aber irgendwie stimmt da was nicht.
die software zu dem gerät aufm pc liesst die daten die vom dem gerät gesendet wurden und überprüft ob diese richtig gesendet wurden.
jetzt hängt mein pic dazwischen und alles was von dem gerät reinkommt am RC5 gibt er am RD5 wieder zum pc aus. es wird alles richtig übertragen.
jetzt sollte der pic die daten, die in der ram gespeichert wurden nochmal an den pc übertragen, aber jetzt sind die daten die am pc ankommen nicht mehr vollständig bzw. total falsch.
woran kann das liegen. der code ist eigentlich ziemlich einfach aufgebaut
der pic soll nichts anderes machen als die zustände vom gerät annehmen und dann speichern und dann einfach zum pc weiterleiten.
also das annehmen der zustände und weiterleiten funktioniert sicher, weil die daten am pc richtig ankommen.
aber ob der pic diese zustände in der ram richtig ablegt, dass weiss ich nicht.
dann soll der pic die gespeicherten zustände aus der ram an den pc senden.
also ich weiss jetzt nicht ob der pic die zustände nicht speichert oder ob die zustände richtig gespeichert werden aber falsch gesendet werden.
Code:. . . movlw D'48' movwf cablep6 movwf cablenp6 movlw D'1' movwf count movwf multicount lfsr FSR0,0x70 main btfss PORTC,5 ; TESTE LEITUNG OB AUS movlw D'48' btfsc PORTC,5 ; TESTE LEITUNG OB AUS movlw D'49' movwf cablenp6 ; SPEICHERE ZUSTAND xorwf cablep6,0 ; ÜBERPRÜFE ZUSTAND MIT ALTEM ZUSTAND btfss STATUS,Z call savepc6 btfsc PORTB,2 ; WENN GEDRÜCKT DANN DIE DATEN VOM RAM AN PC SENDEN call sendpcstart goto main ;###################################################### ;###################################################### ;###################################################### ;###################################################### ;savecablepc6 ZUSTÄNDE VOM GERÄT IN RAM SPEICHERN UND ZUM PC WEITERLEITEN savepc6 movf cablenp6,0 ; ZUSTAND IN CPU movwf cablep6 movwf POSTINC0 ; ZUSTAND IM RAM SPEICHERN btfss cablep6,0 bcf PORTD,5 ; LEITUNG ZUM PC AUF LOW SETZEN btfsc cablep6,0 bsf PORTD,5 ; LEITUNG ZUM PC AUF HIGH SETZEN bcf STATUS,Z incf count,1 ; ZUSTÄNDE ZÄHLEN btfsc STATUS,Z ; FALLS ÜBERLAUF incf multicount,1 ; ERHÖHEN return ;###################################################### ;###################################################### ;###################################################### ;###################################################### sendpcstart ; GESPEICHERTE ZUSTÄNDE VOM RAM ZUM PC LEITEN movf count,0 movwf oldcount movf multicount,0 movwf oldmulti lfsr FSR0,0x70 sendpcc btfss INDF0,0 bcf PORTD,5 btfsc POSTINC0,0 bsf PORTD,5 movlw .60 movwf loops warte nop nop nop nop nop nop nop nop decfsz loops,1 goto warte decfsz count,1 goto sendpcc decfsz multicount,1 goto setcount movf oldcount,0 movwf count movf oldmulti,0 movwf multicount return setcount movlw D'255' movwf count goto sendpcc
wäre sehr dankbar für hilfreiche antworten
mfg
pitt







Zitieren

Lesezeichen