Hi @ all
Ich hab mich mal mit dem A/D Wandler beschäftigt. Leider fuktioniert das ganze nicht so wie ich mir das vorstelle.
Das ist einmal der Code:
Am LCD bekomm ich nur DatdenmüllCode:#include <avr/io.h> #include <stdlib.h> #include "wintek2704.h" void adc_init(void); int get_adc (void); void lcd_put_d(uint8_t dec); int main (void) { DDRC &=~ _BV(PC0); PINC &=~ _BV(PC0); uint8_t ergebnis_display; adc_init(); lcd_init(LCD_DISP_ON); lcd_puts(" ADC -- Test\n"); while(1) { ergebnis_display = get_adc(); lcd_put_d(ergebnis_display); } return(0); } void lcd_put_d(uint8_t dec) { char buffer[6]; itoa(dec, buffer, 10); lcd_puts(buffer); } void adc_init (void) { ADCSR = (1 << ADEN) | (1 << ADPS1) | (1 << ADPS2); //Prescaler = 64 TF = 125 kHz } int get_adc (void) { uint8_t i; uint16_t ergebnis_adc; ADMUX = 0; // Vreff = Vcc ADCSRA |= (1 << ADSC); while (!(ADCSRA & (1 << ADIF))); ergebnis_adc = 0; for(i = 0; i < 5; i++) { ADCSRA |= (1 << ADSC); while(!(ADCSRA & (1 << ADIF))) ergebnis_adc += ADC; } ADCSRA &=~ (1 << ADEN); ergebnis_adc = ergebnis_adc / 5; return ergebnis_adc; }
Könnte mir da jaemand helfen???
Danke im Voraus
Gruß Robert







Zitieren

Lesezeichen