Witam,
Przedstawiam poniżej program (kompilator AVRGCC+AVRStudio5), który przygotowałem jako testowy, jest to fragment większego projektu. Jego zadanie polega na odczycie kilku parametrów z pamięci EEPROM, sprawdzenie czy jest w określonym zakresie, jeśli nie jest to wprowadza wartość domyślną i zapisuje z powrotem do pamięci EEPROM. Program działa prawidłowo jeśli zmienne znajdują się w pamięci RAM.
Problem w poprawności działania pojawia się wówczas gdy będę chciał umieścić "zmienne" Param_def, Param_min oraz Param_max w pamięci Flash. Poniżej kod programu. Różnica pomiędzy tymi programami polega na dodaniu słowa PROGMEM przy deklaracji "zmiennych" Param_def, Param_min i Param_max. W jaki sposób należy użyć parametrów przy wywołaniu funkcji Spr_param aby wskaźniki były ustawione na pamięć Flash, a nie na pamięć RAM. Próbowałem różnych konstrukcji i nie osiągnąłem właściwego rezultatu. Funkcja zawsze odwoływała się do pamięci RAM.
pozdrawiam
Sławek
Przedstawiam poniżej program (kompilator AVRGCC+AVRStudio5), który przygotowałem jako testowy, jest to fragment większego projektu. Jego zadanie polega na odczycie kilku parametrów z pamięci EEPROM, sprawdzenie czy jest w określonym zakresie, jeśli nie jest to wprowadza wartość domyślną i zapisuje z powrotem do pamięci EEPROM. Program działa prawidłowo jeśli zmienne znajdują się w pamięci RAM.
Kod: C / C++
Problem w poprawności działania pojawia się wówczas gdy będę chciał umieścić "zmienne" Param_def, Param_min oraz Param_max w pamięci Flash. Poniżej kod programu. Różnica pomiędzy tymi programami polega na dodaniu słowa PROGMEM przy deklaracji "zmiennych" Param_def, Param_min i Param_max. W jaki sposób należy użyć parametrów przy wywołaniu funkcji Spr_param aby wskaźniki były ustawione na pamięć Flash, a nie na pamięć RAM. Próbowałem różnych konstrukcji i nie osiągnąłem właściwego rezultatu. Funkcja zawsze odwoływała się do pamięci RAM.
Kod: C / C++
pozdrawiam
Sławek
