простые интересные РАДИОСХЕМЫ сделанные своими руками

» Гость

Мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизируйтесь!





» ДАТАШИТЫ
Например: TDA1562

» СХЕМЫ


Отметить прочитанными   -   Поиск   -   Правила   -   Новые сообщения

Модератор форума: Igoran, Витинари, Sam  
Форум радиолюбителей » СХЕМЫ » НАЧИНАЮЩИМ » Помощь в программировании (Подскажите в какой теме можно задать вопрос)
Помощь в программировании
Вт, 14.11.2017, 12:24 | Сообщение # 71        
Ник
аватар
  Постов: 210  Offline
Сейчас написал простенькую программу часов, в таймере 32768/128=256, в прерывание 1 раз за сек. При проверке за 10 мин ушли в перед почти 1.5 сек. На осциллографе частота колеблется от 32794 до 32805, частоты как на кварце я не увидел. Замена на другие не очень помогла. попробую чуть по же поиграться конденсаторами. Есть какая то методика расчета их? Как вообще правильно делать программную коррекцию времени? И еще вопрос почему в симуляторе тормозит обработка программы то есть 1 сек где то примерно почти 2 сек. Комп 2 ядерник 1.8 оператив 2г винда ХР.
Вт, 14.11.2017, 12:39 | Сообщение # 72        
nolpofaze
аватар
  Постов: 395  Offline Друзья 
Ник, симулятор - протеус?
Вт, 14.11.2017, 13:18 | Сообщение # 73        
Ник
аватар
  Постов: 210  Offline
nolpofaze, да протеус.
Вт, 14.11.2017, 13:24 | Сообщение # 74        
nolpofaze
аватар
  Постов: 395  Offline Друзья 
Ник, с протеусом все сложно... он не будет работать как реальное устройство, хотя время можно оценивать с помощью статусной строки (внизу около цента) там есть инфа про прошедшее время симуляции устройства и про время на каждую текущую функцию, все точно, единственное - реальные кварцы не будут точно 4096000 Гц или 32768 Гц smile
Вт, 14.11.2017, 13:51 | Сообщение # 75        
Ник
аватар
  Постов: 210  Offline
nolpofaze, я так примерно и подозревал. Как быть с реалом, в портеусе я проверяю работоспособность а в реале замеры и подгонка. Как писал управление мощностью тены, пока не изучил досконально работу симистора и не посмотрел на осциллографе его работу толку не было. Если что то решил сделать, то должен понимать как оно работает иначе успеха не видать.
Вт, 14.11.2017, 14:10 | Сообщение # 76        
nolpofaze
аватар
  Постов: 395  Offline Друзья 
На скрине снизу эти времена:

Справа время текущего процесса. Слева все время


Отредактировал nolpofaze - Вт, 14.11.2017, 14:11
Вт, 14.11.2017, 15:44 | Сообщение # 77        
msmmmm
аватар
  Постов: 961  Offline Друзья 
Цитата Ник ()
Если что то решил сделать, то должен понимать как оно работает иначе успеха не видать.

Ник, самое главное понял. smile
Цитата Ник ()
Как быть с реалом, в портеусе я проверяю работоспособность
Протеус - замечательное средство убедиться, что в идеале программа работает как надо. Все мои сомнения в адекватности работы протеуса заканчивались обнаружением моих же ошибок. Возможно глюки есть, но их немного, и если программа работает в протеусе, то с большой вероятностью она будет работать и в реале, в том числе будут правильными и ее временные параметры.
Цитата Ник ()
На осциллографе частота колеблется от 32794 до 32805, частоты как на кварце я не увидел.
Мало того, что далеко от номинала (976ppm), так еще и разброс 150ppm (нормально до 10, а обычно 1-2). Напомню, что измерительные приборы подключать к выводам резонатора без делителей нельзя, а лучше вообще не подключать. А частоту (после делителя) выводить на любой свободный пин и мерить там. Вот, например, данный случай: есть прерывания с частотой 1с, в каждом прерывании инвертируем бит порта и получаем частоту 0,5Гц. Или каждом прерывании формируем импульс любой длительности меньше периода и получаем частоту 1Гц. Измеряем хоть частоту, хоть период, делаем выводы. Измерительный прибор должен быть соответствующей точности. Кроме того, проводники к резонатору и конденсаторам (если установлены) должны быть минимальной длины. Плата должна быть отмыта досуха от флюса и прочего.

Добавлено (14.11.2017, 15:44)
---------------------------------------------
Цитата Ник ()
Как вообще правильно делать программную коррекцию времени?
Вопрос пока не к месту, тут явно есть серьезная проблема. Корректировать можно, когда сколько-то секунд в сутки разница. Так как прерывания идут целыми секундами, я бы сделал так (после устранения нестабильности генератора): замеряем погрешность за сутки. Делим количество секунд в сутках на погрешность в секундах, получаем время паузы до очередной коррекции на 1с. В программе параллельно основному счетчику времени (программному) запускаем счетчик коррекции, который по истечении времени или добавит 1с к основному счетчику (при отставании), или пропустит прибавление 1с в основном счетчике (при уходе вперед). Это будет одна переменная unsigned int и декремент с проверкой на 0 при каждом прерывании. После корректирования счетчик запускается заново. float не нужен.


Отредактировал msmmmm - Вт, 14.11.2017, 22:21
Ср, 15.11.2017, 15:51 | Сообщение # 78        
Ник
аватар
  Постов: 210  Offline
Посмотрите пожалуйста программу часов и подскажите где я пишу лишнее или ка можно проще.
Программа в текстовом документе , схеме в протеусе и прошивка.
Ср, 15.11.2017, 16:01 | Сообщение # 79        
nolpofaze
аватар
  Постов: 395  Offline Друзья 
Ник, первое, где я вижу плохо, это прерывание по 2 таймеру, там слишком много всего. В прерывании надо инкрементировань секунду, ну флажок выставить, мол была секунда, а флажок в майне обработать...
Ср, 15.11.2017, 16:08 | Сообщение # 80        
Ник
аватар
  Постов: 210  Offline
nolpofaze, Спасибо учту. И как понять выставить флажок?
Форум радиолюбителей » СХЕМЫ » НАЧИНАЮЩИМ » Помощь в программировании (Подскажите в какой теме можно задать вопрос)
Поиск:
Кто есть кто на форуме радиолюбителей: Администратор Модераторы Друзья Пользователи
Группа вконтакте Канал ютуб Группа в фэйсбук Мобильная версия © 2010-2018, "Радиосхемы". Все права защищены. Почта