Mam problem, poniewaz przetwornik A/C w atmega8 nie chce działać. Program napisałem w AVRGCC i nie wiem czy czegoś nie pominalem?
Wszystkie rejestry ustawiam wg dokumentacji procesora i nic. Opis i kod programu jest w zalaczniku. Program ma wyswietlac wynik na 8 diodach LED podlaczonych do portu D. Prosze o pomoc osoby programujace AVR.
#include <avr/io.h> //przetwornik a/c, wejscie analogowe
//to ADC1=PC1, procesor - ATMEGA8
int main(void){ //wyjscie cyfrowe - linijka 8 LED na porcie D
ADCSRA=1<<ADEN; //włączenie przetwornika
ADCSRA=1<<ADPS0;//uP bez kwarcu, czyli fosc=1MHz
ADCSRA=1<<ADPS1;//preskaler ustawiony na fosc/8, czyli fadc=125kHz
ADMUX=1<<REFS0; //napiecie referencyjne to AVCC, kondensator podlaczony do AREF
ADMUX=1<<MUX0; //wejscie analogowe ADC1
DDRD=0xff; //ustawienie całego portu D jako wyjscia
DDRC=0x00; //ustawienie całego portu C jako wejścia
while(1){
ADCSRA=1<<ADSC; //start pojedynczej konwersji
while(bit_is_set(ADCSRA,ADSC)){};//czekanie az konwersja zakonczona, wtedy ADSC=0;
PORTD=ADCH; //przepisanie na portd wyniku 8-bitowego
} //niestety nie działa!!!
return(0);
}
Wszystkie rejestry ustawiam wg dokumentacji procesora i nic. Opis i kod programu jest w zalaczniku. Program ma wyswietlac wynik na 8 diodach LED podlaczonych do portu D. Prosze o pomoc osoby programujace AVR.
#include <avr/io.h> //przetwornik a/c, wejscie analogowe
//to ADC1=PC1, procesor - ATMEGA8
int main(void){ //wyjscie cyfrowe - linijka 8 LED na porcie D
ADCSRA=1<<ADEN; //włączenie przetwornika
ADCSRA=1<<ADPS0;//uP bez kwarcu, czyli fosc=1MHz
ADCSRA=1<<ADPS1;//preskaler ustawiony na fosc/8, czyli fadc=125kHz
ADMUX=1<<REFS0; //napiecie referencyjne to AVCC, kondensator podlaczony do AREF
ADMUX=1<<MUX0; //wejscie analogowe ADC1
DDRD=0xff; //ustawienie całego portu D jako wyjscia
DDRC=0x00; //ustawienie całego portu C jako wejścia
while(1){
ADCSRA=1<<ADSC; //start pojedynczej konwersji
while(bit_is_set(ADCSRA,ADSC)){};//czekanie az konwersja zakonczona, wtedy ADSC=0;
PORTD=ADCH; //przepisanie na portd wyniku 8-bitowego
} //niestety nie działa!!!
return(0);
}