реклама на сайте
подробности

 
 
> Странное поведение таймера 1 в PIC16F876A, Поведение таймера меняется в зависимости от записи в PORTА
Rostislav
сообщение Apr 1 2011, 10:21
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 6-07-08
Из: Москва
Пользователь №: 38 765



Всем привет!

Помогите, пожалуйста, совсем весь извелся! Третий день бьюсь!

Суть проблемы: с закоментированной строкой №423 пик дергает ногой нормально, на выходе RA4 меандр. Как только раскоментирую строку, скважность начинает плясать.

Не пойму, какая здесь связь (таймер 0, порт RA4 и RA3 никак не связаны!), но влияние "на лице"?

Параметры: тактовая 20МГц, WDT выключен, питание стабильное 5В.

Спасибо за помощь!

Сообщение отредактировал Rostislav - Apr 1 2011, 11:32
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rx3apf
сообщение Apr 1 2011, 10:47
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Rostislav @ Apr 1 2011, 14:21) *
Суть проблемы: с закоментированной строкой №423 пик дергает ногой нормально, на выходе RA4 меандр. Как только раскоментирую строку, скважность начинает плясать.

Фрагмент маленький, не очень понятный. Но тем не менее первое, что приходит на ум - а это точно PORTA ? Биты банков стоят правильно ? Ну и второе - битовые манипуляции с "PORT" - они ведь не только с указанным битом работают, а с всем портом, чтение-модификация-запись. А что там на porta.4, если его прочитать ? Если туда выведена "1", это вовсе не означает, что прочитана будет "1"...
Go to the top of the page
 
+Quote Post
Rostislav
сообщение Apr 1 2011, 11:28
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 6-07-08
Из: Москва
Пользователь №: 38 765



Цитата(rx3apf @ Apr 1 2011, 14:47) *
Фрагмент маленький, не очень понятный. Но тем не менее первое, что приходит на ум - а это точно PORTA ? Биты банков стоят правильно ? Ну и второе - битовые манипуляции с "PORT" - они ведь не только с указанным битом работают, а с всем портом, чтение-модификация-запись. А что там на porta.4, если его прочитать ? Если туда выведена "1", это вовсе не означает, что прочитана будет "1"...


Маленький, но достаточный, тем более, что программа пока крутится только в этом диапазоне команд. Здесь все просто: по флагу состояния таймера 0 меняю состояние линии RA4 порта A. Биты банков здесь трогать нет необходимости. Ну то, что это PORTA, это точно! Ведь с закоментированной строкой (т.е. при отсутствии изменения состояния линии порта RA3) все нормально! Кстати, в симуляторе изменение состояния линии RA3 НИ СКОЛЬКО не влияет на сигнал на линии RA4! RA4 я не читаю, а ТОЛЬКО записываю.

Забавно, но установка линии порта RA0 в 0 (т.е. если строка №423 будет выглядеть так: bcf PORTA,0) вообще запрещает изменение сигнала на RA4. Что-то я вообще в ступоре! wacko.gif Карау-у-у-л-.....

Сообщение отредактировал Rostislav - Apr 1 2011, 11:33
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Apr 1 2011, 11:29
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Rostislav @ Apr 1 2011, 15:16) *
RA4 я не читаю, а ТОЛЬКО записываю.

Еще раз - команда bcf/bsf не записывает значение бита в порт ! Она читает весь порт, модифицирует бит и затем записывает все содержимое порта. А поскольку ra.4 вообще OC, то, если там нет внешней подтяжки, то и прочитанное значение будет "0", даже если в PORTA.4 было явно записано "1". И после любой операции с PORTA, даже вроде бы не затрагивающей бит 4, он обнулится.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 13:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016