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.
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.