Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: ivan_fd  
Узнать частоту
xvovanx Дата: Чт, 14.11.2013, 10:53  |                                                                                                                Сообщение # 31
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 332
Репутация: 59   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата anatol13348Нашел в теле программы такую конструкцию и не понял хитрости - 400 циклов по 10 миллисекунд?

Хитрость в том, что в программе работают часы на прерывании TMR1, а также используютя для зарядки секундные  и минутные интервалы. Таймер при переполнении может остановить программу в любом месте, кроме в момент паузы. И если в программе будет стоять пауза из 4000 циклов, таймер прерывания (при попадании в момент паузы) будет ждать целую секунду, пока закончится пауза. О точности часов (+-1 сек при каждом  попадании прерывания в момент паузы) говорить не приходится. А так вероятность попадание прерывания в момент паузы уменьшена и точность +- 10 миллисекунд.
P.S. Делать 4000 циклов по 1 мсек не стал, побоялся что у МК голова закружится  smile

Сообщение отредактировал xvovanx - Чт, 14.11.2013, 10:56
ЯНДЕКС Дата: 14.11.2013
anatol Дата: Чт, 14.11.2013, 12:08  |                                                                                                                Сообщение # 32
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 471
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Не обращал внимания есть ли команды при входе в прерывание сохранять регистры, а при выходе восстанавливать.
Плюньте на точность часов, поставьте "нормальные" (т.е. безцикловые) задержки и проверьте. В конце концов просто помигайте светодиодом с секундным интервалом на примененном кварце.
MiXaS Дата: Чт, 14.11.2013, 13:50  |                                                                                                                Сообщение # 33
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 549
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Прелесть прерывание как раз в том, чтобы выполнить подпрограмму, контроллер плюет на все остальное.
Я так понял, что у Вас используется программное прерывание. В книге на протон об этом говориться. Но в протоне есть 2 строки, объявляющие прерывания.

On_Hardware_Interrupt - аппаратные прерывания
и
On Interrupt - программное прерывание.

Цитата
On Interrupt
Синтаксис:
On Interrupt {Goto} Label
Команда On Interrupt инициализирует так называемую программную обработку прерываний, в отличие
от команды On_Interrupt, которое инициализирует аппаратную обработку прерываний.
Встроенный в Proton+IDE редактор отличает эти две команды следующим образом - директиву аппаратного
прерывания On_Interrupt он подсвечивает красным полужирным шрифтом, а директиву программного
прерывания On Interrupt черным полужирным шрифтом. Это делается для облегчения отладки.
Когда используется команда On Interrupt, компилятор просто помечает то, что прерывание произошло и
немедленно возвращается к тому, чем до этого он занимался. То есть в отличие от аппаратного прерывания,
программа немедленно не переходит к подпрограмме обработки прерывания. Поэтому в случае использования
команд довольно большой продолжительности переход на подпрограмму обработки прерывания может привести
к значительным задержкам.
Например, если основная программа только что перешла к выполнению команды DelayMS 2000 и в это время
произошло прерывание, то в этом случае компилятор просто отметит, что произошло прерывание и продолжит
выполнение команды DelayMS 2000. А так как эта пауза будет продолжаться целых 2 секунды, то переход к
подпрограмме обработки прерывания может затянуться.
В случае если основная программа очень критична к времени исполнения команд, то она будет выполняться
неправильно, например при мультиплексировании семи сегментного светодиодного индикатора.
Для того, чтобы минимизировать такие случаи, следует использовать только такие команды и их конструкции,
которые не занимают много времени на свое выполнение. Например, вместо команды DelayMS 2000, можно
использовать команду DelayMS 1 в циклах For…Next или Repeat…Until повторяя эти циклы 2000 раз. Такие
конструкции позволят компилятору заканчивать каждую команду более быстро, а значит, при возникновении
прерывания программа сможет гораздо быстрее перейти к его обработке.


Уважаемый xvovanx, дело конечно Ваше, но пора уже на протон пересажываться.

Разница между протоном и picbasic-ом примерно как ВАЗ2101 и ford mondeo. Вроде обе машины, выполняют свои обязанности, но комфорт различный.

Тем более, что есть литература на русском, с примерами.
xvovanx Дата: Чт, 14.11.2013, 18:56  |                                                                                                                Сообщение # 34
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 332
Репутация: 59   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата anatol13357Плюньте на точность часов, поставьте "нормальные" (т.е. безцикловые) задержки и проверьте. В конце концов просто помигайте светодиодом с секундным интервалом на примененном кварце.

