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

ATmega88pa, ATmega164pa, ATTiny84a - Kłopoty z pinami PC, PB, PD i diodą kontrolną

biniu_2012 27 Mar 2021 16:13 474 5
  • #1 19344844
    biniu_2012
    Poziom 6  
    Witam, pracuje nad małym systemem modułowym do sterowania w domu. Na ten moment mam :

    -klawiaturę Matrix do wpisywania kodu do drzwi (atmega88pa)
    -manipulator do temperatury (atmega164pa)
    -czujnik temperatury (attiny84a)

    Zamówiłem wszsystkie części i własny projekt płytek pcb.

    Klawiatura działa bez żadnego problemu, program wgrywa się i działa w 100% tak jak chce.

    Po zrobieniu klawiatury wziąłem się za czujnik temperatury i nie mogę za nic zrobić najprostszej rzeczy jaka jest zmiana PINu na wyjście oraz ustawienie stanu wysokiego żeby dioda kontrolna się zapaliła. Po chwili stwierdziłem ze może na później to zostawię i zacznę od manipulatora. I tu problem ze kilka pinów z grupy PC sa ciagle ustawione na stan wysoki !!! Nie mogę w żaden najprostszy sposób tego zmienić. Ale na przykład piny z grupy PB i PD działają bez problemów. Timer 0 i 1 również chodzi.

    Przy ATTiny stwierdziłem ze może wadliwy procek i wymieniłem na inna sztukę ale ciagle to samo.

    Używam wewnętrznego oscylatora 8MHz, próbowałem ustawic bit CKDIV8 ale nic to nie pomaga. BOD wyłączony, na włączonym tez próbowałem bez skutku.

    Obydwa układy próbowałem zasilać z 3,3v oraz z 5V bez żadnej poprawy. W odbywu przypadkach mam 10uf i 10nf kondensatory dość blisko pinów zasilania, w 164pa cześć analogowa przez filtr zasilana. Programator jaki używam jest od Pololu (emuluje stk500). Korzystam z Eclipsa z dodatkiem avr. Programuje zewnętrznym avrdude, gdyż avrdude w Eclipse nie wspiera tych prockow (zreszta tak jak 88pa, ale akurat on dziala). Próbowałem poprzelaczac tez na różne procki takie jak 164,164p albo zwykle tiny84.

    W pliku lss wsyztskie adresy rejestrów się zgadzają z tym co jest w datasheecie. Avrdude poprawnie odczytuje sygnatury obydwu kontrolerów. Niee mam już kompletnie pomysłu co jest nie tak.

    Przyszło mi przez głowę ze może przy lutowaniu coś przegiąłem (350* przez około 30 sekund powietrzna lutownica) wiec drugie ATTiny przylutowałem normalnie kolbowa i nic to nie pomogło.

    Obstawiam ze kompilator coś złe może robić bo już nic innego mi nie przychodzi do głowy.

    Miał ktoś podobny problem?

    Przy tym atmega164 mogę coś tam kontrolować, tylko te piny z PC żyją jak chcą (a są podpięte normalnie jak wsyztskie inne do baz tranzystorow npn przez rezystor 10k). Nawet wygrywając pusty program to samo.

    A ATTiny nie działa nic, dioda cały czas wyłączona, próbowałem piny z grupy PA i PB zmieniać, ale nic to nie pomaga.

    Program się oczywiście wgrywa dobrze, weryfikuje poprawnie itp.

    Sprawdzałem piny multimetrem, i żadnych nieprawidłowości nie ma, tylko wykrywa w trybie diody przy odpowiedniej polaryzacji wewnętrzne diody zgodnie z dayasheetem.

    Dzięki z góry
  • #2 19344856
    excray
    Poziom 41  
    Spakuj w zipa cały ten wadliwy projekt i wrzuć go tutaj.
  • #3 19344888
    biniu_2012
    Poziom 6  
    Nie mam jak zbytnio teraz całości dać ale tu są schematy. A kod No to najprostsze :

    DDRA |= (1<<PA2);
    PORTA |= (1<<PA2);

    W tiny pomyliłem się nieco z iscp ale wysztsko już ogarnalem i podpiąłem dobrze bo wykrywa procka.
  • #6 19345223
    biniu_2012
    Poziom 6  
    JarekC napisał:
    A co to za pomysł aby w ATINY84 podciągać pin RESET rezystorem do GND?


    O kuzwa, chyba zmęczony byłem jak projektowałem. Dobra, ten problem napewno rozwiązany. Tak przy okazji, czy w czasie programowania programator trzyma cały czas reset zwarty do masy ?

    Dodano po 54 [sekundy]:

    bart-projects napisał:
    W mega164 wyłącz JTAG bo jest właśnie na porcie C.


    Ok, prawdopodobnie to. Jutro wieczorem zerknę.
REKLAMA