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

[ATmega328p] Straciłem komunikację po zmianie fusebitów na 4MHz - co robić?

truwativ1 05 Maj 2018 23:49 1056 9
REKLAMA
  • #1 17205545
    truwativ1
    Poziom 6  
    Dzień dobry,
    chcialem zmienic taktowanie procesora na 4Mhz w wewnetrznego oscylatora RC, w tym celu przestawilem Fusebity korzystając z wiersza poleceń"
    avrdude -p m328p -c usbasp -U lfuse:w:0xC3:m, czyli zmiana bitów CKSEL[3..0] 0011, po wykonaniu polecenia straciłem kominikacje z uC.
    Czy mogło to spowodować jego zablokowanie?
    Korzystam z programatora USBasp, gdy próbuje się połączyć to otrzymuje komunikat :

    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware up
    date.
    avrdude.exe: error: programm enable: target doesn't answer. 1
    avrdude.exe: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    Co ciekawe gdy dopisuje -F to okazuje się, żę uC jakby zmienił sygnature?
    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 = 0x220000
    avrdude.exe: Expected signature for ATmega328P is 1E 95 0F

    Czy da się to jeszcze odratować ? Z góry dzięki za pomoc
  • REKLAMA
  • Pomocny post
    #2 17205722
    zycior
    Poziom 13  
    LF 0xC3 to wewnętrzny oscylator 128kHz. Atmega 328, jak mnie pamięć nie myli, nie ma wewnętrznego taktowania 4MHz, Jest 128kHz i 8MHz (ewentualnie 1MHz po ustawieniu CKDIV8)
    Jeżeli faktycznie ustawiłeś 0xC3 to spróbuj zewrzeć w programatorze zworę slow sck, procek powinien ruszyć.
  • REKLAMA
  • Pomocny post
    #3 17205883
    Slawek K.
    Poziom 35  
    Tak jak kolega @zycior pisze, wewnętrzny oscylator możliwy dla 328P to 128KHz lub 8MHz, jeżeli chcesz 4MHz to tylko zewnętrzny oscylator.

    Pozdr
  • Pomocny post
    #4 17205940
    NoweMillennium
    Poziom 17  
    rs6000 napisał:
    Tak jak kolega @zycior pisze, wewnętrzny oscylator możliwy dla 328P to 128KHz lub 8MHz, jeżeli chcesz 4MHz to tylko zewnętrzny oscylator.

    Do taktowania 4MHz 2MHz 1Mhz 500kHz 250kHz 125kHz 62.5kHz 31.25kHz nie trzeba zewnętrznego oscylatora.
  • REKLAMA
  • #5 17205945
    truwativ1
    Poziom 6  
    HA!, wiem co się stało :P, wczoraj popijając pewne trunki nie zauwazyłem, że otworzyłem note katalogowa od ATmega8a ! Dzięki za pomoc :P
  • REKLAMA
  • #6 17205995
    Slawek K.
    Poziom 35  
    NoweMillennium napisał:
    rs6000 napisał:
    Tak jak kolega @zycior pisze, wewnętrzny oscylator możliwy dla 328P to 128KHz lub 8MHz, jeżeli chcesz 4MHz to tylko zewnętrzny oscylator.

    Do taktowania 4MHz 2MHz 1Mhz 500kHz 250kHz 125kHz 62.5kHz 31.25kHz nie trzeba zewnętrznego oscylatora.

    Być może nie umiem czytać DS, zatem wklejam poniżej z prośbą o interpretację :

    [ATmega328p] Straciłem komunikację po zmianie fusebitów na 4MHz - co robić?

    Pierwsze trzy pozycje dotyczą zewnętrznego oscylatora, kolejna to 128KHz na wewnętrznym oscylatorze, kolejna to 8MHz na wewnętrznym oscylatorze z możliwością podziału przez 8, i pozostałe dwie wiadomo.

    Prośba zatem do kolegi @NoweMillennium o wyjaśnienie jak ustawić wymienione przez kolegę taktowania na wewnętrznym oscylatorze, w sytuacji, gdy dla wewnętrznego oscylatora mamy zarezerwowane stałe wartości cksel (bez możliwości stosowania przedziału), pozostałe bity są zarezerwowane dla zewnętrznego oscylatora.

    Pozdr
    Sławek
  • #7 17206112
    tmf
    VIP Zasłużony dla elektroda
    rs6000 napisał:
    Prośba zatem do kolegi @NoweMillennium o wyjaśnienie jak ustawić wymienione przez kolegę taktowania na wewnętrznym oscylatorze, w sytuacji, gdy dla wewnętrznego oscylatora mamy zarezerwowane stałe wartości cksel (bez możliwości stosowania przedziału), pozostałe bity są zarezerwowane dla zewnętrznego oscylatora.


    @rs6000
    Proszę w tym celu przeczytać notę procesora i zwrócić uwagę na rejestr Clock Prescaler Register (CLKPR).
  • #8 17206173
    Seba319
    Poziom 24  
    @truwativ1 zainstaluj sobie jakieś GUI do AVRDUDE np. Burn-O-Mat, to unikniesz takich pomyłek w przyszłości ;)

    Masz wygodny interfejs, nie musisz szperać po notach katalogowych, a w trybie Mode: normal, program nie pozwoli Ci na niewłaściwe ustawienie chociażby bitu SPIEN. W zakładce Fuse Hex Editor możesz odczytać bąc wpisać wartość fusebitów w formacie HEX.
    [ATmega328p] Straciłem komunikację po zmianie fusebitów na 4MHz - co robić?

    Pozdrawiam!
    Załączniki:
  • #9 17206206
    NoweMillennium
    Poziom 17  
    rs6000 napisał:
    NoweMillennium napisał:
    rs6000 napisał:
    Tak jak kolega @zycior pisze, wewnętrzny oscylator możliwy dla 328P to 128KHz lub 8MHz, jeżeli chcesz 4MHz to tylko zewnętrzny oscylator.

    Do taktowania 4MHz 2MHz 1Mhz 500kHz 250kHz 125kHz 62.5kHz 31.25kHz nie trzeba zewnętrznego oscylatora.

    Być może nie umiem czytać DS, zatem wklejam poniżej z prośbą o interpretację :

    Oto moja interpretacja:
    [ATmega328p] Straciłem komunikację po zmianie fusebitów na 4MHz - co robić?

    Kolega dużo wie o AVR ale ma pewne braki. Rejestr preskalera jest w każdym AVR jaki znam (darujmy sobie AT90Sxxxx).
  • #10 17207030
    Slawek K.
    Poziom 35  
    tmf napisał:
    rs6000 napisał:
    Prośba zatem do kolegi @NoweMillennium o wyjaśnienie jak ustawić wymienione przez kolegę taktowania na wewnętrznym oscylatorze, w sytuacji, gdy dla wewnętrznego oscylatora mamy zarezerwowane stałe wartości cksel (bez możliwości stosowania przedziału), pozostałe bity są zarezerwowane dla zewnętrznego oscylatora.


    @rs6000
    Proszę w tym celu przeczytać notę procesora i zwrócić uwagę na rejestr Clock Prescaler Register (CLKPR).

    Dziękuje za wyjaśnienie, człowiek sie uczy całe życie a i tak umiera głupi ;)

    Pozdr
    Slawek
REKLAMA