Serin2 and Button command


Closed Thread
Results 1 to 9 of 9

Hybrid View

  1. #1
    Join Date
    Aug 2004
    Posts
    34

    Default Serin2 and Button command

    Dear Friends,

    Is there anybody can explain me why Serin2 and Button command do not work together?.
    I write a simple program just receive some bytes from another pic and same program was controlling one button if it is pressed or not. If pressed it was planned to make one led on or off (Toggle).
    When I start the program the serin2 command is working very well. But the button was not working. If I cancel (take out) the Serin2 command the button is working.

    I looked to the registers by one simulating program the PORT A where the button is connected was never changing.
    I tried also the SERIN command but the result was again same.
    I need really your helps.

    Thanks
    ERO

  2. #2
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    reason is simple... serin hserin serin2 will wait untill they receive at least the number of variable or character you decide to receive... once they receive, you'll be able to jump to your button statement. BUT you can use a timeout label to exit serin after xyz time and proceed to another statement and do a loop. be carefull with that. other statement must not take too much time and you time out label should not be too small too. If so, you have chance to miss or have strange result when receiving data.

    If your PIC have USART, a great way is to use the USART interrupt.
    OR using kinda flow control. One specific interrupt pin that tell to your PIC that data is knocking on your PIC's door. This pin make your program jump to your serial data reception.
    Last edited by mister_e; - 24th February 2005 at 12:50.
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  3. #3
    Join Date
    Aug 2004
    Posts
    34


    Did you find this post helpful? Yes | No

    Default

    @miter_e,

    Thank you for the reply. I was thinking that something was making busy the port and everything is clear now.
    I will try your suggestions.

    Thanks again
    ERO

  4. #4
    Join Date
    Aug 2004
    Posts
    34


    Did you find this post helpful? Yes | No

    Default

    @Mister_e,

    Yesterday, I made a lot of try in order to find a way for using the button. I have to tell you the result is still neagtive.
    First of all I used Tiemout and label and tried from 1 ms up to 250 ms. If I put 1 ms the button working very well but meanwhile serin does not receive any data. If use 2 ms. serin starts to receive datas and the button is working randomly. It means you push the button (continuously on) it is not working but if you make continuously on/off one moment the button is working.
    All other figures from 3-250 ms. does not work.

    I tried to use also RB0 interrupt for the serial input. In this way the serin is working very well but button again does not work.

    I was using 16F628 pic and it has USART and I decided to use also HSERIN it is also not working. I was so nervous and finally I stop the work and I put mechanical switch to my system.
    I gave this information just for your information.

    Thanks
    ERO

  5. #5
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    do you still have your code ?!?
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  6. #6
    Join Date
    Aug 2004
    Posts
    34


    Did you find this post helpful? Yes | No

    Default

    @Mister_e,

    I give you here the code. It is changed a lot of time but it is the last one which I used and by this program button is working a little bit for instance after 1-2 minutes it is making on and again 2-3 minutes later it making off also.

    OPTION_REG.7=1

    @ DEVICE pic16F628
    @ DEVICE pic16F628, WDT_ON
    @ DEVICE pic16F628, PWRT_ON
    @ DEVICE pic16F628, PROTECT_OFF
    @ DEVICE pic16F628, MCLR_OFF
    @ DEVICE pic16F628, INTRC_OSC_NOCLKOUT

    '---------------------------Variab..------------------------------
    AL VAR BYTE
    TOPLAM var byte
    KOMBI VAR BYTE
    GIRIS VAR PORTB.0
    ROLE VAR PORTA.1
    TUS var PORTA.6
    LED VAR PORTB.3
    YANDI VAR byte
    SONDU VAR Byte
    I VAR BYTE
    '-----------------------------MAIN ---------------------------
    CMCON=7
    CLEAR:TRISA=%01100000
    TRISB=%00000011
    PAUSE 500:AL=88:sondu=0:KOMBI=0:LOW LED

    '-------------------------------------------------------------------------------
    START:

    BUTTON TUS,0,200,5,I,1,BAK

    SerIn2 GIRIS,1646,10,ATLA,[WAIT ("ER"),AL]

    ATLA:
    IF AL=88 THEN
    IF SONDU=1 THEN ARA 'if already off then ara
    GOSUB SON 'gosub off
    GOTO START
    ENDIF

    IF AL=66 THEN
    IF YANDI=1 THEN ARA 'if already on then ara
    GOSUB YAN 'gosub on
    GOTO START
    ENDIF
    pause 1

    ARA: GOTO START
    '--------------------if button is pushed -------------------------
    BAK: IF KOMBI=1 THEN 'if already on then gosub offf
    GOSUB SON
    AL=88
    GOTO START
    ENDIF
    GOSUB YAN 'it is already off then gosub on
    AL=66
    GOTO START

    YAN: '------------------on section-------------------
    KOMBI=1
    YANDI=1:SONDU=0
    HIGH ROLE
    HIGH LED
    pause 1
    RETURN

    SON: '-----------------off section---------------------
    LOW LED:KOMBI=0
    SONDU=1:YANDI=0
    LOW ROLE
    pause 1
    RETURN

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts