-         

Ergebnis 1 bis 3 von 3

Thema: AD-Wandler

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

    AD-Wandler

    Anzeige

    Hallo,

    ich habe ein C-Prgramm geschrieben, um die Werte am AD-Wandler in einem Feld zu speicheren, aber im ganz feld wird der gleichen Wert gespeichert.
    Mit Breack-Point klappt das schon, aber bei normal Lauf nicht.
    zwischen nach jede AD-Wandler auslesen warte ich einige Zeit, ich habe verschiedene werte von Zeit benutzt aber trozdem keine Wirckung:

    for(i=0;i<20;i++)
    {
    test[i]= umsetzen_Spannung();
    ADCSRA=0;
    wait_10ms(50);
    PORTB=0x00;
    wait_10ms(50);
    }

    /****************AD_WAndler initialisieren und auslesen************/

    void Adc_Init(void)
    {
    ADCSRA = 0xC0; //Durch das setzen von Bit ADEN schaltet Der AD-Umsetzer ein
    ADMUX = 0x03; //wählt der Kanal(ADC3) und setzt die Rferenzspannung auf 5v
    }

    unsigned int umsetzen_Spannung(void)
    {
    ADCSRA = 0xD6; //AD-Umsetzer Starten und Prescaler auswählen
    while ( ADCSRA & (1<<ADSC)); //Warte-Schleife bis Ende der Umsetzung
    Ergebnis=(ADCL+(ADCH<<);
    PORTB=0x17;
    //return (ADCL+ADCH*256);
    return Ergebnis; // Im ADCL sind die ersten 8 bits des Ergebnisses
    // Im ADCH sind die restlichen 2 Bits gespeichert
    }



    Danke für jede Hilfe

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,
    Du kannst zum auslesen des ADC auch direkt auf die beiden Ports mit ADC zugreifen, statt ADCL und ADCH, denn dann stimmt auf jeden Fall die Reihenfolge wie man das macht.

    Ich würde den ADC nicht jedesmal in der Schleife deaktivieren.

    Und dann wartet man auf das Bit ADIF bis der ADC fertig ist, nicht ADSC, denn so wird eigentlich nicht gewartet, so wie das bei Dir steht !

    Hast Du schon mal ins Wiki, oder auch Datenblatt geschaut, wie das eigentlich geht mit dem ADC ?

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    02.05.2006
    Beiträge
    9
    Hallo,

    ja habe ich Datashet gelesen, und das steht auf der seite 138

    man wartet so lang das Bit ADSC auf 1 ist, wenn die Umwandlung fertig ist wird auf 0 eingesetzt(automatisch).
    ich sehe nicht dass ich den AD-Wandler in der Schleife deaktviere.

Berechtigungen

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