Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega16 i 162 a przetworniki A/C

Villen 09 Maj 2010 13:20 1337 13
  • #1 09 Maj 2010 13:20
    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:

    Code:
    $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:
    Code:
    Odczyt_ac = Getadc(0)


    Zwracając błąd:
    Code:
    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!

    0 13
  • #2 09 Maj 2010 13:26
    asembler
    Poziom 32  

    Atmega 162 nie ma przetwornika ADC o ile pamietam

    0
  • #3 09 Maj 2010 13:28
    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

    0
  • #4 09 Maj 2010 13:36
    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?

    0
  • #5 09 Maj 2010 13:42
    atom1477
    Poziom 43  

    AD to AddressData. To nie ADC.
    Przy braku przetwornika może i kompilator powinien krzyczeć już wcześniej. Ale nie krzyczy bo to BASCOM.

    0
  • #6 09 Maj 2010 13:43
    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.

    0
  • #7 09 Maj 2010 13:44
    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ą... ;)

    0
  • #8 09 Maj 2010 13:44
    _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.

    0
  • #9 09 Maj 2010 13:46
    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.

    0
  • #10 09 Maj 2010 13:56
    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ć/

    0
  • #11 09 Maj 2010 14:06
    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 ;)

    0
  • #12 09 Maj 2010 14:10
    asembler
    Poziom 32  

    Nie wystarczy ci licznik 8-bitowy do generowania nośnej dla podczerwini?

    0
  • #13 09 Maj 2010 14:14
    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ć.

    0
  • #14 09 Maj 2010 14:20
    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.

    0