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

Niejasności w dokumentacji rejestru MCUCR dla Atmega8 - różne układy bitów

ziajek444 06 Sty 2018 12:28 780 5
REKLAMA
  • #1 16939869
    ziajek444
    Poziom 9  
    Witam, piszę program na atmedze 8, w c. Potrzebuję używać stanu uśpienia. Doczytałęm sie w dokumentacji że odpowiedzialnym rejestrem za takie rozkazy jest MCUCR. Zacząłem sobie przeglądać ten rejestr, ale podejrzane mi się wydało że jego pola (bity) są ulokowane w środku. zacząłem wgłębiać się w dokumentację i znalazłem jeszcze jeden taki rejestr o tej samej nazwie, tylko z inaczej ułożonymi bitami i w ogóle innymi bitami. Z ciekawości sprawdziłem też rozpiskę rejestrów. Jednak moje poszukiwania poprawnego rejestru okazały się jeszcze bardziej zagadkowe. Ostatecznie w poszukiwaniu odpowiedzi zajrzałem do biblioteki mikrokontrolera zobaczyć jak tam są przypisane adresy i nazwy tych bitów do rejestru MCUCR. Tam się okazało że wszystko jest opisane jeszcze inaczej.
    Będę się oczywiście sugerował tym co mam w bibliotece:

    #define MCUCR _SFR_IO8(0x35)
    #define ISC00 0
    #define ISC01 1
    #define ISC10 2
    #define ISC11 3
    #define SM0 4
    #define SM1 5
    #define SE 6
    #define SM2 7

    Jednakże załączam też zdjęcia z mojej dokumentacji z wspomnianmi wyżej rejestrami abyście sami ocenili. Czy to jest błąd w dokumentacji czy specjalny zabieg. Może się gdzieś te rejestry przełącza, ale dlaczego wtedy w bibliotece są one statycznie przypisane? No jestem ciekaw czemu tak jest.
  • REKLAMA
  • Pomocny post
    #2 16939922
    kamyczek
    Poziom 38  
    Wszystkie dokumentacje dotyczą tego samego mikrokontrolera jest atmega 8 i atmega 8A i atmega 8L W niektórych wersjach są różnice czasem niewielkie ,ale czasem znaczące dlatego mikrokontrolery dostały różne oznaczenia literowe a, pa ,pb .Sprawdzaj którego mikrokontrolera używasz i do niego ściągnij dokumentację .
  • REKLAMA
  • #3 16940040
    ziajek444
    Poziom 9  
    Faktycznie w różnych dokumentacjach, ten rejestr jest różnie prezentowany, jednak zawsze opisywany w 2 miejscach. Ciekawy jest natomiast sposób dobory biblioteki w Eclipse. Po twoim poście, zacząłem sie przyglądać, do jakich bibliotek się bezpośrednio odnosi mój projekt. Ku mojemu zdziwieniu. Dla atmegi 8, dobiera bibliotekę sugerującą atmegę 16, a jak raz przełączyłem na atmegę8a żeby zobaczyć różnicę w zapisie kolejności bitów w rejestrze (wspomnianym wyżej). to już nie mogłem cofnąć zmiany. Zaiste, intrygujące to jest. Musze gdzieś na necie poszukać jak powinienem zatem wejść w tryb uśpienia dla mojego procka.

    P.S. Miałeś rację co do dokumentacji, korzystałem z doka dla atmega8a.
  • REKLAMA
  • Pomocny post
    #4 16941191
    kamyczek
    Poziom 38  
    Bardzo dużo osób nie zwraca uwagi na to czy mikrokontroler ma na końcu oznaczenia literkę A , PA , PB . W większości przypadków programy działają na pierwszy rzut oka normalnie , różnice i poprawki bywają nawet w seriach układów bo producent poprawia jakieś . Ja sugerował bym w twoim przypadku skorzystać z nowszego układu ATMEGA 88 PA lub PB. Poza tym ważny jest zakup układu że sprawdzonego źródła bo niestety atmega 8 jest klonowana przez Chińczyków i można trafić na układy które z fabryką Atmela mają wspólną tylko nazwę . Więc jak tam nie działają niektóre niestandardowe prędkości uarta to funkcja sleep działa pewnie tylko w snach ...
  • REKLAMA
  • Pomocny post
    #5 16945234
    Konto nie istnieje
    Poziom 1  
  • #6 16949299
    ziajek444
    Poziom 9  
    dziękuję wszystkim za poświęcony czas. Zamykam temat.
REKLAMA