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 plus adc max122bcng podlaczenie ?

Deathknell 12 Lis 2011 14:41 2568 17
REKLAMA
  • #1 10129953
    Deathknell
    Poziom 10  
    Witam, próbuje synchronizować przetwornik analogowo cyfrowy max122 12bit do atmegi8. Z datasheeta wynika, że przetwornik jest równloległy. Na początek wystarczy mi pobrać jakieś napięcie i wrzucić na Lcd. Do tej pory próbowałem dokonać konfiguracji przez SPI ale na wyświetlaczu wyświetla mi 0v lub jakieś głupoty, bez względu jakie napięcie podam na wejście analogowe. Ostatecznie w projekcie potrzebuje przetworzyć dzwięk do uk opóźnić i wyłać do przetwornika c/a, lecz narazie nie umiem podłączyć max'a. Z góry dziękuję za wyrozumiałość. Program pisze w bascomie
  • REKLAMA
  • #2 10136115
    FastProject
    Poziom 28  
    Jeśli układ ma wyjście równoległe (a ma) to po jaką cholerę i co chcesz odczytywać z niego z pomocą SPI?

    Niezbędne informację o inicjalizacji i konwersji masz w datasheecie na stronach 6 do 8.
  • #3 10165126
    Deathknell
    Poziom 10  
    Podłączyłem sobie diody do każdego bitu, aby sprawdzić czy przetwornik reaguje na napięcie. Oto schemat:
    Atmega8 plus adc max122bcng podlaczenie ?

    Napisałem prosty program do przetwarzania danych do "Stand-Alone Mode" czyli do poniższego wykresu:
    Atmega8 plus adc max122bcng podlaczenie ?

    Program wygląda następująco:
    $regfile = "m8def.dat"
    $crystal = 5000000


    Config Pinb.2 = Output
    Config Pinb.1 = Output
    Dim I As Integer

    Reset Portb.1
    Reset Portb.2

    Do
    Set Portb.2

    For I = 0 To 13
    Toggle Portb.1
    Waitms 10

    Next I
    Reset Portb.2
    For I = 0 To 1
    Toggle Portb.1
    Waitms 10
    Next I


    Loop
    End


    Tutaj przesyłam jakie bity powinny reagować na poszczególne napięcie:
    Atmega8 plus adc max122bcng podlaczenie ?


    I w efekcie wygląda to tak, że swiecą wszystkie diody prócz z 12bitu, lub tylko z 12bitu i reaguje tylko na krancowych położeniach potencjometru, a w dodatku nie reaguje on w czasie, w którym powinien pobierać dane, wynikający z wykresul, lecz po ponownym włączeniu i wyłączeniu układu... 3diody znajdujące się pod atmega dodałem by zobaczyć pracę, która generuje. Ma może ktoś pomysły, skąd konflikt?
  • #4 10165424
    poorchava
    Poziom 18  
    Może to jakiś błąd, ale ja na schemacie widzę, że Vref jest podłączone do masy.

    Atmega8 plus adc max122bcng podlaczenie ?

    Vref powinno być podłączone do potencjału dodatniego i bardzo stabilnego, a napięcie mierzone powinno byc pomiędzy GND i VREF. Wtedy słowo wyjściowe przetwornika to stosunek zmierzonego napięcia wejściowego do VREF (wszystkie napięcia względem GND)
  • REKLAMA
  • #5 10165625
    Deathknell
    Poziom 10  
    Z datasheeta wynika ze vref jest napieciem wyjsciowym w procesorze -5V, ma byc podlaczonym do agnd przez kondensator, jest to jego napięcie wzorcowe do którego porównuje wejsciowe, przynajmniej z mojej oceny datasheeta.
  • #7 10168313
    Deathknell
    Poziom 10  
    Również nic się nie dzieje...ten sam objaw...Spróbuje sygnał, który idzie do maximy z clocka i z convst wygenerować do karty dzwiękowej i nagrać w Cubasie zwolnić i zobaczyć czy mam dobre odstępy czasowe między sygnałami, które dostaje przetwornik, taka dostałem również podpowiedz...

    Dokonałem pomiarów i o to wyniki:
    Atmega8 plus adc max122bcng podlaczenie ?

    Pierwsza pionowa kreska oznacza koniec wykresów: (Czyli sygnalizuje wszystkie zbocza opadające. Druga pionowa jest początkiem wykresu.
    Atmega8 plus adc max122bcng podlaczenie ?

    Program poprawiłem na: (Sama petla)

    Do
    Set Portb.1
    Waitms 5
    Set Portb.2
    Waitms 5
    Reset Portb.1
    Waitms 10

    For I = 0 To 24
    Toggle Portb.1
    Waitms 10

    Next I
    Reset Portb.2
    Reset Portb.1
    Waitms 10

    Loop

    w petli umieściłem 24, ponieważ w tym momęcie jest 14 zbocz rosnących w całym programie. Nie wiem czy dobrze rozumiem ten problem...w każdym bądź razie nadal nic się nie zmienia...
  • REKLAMA
  • #9 10173192
    Deathknell
    Poziom 10  
    Kurcze w sumie nie mam...tzn, ja miałem podłączony cały czas do masy, schemat narysowałem źle, możliwe że na początku jakieś napięcie podłączyłem przez zarachowanie do vref...ALe chyba wiem gdzie jest problem, mianowicie przetwornik dziala w zakresie od 0.1MHz do 5MHz taktowania na zegarze. Ja zegar generuje na porcie b1, z czego w pętli w każdym kroku mam opóźnienie o 10ms, czyli wykonuje jakies 100 kroków na sekunde, z czego są to kroki na zbocza rosnące i opadające, czyli tak naprawde taktowanie zegara wynosi 50Hz. Zmieniłem w programie na 1ms, ale to ciagle jest 500Hz także za mało. Postaram się zrobić program na timerze, tylko nie wiem czy ten wewnętrzny rezonator bedzie się na coś nadawał. Jego dokładność jest chyba dość mała...Będę kombinował dalej...
  • #10 10208953
    Deathknell
    Poziom 10  
    A w jaki sposób mogę sprawdzić czy przetwornik jest spalony? Bo juz nie mam do tego siły...sprawdzam napięcie na vref i na masie i wynosi zero, jeżeli sprawdzam na vref i na 5V to pokazuje mi 5V, tak jakby vref był masą... Odstępy czasowe mam dobre, także nie wiem dlaczego mi to ustrojstwo nie chce ruszyć... czyżby był spalony?
  • #12 10209066
    Deathknell
    Poziom 10  
    Atmega8 plus adc max122bcng podlaczenie ?

    Zegar jest podłączony bez kondensatorów ma 8MHz.

    Program:
    Dim I As Integer

    Reset Portb.1
    Reset Portb.2


    Do
    Set Portb.5
    Waitus 1
    Reset Portb.5
    Set Portb.2

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5

    Waitus 1
    Set Portb.5
    Waitus 1
    Reset Portb.5
    Reset Portb.2
    Waitus 1


    Loop


    End

    Napisany jest całkowicie na około, ponieważ gry robiłem pętle, to na oscylatorze wykresy zegara nie wychodziły całkowicie dobrze, co 13 cykl tracił swój czas, teraz też niektóre uderzenie nie jest do końca równe w czasie, ale o wiele lepiej niż w pętli. Zastanawiam się czy w bascomie uzyskam równość czasów. Próbowałem robić również na timerze, ale do końca nie udało mi się uzyskać dobrych czasów. Gdy Portb.2 się załącza przetwornik zlicza 13cykli zegara, w 13 cylku się załącza i daje sygnał mikrokontrolerowi że dokonał pomiaru, wtedy portb.2 musi zostać wyłączony przynajmniej na 20ns aby przetwornik mógł wysłać dane (w tym przypadku do diod) i znów w połowie taktu zegara załączyć portb.2 i znów zliczać cykle. Ja tak to rozumiem. Zastanawiam się czy nie lepiej będzie robić w asymblerze...
  • REKLAMA
  • #14 10209092
    Deathknell
    Poziom 10  
    Yyyyyyy no w sumie to tak....prócz zasilacza, którego zrobiłem....Chciałem tylko napisać program, w którym widziałbym czy przetwornik wysyła jakiekolwiek dane na diody...
  • #16 10209137
    Deathknell
    Poziom 10  
    Dzięki za podpowiedz, już sie zabieram za tworzenie.. Oto schemat zasilacza:

    Atmega8 plus adc max122bcng podlaczenie ?

    Dodano po 4 [godziny] 1 [minuty]:

    Atmega8 plus adc max122bcng podlaczenie ?

    Oto moj nowy schemat. Mniej wiecej tak bylo napisane w poradniku, gdy nie miałem podłączonych kondensatorów do zegara, jeszcze czasami mi generował impulsy, gdy odpiołem reset to za każdym razem, podstanowiłem dla zwiększenia wydajności zegara podłączyć kondensatory, ustawiłem fusebity na 111 na ostatnich miejscach, tak jak było to w innym poradniku napisane, w bascomie wyświetlało mi się RC 8MHz, więc pomyślałem, że to do tego układu będzie dobrze, noi w ten sposób pożegnałem się z moją Atmega8, niestety do sklepu pojade dopiero w przyszłym tyg, więc narazie będę coś chyba tworzyć na "sucho"...
  • #17 10210542
    dondu
    Moderator na urlopie...
    Jeżeli coś ustawiłeś fusbity nie tak jak trzeba, to można próbować podłączyć zewnętrzny generator do XTAL1 i może uda się go ruszyć: http://mikrokontrolery.blogspot.com/2011/04/zablokowany-mikrokontroler-atmel.html

    A jeżeli nie to pozostaje FusebitDoctor, ale trzeba go najpierw zbudować :(
    http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp/
  • #18 10210721
    Deathknell
    Poziom 10  
    Heh, nom w przyszłym tygodniu pójdę do elektrycznego to sobie kupię nową Atmegę. Tylko nie wiem nadal co z tym układem, dlaczego mi to nie działa, już brakuje mi na to nerwów.. Bardzo dziękuję za jakąkolwiek pomoc!!
REKLAMA