Dzień Dobry
Mam pewien problem chcę przenieść sobie obsługę wyświetlacza LCD z avr na stm i pojawiły się problemy związane z napięciem zasilania i realizacją opóźnień. Chciałbym najpierw zapytać o realizację opóźnień. Mam dwie funkcje na bazie systicka, ale pewne rzeczy mnie zastanawiają. Pokażę kod:
1. Najpierw milisekundy
Niby to działa, na analizatorze jest zmiana stanu co sekundę przy takim wywołaniu:
ale... mam wrażenie dziwne a mianowicie po wgraniu programu zawsze muszę nacisnąć przycisk reset na płytce nucleo żeby program zadziałał i tutaj po naciśnięciu resetu występuję dziwne opóźnienie powodujące oczekiwanie 2 może 3 sekund na to aż stan diody zacznie się zmieniać. Mam wrażenie jednorazowego "dodatkowego" opóźnienia. Zawsze po naciśnięciu tego resetu program działa praktycznie w momencie naciśnięcia tego klawisza a tutaj trzeba odczekać chwilę aż to zadziała i budzi to moje zastanowienie..... Czy taki stan rzeczy może powodować złe działanie tego opóźnienia?
2.mikrosekundy
Funkcja w zasadzie analogiczna:
Przy takim wywołaniu:
Tutaj również pojawia się "dodatkowe" opóźnienie ale jest też inny problem dodatkowo a mianowicie zmiana stanu powinna nastąpić po 1 sekundzie a następuje po 1.3 sekundy. Cały czas jest rozbieżność o 0.3 i nie wiem dlaczego tak się dzieje.
3. Być może źle podchodzę do realizacji tych opóźnień, może mógłbym zrobić to inaczej w odniesieniu do LCD. Mógłbym liczyć na radę jak podejść do realizacji tych opóźnień?
Mam pewien problem chcę przenieść sobie obsługę wyświetlacza LCD z avr na stm i pojawiły się problemy związane z napięciem zasilania i realizacją opóźnień. Chciałbym najpierw zapytać o realizację opóźnień. Mam dwie funkcje na bazie systicka, ale pewne rzeczy mnie zastanawiają. Pokażę kod:
1. Najpierw milisekundy
Kod: C / C++
Niby to działa, na analizatorze jest zmiana stanu co sekundę przy takim wywołaniu:
Kod: C / C++
ale... mam wrażenie dziwne a mianowicie po wgraniu programu zawsze muszę nacisnąć przycisk reset na płytce nucleo żeby program zadziałał i tutaj po naciśnięciu resetu występuję dziwne opóźnienie powodujące oczekiwanie 2 może 3 sekund na to aż stan diody zacznie się zmieniać. Mam wrażenie jednorazowego "dodatkowego" opóźnienia. Zawsze po naciśnięciu tego resetu program działa praktycznie w momencie naciśnięcia tego klawisza a tutaj trzeba odczekać chwilę aż to zadziała i budzi to moje zastanowienie..... Czy taki stan rzeczy może powodować złe działanie tego opóźnienia?
2.mikrosekundy
Funkcja w zasadzie analogiczna:
Kod: C / C++
Przy takim wywołaniu:
Kod: C / C++
Tutaj również pojawia się "dodatkowe" opóźnienie ale jest też inny problem dodatkowo a mianowicie zmiana stanu powinna nastąpić po 1 sekundzie a następuje po 1.3 sekundy. Cały czas jest rozbieżność o 0.3 i nie wiem dlaczego tak się dzieje.
3. Być może źle podchodzę do realizacji tych opóźnień, może mógłbym zrobić to inaczej w odniesieniu do LCD. Mógłbym liczyć na radę jak podejść do realizacji tych opóźnień?