Wpis z mikrobloga

Eloszka koledzy, pomóżcie mi w rozkminianiu jednej rzeczy.

Czy to co wysyłam do uc w którym chodzi poniższy kod musi trafic w punkt '1'? Chodzi o to że jesli np wyśle coś z innego urządzenia, a mój uc bedzie wykonywał '2' to moja wiadomość przepada?
Jak to jest we wszystkich popularnych platformach #arduino #esp8266 #esp32 #avr #stm32 #mikrokontrolery #elektronika

pseudokod:

for(;;){

uartRead(); //1

czasochłonnaOperacja();//2

}
  • 8
@Luk_1mex: bufor wejściowy usart zazwyczaj ma pojemność ograniczoną do jednego bajta.
Jak coś przyjdzie to siedzi w tym buforze i generuje przerwanie.
Tutaj dalej zadanie programisty żeby wziąć to z tego bufora i przenieść np. do większego bufora z którego program sobie coś dalej czyta.

Bardzo użyteczne jest korzystanie z DMA. Transfery dzieję się samoczynnie i kiedy otrzymamy pełną ramkę danych np. 1024bajty to dostajemy info że nowa ramka jest gotowa
@Luk_1mex: Tak, jak Ci pisze @Tymian: - wszystko zależy jak jest zaprojektowany UART na danym sprzęcie. W AVRach masz jednobajtowy rejestr UDR - w nim pojawia się odebrany znak, i też w momencie odebrania danej można odpalić przerwanie i zbierać w przerwaniu kolejne bajty do bufora. Jak skończysz swoje długie zadanie możesz odczytać co się tam nazbierało.

Procki Atmel SAM(takie większe atmegi) miały już DMA i podawało się adres w