Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: pic16f84, непонятка с таймером  (Прочитано 11393 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« : 10-12-2003 07:30 » 

Я юзаю PIC16F84, симулятор - MPLAB IDE for Windows/16 (5.50.00)


Проблема вот:

предделитель подключен к таймеру и равен 2. Таймер подключен к внутреннему осцилятору. То есть после каждого второго такта таймер должен увеличиваться на 1.
Но. Либо это глюк симулятора, либо в железке так и задумано -

1) спустя два такта после команды
movwf PORTB ;запись в порт
таймер останавливается

2) спустя два такта после команды
movf PORTB,w ;чтение из порта
таймер запускается

стабильно.  Улыбаюсь

попробовать вживую сейчас не могу...

не подскажите, чё за комиссия?

большая просьба - ответить как можно быстрее!
Заранее благодарен!
Записан

NeilPryde
Гость
« Ответ #1 : 10-12-2003 08:40 » 

Между операцией запись в порт и чтение данных из порта есть команды? или они подряд идут?
Сейчас я не помню точно, но, насколько мне известно, после записи в регистр таймера, увеличение его начинается спустя некоторую задержку. Может быть, ты страницы перепутал и пишешь вместо порта, в регистр таймера?

Или код дай поглядеть.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 10-12-2003 09:31 » 

Цитата

Между операцией запись в порт и чтение данных из порта есть команды? или они подряд идут?


в том то и дело, что есть -

Код:

.....
iorwf temp1,w
movwf PORTA
movf temp,w
movwf PORTB ;1
bcf STATUS,C ;2
rlf temp,w ;здесь останавливается
btfsc STATUS,Z
addlw 1
movwf temp
rlf temp,f
rlf temp,f
movlw b'11111100'
andwf temp,w
movwf PORTA
movf PORTB,w ;1
movwf temp ;2
rlf temp,f ;здесь продолжает считать
btfsc STATUS,C
......


Цитата

после записи в регистр таймера


здесь я в таймер не записываю ничего

Цитата

Может быть, ты страницы перепутал и пишешь вместо порта, в регистр таймера?


да нет, под отладчиком смотрел - пишется куда надо, а кроме того для TMR0 пара в другом банке - OPTION_REG, а туда я тоже не пишу здесь...
Записан

Lex
Специалист

ru
Offline Offline

WWW
« Ответ #3 : 10-12-2003 11:19 » 

Сильно похоже на глюк MPLAB. В свое время я тоже с эмуляцией таймеров мучался.
Записан

Megabyte be with you!
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 10-12-2003 20:52 » 

попробую на железке, напишу
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 12-12-2003 12:22 » 

публично извиняюсь перед MPLAB - парень просто свою работу делал, это люди ошибаются - я просто таймер подключил по недосмотру не к внутренней частоте, а к внешней  :oops:

таймер работает  Отлично
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines