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

Zmiana Atmega8 na Atmega 168

20 Sty 2009 12:20 4468 19
  • Poziom 27  
    Witam
    Napisałem program z obsługa lcd 3310 , no i troszkę miejsca sie zaczęło mało robić więc zmieniłem procek z mega8 na 168 no i program ruszył ale...

    cały program chodzi za wolno (fusebity wydaje mi się ze zmieniałem poprawnie) grafika wczytuje mi się wolniej (widzę jak się rysuje) w atmedze8 tak nie było waity tez są za długie.

    miałem zrobione na 8 stoper z przepełnienia timer2 no i działał ok a teraz pokazuje mi po 17 sekund.
    czym się różnią timery w tych układach?
    czytałem datasheety i albo tam nie ma tych info albo niestety niedostatecznie rozumie angielski/działanie uC bo jakoś jak na razie nie doszedłem dlaczego tak się dzieje.

    czy atmega8 jest w pełni kompatybilna z 168?
  • Poziom 19  
    Hej. Masz ustawione zle fusy lub zle ustawiles kwarc w programie. Jak masz fusy ustawione? Jaki miales wczesniej kwarc?

    Dodano po 2 [minuty]:

    A ten program rozumiem troche przerobiles na to druga mege. Nie wgrales tylko hexa do innego porcka :) ??
  • Poziom 27  
    No nie mam w tej chwili przy sobie atmegi zeby sprawdzic jak mam ustawione.

    ustawione mam ptak rocek chodzi na wewnętrznym a stoper itp na zegarkowym 32768 zewnetrzmym

    Config Timer2 = Timer , Prescale = 256 , Async = On

    zmieniłem
    $regfile = "m8def.dat"
    na
    $regfile = "m168def.dat"

    cos jeszcze powinienem?
  • Poziom 19  
    A pamietasz wartość wewnetrznego oscylatora z jakim smigal procesor?

    Dodano po 3 [minuty]:

    Cytat:
    miałem zrobione na 8 stoper z przepełnienia timer2 no i działał ok a teraz pokazuje mi po 17 sekund.
    a kiedys po jakim czasie cos Ci pokazywal po 1s?

    Dodano po 8 [minuty]:

    Z tego co mi sie wydaje to w atmegach 8 mozna wybrac wewnetrzny kwarc 8 4 2 i 1 MHz w atmegach 168 mozna wybrac 8MHz (domyslny) i 128kHz. Napisz jake miales wartości oscylatorów a jakie wydaje Ci sie że masz teraz

    Podejrzewam ze masz zle ustawione fusy bo tu tez jest mala różnica dla tych 8MHz w medze8 masz CKSEL3...0 na 0100 a w atmedze169 CKSEL3...0 na 0010 - sprawdzales to jak masz?
  • Poziom 27  
    8 chodziła ma na 4 mHz . no a stoper działal tak ze

    On Ovf2 1sek
    Load Timer2 128

    co dawało mi przerwanie co 1 sek i zliczało sekundy
    no i wyświetlało normalny stoper . a teraz sekundy mi leca po 17 tzn 17, 34 itp co dziwne wyświetla mi to w odstępach około sekundowych.

    czyżby w tym procu inaczej sie konfigurowało timer2 z zewnetrznym kwarcem?


    to musze wieczorkiem looknać bo własnie tu też moze byc problem z tym 4 i 8 mhz
  • Poziom 19  
    Czyli po pierwszej sekundzie na wyswietlaczu masz 17, po drugiej 34 itd?
  • Poziom 43  
    Freddie Chopin napisał:
    atom1477 nie ma za to datasheeta od atmegi 8

    4\/3!!


    A Ty za to go masz ale jak wielu początkujących do niego nie zagladacz.
    To Cię muszę bardzo zaskoczyć bo ja go też mam i bardzo często z niego korzystam.
    ATMEGA8:
    Zmiana Atmega8 na Atmega 168

    ATMEGA88:
    Zmiana Atmega8 na Atmega 168

    Zmiana Atmega8 na Atmega 168


    Ja nie mówię o preskalerze używanym podczas wyboru wewnętrznej częstotliwości 1,2,4,8MHz, ale o dodatkowym dzielniku przez 8 (Można ustawić inne wartości podziału, ale FuseBit ustawia 8 ).

    Dodano po 17 [minuty]:

    Gdybym nie miał datasheeta to ATMEGi8 to nie zrobił bym sobie avataru. Ewentualnie był by on czarny, bo w innych datasheetach to logo jest czarne (może w nowszych nie ale w tych co mam tak).
  • Specjalista - Mikrokontrolery
    no i ok, ja mowilem o dodatkowym podziale czestotliwosci na 2, 4 i 8 (domyslnie 8).

    no i czas sciagnac nowe wersje, bo we wszystkich jakie mam logo jest niebieskie

    4\/3!!
  • Pomocny post
    Poziom 43  
    Freddie Chopin napisał:
    no i ok, ja mowilem o dodatkowym podziale czestotliwosci na 2, 4 i 8 (domyslnie 8 ).

    no i czas sciagnac nowe wersje, bo we wszystkich jakie mam logo jest niebieskie

    4\/3!!


    No własnie. Domyslnie jest 8. Ustwiasz 8MHz, a to chodzi na 1MHz. I zdziwka. Ja też kiedyś miałem z tym problemy.
    A jak kolega Robgie programuje? Z BASCOMa?

    Freddie Chopin napisał:
    no i ok, ja mowilem o dodatkowym podziale czestotliwosci na 2, 4 i 8 (domyslnie 8 )

    A gdzie o tym mówiłeś? To Twoja pierwsza wypowiedz w tym temacie chyba.

    Dodano po 47 [sekundy]:

    A z logami to nie do końca tak. Już mam wiele gdzie logo jest niebieskie. Może nawet wszystkie. Ale gdy robiłem avatar to tylko ten z ATMEGA8 takie miał.
  • Poziom 27  
    Dzieki Atom1477 miałeś racje chodziło o fusebit divide clock by 8. Teraz waity odliczają sie poprawnie .program tez chodzi ok. tylko te przerwania które miały być co sekundę sa teraz wyzwalane według oscylatora wewnętrznego a chce zeby były jak w 8 z kwarcu 32768

    czy
    Config Timer2 = Timer , Prescale = 256 , Async = On

    jest nieprawidłowa konfiguracją w przypadku 168?

    tak w bascomie.
  • Poziom 32  
    Jeżeli chcesz aby przerwanie było wywołane co sekundę to preskaler musisz ustawić na 128 oraz podłączyć kwarc zegarowy do nóżek TOSC1 i 2.
  • Poziom 27  
    prescale 256 miałem dlatego że najpierw używałem timer0 a później zmieniłem na 2 a nie zwróciłem uwagi że timer2 ma prescale =128. a ja to robiłem ładując do niego 128 wiec i tak liczył poprawnie. Ale w atmega8 , w 168 nie działa mi zewnętrzny kwarc który oczywiście jest podłączony
  • Poziom 32  
    Cytat:
    w 168 nie działa mi zewnętrzny kwarc który oczywiście jest podłączony


    Z racji tego że w tym uc końcówki TOSC1 i 2 pokrywają się z XTAL1 i 2 to musisz ustawić fuse bity na wew. oscylator a do wspomnianych wcześniej nóżek podłączyć kwarc zegarkowy.
  • Poziom 27  
    No tak .Ja tak własnie mam i miałem.tzn miałem tak na 8 i mam dokładnie tak samo na 168, tylko ze tam działało a tu nie. Z tego co widze problem jest chyba w tym ze w przypadku 8 kompilator sam mi ustawial rejestr assr i bity exclk i as2 a w tym 168 tego nie robi. tylko jak na razie z racji mojej niklej wiedzy musze dojść jak to zrobić ręcznie.
  • Poziom 32  
    Cytat:
    If the Internal Calibrated RC Oscillator is used as chip clock source, PB7..6 is used as
    TOSC2..1 input for the Asynchronous Timer/Counter2 if the AS2 bit in ASSR is set.


    Więc coś takiego powinno pomóc ASSR = AS2.
  • Poziom 27  
    Nie pomogło. Ale juz zrobiłem
    prawidłowo wyglada to tak

    ASSR = &H20

    albo tak

    ASSR=&B00100000

    czyli EXCLK=0 a AS2=1

    okazało sie po "walkach" kolegow wyżej o logo , że miałem datasheet ten maly ktory ma ok 22 strony a nie pełny w którym jest to opisane.
    dzieki wszystkim za pomoc
  • Poziom 32  
    No tak zapomniałem że w Bascomie trzeba dopisać &H żeby korzystać z zapisu szestanstkowego :P Inny język inne nawyki :)
  • Poziom 43  
    Robgie napisał:
    Z tego co widze problem jest chyba w tym ze w przypadku 8 kompilator sam mi ustawial rejestr assr i bity exclk i as2 a w tym 168 tego nie robi. tylko jak na razie z racji mojej niklej wiedzy musze dojść jak to zrobić ręcznie.


    Widzę że problem już rozwiązany, ale dodam że dokładnie tak jest.
    U mnie w BASCOMie nie działa konfiguracja Timerów, Przerwań INT0, INT1 i jeszcze kilka rzeczy dla ATMEGA88, ATMEGA128, ATMEGA16.
    A dla ATMEGA8 działa. Winny jest oczywiście BASCOM.