Hallo Leute,
Ich habe mit meinem STK 500 einen Single Conversion ADC programmiert.
Das Programm soll, sobald ich eine Taste (ich verwende die switches am
stk) drücke eine Spannung welche ich am PIN PA0 anlege messen.
Ich simuliere am PIN PA0 5V indem ich PortB PB0 auf Low setze (5V) und
ihn mit PA0 verbinde....
Egal was ich am Pin PA0 anlege, der ADC gibt immer HIGH aus (leds
leuchten).....
Hier das Programm:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
//***************************
//ADC Single conversion Mode
//***************************
void main ()
{
int i=0;
DDRD=0xFF; // Data direction Bits auf Ausgänge
PORTD = 0xFF;
DDRC=0x00;
DDRB=0xFF;
PORTB=0b00000001;
PORTC=0xFF;
unsigned char wert; //Variable für ADC Wert
ADMUX = (0<<MUX4) | (0<<MUX3) | (0<<MUX2) | (0<<MUX1) |(0<<MUX0);
//interne Referenzspannung verwenden
ADMUX = (1<<REFS0) | (ADLAR<<0);
ADCSRA = (0<<ADIF) | (1<<ADEN) | (1<<ADIE); // ADC einschalten
(generell erlauben) und interrupt enable setzen
while(1) // Endlosschleife
{
if(PINC!=0xFF) //Solange eine Taste gedrückt ist
{
ADCSRA |= (1<<ADSC); //ADC starten
while ( (ADCSRA & ( 1<<ADIF))==0); //Warten bis die Konvertierung
abgeschlossen ist
wert=ADCL;
wert=ADCH; //Die unteren 4 Bits des Ergebnisses werden verworfen
PORTD=wert; //Der Wert des ADC wird am Port D ausgegeben
for (i=0; i<10; i++) //Warteschleife
{
_delay_ms(100);
}
PORTD=0xFF;
}
}
}
Was mache ich falsch??
Und noch eine Frage: Muss ich das ADC ergebnis invertieren??
Weil ja beim stk 500 bei 0x00 alle leds leuchten und nicht bei 0xFF...
Ich hoffe ihr könnt mir helfen!
Mit freundlichen Grüßen,
Georg
Das ist mit Sicherheit nicht richtig
ADMUX = (1<<REFS0) | (ADLAR<<0);
**********
Warum benutzt eigentlich kein Mensch für seine ersten Gehversuche mit
dem ADC die Routine aus dem Tutorial? Ist die zu einfach zu benutzen?
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.