Elektroda.pl
Elektroda.pl
X
Relpol
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

fusebity - O co chodzi w tym poleceniu dotyczącym fusebitów

PatrykP100 17 Sty 2013 12:03 1233 5
  • #1 17 Sty 2013 12:03
    PatrykP100
    Poziom 10  

    Witam
    Jeszcze nigdy nie programowałem procesorów i mam mały problem. Mam tutaj fragment instrukcji dotyczącej zaprogramowania Atmegi do LED Cube. Nie rozumiem o co chodzi z tym ustawianiem fusebitów, mam coś zmienić przy wrzucaniu programu do uC czy zostawić jak jest ustawione normalnie.

    -----------------------------------------------------------------
    My examples will be on an Ubuntu Linux system. The procedure should be pretty much identical on Windows, but I can't help you with that. If you use another programmer, read thet manual for that programmer and avrdude.

    First off, Let's just see if we can make contact with the AVR.

    Connect the programmer to your cube and your computer.

    The command is "avrdude -c usbtiny -p m16", wherer -c specifies the programmer, and -p the AVR model. You can see the output in the images below.

    Now, upload the firmware: "avrdude -c usbtiny -p m16 -U flash:w:main.hex".

    By now, the cube should reboot and start doing stuff. It will be running at 1mhz (very slowly) using it's internal oscillator. And some of the leds won't work, because some GPIO ports are used for JTAG by default.

    To enable the external oscillator and disable JTAG, we need to program the fuse bytes:
    run "avrdude -c usbtiny -p m16 -U lfuse:w:0xef:m"
    and "avrdude -c usbtiny -p m16 -U hfuse:w:0xc9:m".

    Be carefull when doing this step! If you get it wrong, you can permanently destroy your microcontroller! If you are using another microcontroller than the ATMega16, be sure to read the datasheet carefully before changing the fuse bytes!

    After writing the correct fuse bytes, the cube should reboot and start operating at regular speed with all leds operational.
    ------------------------------------------------------------------

    Z góry dzięki za odpowiedź, jeśli zły dział to proszę przenieść a nie usuwać od razu.

    0 5
  • Relpol
  • #2 17 Sty 2013 12:24
    McMonster
    Poziom 32  

    Przecież w tym opisie jest wszystko na ten temat. Widać też, że nie miałeś żadnego kontaktu z wyszukiwarką forum i działem Mikrokontrolery, gdzie są przyklejone tematy z podstawowymi informacjami.

    0
  • Relpol
  • #3 17 Sty 2013 12:43
    PatrykP100
    Poziom 10  

    To co jest tam napisane nic mi nie mówi, pewnie dlatego, że nie używam Linuxa. W tym projekcie uC używa kwarcu zewnętrznego około 14 MHz. Czy moge ustawić Fusebity według tego opisu dla Atmegi16(32)?
    ------------------------------------------
    W tej wersji ustawień, gdy bit CKOPT= "0" maksymalna częstotliwośc pracy wynosi 16MHz. Dla zewnętrznego rezonatora kwarcowego musimy przestawić bity CKSEL3..1 w zależności od jego częstotliwości. Dla częstotliwości 0,9-3MHz bity CKSEL3..1 powinny mieć wartość "110", natomiast dla 3-16MHz powinno być CKSEL3..1 = "111"
    W drugim kroku zajmujemy się ustawieniem bitu CKSEL0 i SUT1..0 ktore razem odpowiadają za czas powrotu mikrokontrolera do normalnej pracy po resecie lub trybie Power-Down itp. Najczęściej stosowane są trzy tryby. Pierwszy, wymagany gdy układ BOD jest aktywny uzyskamy dzięki ustawieniu CKSEL0 = "1" i SUT1..0 = "01". Drugi tryb stosowany jest gdy napięcie zasilające szybko narasta, jest realizowany przez ustawienie CKSEL0 = "1" i SUT1..0 = "10". Trzeci natomiast uruchamiamy stawiając CKSEL0 = "1" i SUT1..0 = "11", jest stosowany gdy napięcie zasilające powoli narasta.-
    ----------------------------------------

    0
  • #4 17 Sty 2013 18:10
    Freddy
    Poziom 43  

    PatrykP100 napisał:
    To co jest tam napisane nic mi nie mówi, pewnie dlatego, że nie używam Linuxa. W tym projekcie uC używa kwarcu zewnętrznego około 14 MHz. Czy moge ustawić Fusebity według tego opisu dla Atmegi16(32)?
    ------------------------------------------
    W tej wersji ustawień, gdy bit CKOPT= "0" maksymalna częstotliwośc pracy wynosi 16MHz. Dla zewnętrznego rezonatora kwarcowego musimy przestawić bity CKSEL3..1 w zależności od jego częstotliwości. Dla częstotliwości 0,9-3MHz bity CKSEL3..1 powinny mieć wartość "110", natomiast dla 3-16MHz powinno być CKSEL3..1 = "111"
    W drugim kroku zajmujemy się ustawieniem bitu CKSEL0 i SUT1..0 ktore razem odpowiadają za czas powrotu mikrokontrolera do normalnej pracy po resecie lub trybie Power-Down itp. Najczęściej stosowane są trzy tryby. Pierwszy, wymagany gdy układ BOD jest aktywny uzyskamy dzięki ustawieniu CKSEL0 = "1" i SUT1..0 = "01". Drugi tryb stosowany jest gdy napięcie zasilające szybko narasta, jest realizowany przez ustawienie CKSEL0 = "1" i SUT1..0 = "10". Trzeci natomiast uruchamiamy stawiając CKSEL0 = "1" i SUT1..0 = "11", jest stosowany gdy napięcie zasilające powoli narasta.-
    ----------------------------------------

    Co ma do tego Linux ?
    Polecam zapoznanie się z lekturą https://www.elektroda.pl/rtvforum/topic1790122.html

    0
  • Pomocny post
    #5 17 Sty 2013 20:30
    dominkaster
    Poziom 14  

    Jeśli masz problem z określeniem wartości fusebitów i zrozumieniem dokumentacji, to najlepiej skorzystaj z jakiegoś kalkulatora (np. http://www.engbedded.com/fusecalc).. Z jego pomocą otrzymasz wartość fusebitów, którą jedynie przekazujesz do programatora.

    0
  • #6 17 Sty 2013 21:25
    PatrykP100
    Poziom 10  

    Dzięki za odpowiedzi głównie dla dominikmaster. Gdyby w przyszłości ktoś w tym temacie szukał odpowiedzi na swoje problemy to wklejam link wyjaśniający wszystko w nadziei, że nie łamię tym regulaminu. >>http://elportal.pl/index.php?module=ContentExpress&func=display&ceid=243<<
    Zamykam.

    0