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

[ATmega16][USBasp][avrdude] Błąd dla częstotliwości większych niż 1MHz

kiclaw 09 Cze 2012 21:06 6081 33
REKLAMA
  • #1 10984208
    kiclaw
    Poziom 16  
    Witam

    Mam taki problem, mianowicie ATmega16 nie chce mi się zaprogramowac dla częstotliwości wyższych niż 1 MHz. Dla 1 MHz wszystko ładnie działa, gdy przestawię w programie fuse bity na wew. oscylator 8MHz (robię układ na 8MHz), to wyskakuje mi taki błąd z AVRdude:

    Cytat:
    avrdude: error: programm enable: target doesn't answer. 1
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.


    avrdude done. Thank you.


    Dla 2MHz i 4MHz również nie działa. Oczywiście w projekcie w Eclipse zmieniłem częstotliwość taktowania na 8MHz.
    Korzystam z nakładki mkAVRCalculator.

    Z góry dzięki za pomoc
  • REKLAMA
  • #3 10984582
    kiclaw
    Poziom 16  
    Fusy uproszczone -> Wewnętrzny oscylator -> 8MHz

    + wyłączam w tej samej zakładce JTAG

    Potem do zakładki Programator, zaznaczam FLASH i FuseBity no i zapisz.
  • REKLAMA
  • #4 10984626
    mirekk36
    Poziom 42  
    No dobrze ;) ale teraz co ? programowanie odbywa się poprawnie ? czy nie - bo tego nie rozumiem. Jeśli odbywa się poprawnie to znaczy że wszystko jest OK.

    Poza tym jeśli się przeprogramuje a jak piszesz nie możesz zaprogramować procka to co? jak mu przywracasz fusebity ?
  • #5 10984668
    kiclaw
    Poziom 16  
    No i w tym momencie wywala błąd z pierwszego postu :) Dziwne to, bo dla 1MHz działa ale o tym już pisałem.

    Jak mu przywracam fusebity. Otóż programuje go z powrotem z wartością 1MHz.
  • #6 10984805
    mirekk36
    Poziom 42  
    słuchaj ale jak ty możesz mu przywracać fusebity ? skoro masz komunikat błędu hmmm? W ogóle ich nie przeprogramowujesz.

    ten błąd

    Cytat:
    avrdude: error: programm enable: target doesn't answer. 1
    avrdude: initialization failed, rc=-1


    panie kochany oznacza że masz błąd w połączeniach między prockiem a programatorem albo brak zasilania procka

    wejdź w zakładkę "Programator AVR" kliknij klawisz żółty do sprawdzenia podłączonego procesora i pokaż zrzut ekranu z programu - to powie nam więcej co ci się tam dzieje

    (tylko pamiętaj żeby w zakładce "ustawienia" postawić ptaszka aby pokazywała się konsola przy błędzie oraz zainstaluj stamtąd sobie właściwe AVRDUDE - masz klawisz instaluj
  • #7 10988515
    kiclaw
    Poziom 16  
    [ATmega16][USBasp][avrdude] Błąd dla częstotliwości większych niż 1MHz

    Zasilam układ napięciem z USBasp.

    avrdude jest poprawnie zainstalowany, sterowniki do USBasp również są OK.

    Problem tutaj jest taki że nie działa tylko dla wyższych częstotliwości od 1MHz. Ponieważ gdy wszystko pozmieniam do stanu z pkt. 1 to wszystko ładnie działa.
  • #8 10988744
    mirekk36
    Poziom 42  
    Posłuchaj - jakby nie działało dla wyższych częstotliwości niż 1MHz jak piszesz - to zastanów się dobrze - ale dobrze - jak mógłbyś przeprogramować procek znowu na 1MHz skoro nie działa ci niby już na wyższej ????

    przecież pokazujesz na rysunku że próbujesz ustawić 8MHz i masz błąd -1 co oznacza że masz problem z połączeniem z prockiem

    a ty dalej swoje że przeprogramowujesz go na 8MHz - no niemożliwe.

    to ciekawy jestem po czym poznajesz że działa ci na 1MHz ????
  • #9 10988914
    kiclaw
    Poziom 16  
    Poznaje po tym, bo multipleksowanie ładnie chodzi, zmieniam rejestr OCR0 na 4, preskaler na 1024, mając 1MHz odświeża mi z 244Hz dla 4 cyfr.

    Tak samo jakies migające diody itp.

    Problem jest właśnie w tym że avrdude nie chce przeprogramować na 8Mhz.
    Pozatym, gdyby był problem z podłączeniem, to po wcisnięciu żółtego przycisku wywalało by błąd. A nie wywala.

    Cytat:
    przecież pokazujesz na rysunku że próbujesz ustawić 8MHz i masz błąd -1 co oznacza że masz problem z połączeniem z prockiem


    No OK. Ale dla 1MHz tego błędu nie ma.

    Spróbuje dzisiaj jeszcze zasilić układ nie z USBasp a z 7805.

    EDIT:
    Może to uszkodzona Atmega.
    Po zasileniu jej z 7805 (na wyjściu stabilizatora równo 5V) - układ działa z zaprogramowanym wsadem, ale po sprawdzeniu AVR-a w mkAVRCalculator pojawia się błąd:

    Cytat:
    avrdude.exe: set SCK frequency to 187.5 kHz
    avrdude.exe: error: programm enable: target doesn't answer. 1
    avrdude.exe: initialization failed, rc=-1
    avrdude.exe: AVR device initialized and ready to accept instructions
    avrdude.exe: Device signature = 0x000000
    avrdude.exe: Yikes! Invalid device signature.
    avrdude.exe: Expected signature for ATMEGA8 is 1E 93 07

    avrdude.exe done. Thank you.


    Dziwne jest to, że po podaniu zasilania z USBasp nadal dobrze zczytuje i działa.
  • #11 10989225
    LordBlick
    VIP Zasłużony dla elektroda
    Proponuję zrobić erase (lockbity pewnie masz zaciągnięte), przestawić fusebity i dopiero wtedy ponownie zaprogramować mikrokontroler.
  • #12 10989278
    mirekk36
    Poziom 42  
    Wiesz co? musisz robić jakiś totalnie tzw czeski błąd - bo owszem miewają ludzie problemy ale z programowaniem procków na 1MHz ale na 8MHz ? ;) jeszcze nie słyszałem o takim zjawisku .... Pewnie jak znajdziesz ten błąd to sam się uśmiejesz.

    Proponuję ci złap mnie na Skype: mirekk36 to szybko rozwiążemy ten problem, chętnie pomogę.

    Aha i czy nie używasz jakiejś przestarzałej wersji programu ? bo na zrzutach ekranu nie widać.
  • REKLAMA
  • #13 10991168
    sylwunia35
    Poziom 18  
    Witam ja mam to samo tyle że z M8 za pierona nie mogę przestawić >1MHz z tym że ja potraktowałem ją po zablokowaniu Atmega fusebit doctor (HVPP+HVSP) i po tym już koniec tylko 1MHz. Napisz proszę jeśli coś wymyślisz w tum temacie bo mnie już brak pomysłów.
  • #14 10991440
    mirekk36
    Poziom 42  
    sylwunia35 napisał:
    Witam ja mam to samo tyle że z M8 za pierona nie mogę przestawić >1MHz z tym że ja potraktowałem ją po zablokowaniu Atmega fusebit doctor (HVPP+HVSP) i po tym już koniec tylko 1MHz. Napisz proszę jeśli coś wymyślisz w tum temacie bo mnie już brak pomysłów.


    Ja już miałem dokładnie licząc trzy takie przypadki, że ktoś pisał że mu procek niedomaga, że coś źle działa itp ... tak jak kolega tutaj pisze. Zaproponowałem żeby podesłał ten ktoś do mnie taki procek z chęcią zobaczyłbym na własne oczy taki niespotykany przypadek. Ale za każdym razem okazywało się cudownie że u mnie procek działa i nie dolega mu żadna z przypadłości jakie autor opisywał - po czy odsyłałem procka i okazywało się że działa ;)

    Kolega chce być czwartą osobą ? ;) to proszę przesłać mi tego procka co rzekomo nie działa na 8 MHz ... a jak się okaże że ruszy to kolega jeszcze będzie miał radochę z odzyskanego procka. Jak coś to zapraszam na PRIV - sprawdzę to bezinteresownie i bez kosztów żadnych.
  • #15 10992131
    kiclaw
    Poziom 16  
    Używam build 57.

    Jutro wszystko ze stykówki zdejmę, i złoże raz jeszcze. Zobaczymy.

    dondu - tak jak pisałeś, nie podłączyłem masy programatora i stąd nie chciało go programować z zewn. zasilaniem.
  • #17 11065213
    kiclaw
    Poziom 16  
    Przepraszam za mały przestój w odpowiedziach ale nie miałem czasu bawić się uC więc tematu narazie nie zamykałem.

    Dzisiaj tak nad tym wszystkim myślałem i stwierdziłem że to może przez złącze KANDA w programatorze. U mnie wygląda to tak. Z tym, że tego GND między RST a MOSI nie zwierałem i "wisi" on w powietrzu. Może to przez to...

    Na dniach sprawdzę i zdam relację :)
  • #18 11065339
    LordBlick
    VIP Zasłużony dla elektroda
    kiclaw napisał:
    Przepraszam za mały przestój w odpowiedziach ale nie miałem czasu bawić się uC więc tematu narazie nie zamykałem.

    Dzisiaj tak nad tym wszystkim myślałem i stwierdziłem że to może przez złącze KANDA w programatorze. U mnie wygląda to tak.

    Sprawdź stabilność napięcia zasilania i pobór prądu.
  • #20 11069811
    kiclaw
    Poziom 16  
    Mirku, właśnie ten tekst z Twojego bloga skłonił mnie do tych przemyśleń :)

    Wszystko wygląda na dobrze podłączone.
    Napięcie na VCC to 4,9V (takie samo jak na wyjściu programatora), jednak gdy podłącze coś do uC (np LCD) to napiecie spada już do ok 4,7V. Druga sprawa est taka że gdy mi mkavrcalculator go wykrywa, to napięcie na VCC wynosi 4,9V, gdy zaraz potem klikne jeszcze raz na sprawdzenie, to mi go nie wykrywa a na VCC jest około 4,81V.

    Podłączyłem to pod stabilizator i na VCC jest ciągle 5V więc OK. Natomiast nie zawsze chce mi go program wykrywać. Polutuje na nowo złącze KANDA i zobaczymy co się stanie.
  • #21 11069831
    dondu
    Moderator na urlopie...
    Pokaż schemat całości z uwzględnieniem sposobu podłączenia programatora do mikrokontrolera. Wrzuć także zdjęcia.
    Rzuć także okiem na najczęstsze przyczyny problemów z programowaniem:
    http://mikrokontrolery.blogspot.com/2011/04/problemy-z-zaprogramowaniem.html
    Może któryś z przypadków "natchnie" Ciebie, bo jak na razie nie dałeś nam całej możliwej wiedzy o Twoim projekcie.
  • REKLAMA
  • #22 11108159
    kiclaw
    Poziom 16  
    Zasilanie układu, na wejściu do stabilizatora kondensatory 10uF i 100nF. Nie widać wszystkich przewodów ale idą tak: u góry brązowy z +9V na wejście stabilizatora +5V, niebieski do masy stabilizatora. U dołu niebieski do masy, a zielony to już +5V stab. do zasilania układu.
    [ATmega16][USBasp][avrdude] Błąd dla częstotliwości większych niż 1MHz

    Tutaj jedynie co należy dodać, to to że kondensatory to monolity 100nF. Kondensator przy resecie był, ale go zdjąłem bo nic nie wnosił (czy był, czy nie to i tak nie działało).
    [ATmega16][USBasp][avrdude] Błąd dla częstotliwości większych niż 1MHz
    UWAGA: Zworka nad przewodem brązowym "+ 5V do zasilania" jest ściągnięta, ale zwyczajnie tam siedzi więc masy programatora, uC, oraz zasilania sa połączone.
    uC to oczywiście ATmega16

    Do tak połączonego układu programy o częstotliwości taktowania 1MHz wgrywają się, wyżej już nie. Oczywiście zwyczajnie do portów podpięte są np. wyświetlcze, ale to wszystko wywaliłem żeby było bardziej przejrzyście.
  • #23 11108264
    dondu
    Moderator na urlopie...
    kiclaw napisał:
    Do tak połączonego układu programy o częstotliwości taktowania 1MHz wgrywają się, wyżej już nie.

    Co to znaczy: "programy o częstotliwości taktowania 1MHz"?

    Czytałeś o zworce SLOW_SCK z linku, który podałem?
    Może to jest przyczyną.
  • #24 11142841
    kiclaw
    Poziom 16  
    Chodziło mi o to, że da się zaprogramować uC z częstotliwością 1MHz, wyżej już nie idzie (z zewnętrznym też nie działa)

    Aczkolwiek, wsadziłem uC ATmega8 i wszystko ładnie działa. Programuje dla wszystkich częstotliwości i z zewn. kwarcem. Ale gdy wsadziłem ATmegę32 to ten sam problem co dla 16. Nie wiem już za bardzo za co się tutaj zabierać. Może to wina softu?

    Co do zworki SCK, włączałem i wyłączałem i nadal bez efektu.
  • #25 11142918
    LordBlick
    VIP Zasłużony dla elektroda
    A jak ustawiasz te wyższe częstotliwości ? Fusebitami ? Pytam, bo nigdy nie miałem problemu z tymi µC...
  • #26 11143229
    kiclaw
    Poziom 16  
    Tak, fuse bitami. Ale mam nakładkę graficzną na avrdude, jednak sposób pozostaje ten sam.
  • #27 11143261
    LordBlick
    VIP Zasłużony dla elektroda
    Może włączasz jakiś dodatkowy fusebit, który wadzi... Jesteś w stanie podać konfigurację fusebitów, przy której jest problem i jakiś schemat do tego ? Słabe źródło zasilania też będzie bardziej obciążone przy wyższej częstotliwości... Podłączasz wszystkie piny od zasilania ?
  • #28 11145181
    kiclaw
    Poziom 16  
    A więc tak:

    Schemat wg którego podłączam Atmegę : [ATmega16][USBasp][avrdude] Błąd dla częstotliwości większych niż 1MHz

    Parę postów wyżej jest wstawione zdjęcie, jak go realizuje na płytce stykowej wraz z zasilaniem.

    Fusebity: [ATmega16][USBasp][avrdude] Błąd dla częstotliwości większych niż 1MHz

    Jeśli typ Atmegi ma jakies znaczenie to jest to dokładnie ATmega16A
  • #29 11145250
    LordBlick
    VIP Zasłużony dla elektroda
    No i nie można tak było w pierwszym wpisie tematu ? ;)
    Wywal na zbity pysk ten kondensator C8 na linii RESET, która jest również niezbędna do programowania. Użycie kondensatora w tym miejscu jest wskazane tylko w mocno narażonych na zakłócenia środowiskach i to max. 100nF, ale absolutnie niewskazane przy programowaniu przez ISP. Wszystkie obecnie produkowane AVR są wyposażone w układ Reset On Power.
    P.S. Padł tu link kolegi dondu(1.7), który nie został dobrze przejrzany... :P
  • #30 11145321
    kiclaw
    Poziom 16  
    Juz myślałem o tym wcześniej ale tak samo jak z nim, i bez niego nie działa programowanie.

    Natomiast zuważyłem jedną dziwną rzecz, na wyjściu stabilizatora mam równe 5V, na wyjściu układu zasilania jest też 5V. A na nożce VCC jest już 4,85V. Tak jakby był spadek na tej szynie która zasila uC .
REKLAMA