Shop OBEX P1 Docs P2 Docs Learn Events
Stamp gets stuck — Parallax Forums

Stamp gets stuck

ArchiverArchiver Posts: 46,084
edited 2000-11-10 14:47 in General Discussion
In my BS2 application the user is given some options - continue from
where they left off or record new data. If they choose record new
data it sets an EEPROM address and starts recording the data
everything works fine. If the user chooses to continue the program
reads a specific EEPROM address where the next free EEPROM address
is. It then goes on to record the data but after two keypresses the
program just sticks - nothing at all happens. The bit of code where
it sticks works fine if the user comes through from pressing the new
command. I have had other bugs in my programs before but then the
stamp reset. I have never had one freeze up like this. If anyone
could help it would be greatly appreciated.

Andy

Comments

  • ArchiverArchiver Posts: 46,084
    edited 2000-11-10 00:19
    Is your data overwriting your program data ?, ie if your last byte of
    program data is at location 410 hex, then you cannot write data to or beyond
    this byte. You may have to limit the amount of data being written to prevent
    this occuring.
    Chris
    Original Message
    From: Andy Schwarz <phyaks@p...>
    To: <basicstamps@egroups.com>
    Sent: Friday, November 10, 2000 12:51 AM
    Subject: [noparse][[/noparse]basicstamps] Stamp gets stuck


    > In my BS2 application the user is given some options - continue from
    > where they left off or record new data. If they choose record new
    > data it sets an EEPROM address and starts recording the data
    > everything works fine. If the user chooses to continue the program
    > reads a specific EEPROM address where the next free EEPROM address
    > is. It then goes on to record the data but after two keypresses the
    > program just sticks - nothing at all happens. The bit of code where
    > it sticks works fine if the user comes through from pressing the new
    > command. I have had other bugs in my programs before but then the
    > stamp reset. I have never had one freeze up like this. If anyone
    > could help it would be greatly appreciated.
    >
    > Andy
    >
    >
    >
  • ArchiverArchiver Posts: 46,084
    edited 2000-11-10 12:26
    Sorry I did not make myself clear. The data is stored on external
    EEPROMS. The code that comes straight after the read EEPROM
    subroutine works. It is later on in the program where it sticks.

    Andy

    --- In basicstamps@egroups.com, "Chris Anderson" <fes@g...> wrote:
    > Is your data overwriting your program data ?, ie if your last byte
    of
    > program data is at location 410 hex, then you cannot write data to
    or beyond
    > this byte. You may have to limit the amount of data being written
    to prevent
    > this occuring.
    > Chris
    >
    Original Message
    > From: Andy Schwarz <phyaks@p...>
    > To: <basicstamps@egroups.com>
    > Sent: Friday, November 10, 2000 12:51 AM
    > Subject: [noparse][[/noparse]basicstamps] Stamp gets stuck
    >
    >
    > > In my BS2 application the user is given some options - continue
    from
    > > where they left off or record new data. If they choose record new
    > > data it sets an EEPROM address and starts recording the data
    > > everything works fine. If the user chooses to continue the program
    > > reads a specific EEPROM address where the next free EEPROM address
    > > is. It then goes on to record the data but after two keypresses
    the
    > > program just sticks - nothing at all happens. The bit of code
    where
    > > it sticks works fine if the user comes through from pressing the
    new
    > > command. I have had other bugs in my programs before but then the
    > > stamp reset. I have never had one freeze up like this. If anyone
    > > could help it would be greatly appreciated.
    > >
    > > Andy
    > >
    > >
    > >
  • ArchiverArchiver Posts: 46,084
    edited 2000-11-10 13:50
    At 04:51 PM 11/9/2000 +0000, you wrote:
    >In my BS2 application the user is given some options - continue from
    >where they left off or record new data. If they choose record new
    >data it sets an EEPROM address and starts recording the data
    >everything works fine. If the user chooses to continue the program
    >reads a specific EEPROM address where the next free EEPROM address
    >is. It then goes on to record the data but after two keypresses the
    >program just sticks - nothing at all happens. The bit of code where
    >it sticks works fine if the user comes through from pressing the new
    >command. I have had other bugs in my programs before but then the
    >stamp reset. I have never had one freeze up like this. If anyone
    >could help it would be greatly appreciated.
    >
    >Andy

    Hi Andy -

    What type of interface does the EEPROM use - serial or parallel, and if
    serial I2C, Microwire or what ?

    A code snippet of the offending code would be helpful too.

    Regards,

    Bruce Bates
  • ArchiverArchiver Posts: 46,084
    edited 2000-11-10 14:21
    > What type of interface does the EEPROM use - serial or parallel,
    and if
    > serial I2C, Microwire or what ?
    >
    > A code snippet of the offending code would be helpful too.
    >
    > Regards,
    >
    > Bruce Bates

    The EEPROMS are serial, not sure about the wiring because the
    electronics workshop at my university built it for me from my circuit
    diagrams. The program does not stick there though and it works if the
    user has chosen to write new data. The bit of code is here:

    CALSOIL:
    GOSUB KEYIN
    IF inA <> 6 THEN CALSOIL
    EEaddr = 3
    <---- here is where it sticks
    GOSUB GETDATA

    it never calls the GETDATA subroutine when the user has previously
    pressed continue. If the user presses the continue button (much
    earlier in the code) then this is the code that follows:

    CONTINUE:
    dirl = %01111111
    char = clrLCD
    GOSUB LCDcmd

    char = $80
    line = Line06
    GOSUB DISPLAY

    EEaddr = 0
    GOSUB EEREAD
    temp = EEdata
    GOSUB EEREAD
    temp = (temp * 256) + EEdata
    PAUSE 1500

    GOTO STARTLOG

    If the user selects the write new data then this is the code:

    NEW:
    dirl = %01111111
    char = clrLCD
    GOSUB LCDcmd

    char = $80
    line = Line07
    GOSUB DISPLAY

    temp = 11
    PAUSE 1500

    GOTO STARTLOG

    It is not the subroutines that are called that is causing the problem
    as tey are used several other times in the program and they work
    every time then.

    Andy
  • ArchiverArchiver Posts: 46,084
    edited 2000-11-10 14:47
    At 02:21 PM 11/10/2000 +0000, you wrote:

    > > What type of interface does the EEPROM use - serial or parallel,
    >and if
    > > serial I2C, Microwire or what ?
    > >
    > > A code snippet of the offending code would be helpful too.
    > >
    > > Regards,
    > >
    > > Bruce Bates
    >
    >The EEPROMS are serial, not sure about the wiring because the
    >electronics workshop at my university built it for me from my circuit
    >diagrams.

    Please get the CHIP NUMBERS and that will be indicative of the access method.

    > The program does not stick there though and it works if the
    >user has chosen to write new data.

    How can you be sure ?


    > The bit of code is here:
    >
    >CALSOIL:
    >GOSUB KEYIN
    >IF inA <> 6 THEN CALSOIL
    >EEaddr = 3

    '<--decisions about read or write need
    '<--to be made here, or before the
    actual '<--access. So too CS if required.

    > <---- here is where it sticks
    >GOSUB GETDATA
    >
    >it never calls the GETDATA subroutine when the user has previously
    >pressed continue.

    Timing problems may exist if write cycle timings are NOT honored. With READ
    it's either THERE or it's NOT.

    >If the user presses the continue button (much
    >earlier in the code) then this is the code that follows:
    >
    >CONTINUE:
    >dirl = %01111111
    >char = clrLCD
    >GOSUB LCDcmd
    >
    >char = $80
    >line = Line06
    >GOSUB DISPLAY
    >
    >EEaddr = 0
    >GOSUB EEREAD
    >temp = EEdata
    >GOSUB EEREAD
    >temp = (temp * 256) + EEdata
    >PAUSE 1500
    >
    >GOTO STARTLOG
    >
    >If the user selects the write new data then this is the code:
    >
    >NEW:
    >dirl = %01111111
    >char = clrLCD
    >GOSUB LCDcmd
    >
    >char = $80
    >line = Line07
    >GOSUB DISPLAY
    >
    >temp = 11
    >PAUSE 1500
    >
    >GOTO STARTLOG
    >
    >It is not the subroutines that are called that is causing the problem
    >as tey are used several other times in the program and they work
    >every time then.

    As I mentioned the timing may be critical, and changing the program may
    change the timing. I'd look to the accessing of the chip on outwards, or
    from the chip lines back to the Stamp. Once the interface is deemed solid,
    then go looking elsewhere. That's just MY methodology. YMMV, of course.

    >Andy

    Bruce
Sign In or Register to comment.