DS18b20 мороз с разрешением 0,1 градуса
-
Zelenyj111
- Родился
- Сообщения: 13
- Зарегистрирован: Пт янв 05, 2024 13:43:29
Re: DS18b20 мороз с разрешением 0,1 градуса
Спутал с полудуплексным UART. Извиняюсь. Таки да, TIM+DMA или, в виду очень низкой скорости передачи, можно с прерываниям по таймеру и ногодрыгом.
- Starichok51
- Модератор
- Сообщения: 19039
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: DS18b20 мороз с разрешением 0,1 градуса
я на ассемблере без таймера, только ногодрыгом с хорошей точностью выдерживаю все тайминги. даже, я бы сказал, с высокой точностью.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
- linux_rulezz
- Вымогатель припоя
- Сообщения: 589
- Зарегистрирован: Пн сен 15, 2025 08:43:23
- Откуда: Маленький СССР посреди шариатской республики
Re: DS18b20 мороз с разрешением 0,1 градуса
Zelenyj111, ногодрыг - это же жутко некошерно! Особенно с прерываниями…
Windows must die!
- Starichok51
- Модератор
- Сообщения: 19039
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: DS18b20 мороз с разрешением 0,1 градуса
linux_rulezz, а что ты предложишь для АТмеги вместо ногодрыга?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: DS18b20 мороз с разрешением 0,1 градуса
на ATmega DS18B20 может работать через UART. "APP 244 Using a UART to Implement a 1-Wire Bus Master"
- linux_rulezz
- Вымогатель припоя
- Сообщения: 589
- Зарегистрирован: Пн сен 15, 2025 08:43:23
- Откуда: Маленький СССР посреди шариатской республики
Re: DS18b20 мороз с разрешением 0,1 градуса
[uquote="Starichok51",url="/forum/viewtopic.php?p=4778122#p4778122"]linux_rulezz, а что ты предложишь для АТмеги вместо ногодрыга?[/uquote]
Для атмеги предложу STM32 ☺
Зачем мучить себя убогими дорогими микроконтроллерами, когда есть хорошие дешевые?
Для атмеги предложу STM32 ☺
Зачем мучить себя убогими дорогими микроконтроллерами, когда есть хорошие дешевые?
Windows must die!
-
Zelenyj111
- Родился
- Сообщения: 13
- Зарегистрирован: Пт янв 05, 2024 13:43:29
Re: DS18b20 мороз с разрешением 0,1 градуса
STM32 не дорог.
Всеми любимый Чипдип:
* STM32F401RBT6, Микроконтроллер, 32-Бит, Cortex-M4, 84МГц, 128Кб Flash, 64Кб SRAM, 50 I/O [LQFP-64_10x10.] — 260 руб
* STM32F103C8T6, Микроконтроллер 32-Бит, Cortex-M3, 72МГц, 64КБ Flash, USB, CAN [LQFP-48.] — 160 руб
* STM32G030K6T6, Микроконтроллер ARM Cortex-M0+, 32-бит, 64МГц, 32К Flash, 8К RAM, 29 I/O [LQFP-32.] — 95 руб
* STM32F030F4P6TR, Микроконтроллер 32-Бит, Cortex-M0, 48МГц, 16КБ Flash [TSSOP-20.] — 80 руб
Сравниваем:
* ATMEGA168PB-AU, Микроконтроллер AVR, 8-Бит, 20МГц, 16КБ Flash, 27 I/O [TQFP-32] — 260 руб
* ATTINY1616-MNR, Микроконтроллер tinyAVR, 8-Бит, 20МГц, 16КБ Flash, 18 I/O [VQFN-20] — 90 руб
Можно найти цены раза в 1.5 ниже: https://www.chipfind.ru/search/
16 кбит/с можно и ногодрыгом, достаточно 2 прерывания на бит на передачу и 3 на прием.
Конечно, если есть свободный таймер и дма, можно передачу и через ШИМ сделать, но это будет уже две ноги — для приема нужен захват на том же таймере. Если все таки одна нога, но таки нужно прерывание, переводить ногу на прием, читать и потом снова на передачу, плюс внешняя подтяжка. Ногодрыг тут банально проще в реализации. Потом нужно согласование уровней, защита линии, в общем, обвеса не мало, иначе рискуем контроллером.
Еще можно через SPI: скорость около 66667 бит/с, каждые 4 бита кодируют 1 бит протокола (1000 — единица, 1110 — ноль), передаем инверсные данные 1NN01NN0, MOSI управляет транзистором, MISO принимает (xNxxxNxx), SCK не нужен.
Можно ли использовать UART для этого? Почему бы и нет. TX инвертирован и управляет транзистором, RX на шину, так же 4 бита в 1, 83333 бит/с 8N1, передаем инверсные данные NNN10NNN, принимаем прямые данные NxxxNxxx.
Если не хочется мучиться, есть микросхема драйвера 1-wire с i2c управлением. Чипдип хочет 260 руб. Тут вижу за 156 руб: https://www.chipfind.ru/search/?part=DS2484
TVS в любом случае нужен.
Всеми любимый Чипдип:
* STM32F401RBT6, Микроконтроллер, 32-Бит, Cortex-M4, 84МГц, 128Кб Flash, 64Кб SRAM, 50 I/O [LQFP-64_10x10.] — 260 руб
* STM32F103C8T6, Микроконтроллер 32-Бит, Cortex-M3, 72МГц, 64КБ Flash, USB, CAN [LQFP-48.] — 160 руб
* STM32G030K6T6, Микроконтроллер ARM Cortex-M0+, 32-бит, 64МГц, 32К Flash, 8К RAM, 29 I/O [LQFP-32.] — 95 руб
* STM32F030F4P6TR, Микроконтроллер 32-Бит, Cortex-M0, 48МГц, 16КБ Flash [TSSOP-20.] — 80 руб
Сравниваем:
* ATMEGA168PB-AU, Микроконтроллер AVR, 8-Бит, 20МГц, 16КБ Flash, 27 I/O [TQFP-32] — 260 руб
* ATTINY1616-MNR, Микроконтроллер tinyAVR, 8-Бит, 20МГц, 16КБ Flash, 18 I/O [VQFN-20] — 90 руб
Можно найти цены раза в 1.5 ниже: https://www.chipfind.ru/search/
16 кбит/с можно и ногодрыгом, достаточно 2 прерывания на бит на передачу и 3 на прием.
Конечно, если есть свободный таймер и дма, можно передачу и через ШИМ сделать, но это будет уже две ноги — для приема нужен захват на том же таймере. Если все таки одна нога, но таки нужно прерывание, переводить ногу на прием, читать и потом снова на передачу, плюс внешняя подтяжка. Ногодрыг тут банально проще в реализации. Потом нужно согласование уровней, защита линии, в общем, обвеса не мало, иначе рискуем контроллером.
Еще можно через SPI: скорость около 66667 бит/с, каждые 4 бита кодируют 1 бит протокола (1000 — единица, 1110 — ноль), передаем инверсные данные 1NN01NN0, MOSI управляет транзистором, MISO принимает (xNxxxNxx), SCK не нужен.
Можно ли использовать UART для этого? Почему бы и нет. TX инвертирован и управляет транзистором, RX на шину, так же 4 бита в 1, 83333 бит/с 8N1, передаем инверсные данные NNN10NNN, принимаем прямые данные NxxxNxxx.
Если не хочется мучиться, есть микросхема драйвера 1-wire с i2c управлением. Чипдип хочет 260 руб. Тут вижу за 156 руб: https://www.chipfind.ru/search/?part=DS2484
TVS в любом случае нужен.