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

Atmega 128 -logiczne zero-problem

Cersunited 05 Lip 2010 19:04 1600 15
  • #1 05 Lip 2010 19:04
    Cersunited
    Poziom 16  

    Witam
    Mam następujący problem- mam do zaprogramowania po wykonaniu pierwszych testów mini transponder. O ile transmisja i pomiary działają ok to od paru dni męczę się z głupim problemem. Otóż w układzie tym potwierdzenie wysyłane jest Atmedze 128 stanem niskim poprzez Atmege 8.Problem polega na tym że Atmega 128 nie chce odczytać stanu niskiego z pinu Atmegi 8. Gdy zewrę pin Atmegi 128 do masy to wszystko działa lecz gdy stan ten ustawia Atmega 8 ,Atmega 128 na stan niski nie reaguje. Jak mogę ten problem rozwiązać? Wcześniej Atmega 128 nie chciała też współpracować z popularnym TSOP gdzie wyzwalanie tęż jest stanem niskim. AT128 ma inne progi przełączania z logicznej 1 na 0? Obie zasilane są 5V

    Pozdrawiam

    0 15
  • #2 05 Lip 2010 19:23
    memek
    Poziom 17  

    A czy zasilanie obu Atmeg jest z tego samego źródła zasilania?

    0
  • #3 05 Lip 2010 20:03
    Cersunited
    Poziom 16  

    tak to samo 5V

    0
  • #4 05 Lip 2010 20:22
    Dexter77
    Poziom 28  

    Moze pin portu M8 nie ustawiasz jako wyjscie?

    0
  • #5 05 Lip 2010 20:45
    Cersunited
    Poziom 16  

    nie nie. od strony programowej jest wszytko ok bo zarówno sczytanie jak i ustawienie zera sie odbywa. Właśnie problem w tym że to takie cyrki tylko z 128 są. Niby błahostka ale już siedzę drugi dzień nad tym

    0
  • #6 05 Lip 2010 21:06
    Dexter77
    Poziom 28  

    W razie czego nie daj sobie nic uciac ;) Czyli zmierzyles miernikiem i faktycznie na tym pinie jest napiecie 0-0,8V ?

    0
  • #7 05 Lip 2010 21:43
    Cersunited
    Poziom 16  

    normalnie jest tam stan wysoki. Podczas ACK na 50ms jest niski. Miernikiem tego sie nie zaobserwuje jednak np gdybyśmy podłączyli diode to mignie(katoda do pinu)Zrobiłem dzielnik prądowy i do masy obniżyłem nap z 5 w stanie wysokim do 3,9 jednak takie rozwiązanie zbyt obciąża zasilacz bo M8 i tak ma źródła prądowe. Nie rozumiem tego to co M128 nie bedzie współpracowała np z bramkami itp? skoro nie reaguje na stan niski i ma inny próg przełączania? spotkał się ktoś kiedyś z tym? Robiłem już na M128 jednak jedyne co odbierała to dane na INT4 chyba jednak był to odbiornik Sony i tam OC dawał równo 0V w aktywnym. A tu prroblem i nie wiem jak rozwiązać

    Dodano po 21 [minuty]:

    sprawdziłem właśnie z 7400 bo tylko taklą posiadałem i też nie działa. Wymuszenie logicznego zera na samym NAND jest ok. Mamy 5V lub 0,1V jednak gdy podam tam pin M128(na q NAND) napięcie jest 2,55V i oczywiście M128 nie klasyfikuje tego jako niski i nie reaguje.Cuda jakieś

    0
  • #8 05 Lip 2010 22:18
    markosik20
    Poziom 33  

    Cersunited napisał:
    Podczas ACK na 50ms jest niski.


    Może Twój program nie jest w stanie takiego impulsu wykryć?

    0
  • #9 05 Lip 2010 22:23
    Cersunited
    Poziom 16  

    nie chodzi o to. Bo gdy przejde na odbieranie ręczne bez ACK to moge ten stan przytrzymać dowolnie długo . A M128 poprostu nie daje sie zewrzeć do masy poprzez M8 ani bramke!!! Nawet jak NAND ma niski to ona nie reaguje a na nóżce NANDa mam 2,.55 V zamiast 0V. A gdy zewrę przewód sam do masy to reaguje

    0
  • #10 05 Lip 2010 22:28
    Dexter77
    Poziom 28  

    A ktory to pin taki oporny?

    No i pokaz kawalek kodu odpowiedzialny za reakcje na ten Twoj stan niski. Z inicjalizacja portu wlacznie (pinu na wejsciowy).

    0
  • #11 05 Lip 2010 22:52
    Cersunited
    Poziom 16  

    Kod napewno jest dobry bo: gdy zamiast połączenia do M8 zastosuje przewód i zewrę ręcznie do masy to działa. Jednak gdy podłącze go obojętnie czy do M8 czy do 7400 to napięcie na pinie M128 nie spada do zera. Chodzi o to że zwieranie poprzez tranzystor w bramce np nie działa. Co do kodu to nawet jak zmienię na test i zrobię tylko DDRB jako wej potem podciągam je do VCC czyli mam na nim 5V. i w pętli czekam na pojawienie się zera-banał. Działa wszędzie tylko nie na 128! Po prostu nie chce dać zewrzeć do masy ,tylko ręcznie. Wiem brzmi absurdalnie ale uwierzcie że sprawdzałem już wszystko. Nawet M8L by zaniżyć progi i też nic. Tylko obciążenie M8 na tyle że zwarcie jej do masy powoduje zero jednak musiałbym stosować R=około 40Ohm co jest nie dopuszczalene ze wzgląd na max I wyj pinów.

    0
  • #12 05 Lip 2010 22:56
    kemot55
    Poziom 30  

    Spróbuj podciągnąć zewnętrznie ten port do VCC przez 10k i wyłącz wewnętrznego PULL-UP'a.M128 jest jednym z lepszych procesorów rodziny AVR i zwykle zachowywał się normalnie bez wykazywania prób siłowych. I jeszcze jedno. Zmierz może prąd jaki płynie z tego pinu przy zwieraniu na sztywno przewodem do masy. Może M128 dostała trochę "po głowie" jakimś przypadkowo oderwanym kabelkiem :-)

    0
  • #13 05 Lip 2010 22:58
    Dexter77
    Poziom 28  

    Przewod o opornosci miliomow to nie pin procesora o wydajnosci rzedu 40mA. Podaj kod bo inaczej nikt Ci nie pomoze. W wielu tematach autorzy sie upierali przy swoim a ujawnienie szczegolow ujawnialo bledy. Zakladamy ze nie uszkodziles jeszcze M8 tymi swoimi zwarciami... Lub M128. Piny GND tez maja swoja wydajnosc pradowa ktora nie moze przekroczyc 200 mA.

    0
  • #14 06 Lip 2010 00:45
    Cersunited
    Poziom 16  

    Oczywiście JTAG i M103 M wył. Udało mi się zewrzeć pierwszy raz ale dopiero za pośrednictwem 7406!Pin musiałem dodatkowo podciągać i zastosować podwójną negację. Zobaczę jak to z M8 zadziała. Jak ktoś ma jakieś pomysły proszę pisac

    Dodano po 1 [godziny] 43 [minuty]:

    Oczywiście że wiem o ograniczeniach i zanim zastosowałem dzielniki policzyłem maksymalne prądy. Kod na pewno jest dobry bo właśnie złożyłem na szybko podwójną negację na dwóch 7406 i działa. Jutro napisze czy działa ostatecznie jak złoże wszystkie kanały jednak prototyp ruszył. Wina softu odpada skoro działa więc skąd takie problemy? Dodam że ten sam kod z M16 i M8 działa(szybko sprawdziłem) Oczywiście ani M128 ani M8 nie uległy uszkodzeniu ponieważ zawsze mam zabezpieczenie prądowe.
    Pozdrawiaqm

    0
  • #15 06 Lip 2010 15:51
    landy13
    Poziom 29  

    Cersunited napisał:
    ...zrobię tylko DDRB jako wej potem podciągam je do VCC...
    kemot55 napisał:
    Spróbuj podciągnąć zewnętrznie ten port do VCC

    Po co podciągać sygnał z wyjścia cyfrowego? To nie przycisk.

    0
  • #16 06 Lip 2010 15:58
    Cersunited
    Poziom 16  

    Podciąganie wewnętrzne starcza w zupełności. Problem rozwiązałem.Tak dla innych użytkowników gdyby też mieli podobny problem z M128. Zastosowałem jako bufory wyjściowe podwójną negację układów 7406. Myślę że ten brak współpracy między M8 a M128 wynika z innych wydajności prądowych poszczególnych portów każdej z Atmeg

    0