-
        

Ergebnis 1 bis 6 von 6

Thema: Auswahlprobleme beim AD-Wandler

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    27.08.2006
    Beiträge
    53

    Auswahlprobleme beim AD-Wandler

    Anzeige

    ich möchte an RA0 und RA1 jeweils einen analogen Wert einlesen. Wenn ich die einzelnene AD-Werte in 2 verschiedenen Programme einlese, funktioniert es.
    Wenn ich die 2 einzelnen Programme zusammen schreibe, dann habe ich Probleme mit dem einlesen, da RA0 und RA1 sich
    beeinflussen. Der Fehler liegt auf jeden Fall in der Auswahl, welcher PIN als Eingang für den AD-Wandler gewählt wird.
    Nachdem ich die 2 einzelnen Programme zusammen geschrieben habe, habe ich den kompletten Teil für die zweite Anzeige
    ausgeklammert, und nacheinander wieder ins Programm gestellt. Als ich dann die Auswahl des PIN RA1 "freigeschaltet" habe, trat
    der Fehler wieder auf.

    Habt Ihr eine Idee woran das liegt?
    Die Konfiguration des Programms ist in Ordnung.




    ;****Eingang (RA0) des AD-Wandler auswählen****

    bcf ADCON0,5
    bcf ADCON0,4
    bcf ADCON0,3
    ;****Auswahl Ende****

    bsf ADCON0,2 ;AD-Wandler starten
    loopad1: btfsc ADCON0,2 ;AD-Wandler fertig?
    goto loopad1 ;noch nicht fertig, warten

    adhol1: movfw ADRESH
    movwf adneu_1


    movlw 0x01 ;wartezeit von 1mS
    movwf loops
    call wait_ms


    ;****Eingang (RA1) des AD-Wandler auswählen****
    bcf ADCON0,5
    bcf ADCON0,4
    bsf ADCON0,3
    ;****Auswahl Ende****

    bsf ADCON0,2 ;AD-Wandler starten
    loopad2: btfsc ADCON0,2 ;AD-Wandler fertig?
    goto loopad2 ;noch nicht fertig, warten

    adhol2: movfw ADRESH
    movwf adneu_2

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    kenn mich mit pics ja nicht aus, aber dein AD-wandler-auswahlcode is bei beiden identisch!? soll das so sein?

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    27.08.2006
    Beiträge
    53
    der ist nicht identisch,
    hier ist die Auswahl auf RA0

    bcf ADCON0,5
    bcf ADCON0,4
    bcf ADCON0,3


    und hier liegt die Auswahl beim RA1
    bcf ADCON0,5
    bcf ADCON0,4
    bsf ADCON0,3

    bei ADCON0,3 steht einmal bcf und einmal bsf

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    stimmt... sorry

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    Hallo HoStAn,
    probier mal folgendes:
    - AD-Kanal setzen
    - 1 ms warten, damit sich die interne Kapazität aufladen kann
    - Wandlung starten
    - Warten bis Wandlung fertig ist
    - AD-Wert auslesen
    - AD-Kanal setzen
    - 1 ms warten, damit sich die interne Kapazität aufladen kann
    - ....
    Du kannst das aber auch mit einem 1ms-Timer-Interrupt machen; in der 'Freizeit' kannst Du dann was 'Besseres' erledigen.
    Schau mal unter http://www.domnick-elektronik.de/picasm.htm#RdAdw
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    27.08.2006
    Beiträge
    53
    Danke kalledom, da war der Fehler, der Kondensator hatte nicht genügend Zeit um sich aufzuladen

Berechtigungen

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