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);
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?
>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.
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
:
Bearbeitet durch User
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.