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

[Attiny13a] [Attiny13a][C] - niestabilne zasilanie migacza, różne zachowanie przy różnych źródłach

Zby. 12 Paź 2016 19:03 1968 15
  • #1 15990607
    Zby.
    Poziom 8  
    Witam wszystkich! (mój pierwszy post)

    Zaczynam zabawę z Attiny13a, doświadczenie niewielkie. (póki co robiłem proste układy na Atmega8)

    Zrobiłem prosty migacz - mam kłopot z zasilaniem:
    1) zasilany z programatora (usbasp) nie działa,
    2) zasilany zewnętrznie (gotowy moduł zasilający wpięty w płytkę, 5V) dioda szybko i dość ciemno miga (kilka razy szybciej niż zaprogramowałem) - bez kondensatorów: świeci się, jednostajnie, dość ciemno,
    3) zasilany zewnętrznie i jednocześnie (sic!) z programatora (podłączone jedynie GND i VCC) działa bez problemów, tzn. jak zaprogramowałem.

    Układ jak na schemacie + równolegle do GND i VCC kondenstator 100pF i elektrolit 10uF.

    Szukałem, szukałem - nie znalazłem na forum. W czym tkwi mój błąd?? :|

    [Attiny13a] [Attiny13a][C] - niestabilne zasilanie migacza, różne zachowanie przy różnych źródłach

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 15990744
    tos18
    Poziom 42  
    Zby. napisał:
    równolegle do GND i VCC kondenstator 100pF i elektrolit 10uF.

    Raczej użył bym 100nF ceramiczny na samych nogach kontrolera.

    Pętlę spróbuj napisać tak:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #3 15990747
    kamyczek
    Poziom 38  
    Jaki masz kolor diody świecącej wydaje mi się że nie dobrałeś rezystora . Nawet dla 2V diody masz tam (5-2)/1000 czyli 3mA trochę to mało więc dioda świecić jasno nie będzie . Rezystor 10k jest zbyteczny poza tym w programie nie widzę czy deklarujesz częstotliwość taktowania mikrokontrolera.
  • #4 15990755
    Konto nie istnieje
    Konto nie istnieje  
  • #5 15991424
    Zby.
    Poziom 8  
    No więc tak, wymieniłem mC z jednej sztuki na drugą (mam dwa). Bez zmian.
    Zgodnie z sugestią wywaliłem 10kOhm między RES a VCC.
    C mam 100nF, nie pF - pisałem na szybko i powstał błąd.

    Zmieniłem kod na
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    przy
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i teraz mam sytuację taką, że zapalenie i zgaszenie leda trwa około 1s, każde. Zastanawiam się, czy może gdzieś coś przestawiłem przypadkiem z jakimś taktowaniem lub czymś. Możliwe to?
    Dla 1000 to było około 5 sekund.

    Na zasilaniu zewnętrznym (5V) dioda przygasa i zaświeca się jaśniej - napięcie na R2+LED2 zmienia się, odpowiednio ok. 2,4V i ok. 3,1V.

    Przy zasileniu 3,3V dioda ledwo się żarzy, i miga bardzo szybko (może i na 1/5s), a napięcie na niej wynosi około 1,73V (mój multimetr nie wyłapuje by się zmieniało).

    Jeszcze jakieś pomysły?

    Może jeszcze załączę listing z programowania:
    > "make.exe" program
    avrdude -p attiny13 -P usb -c usbasp    -U flash:w:main.hex 
    
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.03s
    
    avrdude: Device signature = 0x1e9007
    avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
    avrdude: erasing chip
    avrdude: reading input file "main.hex"
    avrdude: input file main.hex auto detected as Intel Hex
    avrdude: writing flash (84 bytes):
    
    Writing | ################################################## | 100% 0.70s
    
    avrdude: 84 bytes of flash written
    avrdude: verifying flash memory against main.hex:
    avrdude: load data flash data from input file main.hex:
    avrdude: input file main.hex auto detected as Intel Hex
    avrdude: input file main.hex contains 84 bytes
    avrdude: reading on-chip flash data:
    
    Reading | ################################################## | 100% 0.50s
    
    avrdude: verifying ...
    avrdude: 84 bytes of flash verified
    
    avrdude done.  Thank you.
    
    
    > Process Exit Code: 0
    > Time Taken: 00:02
  • #6 15991464
    Konto nie istnieje
    Konto nie istnieje  
  • #8 15992967
    Zby.
    Poziom 8  
    Piotrus_999 napisał:
    1. Zdefiniuj w projekcie F_CPU zgodnie ze swoim zegarem a jak nie wiesz jak to sprawdzić to 4800000 lub 9600000. jeżeli nie wiesz jak to zrobić w projekcie w kodzie dodaj #define F_CPU 4800000 albo #define F_CPU 9600000 - aczkolwiek tak się nie powinno robić.

    Zdefiniowałem F_CPU = 9600000. Mam to w Makefile.

    Piotrus_999 napisał:
    3. Rezystor 10k na resecie w niczym nie wadzi a może pomóc.

    Niech pomaga. Wrócił na płytkę.

    Piotrus_999 napisał:
    5. Odczytaj fusy i zobacz jak masz ustawiony zegar

    hfuse: 0xff, lfuse: 0x6a
    Więc wygląda idealnie, niestety.
    Odczytałem to w ten sposób:
    avrdude -c usbasp -p attiny13 -U hfuse:r:-:h -U lfuse:r:-:h


    Jak sprawdzić zegar? - tego nie wiem.
    Nadal w moim układzie 200ms = ok.1s :cry:


    Dla potomności:
    * "AVRDUDE – obsługa, opis poleceń – czyli jak używać?" (jest jak odczytać fusebity)
  • #10 15993013
    Konto nie istnieje
    Konto nie istnieje  
  • #11 15993058
    Zby.
    Poziom 8  
    Piotrus_999 napisał:
    http://www.engbedded.com/fusecalc/

    Tam sobie ustaw jak chcesz i zobacz

    6a znaczy 9.6MHz i podział przez 8 czeli 1.2MHz i tyle tez ustaw w F_CPU

    To też tak właśnie ustawiłem. Czasowo wygląda, że jest blisko prawdy - dla mnie ok.

    Jednak nie rozwiązuje to innej zagadki, która nie daje mi spokoju:
    :arrow: gdy podłączam jedynie do zasilania zewnętrznego - led w stanie niskim lekko przygasa,
    :arrow: gdy podłączam do zasilania zewnętrznego i do zasilania z programatora - led pracuje jak trzeba? - podkreślam: jedynie zasilanie idzie z programatora - inne kabelki odłączone!

    :?: Czemu?
  • Pomocny post
    #12 15993072
    Konto nie istnieje
    Konto nie istnieje  
  • #13 15993084
    dondu
    Moderator na urlopie...
    Zby. napisał:
    Jednak nie rozwiązuje to innej zagadki, która nie daje mi spokoju:
    :arrow: gdy podłączam jedynie do zasilania zewnętrznego - led w stanie niskim lekko przygasa,
    :arrow: gdy podłączam do zasilania zewnętrznego i do zasilania z programatora - led pracuje jak trzeba? - podkreślam: jedynie zasilanie idzie z programatora - inne kabelki odłączone!

    :?: Czemu?


    Pokazuj zawsze komplet - schemat + program + opis problemu, bo przyczyn może być wiele.

    A tak przy okazji bo jesteś na początku drogi: http://mikrokontrolery.blogspot.com/p/spis-tresci.html
  • #14 15993105
    Zby.
    Poziom 8  
    Piotrus_999 napisał:
    Widać to zasilanie zewn jest jakies lewe.


    :idea: Rzeczywiście, może znajdę sobie coś innego do zasilenia tego układu...

    Tyle, że jak to wytłumaczyć, że:
    :arrow: układ zbudowany na Atmega8a, z 6 ledami, śmiga na tym bez problemu?
    :arrow: dla pracującego układu z Attiny jest 5V,
    :arrow: zakres pracy Attiny13a, to od 1,8V do 5,5V

    :?:

    Dodano po 3 [minuty]:

    dondu napisał:
    Pokazuj zawsze komplet - schemat + program + opis problemu, bo przyczyn może być wiele.

    Tak też zrobiłem rozpoczynając wątek.


    dondu napisał:
    A tak przy okazji bo jesteś na początku drogi: http://mikrokontrolery.blogspot.com/p/spis-tresci.html

    Bardzo dziękuję. Z radością przestudiuję. :D
  • #15 15993117
    tos18
    Poziom 42  
    Woltomierz i oscyloskop prawdę Ci powie.
    Może jakieś zdjęcia zamieścisz byśmy mieli się na czym oprzeć a nie gdybali po próznicy.
  • #16 15993306
    Zby.
    Poziom 8  
    No i zagadka rozwiązana.

    :idea: Wstyd przyznać: wina ułomnej płytki - przełożenie układu w inne miejsce, poskładanie od nowa i podłączenie innego zasilacza pokazało, że wszystko jest ok.

    Kolejny krok to dołożenie elementów (w starym miejscu), które nie zadziałały. Dalej było prosto...

    :idea: Na płytce zdarzyło mi się kiedyś jakieś zwarcie i już myślałem, że nic się nie stało. Jednak się-stało.

    :arrow: posypuję więc głowę popiołem
    :arrow: serdecznie dziękuję za pomoc wszystkim, szczególnie pomógł mi Piotrus_999
    :arrow: dowiedziałem się czegoś więcej o fuse bitach :)
    :arrow: za jakiś czas zbadam płytkę i oznaczę gdzie coś jest nie tak
REKLAMA