Hey Leute, ich brauch dringende Hilfe bei einem Programm... Ich möchte nur eine LED schneller bzw. langsamer blinken lassen mit Hilfe des ADC Resultates... Was mache ich falsch...? #include <avr/io.h> #include <util/delay.h> #include <stdint.h> void ADC_Init(void){ uint16_t result; ADMUX = (1<<REFS0); ADCSRA = (1<<ADPS2); // prescaler to ck/16 ADCSRA = (1<<ADEN); // adc enable ADCSRA = (1<<ADSC); // dummy read-out while (ADCSRA & (1<<ADSC) ){} // wait... result = ADCW; } uint16_t ADC_Read(uint8_t channel){ ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F); ADCSRA = (1<<ADSC); while (ADCSRA & (1<<ADSC) ){} return ADCW; } int main(){ uint16_t i; uint16_t adval; DDRB = 0xFF; ADC_Init(); while(1){ adval = ADC_Read(0); for(i=1;i<adval;i++){ PORTB = 0xff; _delay_ms(100); } for(i=1;i<adval;i++){ PORTB = 0x00; _delay_ms(100); } } }
Marius Wagner schrieb: > ADCSRA = (1<<ADPS2); // prescaler to ck/16 > ADCSRA = (1<<ADEN); // adc enable > ADCSRA = (1<<ADSC); // dummy read-out Was glaubst du wohl was da im ADCSRA Register drinnen steht? Wenn du schon alles in eine eigene Zeile schreiben musst, dann vielleicht so? ADCSRA = (1<<ADPS2); // prescaler to ck/16 ADCSRA |= (1<<ADEN); // adc enable ADCSRA |= (1<<ADSC); // dummy read-out
@Hubert, Ich danke vielmals... Ich bin noch Anfänger und mir fällt es manchmal noch schwer den Überblick zu behalten... jetzt blinkt sie wenigstens... Noch ist es aber so, dass ich die Geschwindigkeit nur vor dem Programmstart am POTI regeln kann... Warscheinlich komm ich selber dahinter aber wenn Jemand was sieht, kann er es ja gerne sagen... Grüße
Marius Wagner schrieb: > uint16_t ADC_Read(uint8_t channel){ > > > ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F); > ADCSRA = (1<<ADSC); > while (ADCSRA & (1<<ADSC) ){} > > return ADCW; Hier auch geändert?
Mann des nenn ich mal peinlich.... Hubert du bist der Beste... Thank you a lot!!! und sei mir nicht böse... Grüße!
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.