eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaATmega8L + AD7745 - nie budzi się :-(
Ilość wypowiedzi w tym wątku: 5

  • 1. Data: 2011-04-24 20:43:16
    Temat: ATmega8L + AD7745 - nie budzi się :-(
    Od: wkwj <w...@g...pl>

    Witam,
    jako "międzymordzie" pomiędzy PC a AD7745 używam ATmega8L (plus link
    optyczny ale to już osobna sprawa). AD7745 jest konfigurowany
    z PC i pracuje sobie w trybie Single Conversion czyli po każdej
    konwersji na jego wyjściu RDY pojawia się zbocze opadające sygnalizujące
    że dane z ostatniego przetwarzania są do odczytania.
    Sygnał RDY jest podłączony do we. INT0 ATmegi, przerwanie INT0 wyzwalane
    poziomem niskim. Układ działa tak: ATmega dostaje rozkaz z PC, wyzwala
    pomiar AD7745 i czeka na przerwanie (docelowo w stanie SLEEP), potem
    budzi sie przerwaniem, odczytuje dane z AD7745 i wysyła je do PC.
    Wszystko działa OK, pomiary i komunikacja sa prawidłowe ale tylko jeżeli
    nie używam żadnego trybu uspienia w ATmega albo używam Idle - procek
    poprawnie "zasypia" w momencie rozpoczęcia pomiaru przez AD7745 i potem
    budzi się poprzez przerwanie INT0 gdzy konwerscja CDC się zakończy.
    Problem zaczyna się gdy chcę użyć "głębszego" uśpienia PowerDown (a
    zalezy mi na nim bo chce zminimalizować zakłócenia EMI "chwytane" przez
    AD7745 z pracującego ATmega). Z datashitu ATmega wynika, że z trybu
    uśpienia PowerDown budzi go przerwanie zewnętrzne INT0 wyzwalane
    poziomem, przy czym poziom niski musi trwać dłużej niż czas "pobudki"
    procka. Ale przecież AD7745 wystawia na RDY poziom 0 zaraz po
    zakończeniu przetwarzania i poziom ten trwa aż do odczytania danych lub
    wyzwolenia nowego pomiaru czyli "dostatecznie" długo...
    No to czemu mi się ATmega nie budzi z tego PowerDown a budzi sie
    poprawnie z Idle ? Czy gdzies coś przeoczyłem w datashicie ?
    Pozdrawiam,
    wkwj


  • 2. Data: 2011-04-24 20:56:07
    Temat: Re: ATmega8L + AD7745 - nie budzi się :-(
    Od: Waldemar Krzok <w...@z...fu-berlin.de>

    wkwj wrote:

    > Witam,
    > jako "międzymordzie" pomiędzy PC a AD7745 używam ATmega8L (plus link
    > optyczny ale to już osobna sprawa). AD7745 jest konfigurowany
    > z PC i pracuje sobie w trybie Single Conversion czyli po każdej
    > konwersji na jego wyjściu RDY pojawia się zbocze opadające sygnalizujące
    > że dane z ostatniego przetwarzania są do odczytania.
    > Sygnał RDY jest podłączony do we. INT0 ATmegi, przerwanie INT0 wyzwalane
    > poziomem niskim. Układ działa tak: ATmega dostaje rozkaz z PC, wyzwala
    > pomiar AD7745 i czeka na przerwanie (docelowo w stanie SLEEP), potem
    > budzi sie przerwaniem, odczytuje dane z AD7745 i wysyła je do PC.
    > Wszystko działa OK, pomiary i komunikacja sa prawidłowe ale tylko jeżeli
    > nie używam żadnego trybu uspienia w ATmega albo używam Idle - procek
    > poprawnie "zasypia" w momencie rozpoczęcia pomiaru przez AD7745 i potem
    > budzi się poprzez przerwanie INT0 gdzy konwerscja CDC się zakończy.
    > Problem zaczyna się gdy chcę użyć "głębszego" uśpienia PowerDown (a
    > zalezy mi na nim bo chce zminimalizować zakłócenia EMI "chwytane" przez
    > AD7745 z pracującego ATmega). Z datashitu ATmega wynika, że z trybu
    > uśpienia PowerDown budzi go przerwanie zewnętrzne INT0 wyzwalane
    > poziomem, przy czym poziom niski musi trwać dłużej niż czas "pobudki"
    > procka. Ale przecież AD7745 wystawia na RDY poziom 0 zaraz po
    > zakończeniu przetwarzania i poziom ten trwa aż do odczytania danych lub
    > wyzwolenia nowego pomiaru czyli "dostatecznie" długo...
    > No to czemu mi się ATmega nie budzi z tego PowerDown a budzi sie
    > poprawnie z Idle ? Czy gdzies coś przeoczyłem w datashicie ?

    Nie mam shita pod łapą, ale sprawdź, czy na pewno są to te same wektory
    przerwań, czy nie leci to przez reset. Tak na wszelki wypadek. Po drugie
    sprawdzałeś oscyloskopem, czy na pewno reset trwa wystarczająco długo. Po
    trzecie: coś mi się wydaje, że int0 musi wrócić do 1 by procek wystartował.
    Może się wydaje, ale sprawdzić możesz :-).

    Waldek

    --
    My jsme Borgové. Sklopte štíty a vzdejte se. Odpor je marný.


  • 3. Data: 2011-04-25 00:57:29
    Temat: Re: ATmega8L + AD7745 - nie budzi się :-(
    Od: shg <s...@g...com>

    On Apr 24, 10:56 pm, Waldemar Krzok <w...@z...fu-berlin.de>
    wrote:
    > Nie mam shita pod łapą, ale sprawdź, czy na pewno są to te same wektory
    > przerwań, czy nie leci to przez reset.
    Te same.

    > Po drugie
    > sprawdzałeś oscyloskopem, czy na pewno reset trwa wystarczająco długo. Po
    > trzecie: coś mi się wydaje, że int0 musi wrócić do 1 by procek wystartował.

    Nie musi, ale w procedurze obsługi przerwania trzeba je wyłączyć
    (wyłączyć to konkretne przerwanie, nie cli(), albo przełączyć na
    wyzwalanie zboczem), w przeciwnym wypadku będzie wywoływana ciągle.
    Oczywiście pozostaje jeszcze kwestia czasu trwania tego stanu
    niskiego, tu już można kombinować tylko fusami, albo sprzętowo.


  • 4. Data: 2011-04-25 09:32:14
    Temat: Re: ATmega8L + AD7745 - nie budzi się :-(
    Od: wkwj <w...@g...pl>

    > Nie musi, ale w procedurze obsługi przerwania trzeba je wyłączyć
    > (wyłączyć to konkretne przerwanie, nie cli(), albo przełączyć na
    > wyzwalanie zboczem), w przeciwnym wypadku będzie wywoływana ciągle.
    > Oczywiście pozostaje jeszcze kwestia czasu trwania tego stanu
    > niskiego, tu już można kombinować tylko fusami, albo sprzętowo.

    Oczywiście że zaraz po pojawieniu sie przewania go wyłączam (juz o takie
    błędy mnie nie podejrzewajcie :-). Najdziwniejsze jest to że w trybie
    uspienia Idle przy przerwaniu wyzwalanym poziomem wszystko działa super
    - czyli stan niski generowany przez AD7745 trwa wystarczająco długo aby
    obudzić procesor. A po zmianie na uspienie w trybie PowerDown przestaje
    działać, choc przeciez to nie wpływa na działanie Ad7745.


  • 5. Data: 2011-04-25 13:11:58
    Temat: Re: ATmega8L + AD7745 - nie budzi się :-(
    Od: Michoo <m...@v...pl>

    W dniu 25.04.2011 11:32, wkwj pisze:
    >A po zmianie na uspienie w trybie PowerDown przestaje
    > działać, choc przeciez to nie wpływa na działanie Ad7745.
    A jak masz zrobione połączenie między układami? Nie ma problemu w
    sytuacji gdy ATmega zaczyna się budzić - pojawia się na chwilę stan
    nieustalony, który jest traktowany jako sygnał "odebrano dane" i stan
    niski znika?

    (Sprawdziłbym, czy atmega się budzi jeżeli się "ręcznie" zrobi jej niski
    stan i jeżeli tak to bym na próbę podciągnął odpowiednie piny tak aby
    cały czas stan był tam stabilny.)

    --
    Pozdrawiam
    Michoo

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: