PIC16f876 problrm
12 отговора
300 прегледа
PIC16f876 problrm
Probvah PIC16F876 da napravq neshto napisah edin "source" no ne se polu4i i posle resih da probvam nesto elementano da miga edi LED na ediniq krak (v sli4aq PORTB.7) i ne raboi. Ako nakoi ima ideq da pomogne.
Blagodarq predvaritelno!
list p=16F876A
#include <p16F876A.inc>
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC
;***************Дефениране на константи********************************
w EQU 0
f EQU 1
;---------------Обявяване на използваните променливи-------------------
Counter EQU H'20'
;**********************************************************************
; Потребителска програма
;**********************************************************************
ORG H'0000'
goto start
;**********************************************************************
; Начало на програмата
;**********************************************************************
start bsf STATUS,RP0
movlw B'10010001'
movwf OPTION_REG
bcf STATUS,RP0
clrf PORTB
bsf STATUS,RP0
movlw B'01111110'
movwf TRISB
bcf STATUS,RP0
goto main
;-----------Програма, формираща времезадръжка от Counter*1.024ms-------
Wait clrf TMR0
again bcf INTCON,T0IF
loop btfss INTCON,T0IF
goto loop
decfsz Counter,f
goto again
return
;**********************************************************************
; Главна програма
;**********************************************************************
main bcf PORTB,7
movlw D'2'
movwf Counter
call Wait
movlw D'2'
movwf Counter
call Wait
bsf PORTB,7
movlw D'2'
movwf Counter
call Wait
movlw D'2'
movwf Counter
call Wait
goto main
END
Blagodarq predvaritelno!
list p=16F876A
#include <p16F876A.inc>
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC
;***************Дефениране на константи********************************
w EQU 0
f EQU 1
;---------------Обявяване на използваните променливи-------------------
Counter EQU H'20'
;**********************************************************************
; Потребителска програма
;**********************************************************************
ORG H'0000'
goto start
;**********************************************************************
; Начало на програмата
;**********************************************************************
start bsf STATUS,RP0
movlw B'10010001'
movwf OPTION_REG
bcf STATUS,RP0
clrf PORTB
bsf STATUS,RP0
movlw B'01111110'
movwf TRISB
bcf STATUS,RP0
goto main
;-----------Програма, формираща времезадръжка от Counter*1.024ms-------
Wait clrf TMR0
again bcf INTCON,T0IF
loop btfss INTCON,T0IF
goto loop
decfsz Counter,f
goto again
return
;**********************************************************************
; Главна програма
;**********************************************************************
main bcf PORTB,7
movlw D'2'
movwf Counter
call Wait
movlw D'2'
movwf Counter
call Wait
bsf PORTB,7
movlw D'2'
movwf Counter
call Wait
movlw D'2'
movwf Counter
call Wait
goto main
END
Re: PIC16f876 problrm
Zabravil si da prevkluchish portovete kato cifrovi izhodi nastroika na ADCON1
Mislia che eto taka triabva da napravish :
; Начало на програмата
;**********************************************************************
start
bsf STATUS,RP0
movlw B'10010001'
movwf OPTION_REG
MOVLW 0x06
MOVWF ADCON1
movlw B'01111110'
movwf TRISB
bcf STATUS,RP0
clrf PORTB
goto main
Mislia che eto taka triabva da napravish :
; Начало на програмата
;**********************************************************************
start
bsf STATUS,RP0
movlw B'10010001'
movwf OPTION_REG
MOVLW 0x06
MOVWF ADCON1
movlw B'01111110'
movwf TRISB
bcf STATUS,RP0
clrf PORTB
goto main
Re: PIC16f876 problrm
Spored men tozi register e za vhodeve koito mogat da sa i DAC t.e. PORTA i PORTE. A v slu4aq izpolzvam PORTB.
Re: PIC16f876 problrm
Kato se pozagledah malko v programata ti nikyde ne si posochil koia programa shte ti obraboti prekysvania, a i ako ne polzvash zashto ne si napravil CLRF INTCON , za da zabranish prekysvaniata 
Re: PIC16f876 problrm
Хм, на теория нещата изглеждат що-годе добре. Само че има няколко мътни неща:
- Термина "ами не работи" е любим на всички, които се занимават с поддръжка. Какво по-точно значи това? Имаш ли възможност да провериш сигналите по изводите? Имаш ли генерация, процесора тръгва ли и т.н.?
- Липсва място за вектора за прекъсвания. Да, не използваш прекъсвания, но и не ги забраняваш никъде. А да разчиташ, че при стартиране регистрите ще са ти както е описано, е меко казано опасно.
- Не разбрах идеята да правиш две последователни паузи по 2 ms вместо една от 4 ms. И как ще видиш "мигане" с честота 250Hz? Ако схемата тръгне, според мен ще видиш един светнал диод и нищо повече.
Един съвет за "първи стъпки": Закачи една двойка обърнати светодиоди и на B0 (видях, че и него го правиш на изход). Обърнати = единия да се засветва от нула, другия - от единица. В началото на main вдигни изхода в 1. Така ще получиш следния ефект: ако свети диода за 1, стигнал си до main и програмата ти работи. Ако свети 0, инициализацията е минала, но не си стигнал до main. Ако светят и двата, процесора изобщо не е тръгнал (най-често поради липса на генерация или reset).
Допълнителни съвети - само на кирилица. Както се вижда от кода, няма проблем с това. Нали?
- Термина "ами не работи" е любим на всички, които се занимават с поддръжка. Какво по-точно значи това? Имаш ли възможност да провериш сигналите по изводите? Имаш ли генерация, процесора тръгва ли и т.н.?
- Липсва място за вектора за прекъсвания. Да, не използваш прекъсвания, но и не ги забраняваш никъде. А да разчиташ, че при стартиране регистрите ще са ти както е описано, е меко казано опасно.
- Не разбрах идеята да правиш две последователни паузи по 2 ms вместо една от 4 ms. И как ще видиш "мигане" с честота 250Hz? Ако схемата тръгне, според мен ще видиш един светнал диод и нищо повече.
Един съвет за "първи стъпки": Закачи една двойка обърнати светодиоди и на B0 (видях, че и него го правиш на изход). Обърнати = единия да се засветва от нула, другия - от единица. В началото на main вдигни изхода в 1. Така ще получиш следния ефект: ако свети диода за 1, стигнал си до main и програмата ти работи. Ако свети 0, инициализацията е минала, но не си стигнал до main. Ако светят и двата, процесора изобщо не е тръгнал (най-често поради липса на генерация или reset).
Допълнителни съвети - само на кирилица. Както се вижда от кода, няма проблем с това. Нали?
Re: PIC16f876 problrm
Целта на тази програмка е само да тествам PIC-а. А това че честотата е 250 Hz е вярно но това съм го направил за да минава по-бързо симулацията. Иначе когато я пиша в процесора вместо D'2' е D'255'. Проблема е че процесора не показва никакви признаци на живот, което ме притеснява дали програматора не поврежда процесора
. За reset не е активен на 1-во краче има 5 волта през резистор 10 ком, а за генерации не мога да ги измеря нямам с какво.
Re: PIC16f876 problrm
Аха. Така звучи по-смислено (за времената).
За проверка дали се стартира - без измервателен прибор най-простия вариант е с двата светодиода. Можеш да използваш директно и извод B7 - просто добави още един светодиод и наблюдавай какво става.
За проверка дали се стартира - без измервателен прибор най-простия вариант е с двата светодиода. Можеш да използваш директно и извод B7 - просто добави още един светодиод и наблюдавай какво става.
Re: PIC16f876 problrm
Това съм го направил има светодиод на В7 с резистор към 0. Но няма никаква индикация че работи. Пробвах с 4 Mhz Ceramic Resonator, 20 Mhz CRYSTAL OSCILLATOR.
Re: PIC16f876 problrm
Не съм се зачитал в сорса ама като гледам си го сложил с ХТ за осцилатор, пробвай с HS, имал съм подобни главоболия с някои резонатори, а и а 20 Mhz ...
Re: PIC16f876 problrm
Здравей !
Човече повярвай ми без елементарни уреди като поне честотомер или сигнал-детектор ще се мъчиш безкрайно. Ако имаш възможност си направи поне сигнал детектор за да видиш дали поне генератора отцепва. Навремето ми побеля косата от липса на елементарни уреди !!!
Успех.
[линк]
Човече повярвай ми без елементарни уреди като поне честотомер или сигнал-детектор ще се мъчиш безкрайно. Ако имаш възможност си направи поне сигнал детектор за да видиш дали поне генератора отцепва. Навремето ми побеля косата от липса на елементарни уреди !!!
Успех.
[линк]
Re: PIC16f876 problrm
Иииии... по добре забрани прекъсванията и за всеки случаи изтрий и PR1 флага, не разчитай на дефаултни състояния, да не с еокаже че правиш операии в друга банка.
Re: PIC16f876 problеm e OK
Благодаря на всички за помоща. Проблема се оказа в WDT таймера.
Re: PIC16f876 problеm e OK
:) ....гадно... изобщо не забелязах че не си го конфигурирал .... иако не ползваш PICStart не знам дали другите могат да променят конф дума ....