-         

Ergebnis 1 bis 3 von 3

Thema: Kommunikation mit Sensor - Sensordaten am PIC einlesen

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2006
    Alter
    30
    Beiträge
    150

    Kommunikation mit Sensor - Sensordaten am PIC einlesen

    Anzeige

    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änkungen aber 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:

    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;
    Zur Vollständigkeit. TRIS der Lampe auf 0 gesetzt (Ausgang) OK!!
    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,

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.01.2005
    Beiträge
    127
    Du musst auf jeden Fall das bit aus dem Register PORTA lesen. LATA sind nur die Soll-Ausgangswerte der Pins, die aber nicht mit den tatsächlichen Werten der Pins übereinstimmen müssen, falls diese als Eingang geschaltet sind. Also lesen aus PORTA uns schreiben idealerweise über LATA.

    Poste mal deinen gesamten Code. Der Fehler kann auch wo anderst liegen. Hast du die Analogeingänge explizit als Digitaleingänge geschaltet?

    Verwendest du zur Verbindung mit dem Sensor getrennte Sende und Empfangsleitungen? Dann kannst du auch das SPI-Modul mal probieren.

    Stefan

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2006
    Alter
    30
    Beiträge
    150
    Tja, es war das ADCON1-Register. Danke für den super Tipp. Ich hab angenommen, dort sind eh alle standardmäig auf Digital eingestellt, aber man lernt ja nie aus. Aber es ist wieder mal ärgerlich. Es sind immer solche Sachen, solche unscheinbaren, die immer ärgern. Ich denk ja mal vorher, dass an meinem Code was müll ist mit der Kommunikation, dann hab ich die Beschaltung kontrolliert, umgesteckt, andere Pins benutzt und dann so ein Fehler. Na ja, danke auf jeden Fall!!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •