Например TDA7294

Форум РадиоКот • Просмотр темы - ATtiny25 и встроенный термодатчик
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 16:05:51

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


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



Начать новую тему Ответить на тему  [ Сообщений: 37 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 16:17:50 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
Вы написали, что копируете ADC сразу в регистры X Y Z, а речь шла о

Да так и есть, ты просто не понял о чём идёт речь. :) Я пишу одну строку в программе (что и подтверждает скрин), а действия компилятора могут быть какими угодно… :wink: это так же как производить запись двухбайтной переменной SRAM в двухбайтный регистр Y. Запись в программе имеет одну строку, а реальное выполнение 4 слова.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 16:47:32 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Понял, но в следующий раз уточняйте. Мы в теме "Ассемблер".


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 18:26:37 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
Дык и я про ассемблер только графический - Algorithm Builder. :))


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 18:29:28 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Дык и я про ассемблер только графический - Algorithm Builder. :))

Не совсем так. Это компилятор. Кстати, как у пользователя буилдера спрошу: возможно ли в нем реализовать конечный автомат. И как.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 18:35:06 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
Не совсем так. Это компилятор.

Точнее среда... http://algrom.net/russian.html
Demiurg писал(а):
возможно ли в нем реализовать конечный автомат. И как.

Что это такое "конечный автомат"? Я не понял о чём речь. :)


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 18:50:18 
Это не хвост, это антенна

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

Спойлер
Код:
.cseg

//==================
.macro Proc_FSM
   ldz      @0*2
   rjmp   _Proc_FSM
.endmacro

_Proc_FSM:
   lpm      XH, Z+ ; Считывание старшего байта адреса параметров автомата.
   lpm      XL, Z+ ; Считывание младшего байта адреса параметров автомата.
   ld      r16, X ; Считывание состояния автомата. Индекс таблицы.
   lpm      r17, Z+ ; Считывание количества состояний автомата.
   cp      r16, r17
   brsh   Process_Errors_FSM
   lpm      XH, Z+ ; Начало таблицы адресов.
   lpm      XL, Z ; Начало таблицы адресов.
   movw   ZH:ZL, XH:XL
   add      ZL, r16 ; Смещение по индексу-состоянию автомата.
   adc      ZH, RCLR
   shiftlwz
   lpm      r17, Z+ ; Считывание адреса по индексу.
   lpm      r16, Z
   movw   ZH:ZL, r17:r16
   ijmp
Process_Errors_FSM:
   cli
   adiw   ZL, 2
   lpm      r16, Z
   rjmp   Proc_Errors
//==================

//==================
Set_FSM_State:
   st         Y, FSM_STATE
   ret
//==================

//==================
//Proc_FSM_Exit:
//   st         Y, FSM_FLAGS
//   std         Y+1, FSM_STATE
//   ret
//==================

//==================
Proc_Heater_Save_Val:
   std      Y+DISP_PROC_HEAT, FSM_STATE
   std      Y+DISP_PROC_HEAT_FLAGS, FSM_FLAGS
   ret
//==================

//==================
Proc_Heater:
   pushiwl      Proc_Heater_Save_Val ; Смещение стека на Proc_Heater_Save_Val, после выхода из подпрограммы будет выход из конечного автомата.

   ldy         _PROC_HEAT
   ldd         FSM_STATE, Y+DISP_PROC_HEAT
   ldd         FSM_FLAGS, Y+DISP_PROC_HEAT_FLAGS

Proc_FSM_Heater:
   Proc_FSM      Table_FSM_Proc_Heat

//----------
Proc_Heat_Init_1: // Инициализация портов ввода-вывода.
   cbi         RED_LED_PORT, RED_LED
   sbi         RED_LED_DDR, RED_LED

   cbi         GREEN_LED_PORT, GREEN_LED
   sbi         GREEN_LED_DDR, GREEN_LED

   cbi         PLUG_PORT, PLUG
   sbi         PLUG_DDR, PLUG
   Set_Timer   Par_Timer_Proc_Heat_Init
   Set_State   _PROC_HEAT_INIT_2
   ret

//==================
Table_FSM_Proc_Heat:
.db      tab_h(_PROC_HEAT), MAX_PROC_HEAT_STATES,tab_h(Table_Jmp_Proc_Heat), ERR_ID_PROC_HEAT

Table_Jmp_Proc_Heat:
.equ   MAX_PROC_HEAT_STATES            = 18

.equ   _PROC_HEAT_INIT_1               = 0
.db      tab_h(Proc_Heat_Init_1)

.equ   _PROC_HEAT_INIT_2               = 1
.db      tab_h(Proc_Heat_Init_2)

.equ   _PROC_HEAT_WAIT_ON               = 2
.db      tab_h(Empty_Action)

.equ   _PROC_HEAT_BLOW_1               = 3
.db      tab_h(Proc_Heat_Blow_1)

