Witam forumowiczów ...
Piszę dość zaawansowany program na Atmege64, większość rzeczy wykonywane jest w przerwaniach programowych i jest wszystko OK. Komunikację zrobiłem na RS485 i działa dobrze (protokół MODBUS RTU) ale mam problem z wysłaniem danych:
- jak wiadomo RS485 - więc na czas wysyłania muszę uruchomić nadajnik
- wysyłam dane
- po ostatnim znaku muszę przełączyć na odbieranie danych
1. Przy instrukcji PRINTBIN nie można określić kiedy został wysłany ostatni znak i trzeba by wyliczyć czas nadawania np 5 znaków i po tym czasie wyłączyć nadajnik - rozwiązanie nie jest doskonałe ale działa (wstrzymuje program)
2. Kolejne rozwiązanie:
i tu mam problem bo nie wiem jak to się dzieje, jak w pętli "For" wpiszę "1 to 5" to wysyła mi tylko 4 znaki od 1 do 4 z bufora Tx_buf(n) a jak "1 to 6" to 5 znaków - nie rozumiem jak to się dzieje, przy innym wykorzystaniu takiej samej pętli wszystko jest OK.
3. Kolejne przemyślenie jest takie żeby nadawać znak w przerwaniu. Przerwanie trzeba by uwarunkować od przejścia rejestru usr1,5 z "0 - bufor zajęty" na "1 - bufor wolny". Nie wiem jak to skonfigurować, może ktoś już wykonał podobny program i podpowie jak to zrobić ???
Pozdrawiam
Piszę dość zaawansowany program na Atmege64, większość rzeczy wykonywane jest w przerwaniach programowych i jest wszystko OK. Komunikację zrobiłem na RS485 i działa dobrze (protokół MODBUS RTU) ale mam problem z wysłaniem danych:
- jak wiadomo RS485 - więc na czas wysyłania muszę uruchomić nadajnik
- wysyłam dane
- po ostatnim znaku muszę przełączyć na odbieranie danych
1. Przy instrukcji PRINTBIN nie można określić kiedy został wysłany ostatni znak i trzeba by wyliczyć czas nadawania np 5 znaków i po tym czasie wyłączyć nadajnik - rozwiązanie nie jest doskonałe ale działa (wstrzymuje program)
2. Kolejne rozwiązanie:
Kod: text
i tu mam problem bo nie wiem jak to się dzieje, jak w pętli "For" wpiszę "1 to 5" to wysyła mi tylko 4 znaki od 1 do 4 z bufora Tx_buf(n) a jak "1 to 6" to 5 znaków - nie rozumiem jak to się dzieje, przy innym wykorzystaniu takiej samej pętli wszystko jest OK.
3. Kolejne przemyślenie jest takie żeby nadawać znak w przerwaniu. Przerwanie trzeba by uwarunkować od przejścia rejestru usr1,5 z "0 - bufor zajęty" na "1 - bufor wolny". Nie wiem jak to skonfigurować, może ktoś już wykonał podobny program i podpowie jak to zrobić ???
Pozdrawiam