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

Atmega128: Dioda nie mruga po zmianie F_CPU w WINAVR

Dexu 08 Kwi 2005 12:06 1950 20
REKLAMA
  • #1 1386074
    Dexu
    Poziom 13  
    Posty: 117
    Pomógł: 1
    Witam

    Mam problemy z tutorialem http://www.patron.net.pl/AVRintropl.htm#_Toc91331579
    pod atmega128

    Chodzi dokladnie o program z mrugajaca dioda. Mam kwarc 110592 wiec program zmienilem tylko w jednej linijce

    #define F_CPU 11059200

    a w pliku makefile:

    MCU_TARGET = atmega128

    ale po zaladowaniu programu dioda nie mruga.
  • REKLAMA
  • #2 1386096
    Dexter77
    Poziom 28  
    Posty: 889
    Pomógł: 134
    Ocena: 19
    Jaka wersja WINAVR ?? Kompilator nie wyrzuca bledow ?? Fusebity w ATmedze przestawione na zewn. kwarc ??
    Pozdro
    Dexter
  • #3 1386106
    Dexu
    Poziom 13  
    Posty: 117
    Pomógł: 1
    Fusebitów nie ustawialem bo nie wiem jak :P
    WinAVR mam w wersji 2.0.5.32 i zadnych bledow nie zglasza.
  • #5 1386505
    Dexu
    Poziom 13  
    Posty: 117
    Pomógł: 1
    No i po problemie moj procek chyba umarl

    Przy probie zapisu lub odczytu czegokolwiek z procka w pony prog pojawia sie komunikat:
    Device missing or unknown device (-24)
    Uzywam programatora ISP
    Czy przycznya tego, ze moj procek teraz juz nie odpowiada moze byc zle ustawienie fusebitow ????

    A jak tak to co zrobic.
  • REKLAMA
  • Pomocny post
    #6 1386581
    Dexter77
    Poziom 28  
    Posty: 889
    Pomógł: 134
    Ocena: 19
    Moze byc. Pewnie ustawiles External clock. Co jest bledem ;) Teraz musisz podac jakis sygnal zegarowy na nozke XTAL1 zeby moc ponownie przestawic fusebity. Odlacz najpierw kwarc. Ten temat juz byl chyba z setke razy na forum. Szukaj.
    Pozdro
    Dexter
  • #7 1386637
    Dexu
    Poziom 13  
    Posty: 117
    Pomógł: 1
    Jaka czestotliwosc ma miec ten sygnal ????
  • REKLAMA
  • #8 1386676
    tajwoj
    Poziom 26  
    Posty: 559
    Pomógł: 106
    Ocena: 102
    Hej,
    Jakiego programatora ISP używasz? Jak ustawiałeś fusebity?
    Pozdrowienia
  • REKLAMA
  • #9 1386709
    Dexu
    Poziom 13  
    Posty: 117
    Pomógł: 1
    Programator zrobilem ZL2PRG, i nie mam pojecia jak sa teraz fusebity ustawione.
  • Pomocny post
    #10 1386784
    tajwoj
    Poziom 26  
    Posty: 559
    Pomógł: 106
    Ocena: 102
    Hej,
    Coś trudno się dopytać. Czy ustawiałeś PonyProgiem? Czy przed ustawianiem i zapisaniem bitów odczytałeś aktualne ustawienia korzystając z przycisku "Read"? Daj nam szansę żebyśmy mogli Ci pomóc. Czy sprawdziłeś połączenia programatora z PC i kontrolerem?
    Nawiasem mówiąc twój początkowy problem nie miał nic wspólnego z ustawieniem fusebitów. Sprawdziłem kod o którym mówisz, skompilowałem w postaci oryginalnej i załadowałem do AT90S8515 z kwarcem 6MHz i chodzi. Tylko dioda miga z większą częstotliwością. Po wpisaniu do kodu 6000000 wszystko chodzi jak sobie wymarzył autor programu.
    Mimo wszystko zajrzyj do linku który Ci podałem.
    Pozdrowienia
  • #11 1386804
    Dexu
    Poziom 13  
    Posty: 117
    Pomógł: 1
    Nie odczytalem nic nie wiem co jest zaprogamowane ale chyba zaladowalem wszystkie fusebity wyzerowane bo pomylilem read z write :P
  • #12 1387002
    tajwoj
    Poziom 26  
    Posty: 559
    Pomógł: 106
    Ocena: 102
    Hej,

    Jeśli zrobiłeś to w kolejności:
    "Command >> Security and Configuration Bits..."
    a następnie w okienku z bitami konfiguracyjnymi nacisnąłeś "Write", to masz procesor ustawiony na pracę z kwarcem i bity BOOTSZ0 i BOOTSZ1 zmienione z 0 na 1. Z tymi bitami nie miałem dotąd do czynienia ale obawiam się, że może być nieodzowny programator równoległy.
    Pozdrowienia
  • #14 1395861
    Dexu
    Poziom 13  
    Posty: 117
    Pomógł: 1
    Wielkie dzieki za pomoc.
    Generatorek dal rade :)

    Mam jeszcze pytanie:
    Jak sprawdzic jaka czestotliwoscia aktualnie taktowany jest procesor ??
  • #15 1395900
    tajwoj
    Poziom 26  
    Posty: 559
    Pomógł: 106
    Ocena: 102
    Hej,
    Według podanego na mojej stronie opisu odczytaj fusebity (najbezpieczniej korzystajac z uisp a nie Ponyproga). To co Cię interesuje to wartość Low Fuse Byte:
    0xe1 - wewnetrzny 1MHz (ustawienie fabryczne)
    0xe2 - wewnetrzny 2MHz
    0xe3 - wewnetrzny 4MHz
    0xe4 - wewnetrzny 8MHz.
    Częstotliwość jest opisana młodszym półbajtem czyli 1, 2, 3 lub 4.
    W lini poleceń mozesz napisac:
    uisp -dlpt=0x378 -dprog=stk200  --rd_fuses

    i Enter.
    Pozdrowienia
  • #16 1395968
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    :arrow: tajwoj :Rozumiem, że się napracowałeś przy tworzeniu swojej stronki i chwała Ci za to, ale żeby wspominać o niej w co drugiej wiadomości to lekka przesada... ;) Najskuteczniej udziela się porad, krojąc je na miarę pytającego, a nie narzucając odwiedziny strony...
    :arrow: Dexu : Najwięcej się dowiesz u źródła czyli z dokumentacji producenta - Atmela. Opis zegara jest w rozdziale "System Clock" a pozostałe Fuse- i Lock- bity w "Memory Programming".
    Ustaw wszystkie CKSEL... niezaprogramowane, a CKOPT zaprogramowany. Tyle, jeśli chodzi o kwarc zewnętrzny >8MHz. Możliwe, że bedzie trzeba jeszcze jakieś bity poprawić, ale nie mam ich przed oczyma.
    Jak coś nie jasne to przed użyciem krzyknąć... (Do nas) ;)
    Pozdrawiam, Light-I
  • #17 1396487
    Dexu
    Poziom 13  
    Posty: 117
    Pomógł: 1
    Ok dzieki za wszystko i pozdrawiam. Program dziala proc dziala i program tez. Tylko cos nie tak z ta funkcja delay bo nie mruga mi dioda z rownymi odstepami sekundowymi chociaz zmienilem:

    #define F_CPU 11059200

    Pozdrawiam
    Dex
  • #18 1398927
    Dexu
    Poziom 13  
    Posty: 117
    Pomógł: 1
    Jeszcze pytanie:
    Na ktory pin podaje sie impulsy dla licznika T0 w atmega128 ???
  • #19 1402003
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Masz pdf spod linku, który podałem wyżej? jest tam "pinout" z rysunkiem, jak obejrzysz to ci się objaśni... ;)
    Pozdrawiam, Daniel
  • #20 1402267
    Dexu
    Poziom 13  
    Posty: 117
    Pomógł: 1
    Mam ta dokumetacie i na tym rysunku nie ma T0 a w opisie tego Timera tez nie ma podanego pina.
  • #21 1402316
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Porównaj rysunki - Figure 34 s.90 (Timer0) i Figure 46 s.110 (Timer1) - Timer/Counter0 ma wejście Tx ? Ewentualnie może być napędzany z "kwarca zegarkowego" 32768 Hz.
    Masz za to T1 i T2 na otarcie łez... ;)
    Pozdrawiam, Light-I

