mam problem z uruchomieniem przetwornika AC w atmedze, po polaczeniu ukladu zgodnie z tym schematem
http://www.voytek.tkdami.net/programy/adc/ADC_przyk1/adc_led_atm8.png
wszystkie ledy na ktorych ma byc wyswietlany wynik caly czas sie swieca mimo ze w programie jest ustawiony stan wysoki w konf. portow (diody sa prawidlowo polaczone).
do przetwornika PC0 jest podlaczone 4.5V z zasilania przez rezystor 7.5KOhm
Prosze o pomoc, co jest nie tak. (atmega sprawna, prawidlowo polaczona)
kod programu
PS. sorka za komentarze ale ucze sie dopiero programowac
http://www.voytek.tkdami.net/programy/adc/ADC_przyk1/adc_led_atm8.png
wszystkie ledy na ktorych ma byc wyswietlany wynik caly czas sie swieca mimo ze w programie jest ustawiony stan wysoki w konf. portow (diody sa prawidlowo polaczone).
do przetwornika PC0 jest podlaczone 4.5V z zasilania przez rezystor 7.5KOhm
Prosze o pomoc, co jest nie tak. (atmega sprawna, prawidlowo polaczona)
kod programu
#include <avr/io.h>
#define PORT_AD PORTC //port C z wejsciami analogowymi
#define DDR_AD DDRC
#define PORT_LED PORTB //port B z ledami
#define DDR_LED DDRB
unsigned int pomiarx; //zmienna do przechowywania pomiaru osi X
//unsigned int pomiary; //zmienna do przechowywania pomiaru osi Y
void Inicjalizacja(void)
{
DDR_AD=0x00; //usatw port jako wejscie
PORT_AD=0x00; //wejscia stan niski
DDR_LED=0xFF; //usatw port jako wyjscia
PORT_LED=0xFF; //wyjscia stan wysoki
//wybranie wewnetrznego zrodla napiecia odniesienia, tabela 74 dokumentacji AT8 (uref)
ADMUX|=_BV(REFS0);
ADMUX|=_BV(REFS1);
//wybranie sposobu zapisu wyniku z wyrowaniem do lewej (8 starszych bitow wyniku w rejestrze ADCH)
ADMUX|=_BV(ADLAR);
//zezwolenie na konwersje (Ustawienie go zezwala na pracę przetwornika, a wyzerowanie wyłącza go)
ADCSRA|=_BV(ADEN);
//wybranie czestotliwosci dla taktowania przetwornika [usatwienie 011 dzielnik 8 czyli 125kHz] (patrz tabela 76 dok. AT8)
ADCSRA|=_BV(ADPS0);
ADCSRA|=_BV(ADPS1);
}
int main(void)
{
Inicjalizacja();
while(1)
{
ADCSRA|=_BV(ADSC); //rozpoczecie przetwarzania
while(bit_is_set(ADCSRA,ADSC)){}; //oczekiwnaie na zakonczenie przetwarzania
pomiarx=ADCH; //zapisanie starszych 8 bitow wyniku pomiaru do zmiennej "pomiarx"
PORT_LED=~pomiarx; //wyswietlenie wyniku pomiaru("~" dopelnienei do 2 (negacja bitow))
}
}
PS. sorka za komentarze ale ucze sie dopiero programowac