Mega 16 AD Wandler schneller machen

OP #926138
Lesenswert?

Hallo,

meine Frage ist wie bekomme ich den AD Wandler "schneller" Ich habe eine 
Mega 16 auf einzelwandlung eingestellt. Für eine Wandlung benätigt der 
Controller momentan 425 Zyklen lt. Simulator das kommt mir recht viel 
vor.
Vorteler ist 32 der Controller wird mit 16 MHz betrieben ohne AD 
Interrupt.

 Initialisierung mit:
ldi     tempL,(1<<ADEN) | (1<<ADPS2) | (0<<ADPS1) | (1<<ADPS0)
out     ADCSRA, tempL


und Wandlung:

               ldi   tempL,(0<<MUX1)|(0<<MUX0)|(1<<REFS1) |(1<<REFS0) 
|(1<<ADLAR) | (0<<MUX3) ;Kanal 0 (Rot)
               out   ADMUX,templ
               sbi   ADCSRA, ADSC
wait_adc1:     sbic  ADCSRA, ADSC

               rjmp  wait_adc1


mache ich was Falsch ausser das der Wandler dann mit 500 kHz läuft
#926152
Lesenswert?

René Schink wrote:

> Ich habe eine
> Mega 16 auf einzelwandlung eingestellt. Für eine Wandlung benätigt der
> Controller momentan 425 Zyklen lt. Simulator das kommt mir recht viel
> vor.

Nö, passt ziemlich genau: 13*32 = 416 Takte

Selbst jetzt bist du schon außerhalb der Specs für 10bit. Du kannst 
theoretisch noch etwas mit dem Vorteiler runtergehen (bis auf etwa 8), 
aber mehr als etwa 6bit sind dann nicht mehr drin.
Darüber steigen die Verzerrungen meinen Erfahrungen nach sehr schnell 
stark an. Mehr als etwa 100-200kHz Samplerate ist eher nicht mehr 
brauchbar.
Gast #926160
Lesenswert?

HI

'By default, the successive approximation circuitry requires an input 
clock frequency between 50 kHz and 200 kHz to get maximum resolution.'

Wenn du es wirklich schneller haben willst, wirst du auf den XMega 
warten müssen.

MfG Spess
#926174
Lesenswert?

Winfried Z. wrote:
> Wenn Deine Schaltung und Dein Programm es zulassen, kannst Du den MEGA
> auch noch hochtakten.
>
> 20MHz geht, 40MHz auch.

Davon würde ich abraten, denn das mag bei einem AVR funktionieren, nicht 
aber bei jedem. Und dann wird die Fehlersuche lustig wenn man nicht weiß 
ob der Fehler an dem Takt oder an der Software liegt.

> Ob die AD-Wandlung noch "sauber" genug ist sollte man sicherheitshalber
> überprüfen.

Schonmal den ADC mit Prescaler 2 bei 16MHz laufen lassen ? Ich habs 
ausprobiert: Dann ist ein Sinus entweder DC ein Rechteck, oder sonst was 
undefiniertes. Das Ergebnis ist ziemlich willkührlich, je nach AVR.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren