' napisał(a):Ps. Wersja z vTaskDelay(1) początkowo dochodzi do 100x/s potem spada i stabilizuje sie na 55x/s
RTOS+AVR = stabilność Window$ firmy Mikro$oft.
Walcz z AVR, jak masz zdrowie. Jak już stwierdzisz, że nie ma to sensu sięgniesz po ARM, gdzie takich cudów jak opisujesz nie ma. AVR-GCC jest kiepki, czego nie można powiedzieć o GCC na inne uC.:
- argument w sprintf, scanf itp nie jest ograniczony do 16-bit int lecz do 32-bit.
- przesuwane bitu (w lewo) nie jest ograniczone do 16 bitów.
- odkładanie na stos w przerwaniu rejestrów, które czasem nie sa używane (R0, R1, RAMPZ).
- W AVR nie ma typu double, ma taki sam zakres jak float. I tak dobrze, ze w którejś tam wersji, typ lolg long ma 64-bity a nie jeak wcześniej 32- tak samo jak long.
Jak już coś poważniejszego zrobisz, to zauważysz, że na uC z DMA (np Xmega, które niestety z reguły jest droższa od ARM a nadal wolna i 8-bit) wydajność znacznie wzrasta.
Spróbuj na AVRmega obsłużyć kilka długich (po 1000) gałęzi LED WS2812 odświeżanych co30ms, LCD o dużej rozdzielczości bez akceleratora graficznego odświażanie ok 390ms, dekodować DMX i rejestrować dane z portu 8-bit kilka Mega próbek na sekundę. Nie ma szans aby to zadziałało równocześnie, każda z tych operacji osobno tak, razem NIE! To samo na Xmega, z DMA zadziała!
Może chcesz używać RTOS do migania ledami, wtedy będzie ok (ale do tego nie trzeba RTOS), choć jak zauważyłeś po pewnym czasie coś się sypie.
Pożyjemy, zobaczymy. Prędzej czy później sięgniesz po ARM, bo nie będziesz miał wyjścia, a ja nie przejdę na AVR.