A więc zrobiłem tak.
Zrobiłem drugi testowy projekt. W pętli while(1) nie ma nic, poza rysowaniem paska i zmiana stanu dwóch diod LED. na lcd. W sumie są trzy Timery programowe.
Jeden przełącza diodę nr1 co sekundę (^=) dla sprawdzenia, czy Timer jest ok. Drugi Timer steruje "spowalniaczem" i przełącza diodę nr2 z nim powiązaną. Trzeci
Timer czyści lcd co jakiś czas. Obsługa pomiaru adc typowa, bez byków, jak w książce:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Obsługa lcd "zwykła bez buforowania".
Timery działają prawidłowo. Zmniejszyłem podstawę czasu do 1ms. Wówczas dioda mruga równo co 1s przy Timer1=1000;
Działanie się nie zmieniło. Czy to na "tamtej" wersji, czy na tej. Poza tym, że działa lepiej (podstawa 1ms). Na 10ms jest identycznie. Myślę, ze nic nie blokuje.
Ale zauważyłem jeden mankament. Jeśli w funkcji rysowania
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
/55 zamienię na np.5 lub 1, to wówczas wszystko jest oka. Prędkości opadania, jakie sobie życzę. Niestety rysowanie paska nie nadaje się do programu, gdyż tą
wartością reguluję sobie jego długość i tu modyfikacji nie mogę zrobić. Wydaje mi się, że klapa i nic tu za bardzo nie wymyślę.
Najprościej mógłbym ładować kondensatorek elektrolityczny (odpowiednia dobrana R C) na wejściu pinu adc i osiągnąłbym cel, ale chciałem to robić z poziomu programu.
Co by tu jeszcze wykombinować ???