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

Atmega + interfejs SPI, sterowanie przetwornikiem ADC?

kaayliah 11 Mar 2010 12:07 3289 10
REKLAMA
  • #1 7813741
    kaayliah
    Poziom 10  
    Witam,

    planuję skonstruować układ, w którym Atmega sterowała by pracą przetwornika ADC za pomocą interfejsu SPI. W przypadku Atmega8 podczas używania tego interfejsu korzystam z sygnałów MISO, MOSI, SCK, SS(z PORTB). Podczas programowania tego mikrokontrolera interfejsem ISP wykorzystuję MOSI, MISO, RST, SCK. Rozumiem, że są to te same piny i że taki układ po zaprogramowaniu trzeba by podłączyć dopiero do ADC? Czy może inny mikrokontroler(Atmega16?) zawiera 'podwójny' interfejs SPI?
  • REKLAMA
  • #2 7813929
    Nawigator
    Poziom 33  
    ISP działa dopiero gdy programator ustawi reset na zero więc można używać programowania z podłączonym przetwornikiem. Na wszelki wypadek należy dodać rezystory separujące pomiedzy układami np. 1k.
    Oczywiscie o ile transmisja programatora nie zakłóci ADC ale gdy /SS jest wysoki to adc powinien być odłączony (ewentualnie warto dać rezystor podciągający do plusa)

    N.
  • REKLAMA
  • #3 7815745
    wados0
    Poziom 11  
    Swego czasu korzystałem jednocześnie z tego samego SPI do programowania i do przetwornika AC i nawet bez zabezpieczeń działało z tym, że programator na czas pomiaru odłączałem bo kontroler odbierał głupoty, ale pomysł aby na wszelki wypadek się zabezpieczyć jak kolega sugeruje jak najbardziej słuszny.
  • REKLAMA
  • #4 7815770
    rpal
    Poziom 27  
    Nie ma mowy aby się procek poprawnie programował, przynajmniej weryfikacja zapisu nie będzie działać, Atmel zaleca podłączać szeregowe rezystory 1-1,2k w liniach które są wejściami procka albo też stosowanie analogowego multipleksera sterowanego niskim poziomem linii RESET.
  • #5 7816068
    janbernat
    Poziom 38  
    Która ATmega?
    W ATMega128 są inne piny do programowania i inne SPI.
    I w paru innych też.
    Chociaż w większości małych- te same.
    Wtedy albo rezystory- albo zworki.
  • #6 7816124
    rpal
    Poziom 27  
    z tego co pisze autor to piny są wspólne inaczej by nie truł o problemach :)
  • #7 7816500
    wados0
    Poziom 11  
    rpal napisał:
    Nie ma mowy aby się procek poprawnie programował, przynajmniej weryfikacja zapisu nie będzie działać, Atmel zaleca podłączać szeregowe rezystory 1-1,2k w liniach które są wejściami procka albo też stosowanie analogowego multipleksera sterowanego niskim poziomem linii RESET.


    Kwoli ścisłości - z AC przeszło coś takiego i działało, ale z SPI pomiędzy dwoma ATMEGAMI już nie(sygnatura Slave'a była niewłaściwa, jak pamiętam to same 0), Master chyba się dawał zaprogramować. Zresztą moje doświadczenie w materii kontrolerów nie jest takie jakie bym chciał mieć jeszcze :) Podejrzewam, że miałem więcej szczęścia niż rozumu.
  • #8 7817368
    manekinen
    Poziom 29  
    Jeśli ten przetwornik wykorzystuje linię CS chip select, i jeśli po jej zwolnieniu zostawia w spokoju MOSI, to nie widzę powodu żeby go odłączać - będzie wtedy przeźroczysty dla programatora. Programator też powinien po zakończeniu operacji wyłączać swoje linie i nic z nimi nie robić. Wtedy również nie będzie potrzeby odłączania programatora. Jak wspomniał kol. Nawigator - podciągnij linię SS (czyli tą którą strujesz CS) do VCC rezystorem ok 1k, będziesz miał pewność że ten ADC będzie wyłączony podczas resetu procka i nie będzie przeszkadzał.
  • REKLAMA
  • #9 7818235
    rpal
    Poziom 27  
    Mimo wszystkiego co tu koledzy pisali, polecałbym jak jedyną pewną metodę zastosowanie multipleksera analogowego MC14053 tutaj link do strony kamami z gotowcemLink.
    Miałem kiedyś taki układ z przetwornikiem i nigdy nie miałem gwarancji że podczas programowania nie pojawią mi się błędy, raz wyskakiwały innym razem nie - przypadek. Dopiero kiedy włączyłem szeregowo oporniki kłopot się skończył, a multiplekser daje gwarancję że to będzie na 110 %. Nie wiem co powiada Atmel na temat stanów logicznych na pinach procesora podczas procesu programowania, tych nie używanych ale wydaje mi się że panują tam stany nieokreślone. Zatem wystarczy że układ przetwornika obciąża linie SPI a przypadkiem podczas programowania , końcówka która akurat przypada na linię CS "pierdnie" zerem ligicznym i kłopot gotowy. Przykładów mam sporo bo nie raz obserwowałem w układzie gdzie były zabudowane led-y miganie tych diod podczas programowania. Więc reasumując jak ma być tanio to wystarczy podstawka pod przetwornik i wyciąganie przetwornika, jak wygodnie to multiplekser koszt koło 1 PLN więc warto zainwestować w wygodę.
    Na marginiesie kol. wados0 jak masz zaprogramować dwie atmegi połaczone wspólnie magistralą SPI bez dokonania wyboru za pomocą linii RESET ? Poza tym pamiętaj że z programatorem wspinasz się w linie przed opornikami a nie za nimi. W układzie z 2 atmegami trzeba mieć zatem dwa złącza do programowania a nie programować poprzez opornik.
  • #10 7819007
    manekinen
    Poziom 29  
    Jeśli programator jest jakimś badziewiem typu "sample electronics" łączonym bezpośrednio do LPT to na 100% będą problemy. Programator powinien przełączać swoje linie właśnie w stan wysokiej impedancji - jako wejścia - jak zwał tak zwał i wtedy nie mają prawa one przeszkadzać.

    Nogi I/O AVRa podczas resetu są w stanie wysokiej impedancji z wyłączonymi pullupami - nie mają prawa przeszkadzać.

    Jeśli autor jest jeszcze zainteresowany tematem, to niech poda co to jest za przetwornik i będzie wiadomo jak się zachowuje gdy "nie jest wybrany" przez CS. W zasadzie to nie powinien trzymać swojej MISO jako wyjścia no bo gdzie tu wtedy sens stosowania CS i komunikacji z wieloma układami?

    Wtedy nie trzeba stosować żadnych multiplekserów czy w inny sposób rozbudowywać nieporzebnie układu ;)

    rpal - ostatnio jakoś przewijał się temat o programowaniu dwóch układów za pomocą jednego złącza. Najprostszym rozwiązaniem jest zworka do wybierania SCK. Jeden układ dostaje wszystkie sygnały i się programuje, drugi jest także zresetowany ale bez sygnału zegarowego nawet nie wejdzie w tryb programowania i nie będzie przeszkadzał temu pierwszemu.
  • #11 7820328
    rpal
    Poziom 27  
    ten temat jest o tym jak spowodować aby przy układzie wpietym w SPI programować atmela programatorem ISP, kol manekin. Zatem zbaczanie na manowce typu jak zaprogramować 2 atmele na raz nie jest w tzw. "temacie". Myślę że rady juz zostały wyczerpane a autor zrobi co zechce.
REKLAMA