02.02.2016, 08:17
|
|
Прописка
Регистрация: 22.07.2011
Адрес: Севастополь
Сообщений: 127
Сказал спасибо: 7
Сказали Спасибо 21 раз(а) в 16 сообщении(ях)
|
Не пойму PIC
Столкнулся с проблемой в PIC16F873A, а конкретнее в TMR1. При тактировании TMR1 внутренней частотой без каких либо прерываний все нормально. При частоте генератора в 4 МГц (такт 1 мкс) за 1 мс проходит 1000 импульсов. А вот если в этот промежуток времени проходит обработка какого либо прерывания, 1000 импульсов не получается.
????????????????????????????????????
|
|
|
|
02.02.2016, 08:36
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Не пойму PIC
Либо в прерывании вы случайно останавливаете TMR1. Либо, когда подходит очередь прерывания TMR1 и аппаратно выставляется флаг TMR1IF, МК не готов сразу перейти к этому прерыванию. И даже когда он перейдет, счетчик таймера уже отсчитает некоторое количество импульсов. А потому что скорость работы таймера слишком высокая для тактовой частоты.
Не очень понятно, как вы замеряете эти 1000 импульсов.
Быть может, есть смысл снизить скорость счета таймера?
|
|
|
|
02.02.2016, 08:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Не пойму PIC
Из обработчиков прерываний повыкидывай delay и пр. ненужный там хлам
|
|
|
|
02.02.2016, 10:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Не пойму PIC
Сообщение от vovik_t
|
1000 импульсов не получается.
|
А можно написать сразу внятно, вместо дурацких вопросительных знаков и дурацких смайликов - а сколько импульсов получается? Больше 1000, меньше 1000, или каждый раз по-разному? Есть какая-то статистика, или сделано всего 1-2 попытки?
Как удается обнаружить, что импульсов не 1000? В каком режиме таймер?
Здесь телепатов нет, чтобы угадывать.
|
|
|
|
02.02.2016, 13:03
|
|
Прописка
Регистрация: 22.07.2011
Адрес: Севастополь
Сообщений: 127
Сказал спасибо: 7
Сказали Спасибо 21 раз(а) в 16 сообщении(ях)
|
Re: Не пойму PIC
Сообщение от NewWriter
|
Либо в прерывании вы случайно останавливаете TMR1. Либо, когда подходит очередь прерывания TMR1 и аппаратно выставляется флаг TMR1IF, МК не готов сразу перейти к этому прерыванию. И даже когда он перейдет, счетчик таймера уже отсчитает некоторое количество импульсов. А потому что скорость работы таймера слишком высокая для тактовой частоты.
Не очень понятно, как вы замеряете эти 1000 импульсов.
Быть может, есть смысл снизить скорость счета таймера?
|
В прерывании TMR1 вообще не рассматривается, прерывания происходят от другой периферии.
|
|
|
|
02.02.2016, 13:26
|
|
Прописка
Регистрация: 25.11.2006
Адрес: Харьков
Сообщений: 295
Сказал спасибо: 25
Сказали Спасибо 71 раз(а) в 60 сообщении(ях)
|
Re: Не пойму PIC
vovik_t, ваши сообщения выглядят как " Я что-то делаю и получаю непонятный результат. Почему так получается?" Как можно ответить на такой вопрос? Действительно, покажите фрагмент своей программы из которого было бы видно как Вы контролируете интервал в 1 мс и количество импульсов в TMR1. Может быть тогда кто-то подскажет что-нибудь конкретное.
|
|
|
|
02.02.2016, 15:28
|
|
Прописка
Регистрация: 22.07.2011
Адрес: Севастополь
Сообщений: 127
Сказал спасибо: 7
Сказали Спасибо 21 раз(а) в 16 сообщении(ях)
|
Re: Не пойму PIC
Сообщение от tsb
|
vovik_t, ваши сообщения выглядят как " Я что-то делаю и получаю непонятный результат. Почему так получается?" Как можно ответить на такой вопрос? Действительно, покажите фрагмент своей программы из которого было бы видно как Вы контролируете интервал в 1 мс и количество импульсов в TMR1. Может быть тогда кто-то подскажет что-нибудь конкретное.
|
Я упрощу программу до тестовой, проверю еще раз и если результат будет тот же, выложу на форум.
|
|
|
|
02.02.2016, 16:54
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Не пойму PIC
Сообщение от vovik_t
|
В прерывании TMR1 вообще не рассматривается, прерывания происходят от другой периферии.
|
ну дак какбы...
Прерывание от какого-то другого модуля происходит в момент, близкий к отсчету 1000 импульсов TMR1, ну и пока МК занят выполнением кода в прерывании, наступает 1000 импульсов, а пока МК из обработки другого прерывания не вернулся, продолжается отсчет сверх 1000 имп., ну и к тому времени, как МК все-таки доберется до места, где проверяется отсчет таймера, он уже успевает насчитать сверх 1000.
Можно временно запретить все прерывания в момент, пока ожидается отсчет 1000 имп, обработка прерываний будет отложена, а после отсчета 1000 имп. разрешить прерывания обратно. Так удастся выдержать точный интервал, ценой откладывания реакции на другие прерывания. Тут уж выбор в том, что более приоритетно - точный интервал или быстрая реакция на другие прерывания.
Последний раз редактировалось NewWriter; 02.02.2016 в 16:56.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
02.02.2016, 17:49
|
|
Заблокирован
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,460
Сказал спасибо: 286
Сказали Спасибо 1,125 раз(а) в 540 сообщении(ях)
|
Re: Не пойму PIC
Если нужен интервал 1мС
Compare mode, trigger special event (CCPxIF bit is set, CCPx pin is unaffected); CCP1 resets TMR1; CCP2 resets TMR1 and starts an A/D conversion (if A/D module is
enabled)
|
|
|
|
02.02.2016, 18:02
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Не пойму PIC
Интервалы 1 мс очень хорошо и без излишнего программного вмешательства отсчитываются на TMR2. Напрмер, при тактовой МК 4 МГц значения предделителя 1:4, постделителя 1:1, значение PR2=.249
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
PIC parallel slave port (PSP) или PIC и ISA-8
|
Tronix286 |
PIC |
13 |
13.05.2014 13:12 |
Литература по микроконтроллерам (AVR, PIC, ПЛИС и т.д.). Сборка книг - (256 книг+ 27 CD c примерами из книг) [обновление 2011, PDF, DJVU]
|
yurinform |
Микроконтроллеры, АЦП, память и т.д |
5 |
05.07.2011 19:00 |
Странная работа PIC 12F629 и 12F675
|
aleksandr-zh |
Микроконтроллеры, АЦП, память и т.д |
18 |
18.02.2011 16:46 |
Вопрос про PIC 16F876А
|
Serega7777 |
Микроконтроллеры, АЦП, память и т.д |
2 |
18.12.2007 22:34 |
Часовой пояс GMT +4, время: 23:49.
|
|