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

Atmega1280 - wolne działanie

pan_telegraf 20 Lis 2011 00:40 1275 4
REKLAMA
  • #1 10159039
    pan_telegraf
    Poziom 9  
    Witam
    Na wstępie się przywitam - na imię mam Piotr, jestem sobą początkującą w kwestii programowanie mikrokontrolerów AVR - przez ostatni rok "bawiłem" się w różne układy na m32 - pisząc soft w bascomie.
    Przesiadłem się kilka dni temu na procesor m1280 - i tu mam kilka problemów, których źródła nie potrafię zdiagnozować.
    Przede wszystkim - po wgraniu nieco zmodyfikowanego orgyginalmego bascomowego bootloadera - zauważyłem że procesor pracuje bardzo wolno..
    widzę to po odświeżaniu ekranu LCD - pętla wykonuje się dużo wolniej niż na m32.
    Na tyle wolno że nie mogę podjąć transmisji przez port COM(choć przed zablokowaniem procesora(xle ustawione fusebity - pierwsza linijka byla odhaszowana) - COM spokojnie śmigał. Aplikacja na komputerze wysyła określony ciąg znaków - procesor nie odpowiada...
    Teraz dostał jakiegoś "muła"(jest to nowy procesor) - jakby zmieniło się wewnętrzne taktowanie...
    Oto ten bootloader:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Podczas programowania ustawiam
    hfuse= 0xD8
    lfuse = 0x62
    Extended = 0xFF

    Czy watchdog powinien być włączony?(WDTON)?
    Będę bardzo zobowiązany za pomoc - już brakuje mi pomysłów... :(

    pozd

    Piotr
  • REKLAMA
  • #2 10159165
    kriss68
    Poziom 20  
    Sam na początku pisałeś o złych fusach. Procesor masz ustawiony na wewnętrzne 8MHz albo na kwarc (o ile jest podpięty)? Jeśli masz ustawioną inną wartość to efektem będzie wolniejsze działanie (albo szybsze). W bascomie jest przecież ładna graficzna konfiguracja fusebitów więc z niej skorzystaj. Do wstawiania kodu używamy znacznika syntax więc popraw swój post.
  • REKLAMA
  • #3 10159508
    pan_telegraf
    Poziom 9  
    Witam
    Już poprawiłem, przepraszam - nie zauważyłem tej opcji wcześniej..
    Jeśli chodzi o fusy - używam AVR PROG Opto - nie korzystam z programatora wbudowanego w Bascoma.
    Nie korzystam również z zewnętrznego kwarcu - ma pracować na wewnętrznym oscylatorze 8Mhz.

    Piotr
  • REKLAMA
  • Pomocny post
    #4 10159759
    Mundi1970
    Poziom 24  
    Zainteresuj się bitem CKDIV8 (Divide clock by 8) w Fuse Low Byte. Obecnie Divide clock by 8 jest włączone i ATmega pracuje z taktowaniem 1Mhz. (Datasheet strona 337)
  • #5 10159907
    pan_telegraf
    Poziom 9  
    Ok - przyczynę znalazłem - wyłączenie fuse CKDIV8 pomogło - jest nawet transmisja.
    Jednak nie mam pojęcia czemu po wgraniu bootloadera - jak probuje wyslac główny program - to transmisja kończy się - następnie procesor ponownie uruchamia bootloader - a nie program główny.

    Dodano po 2 [minuty]:

    Mundi - dzięki, właśnie już do tego doszedłem - aż wstyd że wcześniej nie rzuciło mi się to w oczy... :(
    W zasadzie teraz wszystko działa - procesor śmiga, loader chodzi - jednak mam problem jak wyżej..

    Próbowałem też ustawić bootflashsize na $f800 w kodzie powyżej - i po ustawieniu BOOTSZ(na2048) i BOOTRST - włączony - nadal nie przechodzi do programu głównego..
REKLAMA