Hej,
Mikrokontroler: EFM8BB10F8G, czyli taki 8051 "na sterydach"
Język programowania: C
Kompilator: Keil 8051 v9.53
Taki problem: Tworzę zmienne, przypisuję im jakieś wartości. Po pewnym czasie wartości zmiennych ulegają zmianie pomimo tego, że nie wykonuję na nich operacji.
Przypuszczenia:
Mapa pamięci RAM mikrokontrolera wygląda następująco:
W trakcie debugowania zaobserwowałem, że zmienne są alokowane w pamięci od adresu 0x00, czyli niby w porządku. Tyle tylko, że pierwsze 32 bajty RAMu są używane jako rejestry ogólnego przeznaczenia (4 banki rejestrów R0-R7)
Podczas wykonywania innych fragmentów kodu kompilator bez zahamowań korzysta właśnie z tych rejestrów i nadpisuje zmienne...
Jak sobie z tym poradzić?
Mikrokontroler: EFM8BB10F8G, czyli taki 8051 "na sterydach"
Język programowania: C
Kompilator: Keil 8051 v9.53
Taki problem: Tworzę zmienne, przypisuję im jakieś wartości. Po pewnym czasie wartości zmiennych ulegają zmianie pomimo tego, że nie wykonuję na nich operacji.
Przypuszczenia:
Mapa pamięci RAM mikrokontrolera wygląda następująco:
W trakcie debugowania zaobserwowałem, że zmienne są alokowane w pamięci od adresu 0x00, czyli niby w porządku. Tyle tylko, że pierwsze 32 bajty RAMu są używane jako rejestry ogólnego przeznaczenia (4 banki rejestrów R0-R7)
Podczas wykonywania innych fragmentów kodu kompilator bez zahamowań korzysta właśnie z tych rejestrów i nadpisuje zmienne...
Jak sobie z tym poradzić?
