Чтение температуры с DS18B20 (продолжение)

Сопряжение термодатчика DS1820 с Flowcode

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение Vovan_G5 (Владимир) » 19 апр 2017, 21:48

Время в DS1307 идет само по себе. Прерывания надо обязательно запрещать, потому что по лампочке, особенно на низкой яркости очень видно все глюки.
Еще надо убедиться, что ты на 100% контролируешь переход синуса через 0(я имею в виду железо, реальную схему то не видно), если там что то пропускаешь - будешь моргать лампочкой.
На первый взгляд надо временно отрубить опрос энкодера и 18в20, посмотреть как будет вести себя лампочка.
Я делал подобный регулятор, там суть в том, что бы запускать таймер TMR при переходе синуса через 0 (фиксируется прерыванием INT), яркость - это время работы таймера TMR0 (регистр OCR), после выдачи импульса на симистор - TMR0 останавливается. В свободное время все остальное. Мучался так же, лампочки как свечи горели.
Ник: Vovan_G5
Имя: Владимир
(Харьков)
Консультант
Консультант
Информация о пользователе

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение mim (mim) » 20 апр 2017, 07:07

olegkaras2 писал(а):1. Если я сделаю запрет на все прерывания на момент измерения то как будет тикать время от синхроимпульса до выдачи импульса , не будет ли оно сбоить ?
2. Я вот сделал как на твоей картинке - от 50 до 100% вроде бы синус стабильный .

1. Реально при выполнении программы будет наблюдаться так называемое "дрожание" (джитер) периода повторения прерывния из-за запрета, но запрет происходит на короткое время - микросекунды, обычно на глаз это не заметно...
2. Да... но при минимуме все равно будет видно? А как в железе?

Например в макросе DS1820_start_conversion подряд идут три команды, а это почти 3 мс
Код: выделить все
oo_busreset();
   oo_tx_byte(OO_SKIPROM);      // Command all temp sensors on the bus to start a conversion
   oo_tx_byte(OO_CONVERTT);

их можно написать самостоятельно через макрос oo_busreset(); и oo_tx_byte (); и передавать по одному в течение трех полупериодов, я же тебе об этом написал... еще в 10 году, например такое, смотри макрос SCAN_18b20
Sinhro_PWM_v7_port_1820_K.fcf
У вас нет доступа для просмотра вложений в этом сообщении.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение olegkaras2 (олег) » 20 апр 2017, 16:07

Проверил в железе отключив все что связано с DS18B20 - "дрожание" на лампе заметны. Потом залил первоначальный вариант управления симистором - "дрожание" на лампе не заметны, завтра еще посмотрю осцылографом на лампе осцылограму , видать нужен другой какой то алгоритм управления симистором.
В твоем примере - макрос SCAN_18b20 , в макросе oo_busreset задержки по 200 мкс их убрать ?
Аватар пользователя
Ник: olegkaras2
Имя: олег
(Белая церковь)
Специалист
Специалист
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение Vovan_G5 (Владимир) » 20 апр 2017, 16:15

покажи первоначальный вариант, который не дрожит
Ник: Vovan_G5
Имя: Владимир
(Харьков)
Консультант
Консультант
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение olegkaras2 (олег) » 20 апр 2017, 16:42

Vovan_G5 писал(а):покажи первоначальный вариант, который не дрожит

Вот , работает без DS18B20.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: olegkaras2
Имя: олег
(Белая церковь)
Специалист
Специалист
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение Vovan_G5 (Владимир) » 20 апр 2017, 17:34

Благодаря тому, что ты все время сидел в VS1 получая из INT(INT более приоритетное чем TMR0) значение для старта импульса симистора, ты успевал его случайно!!! вовремя выдать.
Когда тебе сказали про TMR0 в 100Гц и ты его исполнил, естественно при том же подходе ты стал реже в него попадать и реже давать импульс открытия симистора, по переменной VS = 1.
Я тебе выше писал что в какой последовательности нужно сделать
Можешь найти мой пример про симистор, там все просто и понятно и эта поделка уже года полтора работает и не мерцает.
Ник: Vovan_G5
Имя: Владимир
(Харьков)
Консультант
Консультант
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение olegkaras2 (олег) » 20 апр 2017, 18:34

Vovan_G5 писал(а):Благодаря тому, что ты все время сидел в VS1 получая из INT(INT более приоритетное чем TMR0) значение для старта импульса симистора, ты успевал его случайно!!! вовремя выдать.
Когда тебе сказали про TMR0 в 100Гц и ты его исполнил, естественно при том же подходе ты стал реже в него попадать и реже давать импульс открытия симистора, по переменной VS = 1.
Я тебе выше писал что в какой последовательности нужно сделать
Можешь найти мой пример про симистор, там все просто и понятно и эта поделка уже года полтора работает и не мерцает.

Покажи где твой пример . :!!!
Аватар пользователя
Ник: olegkaras2
Имя: олег
(Белая церковь)
Специалист
Специалист
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение Vovan_G5 (Владимир) » 20 апр 2017, 21:13

Ник: Vovan_G5
Имя: Владимир
(Харьков)
Консультант
Консультант
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение alexandr71 (alexandr71) » 23 апр 2017, 18:42

Прошу помощи для проверки FC5_PIC_One_Wire.c. Дело в следущем. Проект в Flowcode4 работает и компилируется без проблем на 12f675 еще и места немного остается. На 12f1822 памяти в два раза больше, после компиляции остаётся
70 с лишним процентов. Но появилась надобность в FC5 сделать почти такой же проект. Компильнул ничего не меняя осталось 5,4%. Изменил internals и PIC_CAL_String, с помощью софта, помогло, стало 29,6% свободно. Но всё равно мало. Стал дорабатывать FC5_PIC_One_Wire.c т.е. убирать лишнее по аналогии с PIC_One_Wire.c от MiMа. Но где то слегка косяк.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: alexandr71
Имя: alexandr71
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение mim (mim) » 24 апр 2017, 06:33

auto_culer_mim.rar
Все правки внутри компонента... Плохо что нет Протеуса...
Код: выделить все
RAM available:128 bytes, used:49 bytes (38.3%), free:79 bytes (61.7%),
Heap size:79 bytes, Heap max single alloc:46 bytes
ROM available:2048 words, used:763 words (37.3%), free:1285 words (62.7%)
У вас нет доступа для просмотра вложений в этом сообщении.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Пред.След.

Вернуться в Flowcode + DS1820

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

Пользователь просматривает форум: нет зарегистрированных пользователей