www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATtiny861 ADC


Autor: Ephraim Hahn (ephi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe eine Merkwürdigkeit mit dem ADC des ATtiny861:
Ich initialisiere den ADC im free running mode und aktiviere den 
interrupt und möchte den ADC wert im interrupt auslesen.
Das Problem dabei ist, das er nur ein einziges mal eine Wandlung 
durchführt. Diese ist zwar korrekt, aber er wandelt nicht kontinuierlich 
weiter.

hier mal meine Initialisierungsfunktion:
void adc_init(void)
{
  ADMUX = FADER_PIN;          // select channel
                    // VCC as reference voltage
  ADCSRA  = (1<<ADIE);        // enable interrupt
  ADCSRA |= (1<<ADPS2) | (1<<ADPS1);  // frequency devider of 64 (8Mhz/64 = 125Khz)
  ADCSRA |= (1<<ADEN);        // enable adc
  ADCSRA |= (1<<ADSC);        // start converting
}

und meine ISR:
ISR(ADC_vect)
{
  out.bit.adc = ADCW;
}

mein derzeitiges workaround ist es den wandlungsvorgang in der ISR mit
ADCSRA |= (1<<ADSC);
nocheinmal zu starten. Das geht auch soweit, ist aber irgendwie ja nicht 
der Sinn der Sache.

Mir sieht das ganz danach aus, als läuft der ADC im single conversion 
mode.
Im Datenblatt steht aber eindeutig:
ADCSRB
ADTS2 = 0; ADTS1 = 0; ADTS0 = 0; =>Free Running mode
Also setze ich keines der Bits.

Hat jemand eine Idee?
(ich hab jetzt nicht den ganzen code angehängt, da das auslesen an sich 
ja geht, und ich sonst nirgents was an den ADC registern rumfummle)

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Schon mal im Datenblatt nachgesehen. ADCSRB:  ADTS2 ADTS1 ADTS0. 
Freerunning Mode muss explizit eingestellt werden.

MfG Spess

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ADTS2 ADTS1 ADTS0 sind ja 000. Aber ADATE in ADCSRA muss noch gesetzt 
werden.

MfG Spess

Autor: Ephraim Hahn (ephi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
huch, das hab ich wohl total übersehen.
Jetzt gehts.
Dank dir vielmals!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.