Например TDA7294

Форум РадиоКот • Просмотр темы - Помогите, не понимаю Switch case
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 23:18:05

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 44 ]    , 2,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Вт май 23, 2017 22:09:19 
Прорезались зубы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Ср дек 31, 2008 01:55:19
Сообщений: 227
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Вод так не ругается.
Так правильно аль нет?
#define R24V 6 //
#define R48V 4 //
#define R96V 7 //
#define R192V 5 //

PORTA|=0<<R24V||1<<R24V||1<<R96V||0<<R192V;

_________________
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Вт май 23, 2017 22:36:54 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Код:
#define OUT_PORT    PORTA
#define R24V        6 //
#define R48V        4 //
#define R96V        7 //
#define R192V       5 //

const unsigned char     out_mask[4]={
    (0<<R24V) | (1<<R48V) | (1<<R96V) | (0<<R192V),  // R24V=0; R48V=1; R96V=1; R192V=0;
    (1<<R24V) | (1<<R48V) | (1<<R96V) | (0<<R192V),  // R24V=1; R48V=1; R96V=1; R192V=0;
    (1<<R24V) | (0<<R48V) | (1<<R96V) | (0<<R192V),  // R24V=1; R48V=0; R96V=1; R192V=0;
    (1<<R24V) | (0<<R48V) | (1<<R96V) | (1<<R192V),  // R24V=1; R48V=1; R96V=1; R192V=1;
};


void __init(void)
{

OUT_PORT&=~((1<<R24V) | (1<<R48V) | (1<<R96V) | (1<<R192V));
OUT_PORT|=out_mask[(PINC>>2)&0x03];

}



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Вт май 23, 2017 23:36:12 
Прорезались зубы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Ср дек 31, 2008 01:55:19
Сообщений: 227
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Я, что то начал понимать. Спасибо.

_________________
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Ср май 24, 2017 00:03:09 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Я Вам дал готовое решение, вместо портянки из switch-case'ов.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Ср май 24, 2017 00:15:35 
Прорезались зубы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Ср дек 31, 2008 01:55:19
Сообщений: 227
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Да, я , понял спасибо. Но у меня таких проблем с полным кодом - разбираться и разбираться. Все дело в том что я сам пишу на ассемблере. Человек который мне писал программу на CVAVR умер. И мне теперь приходится разбираться с кодом и переносить его в AStudio т.к. CVAVR рабочего у меня нет. Вот такие проблемы.

_________________
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Ср май 24, 2017 10:01:38 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 0
Ну если человек знаком с ассемблером, то чем трактовать эти взбрыки разных версий компиляторов - не проще ли переписать на асм абсолютно четко прописанный алгоритм, т.е. поработать "живым компилятором" ?

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Ср май 24, 2017 10:07:08 
Прорезались зубы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Ср дек 31, 2008 01:55:19
Сообщений: 227
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Я переписал бы . Но меня пугает одно в этом коде, это обработка CRC16 для ModBus RTU. Я так и не нашел внятного объяснения как подсчитать CRC16 на ассемблере.

_________________
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Ср май 24, 2017 15:00:21 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 0
Если табличный метод не пугает (512 байт таблица), могу дать готовый вариант ( как раз делалось и работало на Modbus RTU ). По бестабличному методу когда-то давно пробовал, но что-то результаты отличались, видимо, неправильно понимал алгоритм. Если переписать с Си на асм, 512 "лишних" байт флеши, думаю, появятся.
СпойлерПредвижу возмущенный гул Сишников. Но что поделать - остаюсь при мнении, что писать для небольшого камня на Си - это пахать дачный участок однокорпусным плугом, прицепленным к трактору Беларус.

_________________
Изображение


Последний раз редактировалось Jack_A Ср май 24, 2017 15:16:35, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Ср май 24, 2017 15:04:10 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 3
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Jack_A писал(а):
писать для небольшого камня на Си - это пахать дачный участок однокорпусным плугом, прицепленным к трактору Беларус
нееееее :))) в этом есть особое удовольствие! когда на тини13 работает сишный код, например, "лампы настроения", аналоги которого в интернете все на меге8 сделаны - это ли не оргазменноть? :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Ср май 24, 2017 18:49:28 
Прорезались зубы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Ср дек 31, 2008 01:55:19
Сообщений: 227
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Jack_A если не жаль скиньте на msv0712(гав)ya.ru

Добавлено after 1 minute 18 seconds:
Решился переписать код на ASM. Заодно и с кодом разберусь.

