Przepisałem kod z książki tmf'a, ze strony 231 dotyczący wyświetlania multipleksowego.
Z początku miałem kłopot ze skompilowaniem przykładu w ATMEL STUDIO bo kompilator sygnalizował błąd
Rozumiem to w ten sposób, że zmienne DIGITS jako, ze zostaną zapisane w sekcji tylko do odczytu muszą być typu const. W przykładzie zmienna jest zadeklarowana jako static. Dopisałem więc modyfikator const do deklaracji zmiennej co rozwiązało problem kompilacji
Po moich kosmetycznych modyfikacjach program wygląda tak:
a za zadanie ma on wyświetlanie cyfr od 0 do 9.
Wszystko grało i nie pisałbym o tym, gdyby nie jeden błąd który zdarzyło mi się popełnić.
Wydawało mi się, że sterowanie kropką polega na modyfikacji zmiennej DP jednak jest ona zadeklarowana jako const, więc usunąłem ten modyfikator i wpisałem wcześniej binarny adres kropki na moim porcie i próbowałem modyfikować zmienną DP. Szybko zauważyłem że nie o to chodzi i wróciłem do oryginalnego programu, który zamieściłem powyżej.
Po skompilowaniu od tej pory zauważyłem, że przy wyświetlaniu cyfr wyświetlacze wskazują kolejno
0,
8!!!!!!
2,
3,
4,
5,
6,
7,
8,
9,
Z początku myślałem, że skoro tablica znajduje się w pamięci FLASH to są to jakieś pozostałości po próbach, ale wyzerowanie (ff) flasha i ponowne wgranie programu nie dało efektu. Nijak adres "CF" pod którym znajduje się moja jedynka nie będzie ósemką.
1. Czy ktoś wie czy ten błąd to wina kompilatora, czy jeszcze czegoś innego?
2. Jak w końcu sterować tą kropką?
Z początku miałem kłopot ze skompilowaniem przykładu w ATMEL STUDIO bo kompilator sygnalizował błąd
Cytat:Error 1 variable 'DIGITS' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
Rozumiem to w ten sposób, że zmienne DIGITS jako, ze zostaną zapisane w sekcji tylko do odczytu muszą być typu const. W przykładzie zmienna jest zadeklarowana jako static. Dopisałem więc modyfikator const do deklaracji zmiennej co rozwiązało problem kompilacji
Po moich kosmetycznych modyfikacjach program wygląda tak:
Kod: C / C++
a za zadanie ma on wyświetlanie cyfr od 0 do 9.
Wszystko grało i nie pisałbym o tym, gdyby nie jeden błąd który zdarzyło mi się popełnić.
Wydawało mi się, że sterowanie kropką polega na modyfikacji zmiennej DP jednak jest ona zadeklarowana jako const, więc usunąłem ten modyfikator i wpisałem wcześniej binarny adres kropki na moim porcie i próbowałem modyfikować zmienną DP. Szybko zauważyłem że nie o to chodzi i wróciłem do oryginalnego programu, który zamieściłem powyżej.
Po skompilowaniu od tej pory zauważyłem, że przy wyświetlaniu cyfr wyświetlacze wskazują kolejno
0,
8!!!!!!
2,
3,
4,
5,
6,
7,
8,
9,
Z początku myślałem, że skoro tablica znajduje się w pamięci FLASH to są to jakieś pozostałości po próbach, ale wyzerowanie (ff) flasha i ponowne wgranie programu nie dało efektu. Nijak adres "CF" pod którym znajduje się moja jedynka nie będzie ósemką.
1. Czy ktoś wie czy ten błąd to wina kompilatora, czy jeszcze czegoś innego?
2. Jak w końcu sterować tą kropką?
