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

ATmega328 - Błąd przy zapisie extended fuse bitów po użyciu V-USB

radwan92 11 Lis 2014 01:13 1365 2
REKLAMA
  • #1 14120295
    radwan92
    Poziom 10  
    Witam,

    Próbowałem ostatnio ustawić moją atmegę 328 jako USB HID z użyciem V-USB. Po wielu próbach udało mi się, by była wykrywana poprawnie przez Windowsa, po czym zabrałem się za przesył danych. Wraz z biblioteką V-USB przychodzą przykłady - jeden z nich służy do zapisu i odczytu paczki danych do EEPROM'u mikro. Po pierwszej próbie zapisu bajtu danych mikrokontroler natychmiast rozłączył się (przestał być wykrywany poprawnie jako HID). Od tego czasu przy każdej próbie zapisu extended fuse bitów wyrzuca błąd niespójności:
    ATmega328 - Błąd przy zapisie extended fuse bitów po użyciu V-USB
    Jeżeli chodzi o high i low fusy to nie ma żadnych problemów. Jakiś wpływ na zapis efuse'ów jest, ponieważ przy próbie z różnymi wartościami są różnice przy weryfikacji (próbując zapisać 0xFF faktycznie zapisywane jest 0x07, przy 0xFE -> 0x06, przy 0xFD->0x05). Również wgrywane na mikro programy działają bez zarzutu, choć przy ich wgrywaniu bez załączonego zasilania również występuje błąd niespójności danych (wcześniej tego nigdy nie zauważyłem). No i co najważniejsze, w żaden sposób nie mogę dojść do tego by mikro ponownie został poprawnie wykryty jako HID, a to największy problem. Były próby zmiany efuse'ów zarówno z zewnętrznym zegarem jak i wbudowanym, z dzieleniem / 8 i bez, z zewnętrznym zasilaniem, czy w trybie unsafe. Niestety jak dotąd brak rezultatów. Jakieś pomysły?
  • REKLAMA
  • #2 14122454
    hexen2k
    Poziom 16  
    Jaką masz wersję AVRDUDE?

    Być może związane to jest z tym problemem:
    https://savannah.nongnu.org/bugs/?41561

    Miałem podobne komunikaty do Twoich, pomógł downgrade AVRDUDE do wersji 5.11. Problemy zniknęły od razu.
  • #3 14122675
    radwan92
    Poziom 10  
    Moja wersja AVRDUDE to 5.8, obawiam się jednak że nie dowiemy się nigdy czy to był ten właśnie problem, bo po ostatniej próbie zapisu low fuse bitów również przekręcił zapis na 0x57 i od tej pory zero odzewu... Mimo wszystko dziękuję za odpowiedź.

    Update 1:
    Wygląda na to, że problem nie leżał w mikrokontrolerze, gdyż dziś próbowałem zaprogramować nową atmegę 328p i jest dokładnie to samo (przekręcony zapis fusebitów). Tak jak sugerował kolega wyżej, próbowałem zmiany avrdude do wersji 5.11, a następnie do 6.1 - w obu przypadkach nic to nie dało.

    Update2:
    Wykonałem również próbę na innym komputerze, który nie miał wcześniej styczności z programatorem i winavr. Po próbie zapisu efuse'ów zachowanie identyczne jak poprzednio (przękrecił zapis z 0xFD na 0x05). Czyżby walnięty programator? Jakieś pomysły?

    Update3:
    Sprawdziłem na komputerze kolegi z jego programatorem... nadal ten sam błąd. Zbudowałem cały układ na nowych komponentach w innym miejscu płytki stykowej - brak rezultatów. Po sprawdzeniu tego wszystkiego mój ostatni pomysł, to pierwszy komputer w jakiś niewyjaśniony sposób psuje mikrokontrolery. Nie wiem czy to w ogóle jest realne ale to jedyne wyjaśnienie jakie mi przychodzi na myśl. Jakieś rady? Kupiłbym i 3 mikro żeby sprawdzić, ale boje się, że będzie to samo.

    Schemat układu (przepraszam za brak zgodności z jakimikolwiek normami, ale robie to pierwszy raz i z pierwszym znalezionym programem):
    ATmega328 - Błąd przy zapisie extended fuse bitów po użyciu V-USB

    Update 4:
    Problem został rozwiązany na innym forum. Wszystko sprowadza się do tego, że extended fuse bajt ma tylko 3 istotne bity, reszta jest automatycznie zerowana. Dlatego czy 0xFD czy 0x05 - nie ma to znaczenia. Temat do zamknięcia.
REKLAMA