Atmega16 kleine Hilfe für ADC benötigt.

OP #864463
Lesenswert?
• ▲
▼
Hi all,

Ich habe folgenden Code:

#include <avr/io.h>

int x;

int main ()
{
DDRA=0x00;
DDRB=0xFF;

ADMUX |= (1<<REFS1) | (1<<REFS0);
ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);

while(1)
{
x=MUX0;
if (x<40){PORTB=0xFF;}
else {PORTB=0x00;}
}
return 0;
}



Wie kann ich die Variable x dem Ausgang PA0 zuordnen und mit dem 
anliegendem Wert LED's ein bzw. ausschalten?
Die LED's soll leuchten wenn AnalogWert an PA0 < 40 liegt. (von max. 
255).
Ansonsten bleiben sie dunkel?
Gast #864492
Lesenswert?
• ▲
▼
Hallo,
ich habe so ein bischen das Gefühl, dass du dir hier alles ein wenig 
vorkauen läßt. Daher würde ich dir einfach mal empfehlen dir einen 
ADC-Code aus dem Netz zu laden und den dann Schritt für Schritt zu 
analysieren. Auch wenn der Code nicht für den Mega16 ist, so sind die 
ADC´s der Mega Familie so ähnlich wenn nicht sogar identisch, so dass 
das fürs erste egal ist.

Oder benutzte doch einen der frei zur Verfügung stehenden Code-Wizards 
(AvrWiz , IODesigner bzw. AtmanVar) und stell dir den ADC entsprend 
deiner wünsche ein.
#864588
Lesenswert?
• ▲
▼
Du hast offensichtlich das Funktionsprinzip des ADC noch nicht ganz 
verstanden. Der ADC kann nur eine Wandlung gleichzeitig durchführen 
und besitzt auch nur ein Ergebnisregister ADC (das ist ein 
16-Bit-Register, das aus den beiden 8-Bit-Registern ADCL und ADCH 
besteht, was Dich bei der Programmierung in C aber zunächst nur am Rande 
interessieren muss).

Die Pins von Port A können über einen Multiplexer alternierend mit dem 
ADC verbunden werden. Der Multiplexer wird über die MUX -Bits im 
Register ADMUX gesteuert. Du musst, wenn Du einen Wert von PA0 
einlesen willst, den Multiplexer auf Kanal 0 einstellen, eine Wandlung 
durchführen und das Ergebnis aus dem Ergebnisregister einlesen, wenn die 
Wandlung beendet ist (entweder ADSC pollen oder mit Interrupt 
arbeiten). Wie das im Detail geht, steht im Tutorial.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.