.equ   _PROC_HEAT_SET_WAIT_FIRE_SENS      = 4
.db      tab_h(Proc_Heat_Set_Wait_Fire_Sens)

.equ   _PROC_HEAT_WAIT_FIRE_SENS         = 5
.db      tab_h(Proc_Heat_Wait_Fire_Sens)

.equ   _PROC_HEAT_WAIT_FIRE_SENS_DONE      = 6
.db      tab_h(Empty_Action)

.equ   _PROC_HEAT_WORK                  = 7
.db      tab_h(Empty_Action)

.equ   _PROC_HEAT_BLOW_2               = 8
.db      tab_h(Proc_Heat_Blow_2)

.equ   _PROC_HEAT_WAIT_FIRE_SENS_COLD      = 9
.db      tab_h(Proc_Heat_Wait_Fire_Sens_Cold)

.equ   _PROC_HEAT_WAIT_FAN_OFF            = 10
.db      tab_h(Proc_Heat_Wait_Fan_Off)

.equ   _PROC_EMERG_LOW_VOLT_SENS_1               = 11
.db      tab_h(Empty_Action)

.equ   _PROC_EMERG_FIRE_SENS_1                  = 12
.db      tab_h(Empty_Action)

.equ   _PROC_EMERG_OVERHEAT_SENS_1               = 13
.db      tab_h(Empty_Action)

.equ   _PROC_EMERG_FIRE_LOW_VOLT_SENS_1         = 14
.db      tab_h(Empty_Action)

.equ   _PROC_EMERG_OVERHEAT_LOW_VOLT_SENS_1      = 15
.db      tab_h(Empty_Action)

.equ   _PROC_EMERG_OVERHEAT_FIRE_SENS_1         = 16
.db      tab_h(Empty_Action)

.equ   _PROC_EMERG_OVERHEAT_FIRE_LOW_VOLT_SENS_1   = 17
.db      tab_h(Empty_Action)
//==================


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 19:14:57 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
Если камень AVR (tiny, mega) способен это сделать, то в среде Algorithm Builder можно написать любой алгоритм для этого камня.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 19:22:55 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Если камень AVR способен это сделать, то в среде Algorithm Builder можно написать любой алгоритм для этого камня.

Плиз, пример конечного автомата. Есть два способа: таблица адресов подпрограмм - обработчиков состояний. Пример я показал выше. Или так называемый switch-case.
Код:
.macro   Read_State
   lds      r16,@0
.endmacro

.macro   Case
   cpi      r16,@0
   brlo   Case_Exit // Макрос именно такой, потому что диапазон breq +- 64 байта.
   rjmp   @1
Case_Exit:
.endmacro

Read_State

case 0, FUNC_1
case 1, FUNC_2

FUNC_1:
ret

FUNC_2:
ret


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 19:33:21 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
Хочешь, чтобы я воспроизвёл это в АВ? Если так, то мне нужно будет время для разобраться в данном коде… так как я не программист и классический ассемблер плохо знаю. :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 19:44:27 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Вам в коде и не нужно разбираться. Есть переменная состояние. В зависимости от значения делаются телодвижения. Не важно какие. Главное, что если ноль, то делается одно, если 1, то другое. И так далее.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 20:20:19 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
Главное, что если ноль, то делается одно, если 1, то другое. И так далее.

Ну если не разбираться то вот...
Темр - это переменная в SRAM: если туда записать "0" - выполнится подпрограмма Func_1, если записать "1" - выполнится подпрограмма Func_2.
Вложение:
1.png [4.29 KiB]
Скачиваний: 256


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 20:22:16 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Ух ты! А свитч кейс не могли бы развернуть?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 20:31:34 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
Или такой вариант: константа задаётся в скобках к макрасу… где в скобках указан (0) – выполнится условие Func_1, где в скобках указан (1) – выполнится условие Func_2.
Вложение:
2.png [4.57 KiB]
Скачиваний: 284


Добавлено after 3 minutes 57 seconds:
А свитч кейс не могли бы развернуть?

Я не программист… «если эти слова ругательные, прошу ко мне не применять» (С) :))) Объясни на пальцах свою хотелку… :oops:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 21:44:23 
Опытный кот
Аватар пользователя

Карма: 10
Рейтинг сообщений: 112
Зарегистрирован: Пт ноя 30, 2007 14:40:44
Сообщений: 714
Рейтинг сообщения: 0
А по теме, можно ещё 1 вопрос? Спасибо. :) Как я понимаю, в tiny25 удешевлённый ADC хоть и может фактическое "1024", но шагает через 1. Т. е. имеем "зернистость 512". Но как бы не совсем суть. Предусмотрено ли там забратие °Целься как-нибудь ровненько, по 1 или по 2°C. Без перемножения ADC на дробное?
(А то в тексте, стр. 133 даташита "Temperature Measurement" - написано, что вроде как 1 LSB на °C, а по таблице ниже, в положительную сторону 0,85°C, а ADC перескакивет через 1. Вот и пойми в чём правда).


