Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[M32U2][LUFA]Czym zmienić fuse bity?/Problemy z zegarem

27 Nov 2010 13:49 3102 20
Altium Designer Computer Controls
  • #1
    User removed account
    User removed account  
  • Altium Designer Computer Controls
  • #2
    adambombel
    Level 12  
    Skąd pomysł, że ten układ ma bootloader, który pozwala go programować przez USB (datasheet chyba nic o nim nie wspomina)?
  • #3
    User removed account
    User removed account  
  • Altium Designer Computer Controls
  • #4
    adambombel
    Level 12  
    Żabek wrote:
    Wychodzi na to, że Atmel nie do końca wie, jaki produkt posiada... Cytując notę katalogową:
    Quote:
    8.3.1 Default Clock Source
    The device is shipped with internal RC oscillator at 8.0 MHz and with the fuse CKDIV8 programmed,
    resulting in 1.0 MHz system clock. The startup time is set to maximum and time-out
    period enabled. (CKSEL = "0010", SUT = "10", CKDIV8 = "0"). The default setting ensures that
    all users can make their desired clock source setting using any available programming interface.

    Można zatem domyślać się, że scalak wysyłany jest z ustawionym zegarem 1MHz (wewnętrzny RC na 8MHz i dzielnik przez 8). A okazuje się, że do poprawnej pracy potrzebuje zewnętrznego kwarcu 16MHz. Tak więc albo błąd w nocie, albo brak konsekwencji (może gdzieś indziej dopisali o zewnętrznym kwarcu), albo zwykłe kopiuj-wklej ;)

    Dodano po 4 [minuty]:

    adambombel wrote:
    Skąd pomysł, że ten układ ma bootloader, który pozwala go programować przez USB (datasheet chyba nic o nim nie wspomina)?


    Protokół DFU - Device Firmware Upgrade, dodatkowo Atmel rozdaje bezpłatny program do programowania - Flip. Uwierz, posiada bootloader ;)


    Procek nie wymaga do pracy kwarcu 16MHz. Na 1MHz z RC też działa.

    Za to działanie USB oczywiście wymaga spełnienia określonych warunków.
  • #5
    User removed account
    User removed account  
  • #6
    User removed account
    User removed account  
  • #7
    User removed account
    User removed account  
  • #8
    Azonic_2006
    Level 17  
    Witam!!!
    Miałem podobny problem z fusami w tym procku a na dodatek skasowałem bootloader.
    Teraz pozostała mi możliwość programowania przez isp.
    Co prawda znalazłem jeden program który sobie z tym poradzi ale jest płatny.
    Ja osobiście poradziłem sobie avrdude w trybie tekstowym z konsoli.
    Tutaj mamy kalkulator fusebitów

    Link
    A co do tego programu płatnego to jest to program forumowego kolegi@mirekk36 i znajduje się tu>> Link
    Pozdrawiam!
    Azonic_2006

    [Edit]
    Wymuszenie innego procka chyba nic nie da bo ma inną sygnaturę.
    Flip nie ma możliwości edycji fusebitów a w atmega32u2 jest seryjnie chyba zblokowany odczyt pamięci żeby nie odczytać bootloadera.

    I jeszcze jedno bo kolega nie wspomina czy noga 13 czyli HWB jest podciągnięta do masy bo to stan niski na tej nodze wymusza tryb programowania.
  • #9
    mirekk36
    Level 42  
    a czy mógłbyś sprawdzić czy uda się tego dokonać za pomocą mojego programu MkAvrCalculator, który posiada na liście twój procek (pod spodem korzysta oczywiście z AVRDUDE) .... ale chciałbym sprawdzić czy w ogóle dobrze to wszystko wychodzi z takimi prockami a nie używałem ich jeszcze i dlatego jestem ciekawy.

    W załączniku wygenerowana dla ciebie specjalna licencja tak żeby można było sprawdzić w wersji FREE dowolny procesor. Byłbym wdzięczny za info czy działa ;)

    plik licencji po rozpakowaniu trzeba wgrać do folderu gdzie znajduje się program aby zaczął działać w pełnej (choć ograniczonej czasowo )wersji
  • #10
    User removed account
    User removed account  
  • #11
    mirekk36
    Level 42  
    aaaale myślałem że programujesz procka przez ISP a nie przez bootloadera. Bo oczywiście mój program nie zadziała z żadnym takim bootloadere. Chodziło mi tylko o przetestowanie możliwości ustawiania właśnie fusków czy programowania ale tylko i wyłącznie przez ISP.
  • #12
    Azonic_2006
    Level 17  
    Witam!!
    Na stronie atmela są bootloadery ale nie do 32u2.
    Jest projekt dfu-programer bodajże ale nie udało mi się go uruchomić.
    Obecnie programuję w winavr dlatego utworzyłem sobie skrót i programuję bezpośrednio z winavr.
    Co do kolegi mirek36 to przetestuje później ale mam pewne problemy z safemode i następuje zwis programu.
    Jak rozgryzę o co biega to poinformuję.
    Azonic_2006

    [Edit]
    Jeżeli chodzi o kwarc i prędkości to z tym jest pewne zamieszanie a mianowicie.
    Seryjnie atmega jest z dzielnikiem taktu przez 8, ale jest możliwość wyłączenia go i to podczas pracy programu.
    Służy do tego funkcja Clear_prescaler();, ale jakoś nie chce działać dlatego trzeba użyć clock_prescale_set(0);. Po więcej zapraszam do pliku power.h w WinAvr.
    Do pliku power.h trzeba dodać wpis o mega32u2 dlatego gotowy plik zamieszczam w załączniku.
  • #13
    Nagus
    Level 27  
    Nie dałeś schematu a szkoda... Czy podłączyłeś pin oznaczony na rys. 20-3 karty katalogowej jako Uvss do masy? Jeśli nie, to wiadomo czemu nie wykrywa. Atmel jakoś o tym drobiazgu zapomniał.

    Bywa, że standardowy bootloader DFU nie odpali po podłączeniu do portu USB (przy zasilaniu z portu) i trzeba dodatkowo nacisnąć reset (za późno sprawdza HWB czy co).

    Atmel daje bootloader tylko dla U4, ale w projekcie LUFA jest bootloader kompatybilny z DFU. Tylko skompilować z jedynie słusznymi opcjami.

    Jeżeli avrdude nie obsługuje U2 to trzeba stosowne wpisy w konfigu sklonować i skorygować. Wymuszanie AT90USB... nie ma sensu bo każdy normalny programator przerwie działanie gdy nie zgodzi mu się sygnatura.
  • #14
    User removed account
    User removed account  
  • #15
    MirekCz
    Level 35  
    Żabek:
    Jak chciałeś mieć USB na wewnętrznym zegarze?
    USB wymaga dosyć dokładnego zegara i ten wewnętrzny się nie nadaje do tej roli. Dlatego bootloader korzysta z zewnętrznego.
    Atmega startuje z zegarem wewnętrznym i w kodzie przestawiasz go na zegar zewnętrzny - patrz dokumentacja punkt 6.7/6.8 - clock switch. Dlatego bootloader Tobie nie startował (bo tam zegar przestawiają), mimo, że ISP działa dobrze.
    To samo masz we wszystkich arm cortexach, więc jak sobie z małym avrem nie radzisz to tam będziesz przeklinał jeszcze bardziej. Warto przeczytać dokumentację PRZED zaprojektowaniem płytki, a nie ściemniać, że nota katalogowa podaje błędy (chociaż to się zdarza).
  • #16
    User removed account
    User removed account  
  • #17
    Azonic_2006
    Level 17  
    Witam!!!
    Co do zmiany fusów to polecam tryb tekstowy avrdude tylko trzeba sobie wyliczyć wartość a jakie komendy trzeba podać to polecam program polecony wcześniej.
    Jest tam okno prezentujące co trzeba przepisać.
    Do jednorazowej zmiany konfiguracji taki sposób jest OK natomiast na dłuższą metę jest uciążliwe, a co do programowania to proponuję utworzyć w winavr makro o np. takiej składni -p m32u2 -c bascom -P lpt1 -e -V -E noreset -U flash:w:"%d%n.hex":i .
    Nie jest to ideał, ale mi wystarcza.
    Co do tych funkcji to jestem pewien, ponieważ podałem clock_prescale_set(0); a clock_div_1 = 0 więc się zgadza i pana tok rozumowania jest słuszny.
    Ja tylko przestrzegałem przed stosowaniem Clear_prescaler();, ponieważ mi wywalało błąd przy kompilacji.
    Pozdrawiam!!!

    [Edit]
    Jeżeli to interesuję kolegę@mirekk36 to pana program z M32U2 współpracuje idealnie, ale wszystkich ustawień fusów nie testowałem.
    Poprzednie problemy były spowodowane przez AvrDude.
    Jedna uwaga to to, że nie wszystkie wersje AvrDude wspierają M32U2.
  • #18
    User removed account
    User removed account  
  • #19
    Azonic_2006
    Level 17  
    Witam!!!
    Ogólnie jeżeli chodzi programowanie tobym proponował programować i pisać programy klasycznie.
    Używanie tych funkcji z pliku power ma na celu obniżenie pobierania energi i radzenia sobie w momencie korzystania z bootloader, ale jeżeli go brak to chyba lepiej i wygodniej wszystko robić po staremu.
    Co do tej weryfikacji to powiedz czym programujesz to spróbujemy coś pomóc.
    Ewentualnie podrzuć program to wgram u siebie i zobaczymy czy ok.

    P.S. OK! :D
  • #20
    User removed account
    User removed account  
  • #21
    Azonic_2006
    Level 17  
    Witam!
    Na początek proponuję przykłady ze strony atmela które zawierają błędy, ale ta
    Link strona powinna rozwiązać problem.
    Jeżeli chodzi o projekt LUFA to możesz podesłać źródła to może coś wymyślę.
    Pozdrawiam!
    Azonic_2006