Thank you very much
Please guide me
 Should I use your procedure in my program?!

vasile در تاریخ دوشنبه ۱۹ آوریل ۲۰۲۱ ساعت ۱۵:۳۳:۳۱ (UTC+4:30) نوشت:

> Hi,
> Perhaps you would look at the library serial_hw_int_cts.jal and adapt the 
> (not very) simplified routine below at your need.
> The received data is in RCREG and we assume has one byte length.
>
> var byte your_data = 0
> procedure  _serial_receive_interrupt_handler() is
>
>    pragma interrupt
>
>    var  byte  x
>    var  bit   usart_error
>
>    if (SERIAL_RCIF == TRUE)  then        -- UART receive interrupt
>       usart_error = FALSE
>
>       if (defined(U1CON0)== TRUE) then
>          -- Newer USART type
>          if U1ERRIR_FERIF | U1ERRIR_RXFOIF | U1ERRIR_RXBKIF | 
> U1ERRIR_PERIF then
>             -- reset framing and/or overflow errors
>             U1ERRIR_FERIF  = FALSE
>             U1ERRIR_RXFOIF = FALSE
>             U1ERRIR_RXBKIF = FALSE
>             U1ERRIR_PERIF  = FALSE
>             U1FIFO_RXBE    = TRUE       -- clear receive bufer
>             usart_error    = TRUE
>          end if
>       else
>          -- Classic USART type
>          if ((RCSTA_OERR == TRUE) | (RCSTA_FERR == TRUE)) then  -- 
> frame/overr error
>             x = RCREG                              -- flush hardware buffer
>             while RCSTA_OERR == TRUE loop          -- overrun state
>                RCSTA_CREN = DISABLED               -- disable UART
>                RCSTA_CREN = ENABLED                -- re-enable UART
>                x = RCREG                           -- \  flush hardware 
> buffers
>                x = RCREG                           -- /
>             end loop                               -- until no more overrun
>             usart_error = TRUE
>          end if
>       end if
>    your_data = RCREG  -- here is your data if no communication error 
> appears
>    end if
>
> end procedure
>
> On Mon, Apr 19, 2021 at 5:16 AM majid ebru <[email protected]> wrote:
>
>>
>> Sorry
>> Can I use interrupt in Serial-Hardware?!
>> Thank you
>> ‪majid ebru‬‏ در تاریخ دوشنبه ۱۹ آوریل ۲۰۲۱ ساعت ۶:۴۳:۱۴ (UTC+4:30) نوشت:
>>
>>> Thank you very much
>>> I just want to send/receive data with interrupt.
>>> How can i do that?!
>>> I should use i2c or spi
>>> I can't find any sample about interrupt sending/receiving data in pic
>>>
>>>
>>> Kiste در تاریخ یکشنبه ۱۸ آوریل ۲۰۲۱ ساعت ۲۳:۵۵:۴۵ (UTC+4:30) نوشت:
>>>
>>>> Hi! 
>>>>
>>>> serial_software can't use interrupts. It is a "bit-bang" design which 
>>>> blocks the processor while sending data, or while waiting for incoming 
>>>> data. 
>>>>
>>>> If you're using a controller which doesn't have a usart peripheral and 
>>>> need to send or receive asynchronous serial signals without blocking, you 
>>>> would need to fire one interrupt per bit. There is no library which uses 
>>>> this approach, and it would also be of little use. One interrupt per bit 
>>>> means you can only use very low baud rates, unless your controller is a 
>>>> very fast one. And all the fast controllers do have usart peripherals. 
>>>>
>>>> Greets, 
>>>> Kiste 
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Am Sonntag, 18. April 2021, 21:15:21 MESZ hat majid ebru <
>>>> [email protected]> Folgendes geschrieben: 
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Hi 
>>>> i have two PIC16f877A. 
>>>> how can i use Interrupt for send& receive data between they?? 
>>>> i should use Serial_Software 
>>>> ------------ 
>>>>
>>>>         ;@jallib section chipdef 
>>>> -- chip setup 
>>>> include 16f877a 
>>>> pragma target clock 8_000_000                  -- xtal frequency 
>>>> pragma target OSC   hs 
>>>> pragma target WDT   disabled 
>>>> pragma target LVP   disabled 
>>>> enable_digital_io() 
>>>> include print 
>>>> include delay 
>>>> intcon_gie =  true            -- Enable interrupt generally 
>>>> -------------------------- Port A --------------------------------- 
>>>> const bit  ADC_HIGH_rESOLUTION = low 
>>>> const word ADC_rSOUrCE = 2_000 
>>>> const byte ADC_NVrEF = ADC_VrEF_POS--ADC_NO_EXT_VrEF--ADC_NO_VrEF-- and 
>>>> one Vref pin 
>>>> const byte ADC_NCHANNEL = 3                --- our 6 ADC channel 
>>>> include adc 
>>>> include math 
>>>> adc_init() 
>>>> var word ADC_Input_general_1 = 0 
>>>> var word ADC_Input_general_2 = 0 
>>>> var word ADC_Input_general_3 = 0 
>>>> -------------------------------------------- ok, now setup serial 
>>>> alias serial_sw_tx_pin is pin_C4 
>>>> alias serial_sw_rx_pin is pin_C5 
>>>> pin_C4_direction = output 
>>>> const serial_sw_baudrate = 9600 
>>>> var bit serial_sw_invert = false 
>>>> include serial_software 
>>>> serial_sw_init() 
>>>> -------------------------- Port B --------------------------------- 
>>>> alias in1 is pin_b0 
>>>> pin_b0_direction = input 
>>>> -------------------------------- 
>>>> alias in2 is pin_b1 
>>>> pin_b1_direction = input 
>>>> -------------------------------- 
>>>> alias in3 is pin_b2 
>>>> pin_b2_direction = input 
>>>> -------------------------------- 
>>>> alias in4 is pin_b3 
>>>> pin_b3_direction = input 
>>>> -------------------------------- 
>>>> alias in5 is pin_b4 
>>>> pin_b4_direction = input 
>>>> -------------------------------- 
>>>> alias in6 is pin_b5 
>>>> pin_b5_direction = input 
>>>> -------------------------- Port E --------------------------------- 
>>>> alias SS1 is pin_e0 
>>>> pin_e0_direction = output 
>>>> SS1 = 0 
>>>> -------------------------------- 
>>>> alias SS2 is pin_e1 
>>>> pin_e1_direction = output 
>>>> SS2 = 0 
>>>> -------------------------- Port D --------------------------------- 
>>>> alias Buzzer1 is pin_d1 
>>>> pin_d1_direction = output 
>>>> Buzzer1 = 0 
>>>> -------------------------------- 
>>>> alias FlashLED1 is pin_d2 
>>>> pin_d2_direction = output 
>>>> FlashLED1 = 0 
>>>> -------------------------------- 
>>>> alias Out_1 is pin_d3 
>>>> pin_d3_direction = output 
>>>> Out_1 = 0 
>>>> -------------------------------- 
>>>> alias Out_5 is pin_d4 
>>>> pin_d4_direction = output 
>>>> Out_5 = 0 
>>>> -------------------------------- 
>>>> alias Out_4 is pin_d5 
>>>> pin_d5_direction = output 
>>>> Out_4 = 0 
>>>> -------------------------------- 
>>>> alias Out_3 is pin_d6 
>>>> pin_d6_direction = output 
>>>> Out_3 = 0 
>>>> -------------------------------- 
>>>> alias Out_2 is pin_d7 
>>>> pin_d7_direction = output 
>>>> Out_2 = 0 
>>>> ------------------------------------------------------------------- 
>>>> var word n = 0 , j = 0 
>>>> ------------------------------------------------------------------- 
>>>> var bit bitOut1 = 0,  bitOut2 = 0 
>>>> ------------------------------------------------------------------- 
>>>> var word press = 0 
>>>> var word btnDelay = 500, btnDelay_1 = 0, btnDelay_2 = 0 
>>>> var word btnDelay_3 = 0, btnDelay_4 = 0 
>>>> var word buzDelay = 700, buzCount = 0 , sendByte = 0 
>>>> var byte temp1 = 0 
>>>> FlashLED1 = 1 
>>>> --------------------------------------------------- >>> interrupt >>> 
>>>> ---- 
>>>> procedure ????? is  pragma  interrupt 
>>>>     if ????? then 
>>>>         block 
>>>>             -- if recevive 10 => set Out_2  ?????????????? 
>>>>         end block 
>>>>     end if 
>>>> end procedure 
>>>> ------------------------------------------------------------------- 
>>>> forever loop 
>>>> -----------------------     Buzzer 
>>>>     if buzDelay < buzCount then 
>>>>         buzCount = 0 
>>>>     end if 
>>>>     if 0 < buzCount then block 
>>>>       Buzzer1 = 1 
>>>>         buzCount = buzCount + 1 
>>>>      end block 
>>>>     else 
>>>>       Buzzer1 = 0 
>>>>     end if 
>>>> -----------------------     btn1 
>>>>     if in1 == 1 then 
>>>>       btnDelay_1 =    btnDelay_1 + 1 
>>>>     else 
>>>>       btnDelay_1 = 0 
>>>>     end if 
>>>>     if btnDelay < btnDelay_1 then block 
>>>>         buzCount = 1 
>>>>       btnDelay_1 = 0 
>>>>       Out_1 = 0 
>>>>       -- send Data to USART ????????????????? 
>>>>      end block 
>>>>     end if 
>>>> --------------------------------------------------     
>>>>     if n < 8000 then block 
>>>>       n = n + 1 
>>>>      end block 
>>>>     else block 
>>>>         n = 0 
>>>>         FlashLED1 = ! FlashLED1 
>>>>    end block 
>>>>     end if 
>>>> ----------------------- 
>>>> end loop 
>>>> ----------------------------------------------------------- 
>>>>
>>>>
>>>> please help or guide me 
>>>>
>>>>
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "jallib" group. 
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected]. 
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/jallib/b69ef4ed-22dc-45d7-b710-f616ad6f3ed0n%40googlegroups.com.
>>>>  
>>>>
>>>>
>>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "jallib" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>>
> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/jallib/667d11e7-254f-43bc-84bf-abed4acfc813n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/jallib/667d11e7-254f-43bc-84bf-abed4acfc813n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jallib/0c4eadcc-45ed-4109-8dbe-aefc37f7ececn%40googlegroups.com.

Reply via email to