Последний раз редактировалось Серый_ Пт янв 19, 2018 09:11:13, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 22:03:38 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 1
Цитата:
The measured voltage has a linear relationship to the temperature as described in Table 17-2 The sensitivity is approximately 1 LSB / °C and the accuracy depends on the method of user calibration. Typically, the measurement accuracy after a single temperature calibration is ±10°C, assuming calibration at room temperature. Better accuracies are achieved by using two temperature points for calibration.

Написано, что чувствительность составляет приблизительно 1 LSB / °C... :) данные датчики не для точности измерений температуры. :)

К тому же пишут, что таблица 17-2 не есть панацея… от камня к камню значения разнятся… и чтобы иметь более точные значения необходимо калибровать показания по нескольким точкам применяя формулу для корректировки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Чт янв 18, 2018 23:45:37 
Опытный кот
Аватар пользователя

Карма: 10
Рейтинг сообщений: 112
Зарегистрирован: Пт ноя 30, 2007 14:40:44
Сообщений: 714
Рейтинг сообщения: 0
"Кароч, я всё зделал около того, что - правильно!" 0,85x2x3=5,1 где тройка взята за 5°C, и в общем-то работает (для вкл/выкл вентилятора достаточно). Но ради спортивного - надо поананировать..., что в их формуле предлагается делать с ADCH: [(ADCH << 8) | ADCL] Что это, сдвиг-умножение или левость результата?

P. s. посовав схему вместе с градусником на паяльник, выплыло, что значение 1-ца на °C более правдивое. Но... из-за шага ADC х2 = шкалу лучше делать через 6, а не через 5. (34-40-46-52 °C).


Последний раз редактировалось Серый_ Пт янв 19, 2018 15:04:17, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATtiny25 и встроенный термодатчик
СообщениеДобавлено: Сб янв 20, 2018 06:26:50 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
это для С, указывает (при раздельном чтении) что байт ADCH надо на 8 бит сдвинуть влево (умножить на 256) чтобы он попал в Н байт двухбайтной переменной.

Добавлено after 2 minutes 32 seconds:
в ассемблере ADCL и ADCH просто читай в соседние регистры, их пара и будет равна 16 битному ADC

Добавлено after 43 minutes 57 seconds:
А свитч кейс не могли бы развернуть?
легко разворачивается и хранение массива констант во флеш (например для знакогенератора), а если константы заменить на переходы по меткам - будет свитч кейс. (только отдельно нужно проверить диапазон, иначе можно куданибудь вылететь)

Добавлено after 34 minutes 14 seconds:
Т.е. я вижу вариант реализации свитч кейс 2мя способами 1-перебором условий, 2-через массив адресов переходов, оба способа реализуемы в АБ, первый стабильнее (безопаснее), второй быстрее.

Добавлено after 6 hours 23 minutes 32 seconds:
Тут ваял в АБ свич разветвитель и понадобилось константу (адрес начала массива переходов) в Z записать, так вот, чтобы это заработало нужно или в опциях проекта (вкладка компилятор) пункт: Интерпретация #->Z выбрать нижний вариант, или выделить строку как макрооператор (кнопка F2) (выделится жирным шрифтом).

Добавлено after 4 minutes 30 seconds:
если понадобится во флеш запилить массивы данных их надо пометить квадратиком (Shift+F3) или спереди приписать db:

Добавлено after 6 hours 30 minutes 41 second:
1й вариант можно макросами облагородить, как сделаю - выложу оба варианта.

Добавлено after 2 minutes 20 seconds:
правда для этого с макросами АБ разобраться надо :)

Добавлено after 1 hour 51 minute 48 seconds:
ну вот и разобрался: слева 1 метод, справа 2й, посредине - общее - запуск и подпрограммы (пустые)

Добавлено after 8 hours 54 minutes 23 seconds:
второй метод тоже макросом сделал.
метки переходов не обязательно вершины, могут быть и просто метки внутри кода

Добавлено after 47 minutes 13 seconds:
провел замеры по времени: кол-во тактов от номера вызванного кейса (0,1,2,3,4,5,DEF) метод1(5,7,9,11,13,15,16), метод2(14,14,14,14,14,14,14)
по флешу: метод1 - 1 слово для свитча и по 2 на каждый кейс; метод2 - 10 слов свитч, 1 кейс.
вывод: метод1 компактнее до 9 кейсов и быстрее до 6, "плюс" второму - за стабильность времени исполнения.


Вложения:
switch-case.gif [10.83 KiB]
Скачиваний: 191

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 37 ]    , 2

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


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

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


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

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


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