logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATMega64][C]Przerwanie od ADC

neo114 22 Cze 2008 15:51 1910 2
REKLAMA
  • #1 5274421
    neo114
    Poziom 10  
    Witam wszystkich,
    mam problem z uruchomieniem na przerwaniach przetwornika ADC w atmedze 64.
    zamieszczam poniżej fragment kodu:
    //
    ISR(ADC_vect)
    {
    kierunek=ADC; //odczyt wartości ADC
    write_text_to_LCD("ADC test");
    }
    
    int main(void)	
    {
    PORTF = 0x00;
    DDRF = 0x00;
    
    zaprogramowanie przetwornika ADC
    ADCSRA = (1<<ADEN);
    ADCSRA = (1<<ADSC);				//start pojedynczej konwersji
    ADCSRA = ((ADCSRA & 0b11111000) | 0b00000110); 	//preskaler na /64 co daje 8MHz/64=125kHz
    ADMUX =  ((ADMUX & 0b00111111) | 0b11000000); //kanał 0
    ADMUX = (0<<ADLAR);
    ADMUX &= 0b11100000;
    ADCSRA =(1<<ADATE);
    
    sei();								//odblokowanie przerwań
    
    while(1)
    {
    ....... inne procedury
    }
    
    
    }
    


    Dodam, w obsłudze przerwania założyłem specjalnie wywalanie textu na LCD sla celów testowych czy przerwania chodzą.

    Proszę o pomoc
    pozdrawiam

    Poprawiłem tytuł - dla potomnych - i zamknąłem temat
    [zumek]
  • REKLAMA
  • #2 5275631
    tomsyty

    Poziom 26  
    Z tego co widzę, to nie ORujesz podczas wpisywania wartości do rejestrów - wpisujesz jedynkę na określoną pozycję, ale pozostałe bity są zerowane, przez co dla przykładu włączasz przetwornik i w następnej instrukcji już go wyłączasz, to nie jest tak, że wpisujesz jedynkę i możesz zająć się tylko innym bitem, bo do rejestru trzeba wpisać cały bajt i nie można olewać pozostałych bitów, od tego są maski bitowe. Poza tym warto zacząć od uruchomienia bez przerwań a jak działa to można przerobić.
  • #3 5275701
    neo114
    Poziom 10  
    Hej Tomsyty,

    zamieniłem powyższe wpisy na dwa:
    
    ADCSRA = 0b11101110;
    ADMUX=0b11000000;
    

    i na LCD poszedł testowy komunikat za pierwszym razem.

    Wielkie dzięki.

    Temat uważam za zamknięty :)
REKLAMA