H Again everyone;
I made a program for 3 pic's with 3 SN75176, and they are connected in RS485 bus. The interrupts are working fine, however, it seems that the Main loop frezzes, but if enable a interrupt, serial ou external, the interrupt is executed, but the main loop frezzes again.
Hee is the code;
Can somebody take a look at my code, and see where is he mistake.Code:'********************************************************************* '* Name : RS485 + Interrupt.BAS * '* Author : Hugo Oliveira * '* Notice : Copyright (c) 2010 ProSystems * '* : All Rights Reserved * '* Date : 10-08-2010 * '* Version : 1.0 * '* Notes : * '* : * '********************************************************************* ' INCLUDE's e FUSES ' ==================================================================== @ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _CP_OFF & _DATA_CP_OFF DEFINE OSC 4 include "modedefs.bas" INCLUDE "DT_INTS-14.bas" ' CONFIGURAÇÃO DAS INTERRUPÇÕES ' ==================================================================== ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler RX_INT, _IntRx, ASM, yes INT_Handler INT_INT, _IntBt, ASM, yes endm INT_CREATE ENDASM @ INT_ENABLE RX_INT @ INT_ENABLE INT_INT ' VARIÁVEIS ' ==================================================================== DADOS var byte[4] ID var byte I VAR BYTE wsave VAR BYTE $70 SYSTEM ' REGISTOS PINOUT 1 = IN; 0 = OUT ' ==================================================================== '76543210 TRISA = %00000000 TRISB = %00000011 CMCON = 7 VRCON = 0 ' NOMES PINOUT ' ==================================================================== LED VAR PORTA.2 LED1 VAR PORTA.1 Botao var PORTB.0 TX Var PORTB.2 RX VAR PORTB.1 COM VAR PORTB.3 'SN75176 ENABLE TRANSMITE ' DEFINIÇÕES ' ==================================================================== DEFINE HSER_RCSTA 90h DEFINE HSER_TXSTA 20h 'Testado 300-20h,600-20h,1200-20h,2400-20h,4800-24h,9600-24h,14400-24h,19200-24h,28800-24h DEFINE HSER_BAUD 1200 DEFINE HSER_CLROERR 1 ' INICIO PROGRAMA ' ==================================================================== LOW COM 'DEACTIVATE SN75176 Main: high led for i = 1 to 200 pause 1 next low led for i = 1 to 200 pause 1 next Goto Main ' ROTINA INTERRUPÇÃO SÉRIE ' ==================================================================== IntRx: Hserin 20,RXfail,[wait("OK"),DEC2 ID, str DAdos\4] if ID = 01 then ARRAYREAD DAdos, 4,No_Hugo,[WAIT("Hugo")] high led1 No_Hugo: ARRAYREAD DAdos, 4,RXfail,[WAIT("LOWL")] low led1 endif RXfail: @ INT_RETURN ' ROTINA INTERRUPÇÃO POR BOTÃO ' ==================================================================== IntBt: HIGH COM 'ENABLE SN75176 pause 100 hserout ["OK00Hugo"] pause 100 LOW COM 'DEACTIVATE SN75176 @ INT_RETURN END
The code is equal do the 3 PICS, except the ID of each one and the HSerout string.
Thanks in advance.





Bookmarks