Snaky (24.08.2009 15:28, просмотров: 160) ответил Lonsik на Ну да согласен так более корректно. Спасибо.
остаточная кривизна предложенного метода в следующем: 1. не предусмотрена проверка данных (контрольная сумма пакета, хотя бы).
2. если переменные разных типов и они занимают разное количество байт в памяти, то надо усложнять
3. самое главное - программа "наверху" не должна ничего знать о каких-либо переменных в контроллере вообще. контроллер достаточно умен чтобы сам смог разобраться с адресами у себя внутри, надо ему только показать что надо делать (указателями).
т.е. программировать надо, грубо говоря, послойно:
- нижний слой - физический прием\отсылка данных, работа с UART;
- средний слой - декодирование принятого пакета, проверка контрольных сумм, разбор параметров;
- верхний слой - передача параметров в функции верхнего уровня, которым они нужны, вызов этих функций итд.
тогда работоспособность вашего кода не будет зависеть от прихотей линкера, а также он будет переносимым и намного проще в чтении и отладке. в английском языке это называется "лазанья-код", а когда с верхнего уровня сразу прыгаем на нижний попутно декодируя на среднем - это "спагетти-код".
DRC придумали трусы