Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с активацией
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Behemoth13
Программа с самого начала:

INTOSCIO
list p=16F636 ; list directive to define processor (список директив для определения процессора)
#include <p16F636.inc> ; processor specific variable definitions (определение установок характерных тольком для данного процессора)

__CONFIG _WUREN_OFF & _WDT_OFF & _BOD_OFF & _FCMEN_OFF & _IESO_OFF & _CPD_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_CLKOUT
;_WUREN_ON бит, разрешающий пробуждение из спящего режима повходу reset
;_WDT_OFF выключение "собачьего" таймера
;_BOD_OFF функция контроля питания (при хреновом питании сбрасывает)
;_FCMEN_OFF отключение функции слежения за внешним тактовым генератором
;_IESO_OFF выключение быстрого старта (работает при использовании кварцевых генераторов)
;_CPD_OFF cod protection off
;_MCLRE_ON активация возможности сброса
;_PWRTE_ON разрешение включения питания таймера
;_WDT_ON включение Watchdog Timer
;_INTRC_OSC_NOCLKOUT внутренний генератор без вывода данных наружу
;_INTRC_OSC_CLKOUT - внутр. ген. с выводом на RA4.
;_EXTRC_OSC_CLKOUT - CLKOUT function on RA4/T1G/OSC2/CLKOUT, RC on RA5/T1CKI/OSC1/CLKIN

;******************* VARIABLE DEFINITIONS *****************************
BANK0 equ 0x20 ;опрделение начала банка памяти 0
BANK0_END equ 0x7F ;опрделение конца банка памяти 0
BANK1 equ 0xA0 ;опрделение начала банка памяти 1
BANK1_END equ 0xBF ;опрделение конца банка памяти 1

CBLOCK BANK0

; Моя прога
; Ввод переменных

status_temp
hall ;переменная для определения состояния датчика холла. состояние считывается с датчика холла с RC5
w_temp ;переменная для сохранения аккумулятора
counter ;счетчик количества промежутков по 0,25сек
state ;регистр определяющий состояние процессора в данный момент.

endc

;****************** МАКРОСЫ *******************************************
bank_0 macro ; макрос для перехода в Bank0
bcf STATUS,RP0
endm

bank_1 macro ; макрос для перехода в Bank1
bsf STATUS,RP0
endm

ORG 0x000



bsf STATUS,RP0
movlw b'00000011'
movwf OSCCON
goto init
;______________________________________________________________
;--------------------Вектор прерываний-------------------------
INT_VECTOR
;
exit_int:
swapf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt, enable interrupts

;______________________________________________________________
;-----------------------Настройка------------------------------

init
BCF STATUS,RP0
clrf CMCON1
clrf PIR1
clrf STATUS;

bsf STATUS,RP0

movlw b'00010010'
movwf OPTION_REG
movlw b'11100000'
movwf INTCON
movlw b'00011000'
movwf PIE1
movlw b'00110000'
movwf WPUDA
movlw b'00000000'
movwf TRISA
movlw b'00001011'
movwf TRISC
movlw b'00000011'
movwf OSCCON
movlw b'00100000'
movwf WDA
bcf STATUS,RP0
movlw b'00000100'
movwf CMCON0 ;+
clrf status_temp
clrf hall ;переменная для определения состояния датчика холла. состояние считывается с датчика холла с RC5
clrf w_temp ;переменная для сохранения аккумулятора
movlw 0x28 ;10 сек в аккум
MOVWF counter ;ЗАПоминание нужного значения счетчика(на паузу).
clrf state


sost
bsf PORTA,5
bcf PORTA,5
GOTO sost


Лишнее удалил и почистил (почти все коментарии и вектор прерываний)
Если кто ошибку заметит - подскажите - буду признателен.
dac
что значит не запускается?
если вообще не генерит, смотрите железо, ресет, так как от программы это не зависит, прописано в конфигурации. Посмотрите осциллогрфом что на выходе OSCO - должна быть частота деленная на 4.
А если не на той частоте работает, типа 31кгц, то последовательность конфигурации осциллятора, ее надо соблюдать.

для пик16 не знаю, давно с ними не работал, да и то были 628. для пик18ф4520 на 32мгц было так:
Код
main()
{
    GIE = 0;
    CLRWDT();
    // сконфигурирован от внутреннего RC-генератора на частоту 32МГц
    OSCCON = 0b01110000;
    OSCTUNE = 0b11000000;
...


ЗЫ pwrtimer все таки рекомендуется включать, если это не режим отладки
Behemoth13
Прошу прощения за беспокойство.
проблема была не в софте, а в харде(RESET об землю)
Спасибо, что откликнулись.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.