Все чаще и чаще, мне вспоминается "классическая шутка" :
Ну и у меня "классический" вопрос:
"Как пропатчить Ардуину" на работу с регистрами?
Суть:
прижучило меня прототипировать устройство с "хитрым" и самое главное "быстрым" протоколом на UART.
В наличии есть ардуина 2560, мне пофиг, сам главное чтобы монотонно циферки отправляло, и я доволен :)
Яж "дурак", яж с криками "ща заардуиню"... наардуинил...
Громоздкость кода ардуино - дает неудовлетворительный результат.
монотонности потока данных - не получается. Байтик либо задержится, либо вообще "потеряется" с кодом EOF.
Ок.
1)Переезжаем в AS7/MicrochipStudio.
1.1. Как же классно писать в IDE "нормального программиста"
2) Вспоминаем "как там регистрами рулить" на С/С++
компилим, шьем... 5 секунд... полет нормальный...
7 секунд полет норм...
8я секунда...
Суть:
0. чистый проект AS7 C/C++, язык "быдло Сиплюс" на диалекте Си.
1. рулю UART0, через регистры, на 230400
2. Декларирую ISR' s" UDRE и TXE.
задача: отправить массив uint8_t указанной длинны.
пусть будет...
uint8_t Word[32] = {`H`...}; //"Hello world\n\0"
есть функция запуска процесса...
есть обработчик UDRE, с доступом через указатель к массиву, и приватному uint8 счетчику позиции и длинны.
есть обработчик TXC, обнуляющий счетчики.
по значениям счетчика запуск отслеживается.
а в железе это работает так:
Hello world
Hello world
Hello world
(спустя 7 секунд)
HeHeHeHeHeHeHeHeHe....
причем на осциллографе, я реально вижу, что каждый символ
начинает ходить с паузой в 1мс.
все мозги сломал... в чем прикол?
как пропатчить ардуину на прерывания?
(без рейтинга)
UPP: извиняюсь за "косноязычие в комментах".... по буквам "мажу"... сенсорный экран, он такой сенсорный...