No to jeden problem z głowy
Co do reszty stworzyłem taką pętlę która na początku programu "skanuje" magistralę RS485 w poszukiwaniu ilości podłączonych odbiorników (Innych Atmeg) i kolejno zapisuje ich adresy (wartości od 1 do 16) do tablicy slave_adres.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Zastanawiam się czy to dobre rozwiązanie, żeby sprawdzać odpowiedzi odbiorników (odbierać dane z UART) w funkcji
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
a nie w programie głównym. Robiąc to w ten sposób chciałem, żeby funkcja zwracała mi już gotową odebraną wartość. dane wysyłane są w postaci:
[Adres|action|command/data|\r\n]
Adres - liczba od 1 do 16
action - rozkaz w postaci znaku 'r'-czytaj dane z odbiornika, 'w' - zapisz dane do odbiornika
command/data - jest to ciąg dwóch znaków ( "pp"- czytaj adres, "pt" - odczyt temperatury, ) lub wartość wypełnienia PWM (od 1000 do 3000);
\r\n - znaki końca danych
zastanawiałem się nad zrobieniem sumy kontrolnej, ale najpierw chciałem uporać się z tymi problemami.
Kolejne wywołania wyglądają w ten sposób, ale jak wyświetlę sobie temp_slave i PWM_slave na wyświetlaczu, to wartości zamieniają się miejscami, czyli w miejscu temp raz jest temp, a raz wartość PWM i na odwrót, więc stąd moje wątpliwości co do poprawnego działania.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.