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

[ATmega8][ASM] przetwornik A/C

miSZCZu5 23 Cze 2009 19:40 2547 6
REKLAMA
  • #1 6693991
    miSZCZu5
    Poziom 10  
    Witam. Chciałem pobawic się z przetwornikiem A/C w medze8. Przeczytałem dokumentację i liczne posty na forum. W rezultacie wyskrobałem coś takiego:
    
    .include "m8def.inc"
    .def acc=R16
    start:
    sei
    ldi acc,0xE0
    out ADMUX,acc;wew. nap. odniesienia/wynik przesuwany do lewej
                 ;/wejscie ADC0(PC0)
    ldi acc,0x83
    out ADCSRA,acc;wlaczenie przetwornika/Ck przez 8
    ldi acc,0xFF
    out DDRB,acc
    out PORTB,acc
    L0:
    sbi ADCSRA,6;rozpoczecie konwersji
    in acc,ADCSRA
    sbrc acc,4;jesli konwersja zakonczona to skocz do wyswietlenia 
    rjmp L1
    rjmp L0
    L1:
    cbi ADCSRA,6
    cbi ADCSRA,4
    in acc, ADCH
    out PORTB,acc
    rjmp L0


    Piszę w AVR Studio, program przechodzi kompilacje lecz na symulacji jak i w rzeczywistości nie działa. Po prostu bit ADIF nigdy sie nie ustawia. Juz brak mi pomysłów. Może ktoś z Was się orientuje jaki popełniam błąd.



    Rejestr ADCSRA(w AVR Studio bez "A" na koncu) jest rejestrem sterujacym praca przetwornika.
  • REKLAMA
  • #2 6700488
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 6702582
    miSZCZu5
    Poziom 10  
    W programie ustawiam bit 5 ADLAR w rejestrze ADMUX dzięki czemu wynik jest przesuwany do lewej. Odczytuje się wtedy starczy bajt ADCH i pomiar jest 8-bitowy.
  • REKLAMA
  • #4 6703743
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #5 6714881
    miSZCZu5
    Poziom 10  
    Też nic to nie daje chyba dlatego, że w trybie pojedynczej konwersji wpisanie jeden powoduje rozpoczęcie konwersji, a w trybie 'Free Running Mode' powoduje to rozpoczęcie pierwszej konwersji.
  • #6 6715220
    Konto nie istnieje
    Poziom 1  
  • #7 6717296
    ZbeeGin
    Poziom 39  
    Jednak pozostałbym przy testowaniu ADIF i jej późniejszym zerowaniu poprzez ponowne ustawienie bitu ADIF (sbi ADCSRA, 4). Jak się koledze zamarzy praca przetwornika w trybie Free Running Mode to w ten sposób się nigdy nie doczeka końca konwersji.
REKLAMA