02.04.2015, 21:14
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: FAQ по STM8
Да забей! Злокопипаст! Бит OPM в регистрах есть, значит работает.
|
|
|
|
02.04.2015, 23:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от STM32F0
|
Бит OPM в регистрах есть, значит работает.
|
А я поверил даташиту и отрубаю в прерывании. И почему-то в самый первый запуск таймера он сразу же дает UEV, и я его убиваю. А вот при последующих запусках все ОК: генерируется импульс 1мс с заполнением 50%, захват ловит присутствие термодатчика (длительность захваченного импульса получается 650мкс).
Ща попытаюсь OPM выставить и глянуть: будет отрубаться таймер или фиг.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
03.04.2015, 01:07
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от eddy
|
А я поверил даташиту и отрубаю в прерывании.
|
Зачем? Готовь параметры импульса заранее, наперёд. Юзай прелоад.
Сообщение от eddy
|
И почему-то в самый первый запуск таймера он сразу же дает UEV, и я его убиваю.
|
Настраиваешь прескалер.
Потом ARR и CCRx.
Настраиваешь PWM с OCxPE.
Выставляешь URS.
Выставляешь UG.
Разрешаешь прерывания.
Разрешаешь выход.
Выставляешь ARPE.
.
После запуска таймера всё уже станет как надо. Сработало прерывание по Compare - загружаешь параметры нового импульса, по апдэйту новые параметры вступят в силу.
Сообщение от eddy
|
попытаюсь OPM выставить и глянуть: будет отрубаться таймер или фиг.
|
Да будет, не сомневайся.
|
|
|
|
03.04.2015, 09:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от STM32F0
|
Зачем?
|
Затем, что мне нужно по одному импульсу генерить данные (1/0) и проверять длительности (на reset/приеме).
Сообщение от STM32F0
|
Выставляешь UG
|
Зачем? Оно же тут же сгенерит мне прерывание.
Сообщение от STM32F0
|
Выставляешь ARPE.
|
И зачем мне буферизовать ARR? Для этого придется "насильно" впихивать установкой UG.
Сообщение от STM32F0
|
Сработало прерывание по Compare - загружаешь параметры нового импульса
|
Мощей не хватит у STM8, чтобы за микросекунды успеть такое проделать.
Я проще делаю: в цикле выставляю нужные параметры, запускаю таймер на 1 такт, проверяю (если нужно) и выставляю следующий бит. Хоть задержка между битами будет разной, она не страшна — в этом суть протокола 1-wire. Зато надежно каждый бит будет проходить правильно, без необходимости глобально вырубать нафиг все прерывания на это время.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
03.04.2015, 10:07
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от eddy
|
мне нужно по одному импульсу генерить данные (1/0) и проверять длительности (на reset/приеме).
|
Сообщение от eddy
|
Зачем? Оно же тут же сгенерит мне прерывание.
|
Сообщение от eddy
|
зачем мне буферизовать ARR? Для этого придется "насильно" впихивать установкой UG.
|
Ужос! Референс читай! Работу таймера совсем не понимаем.
.
Сообщение от eddy
|
Мощей не хватит у STM8, чтобы за микросекунды успеть такое проделать.
|
Тануна! Картинку посмотри.
Обрати внимание на сигналы TIM_IRQ и main. Длительность положительного импульса TIM_IRQ и есть время прерывания.
Сообщение от eddy
|
Хоть задержка между битами будет разной, она не страшна — в этом суть протокола 1-wire. Зато надежно каждый бит будет проходить правильно, без необходимости глобально вырубать нафиг все прерывания на это время.
|
Прикалываешься? Приоритеты прерываний для чего сделаны?
|
|
|
|
03.04.2015, 10:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от STM32F0
|
Картинку посмотри.
|
У тебя период - 100мкс. А в 1-wire один бит длится 15-16мкс!
Сообщение от STM32F0
|
Приоритеты прерываний для чего сделаны?
|
Я про ногодрыг. Во всех реализациях 1-wire ногодрыгом народ перед передачей бита отрубает все прерывания, а по завершению — врубает.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
03.04.2015, 10:26
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от eddy
|
У тебя период - 100мкс. А в 1-wire один бит длится 15-16мкс!
|
Понятно, даташит на 18В20 тоже не читался. Брось заморочки с таймером, не трать время, "Ногодрыг наше всё!"(с).
Сообщение от eddy
|
Во всех реализациях 1-wire ногодрыгом народ перед передачей бита отрубает все прерывания, а по завершению — врубает.
|
А если все будут вешаться? Делал ногодрыгом на СТМ8, прерывания не запрещал, вообще. Хотя динамическая индикация присутствовала.
|
|
|
|
03.04.2015, 13:13
|
|
Частый гость
Регистрация: 16.05.2005
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от eddy
|
Я про ногодрыг. Во всех реализациях 1-wire ногодрыгом народ перед передачей бита отрубает все прерывания, а по завершению — врубает.
|
Это для тех кто прерывания не любит, т.е. любители "верхнего уровня" и готовых библиотек, кода, операционок, которые все сами делают и пр.....
по данному вопросу могу предложить "ВКУРИТЬ" мануалы по 18В20 и авторский реальноработающий код, если очень хочется постигнуть глубину дзена
__________________
Патриотизм - не болезнь, а состояние души!
|
|
|
|
03.04.2015, 13:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
|
Re: FAQ по STM8
VaStaNi, мать моя женщина! Ассемблер!!! Ужас.
Лучше уж я с таймерами повоюю. Авось, если в запой не уйду, за выходные сделаю. С таймерами еще чем удобно: можно прием/передачу отдать на прерывания (правильно STM32F0 говорит), реализовав это конечными автоматами. В итоге чтобы считать температуру с датчика с заданным ID, мы просто в коде вызовем процедуру предварительной подготовки и оставим все "на самотек", периодически внутри main() проверяя флаг готовности принятых данных.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
03.04.2015, 14:05
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: FAQ по STM8
Сообщение от eddy
|
С таймерами еще чем удобно: можно прием/передачу отдать на прерывания
|
Какие прерывания? В самом худшем случае оно одно!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:48.
|
|