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

 
 
> помогите с PCO
swagger
сообщение Mar 25 2008, 15:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 18-01-08
Из: Moscow
Пользователь №: 34 201



привет!
собираю схему для прерывания по падению напряжения для записи данных во внутренний EEPROM на контроллере PIC16F876A. после dc/dc преобразователя через диод стоит электролит 1000uF*16, а на вход portB4 сигнал подается через делитель 10к/100к. такая схема не работает нормально.
коротим пинцетом питание на землю все работает, те происходит запись в память и чтение из нее после восстановления питания. может кто знает другой вариант решения или что здесь подправить.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
swagger
сообщение Mar 28 2008, 05:44
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 18-01-08
Из: Moscow
Пользователь №: 34 201



неработающая отличается только тем, что выход на запись идет из основного цикла, а не из подпрг обработки прерывания. Вот так не работает
Код
;================ Начало ================
;Версия программы:3.00
processor 16F876a;Используемый процессор.
include"p16f876a.inc";Заголовочный файл для микроконтроллера PIC16F876a.
    #define flagMlp rFlag,0          ;
    #define zero     STATUS,2      ;
    #define carry     STATUS,0     ;
    #define enHrd     PORTC,5          ; 0 data ready to trm, 1-data rdy to rsv

__CONFIG( _CP_OFF & _BODEN_OFF & _HS_OSC & _WRT_OFF & _WDT_OFF & _PWRTE_ON & _DEBUG_ON & _CPD_OFF & _LVP_OFF )

org 0x0000
goto Start

;********** Начало обработчика прерываний **********
org 0x0004;Вектор прерывания.

btfsc  PORTB,5 ;
bsf    itog,5  ;

btfsc  PORTB,0 ;
bsf    itog,0

btfss  PORTB,4 ; переход к подпрограмме сохранения результата  
bsf    itog,6  ;

bcf    INTCON,RBIF;
bcf    INTCON,INTF;  
retfie         ;конец обработки прерывания
;********** Конец обработчика прерываний************


;***************** Блок подпрограмм ****************


;******************Запись в память************
Write
;.......
retlw   0

;************Чтение из памяти****************
Read
;.......
retlw     0
;***************************************************
;************* Конец блока подпрограмм *************

;********************* Программа**********************
;********** Начало Инициализации процессора **********

Start
        clrwdt
        banksel INTCON
        clrf       INTCON    ; Перестраховываемся, запрещаем все прерывания.
        banksel    OPTION_REG
        movlw      b'11100000';
        movwf      OPTION_REG;используем сторожевой таймер  
        movlw      b'11111111';
        movwf      TRISA     ;
        movlw      b'11111111';
        movwf      TRISB     ;
        movlw      b'10000000';
        movwf      TRISC     ;
        
        banksel PIE1            
        clrf    PIE1
        banksel RCSTA
        clrf    RCSTA

        banksel PORTA
        clrf    PORTA
        clrf    PORTB
        clrf    PORTC
        clrf   count;
        clrf   countr;
        clrf   itog;
                        ;config the hard uart
        banksel SPBRG
        movlw    081        ;129d for asinh
        movwf    SPBRG     ;speed 9.6 k
        movlw    b'01100100'            
        movwf    TXSTA    ;TX9=1,TXEN=1,SYNC=0,BRGH=1, TXD9=0 (8,e,1) 11 bit, 9600k
        bcf        TXSTA,TXEN
        banksel RCSTA
        movlw    b'11010000'            
        movwf    RCSTA    ; SPEN=1,RX9=1,CREN=1,ADDEN=0, RX9D=0 (8,e,1) 11 bit, 9600k


;********** Конец Инициализации процессора *********
;====================================================

;====================================================
        banksel INTCON
        movlw      b'10011000';
        movwf     INTCON     ; глобальное разрешение прерываний и разрешение прерываний по RB0, RB4-RB7
        
        call     Read

        banksel    PIR1
        bcf        PIR1,RCIF

Begin
        bcf        enHrd    
        bsf        RCSTA,CREN; rcv enable
          clrwdt                          
        btfsc    PIR1,RCIF; check status registers
        call    trmStatus;
fMainPrg
        banksel    itog
        btfsc      itog,5  ;
        call    CheckStat                          
        btfsc     itog,6   ;
        goto       Write    ;
        btfsc      itog,0   ;
        goto       Null     ;
        goto      Begin     ;
        
        clrwdt
        end


насчет флага itog,6 - выставляю точку останова, и при такой записи программа туда вообще не уходит. остальные подпрг это обработка uart'a и на запись они вообще не влияют.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- swagger   помогите с PCO   Mar 25 2008, 15:15
- - Илья   Цитата(swagger @ Mar 25 2008, 23:15) може...   Mar 26 2008, 03:17
|- - swagger   да сигнал заводим до dc/dc преобразователя, кондер...   Mar 26 2008, 05:53
- - MrYuran   Чтобы сформировать крутой фронт, надо поставить тр...   Mar 26 2008, 06:04
|- - swagger   а кто-нибудь использовал мониторы питания или супе...   Mar 26 2008, 06:36
|- - Илья   Цитата(swagger @ Mar 26 2008, 14:36) а кт...   Mar 26 2008, 07:41
- - abivan   Цитата(swagger @ Mar 25 2008, 18:15) прив...   Mar 26 2008, 09:49
|- - swagger   сейчас поставил пока стабилитрон+делитель. немного...   Mar 27 2008, 05:43
|- - Илья   Цитата(swagger @ Mar 27 2008, 13:43) сейч...   Mar 27 2008, 07:29
- - swagger   ок вот текст проги. сейчас дана рабочая версмя про...   Mar 27 2008, 08:12
- - Илья   Хорошо. Только странно - зачем выкладывать рабочую...   Mar 27 2008, 09:31
|- - swagger   Цитата(Илья @ Mar 27 2008, 12:31) Хорошо....   Mar 27 2008, 11:34
|- - Илья   А по каким признакам вы делаете вывод что бит itog...   Mar 27 2008, 13:26
|- - abivan   Цитата(swagger @ Mar 27 2008, 14:34) Еще ...   Mar 28 2008, 08:37
|- - swagger   В принципе так и получается, что делать надо в под...   Mar 28 2008, 14:27


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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 11:59
Рейтинг@Mail.ru


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