Wpis z mikrobloga

#programowanie #jezykc
Muszę napisać sobie program do przesyłu dość sporej ilości danych między komputem i #avr używając portu szeregowego.
Strona obsługi na mikrokontrolerze wykonana i przetestowana za pomocą Br@y terminal + prosty skrypt w pascalu.

Teraz pytanie najważniejsze: Jest jakiś sposób, by wykonać podobny mechanizm typu wektor/przerwanie, czy pozostaje mi odpytywanie portu za pomocą ReadFile? Nigdy wcześniej nie rzeźbiłem nic na Windows, więc pewnie będę musiał trochę jeszcze poczytać.

Potrzebny mi jakiś kod w c, na który mógłbym spojrzeć; ewentualnie jakaś referencja jak coś takiego oprogramować.

Niby coś znalazłem tylko jak to ugryźć, by działało tak, jak ja chcę?
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@a231: Raczej skłaniam się na konsolę wingrozy, choć pewnie spróbuję potem kod przeportować na konsolę linux.

@Wiktor426: Właśnie przejrzałem jak to wygląda.

@ly000: Czyli pozostaje pisanie procedur nieblokujących, tak to mam rozumieć?
  • Odpowiedz
@Mirazh: Po stronie kompa organizujesz wysyłane dane w paczki po np. 32 bajty (plus może bajt sumy kontrolnej), wysyłasz to, w avr odbierasz, możesz stosować przerwania skoro i tak wiesz, że odbierzesz 32 bajty i po odebraniu 32 bajtów możesz zwrócić do kompa jakiś bajt kontrolny. Wtedy komp wyśle kolejną paczkę.
Ale avry mają uart full duplex więc nic nie stoi na przeszkodzie zrobić echo (z atmegi nadajesz to co
  • Odpowiedz
@Analityk: Na procku mam wszystko zorganizowane.
Tak w skrócie wysyłam adres, ilość danych w paczce, dane, suma kontrolna crc; procek zwraca znaki sterujące + crc, jak nie, to milczy i jest ponawiana transmisja po czasie ~1s.
W druga stronę transmisja identyczna.
Bufory po 256 bajtów na tx i rx.
Przerwanie w procku mam tylko na RX, gdzie odczytuję
  • Odpowiedz
Tak w skrócie wysyłam adres, ilość danych w paczce, dane, suma kontrolna crc; procek zwraca znaki sterujące + crc, jak nie, to milczy i jest ponawiana transmisja po czasie ~1s.


@Mirazh: Brawo, właśnie odkryłeś protokół XMODEM ( ͡° ͜ʖ ͡°)
  • Odpowiedz