-         

Ergebnis 1 bis 6 von 6

Thema: MCP3551 - AD Wandler liefert unverständliche Daten

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.01.2013
    Beiträge
    9

    MCP3551 - AD Wandler liefert unverständliche Daten

    Anzeige

    Hallo Jungs,
    ich habe einen PIC16F1938 mit AD421 und MCP3551 kombiniert. Der 4-20 mA Ausgang mit dem AD421 lässt sich inzwischen einwandfrei ansteuern. Doch beim MCP3551 hakt es. Bei single conversion liefert er 01010101... usw. Bei continuous conversion sind es nur lauter Nullen. Mir ist das Ergebnis ein völliges Rätsel. Im Forum von Microchip komme ich auch nicht weiter. Kennt sich Jemand mit dem Teil aus? Hier ist der Code vom Auslesen:
    Code:
                BANKSEL   APFCON
                BCF       APFCON,T1GSEL
                BCF       APFCON,SRNQSEL
                BCF       APFCON,C2OUTSEL
                BCF       APFCON,SSSEL
                BCF       APFCON,GIE
                BCF       APFCON,PEIE
                BANKSEL   ANSELA
                BCF       ANSELA,0
                BANKSEL   TRISC
                MOVLW     b'00010011'                ; RC6+7 Output (nicht genutzt), RC 5 (SDO) Output, RC4 (SDI) Input, RC3 (SCK) Output, RC2 (SS) Output, RC1+0 (Eingang+-) Input
                MOVWF     TRISC
                BANKSEL   TRISA
                MOVLW     b'00000000'                ; RA0 Output (SS), Rest nicht genutzt
                MOVWF     TRISA
    
                BANKSEL   PORTC
                BSF       PORTC,2                    ; SS für MCP3551 auf high
                BANKSEL   SSPSTAT
                MOVLW     b'00000000'                ; CKE auf 0, SMP auf 0 --- CKP muss dann auf 1 (mode 1,1)
                MOVWF     SSPSTAT
                BANKSEL   SSPCON1
                MOVLW     b'00110010'                ; SSPEN und CKP auf 1, SPI Master mode, clock = FOSC/16
                MOVWF     SSPCON1
                BCF       SSPCON1,SSPEN
                BSF       SSPCON1,SSPEN
    
    ; Start der continuous Conversion und Verzögerung 20 ms
    
                BANKSEL   PORTC
                BCF       PORTC,2                    ; SS für MCP3551 auf low
    
    
    ; Verzögerung 80 ms
    
                CALL      delay10ms                  ; 11 mal 10ms
                CALL      delay10ms
                CALL      delay10ms
                CALL      delay10ms
                CALL      delay10ms
                CALL      delay10ms
                CALL      delay10ms
                CALL      delay10ms
                CALL      delay10ms
                CALL      delay10ms
                CALL      delay10ms
    
    ; SS auf MCP3551 statt AD421 und Port einrichten
    ; Conversion ist abgeschlossen
    Schleife0
    ; SPI auslesen
         
    ; erstes Byte
    
                BANKSEL   SSPBUF
                BCF       SSPSTAT,BF
                BCF       SSPCON1,WCOL
                MOVLW     b'00000000'
                MOVWF     SSPBUF                     ; startet Transfer 1. Byte
    Schleife1   BTFSS     SSPSTAT,BF                 ; Test ob erstes Byte gelesen ist
                GOTO      Schleife1
                MOVF      SSPBUF,W
                MOVWF     Daten+2                    ; erstes Byte auslesen
    
    ; zweites Byte
    
                BCF       SSPSTAT,BF
                BCF       SSPCON1,WCOL
                MOVLW     b'00000000'
                MOVWF     SSPBUF                     ; startet Transfer 2. Byte
    Schleife2   BTFSS     SSPSTAT,BF                 ; Test ob zweites Byte gelesen ist
                GOTO      Schleife2
                MOVF      SSPBUF,W
                MOVWF     Daten+1                    ; zweites Byte auslesen
    
    ; drittes Byte
    
                BCF       SSPSTAT,BF
                BCF       SSPCON1,WCOL
                MOVLW     b'00000000'
                MOVWF     SSPBUF                     ; startet Transfer 3. Byte
    Schleife3   BTFSS     SSPSTAT,BF                 ; Test ob drittes Byte gelesen ist
                GOTO      Schleife3
                MOVF      SSPBUF,W
                MOVWF     Daten                      ; drittes Byte auslesen

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Hallo!

    Ohne Programmablaufdiagram (PAD) kann ich keine Programme analisieren und deshalb könnte ich nur vermuten, dass das Auslesen richtigen Daten bei "continuous conversion" zu langsam ist.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    20.01.2013
    Beiträge
    9
    Moin PICture,
    Ich habe ja nur den Code-Schnipsel ins Netz gestellt, der den MCP ausliest. Das muss irgendwo das Kaninchen im Curry liegen. Der Rest des Programms ist getestet und funktioniert. Was meinst Du mit zu langsam?

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Sorry, aber mit Dir kann ich nicht diskutieren, wenn bei Dir 80 ms = 11 mal 10 ms ist._.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    20.01.2013
    Beiträge
    9
    Nun - ich vergaß, den Kommentar zu ändern.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    20.01.2013
    Beiträge
    9
    Hallo Jungs,
    die Ursache des Problems ist inzwischen klar. Der Master soll mit den beiden Slaves reden. Doch haben auch die beiden Slaves miteinander getuschelt. Grund war unsauberes Setzen der beiden CS.

Ähnliche Themen

  1. Analoge Audio Daten in digitale serielle Daten wandeln
    Von RubberPoach im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 27.03.2013, 10:35
  2. [ERLEDIGT] Kompassmodul liefert keine richtigen Daten mehr
    Von arnoa im Forum Sensoren / Sensorik
    Antworten: 9
    Letzter Beitrag: 21.11.2011, 08:43
  3. ACDC-Wandler von Elba, Altlussheim. Suche Daten und ~blatt
    Von oberallgeier im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 5
    Letzter Beitrag: 05.10.2011, 08:45
  4. SiRF3 liefert ungültige Daten
    Von podex im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 6
    Letzter Beitrag: 10.01.2011, 07:29
  5. Daten über I2C Bus an D/A Wandler...aber wie????
    Von drivepro82 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 04.09.2008, 15:08

Stichworte

Berechtigungen

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