Atmega32 AD Wandler

Gast #3828338
Lesenswert?

Hallo Leute,

und zwar benutze ich den Atmega 32 und möchte eine Spannung an der 
internen Referenzspannung vergleichen.
Das heißt wenn die gemessene Spannung größer als die Referenzspannung 
ist, soll PINB0 an und ausgehen.

Nur weiß ich nur nicht wie ich dem umgewandelten Digitalwert (wo ist er 
überhaupt?) weiterarbeiten Kann.

Vielen Dank für eure Hilfe

void main(void)

{
DDRB = 1 << PINB0; // Data Direction Register output for only Pin0 on 
Port B
ADCSRA = 1<< ADEN; // enable ADC
ADCSRA = 1<< ADIE; //interrupt

ADMUX = 1<<ADLAR;   // 8bit auswahl
ADCSRA = 1 << ADPS2; =//prescaler 1Mhz/50khz und 1mhz/200khz 
(datenblatt) = zwischen 20 und 5
sei();

while(1)
{
PORTB ^= 1 << PINB0; //xor (^) to toggle only pin 0 on Port B
_delay_ms(10);
Gast #3828348
Lesenswert?

Kral schrieb:
> Nur weiß ich nur nicht wie ich dem umgewandelten Digitalwert (wo ist er
> überhaupt?) weiterarbeiten Kann.

Der befände sich in ADCL/ADCH, bzw. ADCW. Da wird bei diesem Code 
allerdings nichts reinkommen, denn wenn der ADC laufen würde, so würde 
der uC dann resetten, wenn er die nicht vorhandene ISR aufrufen möchte.

Da's aber mehrere Absolutzuweisungen auf ein und dasselbe Register gibt, 
werden die vorhergehenden überschrieben. Da läuft also nichts, da der 
ADC nicht enabled ist.

Es gibt zuhauf funktionierende Beispiele für den ADC, hast Du Dir denn 
kein einziges angesehen?
Gast #3828354
Lesenswert?

>Das heißt wenn die gemessene Spannung größer als die Referenzspannung
>ist,

Na dann hast du hoffentlich einen Spannungsteiler vor dem ADC.
Die Referenzspannung stellt den höchsten Wert dar den der ADC
messen kann.
#3828376
Lesenswert?

MWS schrieb:
> Es gibt zuhauf funktionierende Beispiele für den ADC, hast Du Dir denn
> kein einziges angesehen?

holger schrieb:
> Na dann hast du hoffentlich einen Spannungsteiler vor dem ADC.
> Die Referenzspannung stellt den höchsten Wert dar den der ADC
> messen kann.

ihr habt beide Recht, nur warum ADC ?

hier bei der Aufgabe wäre doch der Analogcomperator angebrachter ?

Ich habe den zwar noch nie genutzt, aber bei der Anforderung springt 
mich der Analogkomperator doch an, wozu den ADC Wert wandeln und 
vergleichen wenn ich nur > feststellen will.

https://www.google.de/search?q=atmega32+comparator&client=firefox-a&rls=org.mozilla:de:official&channel=sb&biw=1280&bih=905&source=lnms&sa=X&ei=9S4wVNWXCYXzaoGCgfAI&ved=0CAUQ_AUoAA&dpr=1

http://winavr.scienceprog.com/avr-gcc-tutorial/avr-comparator-c-programming-example.html

http://www.mschrod.de/Elektronik/AVR/Atmega%20Allgemein/Analogkomparator/Analogkomparator.htm

http://www.tschallener.net/AVR/InterrupttechnikATmega32.pdf
Gast #3828423
Lesenswert?

Joachim B. schrieb:
> ihr habt beide Recht, nur warum ADC ?

Vielleicht weil der TE diesen durchaus verwendbaren Ansatz gewählt hat?

Der AC kann nur die Bandgap verwenden. Die höhere Referenzspannung wird 
zwar aus der Bandgap abgeleitet, kann aber zumindest nicht intern mit 
dem AC verbunden werden.

Wenn keine unmittelbare Reaktion wie über den AC gefordert ist, dann hat 
der Weg über den ADC den Vorteil, flexibler zu sein, die Triggerschwelle 
kann per Software justiert werden.

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