Вод так не ругается.
Так правильно аль нет?
#define R24V 6 //
#define R48V 4 //
#define R96V 7 //
#define R192V 5 //
PORTA|=0<<R24V||1<<R24V||1<<R96V||0<<R192V;
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Да, я , понял спасибо. Но у меня таких проблем с полным кодом - разбираться и разбираться. Все дело в том что я сам пишу на ассемблере. Человек который мне писал программу на CVAVR умер. И мне теперь приходится разбираться с кодом и переносить его в AStudio т.к. CVAVR рабочего у меня нет. Вот такие проблемы.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Ну если человек знаком с ассемблером, то чем трактовать эти взбрыки разных версий компиляторов - не проще ли переписать на асм абсолютно четко прописанный алгоритм, т.е. поработать "живым компилятором" ?
Я переписал бы . Но меня пугает одно в этом коде, это обработка CRC16 для ModBus RTU. Я так и не нашел внятного объяснения как подсчитать CRC16 на ассемблере.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Если табличный метод не пугает (512 байт таблица), могу дать готовый вариант ( как раз делалось и работало на Modbus RTU ). По бестабличному методу когда-то давно пробовал, но что-то результаты отличались, видимо, неправильно понимал алгоритм. Если переписать с Си на асм, 512 "лишних" байт флеши, думаю, появятся.
СпойлерПредвижу возмущенный гул Сишников. Но что поделать - остаюсь при мнении, что писать для небольшого камня на Си - это пахать дачный участок однокорпусным плугом, прицепленным к трактору Беларус.
Последний раз редактировалось Jack_A Ср май 24, 2017 15:16:35, всего редактировалось 1 раз.
Jack_A писал(а): писать для небольшого камня на Си - это пахать дачный участок однокорпусным плугом, прицепленным к трактору Беларус
нееееее в этом есть особое удовольствие! когда на тини13 работает сишный код, например, "лампы настроения", аналоги которого в интернете все на меге8 сделаны - это ли не оргазменноть?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Добавлено after 1 minute 18 seconds:
Решился переписать код на ASM. Заодно и с кодом разберусь.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Jack_A Спасибо выручил все работает. С кодом разобрался.
Добавлено after 5 minutes 35 seconds:
Есть еще вопрос
Почему так все работает lds r16,rx_buffer
cp r16,r10
brne Error_ID
а, так нет lds r16,rx_buffer
lds r17,Modbus_ID
cp r16,r17
brne Error_ID
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Рецепт, как переползти с асма на си. Скачиваем книги по си. Читаем. Не понимаем, делаем паузу. Опять читаем. Что то начинаем понимать. Начинаем пробовать. Притом пробуем переносить наработки на асме. Так постепенно начнет получаться. Главное, отучиваться от наследия асма. Мы теперь оперируем "объектами". Но знание асма помогает понять что там компилятор накомпилировал. И миримся с тем, что на си выхлоп объемнее, чем на асме.
Вопрос, наверно, ко мне ? И что значит "не работает" ? Не компилируется? Или компилится, но работаeт не так?
В первом коде не знаю, что загружено в r10. Во втором: я так понимаю, дивайс принял пакет и хочет узнать - ему ли эта мессага адресована. В таком случае, он сравнивает со своим ID, который константа, потому должно д.быть:
Дело в том что в первом варианте я сравниваю полученный ID с сохраненным ID в r10, а, во втором я свой ID сохранил в RAM и пытаюсь сравнить. В первом все отлично, а во втором постоянный косяк.
Добавлено after 2 minutes 48 seconds:
[uquote="Demiurg",url="/forum/viewtopic.php?p=3118861#p3118861"]Рецепт, как переползти с асма на си.[/uquote]
Нет у меня желания переходить на С.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
RUNA писал(а):я сравниваю полученный ID с сохраненным ID в r10
Не понимаю. Если этот дивайс - слейв, то он имеет свой физический адрес - перемычками, DIP-переключателями или записью в EEPROM заданный. И куда его считывать для сравнения - в r10 или r17 - абсолютно безразлично. Телепатия мне подсказывает, что возможная причина косяка - портится r17 в прерывании из-за криво написанного обработчика. Иначе - влияние кометы Галея.
[uquote="Jack_A",url="/forum/viewtopic.php?p=3119967#p3119967"]Не понимаю. Если этот дивайс - слейв, то он имеет свой физический адрес - перемычками, DIP-переключателями или записью в EEPROM заданный. И куда его считывать для сравнения - в r10 или r17 - абсолютно безразлично. Телепатия мне подсказывает, что возможная причина косяка - портится r17 в прерывании из-за криво написанного обработчика. Иначе - влияние кометы Галея. [/uquote]
Видимо реально глюк. Надо попробовать в другой версии программы.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
COKPOWEHEU писал(а):
Эта команда сравнивает с константой, а та - с переменной, расположенной то тому адресу
Ясно дело. Но при первом подходе ID был бы прописан во флеш-памяти прграмм, что, конечно, было бы абсурдом - для каждого экземпляра прибора - свой экземпляр прошивки.
Я пробовал запретить прерывания-та же фигня. Пробовал указать в Z адрес и скидывать в R16. В общем все перепробовал. Работает только если при старте программы ID сохраняю в регистре общего назначения.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.