_________________
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Сб май 27, 2017 08:22:24 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 0
Отправил на мейл.

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Пт июн 02, 2017 16:17:30 
Прорезались зубы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Ср дек 31, 2008 01:55:19
Сообщений: 227
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
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

_________________
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Сб июн 03, 2017 03:08:31 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Рецепт, как переползти с асма на си. Скачиваем книги по си. Читаем. Не понимаем, делаем паузу. Опять читаем. Что то начинаем понимать. Начинаем пробовать. Притом пробуем переносить наработки на асме. Так постепенно начнет получаться. Главное, отучиваться от наследия асма. Мы теперь оперируем "объектами". Но знание асма помогает понять что там компилятор накомпилировал. И миримся с тем, что на си выхлоп объемнее, чем на асме.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Сб июн 03, 2017 13:52:38 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 0
RUNA писал(а):

Почему так все работает
Код:
lds r16,rx_buffer

.......

Вопрос, наверно, ко мне ? И что значит "не работает" ? Не компилируется? Или компилится, но работаeт не так?
В первом коде не знаю, что загружено в r10. Во втором: я так понимаю, дивайс принял пакет и хочет узнать - ему ли эта мессага адресована. В таком случае, он сравнивает со своим ID, который константа, потому должно д.быть:
Код:
ldi r17,Modbus_ID

или еще проще - вместо последних двух - одна команда :
Код:
cpi r16,Modbus_ID

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Вс июн 04, 2017 23:03:06 
Прорезались зубы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Ср дек 31, 2008 01:55:19
Сообщений: 227
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Дело в том что в первом варианте я сравниваю полученный ID с сохраненным ID в r10, а, во втором я свой ID сохранил в RAM и пытаюсь сравнить. В первом все отлично, а во втором постоянный косяк.

Добавлено after 2 minutes 48 seconds:
Рецепт, как переползти с асма на си.

Нет у меня желания переходить на С.

_________________
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Пн июн 05, 2017 09:39:27 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 0
RUNA писал(а):
я сравниваю полученный ID с сохраненным ID в r10

Не понимаю. Если этот дивайс - слейв, то он имеет свой физический адрес - перемычками, DIP-переключателями или записью в EEPROM заданный. И куда его считывать для сравнения - в r10 или r17 - абсолютно безразлично. Телепатия мне подсказывает, что возможная причина косяка - портится r17 в прерывании из-за криво написанного обработчика. Иначе - влияние кометы Галея. :(

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Пн июн 05, 2017 13:06:25 
Прорезались зубы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Ср дек 31, 2008 01:55:19
Сообщений: 227
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Не понимаю. Если этот дивайс - слейв, то он имеет свой физический адрес - перемычками, DIP-переключателями или записью в EEPROM заданный. И куда его считывать для сравнения - в r10 или r17 - абсолютно безразлично. Телепатия мне подсказывает, что возможная причина косяка - портится r17 в прерывании из-за криво написанного обработчика. Иначе - влияние кометы Галея. :(


Видимо реально глюк. Надо попробовать в другой версии программы.

_________________
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Пн июн 05, 2017 16:10:24 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
или еще проще - вместо последних двух - одна команда :
Код:
cpi r16,Modbus_ID

Эта команда сравнивает с константой, а та - с переменной, расположенной то тому адресу.
Jack_A писал(а):
Телепатия мне подсказывает, что возможная причина косяка - портится r17 в прерывании из-за криво написанного обработчика.
Вот это вероятная причина. Используются ли прерывания? Где идет запись в r10 в первом варианте кода?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Пн июн 05, 2017 20:34:32 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5598
Откуда: Minsk
Рейтинг сообщения: 0
COKPOWEHEU писал(а):
Эта команда сравнивает с константой, а та - с переменной, расположенной то тому адресу

Ясно дело. Но при первом подходе ID был бы прописан во флеш-памяти прграмм, что, конечно, было бы абсурдом - для каждого экземпляра прибора - свой экземпляр прошивки. :(

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите, не понимаю Switch case
СообщениеДобавлено: Пн июн 05, 2017 23:01:30 
Прорезались зубы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Ср дек 31, 2008 01:55:19
Сообщений: 227
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Я пробовал запретить прерывания-та же фигня. Пробовал указать в Z адрес и скидывать в R16. В общем все перепробовал. Работает только если при старте программы ID сохраняю в регистре общего назначения.

_________________
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 44 ]    , 2,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y