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

Zmiana Atmega8 na Atmega 168

Robgie 20 Sty 2009 12:20 4828 19
  • #1 6026805
    Robgie
    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?
  • #2 6026903
    kasaidolar
    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 :) ??
  • #3 6027000
    Robgie
    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?
  • #4 6027081
    kasaidolar
    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?
  • #5 6027215
    Robgie
    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
  • #6 6027273
    kasaidolar
    Poziom 19  
    Czyli po pierwszej sekundzie na wyswietlaczu masz 17, po drugiej 34 itd?
  • #7 6027897
    Konto nie istnieje
    Poziom 1  
  • #9 6028196
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #11 6028400
    Konto nie istnieje
    Poziom 1  
  • #12 6029688
    Robgie
    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.
  • #13 6029778
    dawid512
    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.
  • #14 6029876
    Robgie
    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
  • #15 6029956
    dawid512
    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.
  • #16 6029997
    Robgie
    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.
  • #17 6030074
    dawid512
    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.
  • #18 6030123
    Robgie
    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
  • #19 6030151
    dawid512
    Poziom 32  
    No tak zapomniałem że w Bascomie trzeba dopisać &H żeby korzystać z zapisu szestanstkowego :P Inny język inne nawyki :)
  • #20 6030424
    Konto nie istnieje
    Poziom 1  
REKLAMA