Witam !
Niedawno zacząłem zabawę z mikrokontrolerami ze względu na zajęcia laboratoryjne na studiach. Jako jeden z zaliczających projektów wykładowcy dali nam zadanie aby stworzyć układ który:
Obsłuży serwo sg 90 - przy pomocy 2 przycisków na płytce oraz komend USART. Projekt ma zawierać 3 diody (użyłem 4 aby zobrazować restart programu), które pokażą gdy serwo wychyli się maksymalnie w lewo, jest położone centralnie bądź maksymalnie w prawo, przy naciśnięciu jednego klawisza nastąpi obrót w lewo, drugiego w prawo oraz dwóch jednocześnie spowoduje wyśrodkowanie serwo. W taki sam sposób ma być zrealizowane przy pomocy USART'a - przy wysłaniu L nastąpi obrót w lewo, P w prawo a C wycentruje serwo. Niedługo dodam lcd - ale to jeszcze nie jest problemem
Poniższe 2 kody przedstawią dwie sytuacje:
1. Obsługa tylko i wyłącznie przycisków na płytce bez inicjalizacji USART(działa tak jak należy - planuję dodać krokowe zwiększanie wartości obrotu, a przy podwójnym naciśnięciu przycisku wychył maksymalny):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
2. Nieudana obsługa płytki oraz USART jednocześnie(działa tylko USART):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pytałem się prowadzących na zajęciach i doradzili mi aby zastosować przerwania USART aby atmega "nie sprawdzała" ciągle czy coś jest wysyłane z USART'a tylko w przypadku przerwania a w funkcji main znajdowały się tylko przyciski - i tutaj jest największy problem gdyż nie mam pojęcia jak go zastosować. Próbowałem to zrealizować w sposób jak pokazany poniżej lecz niestety nie działa i nie mogę znaleźć rozwiązania problemu. W miarę możliwości prosiłbym o pomoc, a dodatkowo chciałbym zapytać czy jest inna możliwość realizacji przypadku 2 przycisków(wyśrodkowania serwo) - ponieważ nie zawsze uda się nacisnąć 2 przyciski jednocześnie co jest bardzo denerwujące.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Serdecznie Pozdrawiam
Michał K