|
Странное поведение таймера 1 в PIC16F876A, Поведение таймера меняется в зависимости от записи в PORTА |
|
|
|
Apr 1 2011, 10:21
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 6-07-08
Из: Москва
Пользователь №: 38 765

|
Всем привет! Помогите, пожалуйста, совсем весь извелся! Третий день бьюсь! Суть проблемы: с закоментированной строкой №423 пик дергает ногой нормально, на выходе RA4 меандр. Как только раскоментирую строку, скважность начинает плясать. Не пойму, какая здесь связь (таймер 0, порт RA4 и RA3 никак не связаны!), но влияние "на лице"? Параметры: тактовая 20МГц, WDT выключен, питание стабильное 5В. Спасибо за помощь!
Сообщение отредактировал Rostislav - Apr 1 2011, 11:32
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Apr 1 2011, 10:47
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(Rostislav @ Apr 1 2011, 14:21)  Суть проблемы: с закоментированной строкой №423 пик дергает ногой нормально, на выходе RA4 меандр. Как только раскоментирую строку, скважность начинает плясать. Фрагмент маленький, не очень понятный. Но тем не менее первое, что приходит на ум - а это точно PORTA ? Биты банков стоят правильно ? Ну и второе - битовые манипуляции с "PORT" - они ведь не только с указанным битом работают, а с всем портом, чтение-модификация-запись. А что там на porta.4, если его прочитать ? Если туда выведена "1", это вовсе не означает, что прочитана будет "1"...
|
|
|
|
|
Apr 1 2011, 11:28
|
Частый гость
 
Группа: Участник
Сообщений: 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. Что-то я вообще в ступоре!  Карау-у-у-л-.....
Сообщение отредактировал Rostislav - Apr 1 2011, 11:33
|
|
|
|
|
Apr 1 2011, 11:29
|
Гуру
     
Группа: Участник
Сообщений: 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, он обнулится.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|