Serin2 and Button command


Closed Thread
Results 1 to 9 of 9

Hybrid View

  1. #1
    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.

  2. #2
    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

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


    Did you find this post helpful? Yes | No

    Default

    some things can cause this. Let's look this snip

    Code:
    IF AL=88 THEN 
         IF SONDU=1 THEN ARA 'if already off then ara
         GOSUB SON 'gosub off
         GOTO START
    ENDIF
    You exit several time from a IF THEN and/or a nested IF THEN ELSE with a goto... not a good practice. You probably overflow the stack pointer.

    as i read SONDU will be 0 or 1 so
    Code:
    ReturnToStart var Bit
    
    
    Start:
    ReturnToStart = 0
    
    IF AL=88 THEN 
         IF SONDU=0 THEN 
              GOSUB SON 'gosub off
         endif
         ReturnToStart = 1
    ENDIF
    if ReturnToStart then GotoStart
    about the BUTTON statement... i'm not a fan of this statement. i'll prefer do 2-3 lines myself.

    Let's say i want to monitor a pushButon on PORTA.1
    Code:
    TRISA.1=1
    PushButton VAR PORTA.1
    start:
         If PushButton then    ' Pushbutton active 
              While PushButton ' wait untill it's release
              Wend
              Pause 50 ' debounce time
              Gosub XYZ
         endif
    Steve

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

  4. #4
    Join Date
    Aug 2004
    Posts
    34


    Did you find this post helpful? Yes | No

    Default

    Dear Steve,
    Thank you for the tricks. You right I checked the program again and I saw that there are a lot of cunfusions. It was working but as you have said the reason can be the stack due to that cınfusions.Anyhow, I changed the program to make one loop only. I taken out all the zig-zags in the program. I did not yet tried. I was busy. I will try it within two days and let you know the result.

    It would be good idea if I can check the program with one debugger. It is a pity that I have not mcs plus. By the way I would see where the program was going without touching the button command.

    Thanks again
    ERO

  5. #5
    Join Date
    Aug 2004
    Posts
    34


    Did you find this post helpful? Yes | No

    Default

    Steve,

    Yesterday evening, I tested all the possibilities again after I made a new program which is only one loop. It was checking the button first after it was passing to SERIN2 command and passing to control what was arrived by SERIN2. Anyhow I have to tell you that the serin or serin2 command does not work with any button control. I tested all the timeout figures starting from 2 ms up to 2000 ms. I am sure there is a bug in the compiler.
    I tested again the HSERIN command by making some changing on the pcb and I saw that it is working very well. Today I will change all the PCB and the program for working with HSERIN command.

    I wanted to give you again the result of my work which can be intersting for other people.
    Thanks again for your helps.

    Regards
    Ero

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