Полная версия этой страницы:
Проблема с PIC16F876A
PLATRO
Oct 12 2006, 18:55
вот вся программа:
list p=16f876 ; list directive to define processor
#include <p16f876.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _WRT_ENABLE_OFF & _LVP_ON & _DEBUG_OFF & _CPD_OFF
org 000
goto start
org 005
start:
banksel TRISС
movlw b'00000000'
movwf TRISC
bcf INTCON, GIE
start2:
banksel PORTС
key:
bsf PORTC, 0
goto key
end
к RC0 подсоединен светодиод. запускаю контроллер - светодиод мигает (хотя не должен), причем мигает с частотой гдето раз в секунду. Т.е. такое ощущение что контроллер сам по себе резетица раз в секунду. Всякие там вочдоги и тп все поотключал. Может контроллер испортился или чтото я не так делаю? Подскажите плиз.
Andy_F
Oct 12 2006, 22:01
Может быть, стоит начать программу так (для большей уверенности):
Код
CLRF STATUS ; Do initialization (Bank 0)
CLRF INTCON ; Запрет всех прерываний
CLRF PIR1 ; Очистка флагов - признаков прерываний
CLRF PIR2
....
Кроме того, необходимо подтянуть ногу "MCLR" (1) к + питания (для контроллера с буквой "А" на конце - через резистор, без буквы - можно замкнуть напрямую. Ещё можно попробовать выключить LVP.
PLATRO
Oct 13 2006, 20:56
а я на прямую замыкал MCLR )) может от этого?
Andy_F
Oct 13 2006, 21:05
Цитата(PLATRO @ Oct 14 2006, 00:56)

а я на прямую замыкал MCLR )) может от этого?
Вряд ли. Это допустимо, но не рекомендуется.
Может, немного ещё упростить:
Код
BSF PORTC, 0
GOTO $
Т.е., светодиод зажгли, и крутимся в бесконечном цикле.
Костян
Oct 14 2006, 09:38
А в конфигурации отключен сторожевой таймер ???
Цитата(Костян @ Oct 14 2006, 12:38)

А в конфигурации отключен сторожевой таймер ???
Вы , что не контролируете конфигурационное слово при программировании?
Вообще-то этому надо уделять серьезное внимание.Недавно скачал пример по USB с
Микрочипа.Так вот с их конфигурационным словом не работает.Пришлось вносить
поправки.
А если попробать определьть тип сброса? приблизительно так.
Мой шаблон для си. Добавить проверку на -TO -RD
GLOBAL powerup,start, big_powerup
PSECT powerup,class=CODE,delta=2
powerup
bsf STATUS, RP0 ;Банк 1
btfsc PCON, POR ;Сброс при включении питания?
ljmp big_powerup ;НЕТ, WDT или сброс MCLR
ljmp start ;Да
PSECT big_powerup,class=CODE,delta=2
big_powerup
btfss PCON, BOR ;Сброс при снижении питания?
goto pdown ;
btfss STATUS, TO ;Сброс WDT?
goto pwdt
ljmp start
pdown
movlw MASKA
movwf TRISA
bcf STATUS, RP0 ;Банк 1
clrwdt
bsf PORTA, OUT
goto $-2
pwdt
movlw MASKA
movwf TRISA
bcf STATUS, RP0 ;Банк 1
clrwdt
bcf PORTA, OUT
goto $-2
В принципе все советы правильные.Мне кажется , что программатор не поддерживает
PIC16F876 с буквой A.Поэтому и не программируется правильно конфигурационное слово.
PLATRO
Oct 17 2006, 09:19
Ну кароче я так понял Вы все думаете что это не испорченный МК, а происходит какойто сброс. Ну чтож спасибо за советы, будем разбираться. Кстати программатор у меня EXTRAPIC
http://5v.ru/extrapic.htm
С программатором вроде все в порядке.Проверьте свой код в Протеусе.Тогда останется пик и
программатор.В пик записать и прочитать.Если все совпало, то пик нормальный.
PLATRO
Oct 18 2006, 22:03
Всем спасибо, все заработало. Проблема ушла после того как я проделал рекомендации из поста №2
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.