-
        

Ergebnis 1 bis 9 von 9

Thema: 8Bit abfragen Silabs C8051F020?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.02.2008
    Beiträge
    252

    8Bit abfragen Silabs C8051F020?

    Anzeige

    Hallo Leute,

    ich benutze einen Silabs C8051F020, und wollte einen ADC konfigurieren, und ich bin bei meinem Programm soweit das ich nur mehr das INT Flag abfragen muss, nun leider ist das nicht bitaddressierbar, deshalb muss ich gleich 8bit abfragen, nur hab ich bis jz noch nie bzw weiß nicht wie man aufeinmal 8 bit abfragt?

    Mfg niki1

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    47
    Beiträge
    497
    The AD0BUSY bit is set to logic 1 during conversion and restored to logic 0 when conversion is complete. The falling
    edge of AD0BUSY triggers an interrupt (when enabled) and sets the AD0INT interrupt flag (ADC0CN.5). Converted
    data is available in the ADC0 data word MSB and LSB registers, ADC0H, ADC0L. Converted data can be either left or right justified in the ADC0H:ADC0L register pair (see example in Figure 5.11) depending on the programmed
    state of the AD0LJST bit in the ADC0CN register.
    When initiating conversions by writing a ‘1’ to AD0BUSY, the AD0INT bit should be polled to determine when a conversion has completed (ADC0 interrupts may also be used). The recommended polling procedure is shown below.
    Step 1. Write a ‘0’ to AD0INT;
    Step 2. Write a ‘1’ to AD0BUSY;
    Step 3. Poll AD0INT for ‘1’;
    Step 4. Process ADC0 data.

    Wo liegt da dein Problem? Das kannst du ja fast schon so abschreiben.

    sast

    雅思特史特芬
    开发及研究

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.02.2008
    Beiträge
    252
    Ja aber das ist für den 12Bit Wandler, ich verwende den 8 Bit Wandler, und dessen AD1INT Bit ist nicht BITadressierbar, vom 12Bit Wandler jedoch schon! Das ist mein Problem nun weiß ich nicht wie ich AD1INT abfragen soll das im ADC1CN Register steht ?!?!

    Mfg niki1

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Dann lade das ganze Byte/Register und mach mit dem entsprechenden Bit eine
    AND Verknüpfung. Wenn die "War = 1" ist, ist die Wandlung fertig.

    11100111 z.B. Register
    00000100 AND
    -----------------------
    00000100 Ergebnis


    Welche Bit`s jetzt Verknüpft werden müssen sollte das Datenblatt
    sagen können.

    Gruß Richard

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    08.04.2009
    Ort
    an der Ostsee
    Beiträge
    334
    moin moin,

    lade AD1INT in den Accu und lege die Bitmaske für das Bit drauf. Ist der Accu 0 war das Bit nicht gesetzt.

    Mit Gruß
    Peter

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.02.2008
    Beiträge
    252
    Oke hab es so gemacht, nur die Sache ist die, dass ich nicht wirklich einen Richtigen Vergleichsvefehl finde .. kann mir jemand helfen ... denn beim JB A, again meckert der Assambler ..

    Code:
    			 mov A, ADC1CN					 ; Register in ACCU
    							 anl A, #00100000b			 ;Bitmaske 
    
    again:				 jb A, again						     ; wenn ACCU 1 spring
    							 anl ADC1CN, #11011111b
    							 orl ADC1CN, #00010000b	 ;Busybit wieder setzen
    							 	
    							 jmp again
    							    
    						   END
    NACHT niki1

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    08.04.2009
    Ort
    an der Ostsee
    Beiträge
    334
    moin moin,

    bei Deine Abfrage wird NIE etwas und der Assembler meckert wegen fehlender Bitangabe bei JB....das steht aber in jeder Doku.

    StartADU: ; UP: starte ADU und warte bis fertig
    anl ADC1CN, #11011111b
    orl ADC1CN, #00010000b ;Busybit setzen
    again: mov A, ADC1CN ; Register in ACCU
    jb A.5, again ;warte bis not Busy
    Ret ; ok., ADU fertig


    Mit Gruß
    Peter

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.02.2008
    Beiträge
    252
    Hallo Peter,

    danke es klappt einwandfrei, nur bei dem heißt es nicht A.5 sondeern ACC.5 aber vielen Dank nochmal ..

    MFG niki1

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    08.04.2009
    Ort
    an der Ostsee
    Beiträge
    334
    ja, aber..
    da ich schreibfaul bin, habe ich in meinem Assembler beides eingebaut...

Berechtigungen

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