Mam do odebrania co ok. 2 sekundy do 20 bajtów danych. Długość ramki jest różna, określona w drugim bajcie wysyłanej ramki. Po odebraniu ramki trzeba wyliczyć sumę kontrolną, a następnie odczytać z niej pewne dane, na podstawie których uP ma podejmować dalsze działania.
Jak narazie zrobiłem odbiór jednego bajtu tak, że uP wykonuje jakieś zadanie w programie głównym i po odebraniu znaku przez USART generowane jest przerwanie, w którym to do określonego rejestru zapisuje odebrany bajt.
Doradźcie mi jak zrobić odbiór całych ramek, których długość jak już wspomniałem może być różna. Chodzi mi o to jak zapisywać i analizować te pakiety.
1. Czy wszystko co jest związane z całą ramką danych tj. odbiór bajtów, sprawdzanie ile już ich odebrano, liczenie sumy kontrolnej robić w przerwaniu?
2. Czy w przerwaniu zapisywać kolejne bajty ramki w pamięci SRAM np. od adresu 0X60 wykorzystując adresowanie z postinkrementacją?
3. Czy wprowadzić jakiś znacznik modyfikowany w przerwaniu, który będzie zezwalał na skorzystanie przez program główny z wcześniej zapisanych danych dopiero po odebraniu całej ramki?
Jak narazie zrobiłem odbiór jednego bajtu tak, że uP wykonuje jakieś zadanie w programie głównym i po odebraniu znaku przez USART generowane jest przerwanie, w którym to do określonego rejestru zapisuje odebrany bajt.
Doradźcie mi jak zrobić odbiór całych ramek, których długość jak już wspomniałem może być różna. Chodzi mi o to jak zapisywać i analizować te pakiety.
1. Czy wszystko co jest związane z całą ramką danych tj. odbiór bajtów, sprawdzanie ile już ich odebrano, liczenie sumy kontrolnej robić w przerwaniu?
2. Czy w przerwaniu zapisywać kolejne bajty ramki w pamięci SRAM np. od adresu 0X60 wykorzystując adresowanie z postinkrementacją?
3. Czy wprowadzić jakiś znacznik modyfikowany w przerwaniu, który będzie zezwalał na skorzystanie przez program główny z wcześniej zapisanych danych dopiero po odebraniu całej ramki?