Да пробовал, нет, это как то не солидно - на крутом дисплее крутого ARI секунды тикают и через раз чуть зависают, потом дальше идут. Поморгать светодиодом это одно, а если в программе полно замеров АЦП и анализ уровней, то  импульсы получаются по времени"корявые"

Цитата MiXaS13358Уважаемый xvovanx, дело конечно Ваше, но пора уже на протон пересажываться.

Если чесно, как то даже и не задумывался, в Бейсике написал, скомпилировал, прошил и работает. На Бейсике прогу напишет даже ребенок, а на изучение Протона нужно время, которого как известно всегда не хватает. Но спасибо за наводку, на досуге гляну хотя бы одним глазком.

Сообщение отредактировал xvovanx - Чт, 14.11.2013, 18:57
anatol Дата: Чт, 14.11.2013, 21:35  |                                                                                                                Сообщение # 35
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 471
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

xvovanx, помигать светодиодом я не спроста предложил. Это чтобы не искать черную кошку в темной комнате. Вдруг кварц дуркует или компилятор. С кварцем можно определится зашив чужой хекс мигалки.
MiXaS Дата: Чт, 14.11.2013, 21:36  |                                                                                                                Сообщение # 36
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 549
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Я может Вас огорчу, но протон это тоже басик. Снитаксис или очень похож или такой же. Если говорить о свордфишь, то конечно там более значительные отлиция. Некоторые команды в протоне пересекаются с басиком, а остальные можно подсмотреть. Из преимуществ очевидных Вы сразу получаете переменные с плавающей точко, много готовых плагинов, например, быстрые настройки контролера, или дисплея, или 7 сигментного индикатора или юсби и т.д.
xvovanx Дата: Пт, 15.11.2013, 00:31  |                                                                                                                Сообщение # 37
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 332
Репутация: 59   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата anatol13363xvovanx, помигать светодиодом я не спроста предложил. Это чтобы не искать черную кошку в темной комнате. Вдруг кварц дуркует или компилятор

Ааа, в этом смысле. Нееет, это было проверено в самом начале как только заметил временные несоответсвия команд pause, beep, pwm и при выводе на LCD. Кварцы пробовал разные, даже выпаянные из старых плат. Все больше склонен думать, что виновен компилятор - при задании разных предделителей прерываний частоты получаем правильные, а 4 тактные временные команды выполняет криво.

Добавлено (14.11.2013, 21:59)
---------------------------------------------
to MiXaS.

Ну чтож, попробуем "на вкус" и  мы этот Протончик  wink

Добавлено (15.11.2013, 00:31)
---------------------------------------------
to MiXaS.

Скачал описание Протона в pdf, кинул глаз. Первые впечатления отличные. Немного напрягают отличия команд, но зная PBP это не затруднит работу. Большой, даже огромный плюс - вычисления с запятой, у меня все проги на 80% состоят из расчетов и приходилось сначала умножать на 1000 переводя всё в mV , чтоб не было десятичних частей. Задание портов LCD тоже одной строчкой, не двумя как в PВP. В общем по простым командам похож, в сложные пока сильно не углублялся. В описании много "полезных" примеров, а не только поморгать светодиодом и вывести HELLO WORLD!   smile Как то даже пожалел, что не Протон мне первым попался на глаза для изучения  cool . Буду пробовать на Протоне. Всем откликнувшимся - огромное СПАСИБО!

Сообщение отредактировал xvovanx - Чт, 14.11.2013, 21:55
MiXaS Дата: Пт, 15.11.2013, 08:05  |                                                                                                                Сообщение # 38
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 549
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Будут вопросы обращайтесь! Здесь на форуме, наверно, уже большая часть пишет на протоне, хотя есть люди уже переходят на более совершенные проги. Firewing, Mikrobasic, Swordfish
xvovanx Дата: Вс, 17.11.2013, 15:36  |                                                                                                                Сообщение # 39
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 332
Репутация: 59   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Проблема решена. Оказался "битым" компилятор PBP у меня. "Пересел" на Протон, все ОК.
MiXaS Дата: Вс, 17.11.2013, 15:41  |                                                                                                                Сообщение # 40
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 549
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Что и требовалось доказать!
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск: