Hallo!
Ich hab ein Problem der Kommunikation mit einem Sensor. Der verwendet ein eigenes Protokoll, aber das ist nicht das Problem.
Zuerst sende ich ihm einen Befehlcode, dann arbeitet er, dann schickt er mir die Daten (Byte) seriell.
Ich stelle am PIC die Clock ein, sprich ich kann (im Grunde genommen) entscheiden wie "langsam" die Übertragung geht. Bei der schnelle gibts Beschränkungenaber egal.
Das Problem ist, dass ich die bits nicht einlesen kann. Der Sensor schickt richtig die Bits, also High oder Low. Hab die Komm ganz langsam eingestellt und nachgemessen. Dann wollt ich eben schauen ob der PIC das High-Bit eingelesen hat und falls, sollte ein Lämpchen an nem anderen Ausgang leuchten. Aber das tut es nicht. Sprich: Das einlesen klappt nicht.
Häng den zugebenermaßen schlimm aussehenden Testcode dran:
Zur Vollständigkeit. TRIS der Lampe auf 0 gesetzt (Ausgang) OK!!Code:TRIS_DATA = 1; //#define TRIS_DATA TRISAbits.TRISA1 for(i=0x80; i>0; i/=2) //Mit einer Schleife das Byte bitweise einlesen { SCK = 1; //#define SCK LATAbits.LATA3 wait_s(3); //PIC wartet n-Sekunden SCK = 0; wait_s(1); if(DATA) //#define DATA LATAbits.LATA1 LAMP1 = 1; //#define LAMP1 LATBbits.LATB4 else LAMP1 = 0; wait_s(3); } if (DATA) LAMP1 = 1;
Programmiere mit C18 von Microchip
Ich verstehs nicht. Hab auch statt LATA... PORTAbits.RA1 probiert. geht auch nicht und auch nicht DDRA.bits ... (Aus PIC18F4550 lib)
Bitte um Hilfe, weil ich hab keinen Dunst was ich da noch ausprobieren soll
lg,







Zitieren

Lesezeichen