sop nu hab ich nen kleines probblem, wie gesagt funzt die simu, aber halt nicht in real.
ich will die blinkgeschwindigkeit einer LED mit einem Poti steuern.
das blinken der led funzt, nur die steuerung nicht.
ich hab das poti (50k) an 5V und GND und den schleifer an PC1 bzw ADC1
Code:
#include <avr/io.h>
int t=0;
int c = 0;
void init_io(void)
{
DDRD |= (1<<PD2); //PortD wird als Ausgang definiert
PORTC |= (1<<PC0); //Pullup-Wiederstand von PortC Pin1 wird aktiviert
}
int ReadChannel(int mux)
{
ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0); // Frequenzvorteiler
// setzen auf 8 (1) und ADC aktivieren (1)
ADMUX = mux; // Kanal waehlen
ADMUX |= (1<<REFS1) | (1<<REFS0); // interne Referenzspannung nutzen
ADCSRA |= (1<<ADSC); // eine Wandlung "single conversion"
while ( ADCSRA & (1<<ADSC) ); // auf Abschluss der Konvertierung warten
int wert = ADCL;
ADCSRA &= ~(1<<ADEN);
return wert;
}
void main(void)
{
init_io(); //Ruft die Funktion init_io() auf
//init_adc(); //init des adc
while(1)
{
t=0;
c = ReadChannel(1)*100; //lese analogen wert aus channel 1 in c
while (t<c) t++; //zählt... als delay
if (PINC & (1<<PINC0)) //wenn PINC2 an is
PORTD = PIND ^(1 << PD2); //wechsle den status von PIND2 (die LED blinkt)
else PORTD &= ~(1<<PD2); //wenn PINC2 nich an bleibt die LED aus
}
}
das is der code.
er blinkt, aber lässt sich nicht regeln
[-o< Stefan
Lesezeichen