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

Atmega16 i 162 a przetworniki A/C

Villen 09 Maj 2010 13:20 1643 13
  • #1 8054370
    Villen
    Poziom 21  
    Witam!

    Mam pewien dziwny problem. Pracując nad pewnym urządzeniem oparłem wszystko na początku na mikrokotrolerze Atmega16. W miedzyczasie okazało się, że potrzebne mi 2 liczniki 16bitowe, więc przesiadłem się na mege162. Zmieniłem odpowiednie linijki programu i teoretycznie wszystko powinno hulać, ale kompilacja staje przy odczycie wartości z kanału AD0, choć na medze16 wszystko działało jak trzeba. Ten fragment programu wygląda mniej więcej tak:

    $regfile = "m162def.dat"                             
    $crystal = 8000000  
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Enable Interrupts                                           
    Start Adc
    
    Dim Odczyt_ac as word
    
    Do
    
    Odczyt_ac = Getadc(0)
    
    Loop : End
    

    I kompilacja staje właśnie na linijce:
    Odczyt_ac = Getadc(0)


    Zwracając błąd:
    ADC_MUX entry not found in DAT file


    Fusebity (o ile mają jakiś związek z przetwornikiem AC są ustawione następująco):
    Atmega16 i 162 a przetworniki A/C

    Na Atmedze16 wszystko kompiluje się i działa w najlepszym porząku.
    Czy między konfiguracją przetworników AC tych dwóch mikrokontrolerów są aż takie różnice?
    Jak więc powinienem odczytywać wartość z kanału 0 przetwornika Atmegi162?

    Z góry dzięki za pomoc!
  • #2 8054396
    asembler
    Poziom 32  
    Atmega 162 nie ma przetwornika ADC o ile pamietam
  • #3 8054408
    tadzik85
    Poziom 38  
    asembler napisał:
    Atmega 162 nie ma przetwornika ADC o ile pamiętam


    Dobrze pamiętasz. A z licznikami zawsze można sobie poradzić. Ich ilość jest prawie nieskończona (ja wykorzystuje ich około 10 w swoim ostatnim projekcie). Zrealizowane oczywiście softwarowo
  • #4 8054437
    Villen
    Poziom 21  
    Hm, a wg noty katalogowej ma 8 wejść analogowo-cyfrowych. Nawet na pinoucie z noty podpisane są AD0-AD7 - cały port A.

    Tak, da się w miarę prosto liczniki realizować programowo, ale w przypadku kiedy chce się w prosty i mało absorbujący sposób w bascomie zrealizować nadawanie komend IR w standardzie Sony ten sprzętowy licznik jest niezbędny. A już niestety mam go wykorzystanego do innego zadania...

    No i czy w takim wypadku (braku przetwornika) kompilator nie powinien krzyczeć już przy próbie konfiguracji i uruchomienia go?
  • #5 8054466
    Konto nie istnieje
    Poziom 1  
  • #6 8054467
    tadzik85
    Poziom 38  
    AD czy szyna adresowa AD to nie ADC. I nie wiem skąd ty masz tą notę katalogową skoro przed chwilą ja przejrzałem.
  • #7 8054480
    Villen
    Poziom 21  
    No cóż... Mam problem w takim wypadku :P bo potrzebne mi i liczniki i przetwornik... Dzięki za wyprowadzenie mnie na prostą... ;)
  • #8 8054482
    _Robak_
    Poziom 33  
    Villen napisał:
    Hm, a wg noty katalogowej ma 8 wejść analogowo-cyfrowych. Nawet na pinoucie z noty podpisane są AD0-AD7 - cały port A.

    Proszę sobie zajrzeć dokładniej do noty, żeby sprawdzić co to są za linie.
  • #9 8054487
    tadzik85
    Poziom 38  
    Villen o ile nie jest ci potrzebny licznik impulsów zewnętrznych zrób liczniki programowe na M16 która przecież ma ADC.
  • #10 8054531
    asembler
    Poziom 32  
    Napisz do czego ci te dwa liczniki 16 bitowe. Z doświadczenia wiem że wiekszośc programów mozna obyc sie na jednym kwestia jak go wykorzystać/
  • #11 8054576
    Villen
    Poziom 21  
    Licznik T1 atmegi16 wykorzystuję jako najprostszy do sterowania PWM z dwoma wyjściami (a tylu potrzebuje). Ale bascomowe sonysend wykorzystuje również ten licznik i diodę nadawczą trzeba podłączyć pod wyście OC1A. W dokumentacji bascoma można wyczytać, że można mimo wszystko dalej wykorzystywać licznik za cenę lekkiego opóźnienia w czasie nadawania komendy sony, ale boję się ewentualnych śmieci w podczerwonym "eterze" kiedy dioda będzie podłączona pod wyjście pracującego PWM'a...

    Spróbuję wykorzystywać tylko wyjście OC1B timera1 do PWM'a, a jako drugi zaprząc do pracy ośmiobitowy timer2 i będzie po problemie ;)
  • #12 8054593
    asembler
    Poziom 32  
    Nie wystarczy ci licznik 8-bitowy do generowania nośnej dla podczerwini?
  • #13 8054616
    Villen
    Poziom 21  
    Jeśli chce się tak jak ja pójść prostą drogą i użyc gotowego polecenia bascoma - sonysend - to niestety nie. Do jego działania konieczny jest licznik 16 bitowy i wyjście OC1A. TUTAJ można o tym przeczytać.
  • #14 8054644
    asembler
    Poziom 32  
    No cóż jak sie nie da inaczej to trudno. Ja bym takustawil licznik 16-bitowy ze mialbym 2 PWM a dodatkow na przepelnieniu otzymalbym fale nosną 38kHz dla podczerwieni, czyli jeden licznik by wystarczyl.
REKLAMA