Podsumowanie tematu

✨ Problem dotyczył braku migania diody w programie dla mikrokontrolera Atmega128 po zmianie definicji częstotliwości taktowania F_CPU na 11,0592 MHz w środowisku WinAVR. Użytkownik zmodyfikował tylko linię #define F_CPU oraz ustawił MCU_TARGET na atmega128 w pliku makefile, ale dioda nie migała. Wskazano, że prawdopodobną przyczyną jest nieprawidłowe ustawienie fusebitów, które nie zostały zmienione zgodnie z używanym zewnętrznym kwarcem 11,0592 MHz. Próba zapisu fusebitów bez odpowiedniej wiedzy spowodowała, że procesor przestał odpowiadać (błąd "Device missing" w PonyProg). Zalecano użycie zewnętrznego generatora sygnału zegarowego na nóżkę XTAL1, aby odzyskać kontrolę nad mikrokontrolerem i poprawnie ustawić fusebity. Podano linki do narzędzi i dokumentacji do bezpiecznego ustawiania fusebitów oraz wskazówki dotyczące odczytu aktualnych ustawień fusebitów za pomocą programatora ISP i narzędzia uisp. Omówiono także problem z funkcją delay, która nie działała prawidłowo po zmianie F_CPU, co wpływało na nieregularne miganie diody. Dodatkowo poruszono pytanie o pin wejściowy impulsów dla licznika Timer0 w Atmega128, wskazując na konieczność konsultacji dokumentacji i schematów mikrokontrolera.
Wygenerowane przez model językowy.
REKLAMA