Shop OBEX P1 Docs P2 Docs Learn Events
why does AUXIO command break my real time clock? — Parallax Forums

why does AUXIO command break my real time clock?

JPLJPL Posts: 8
edited 2010-09-13 00:19 in BASIC Stamp
I am using the following program and it works just fine on the main IO pins.
I am using a BS2p40. I want to switch to the aux io pins and use the clock on pin 6 and 7 [7th and 8th pin].

Why won't AUXIO work?
' {$STAMP BS2p}
' {$PBASIC 2.5}

' An example program to test I2C-RTC Real-time Clock.
' The program is set of display the current time.
' The program is working directly with I2C-RTC module.
'
'
' NOTE: For BS2P, this program only work with firmware rev. 1.3 or grater.

#IF ($STAMP < BS2P) #THEN
  #ERROR "Program requires BS2p, BS2pe, or BS2px."
#ENDIF

'************************************************************
AUXIO
SDA  PIN    6                ' I2C SDA pin
SCL  PIN    SDA+1            ' I2C SCL pin
I2C_WR CON  $D0              ' I2C write address
I2C_RD CON  $D1              ' I2C read address

Readtime VAR Bit             ' Set/Read time flag
Second VAR Byte              ' Store second value
Minute VAR Byte              ' Store minute value
Hour VAR Byte                ' Store hour value
Day VAR Byte                 ' Store day value
Date VAR Byte                ' Store date value
Month VAR Byte               ' Store month value
Year VAR Byte                ' Store year value


MAIN:

  PAUSE 100

  ' Display menu
  DEBUG "What would you like to do?", CR
  DEBUG "(0) To set the current time.", CR
  DEBUG "(1) To display the current time.", CR, CR
  DEBUG "Enter 0 or 1: "
  ' Get input
  DEBUGIN  BIN1 Readtime

  IF Readtime THEN           ' Goto Display time subroutine
  GOSUB Displaytime
  ELSE                       ' Goto Set time subroutine
  GOSUB Settime
  ENDIF
  PAUSE 1000                 ' Delay 1 second

  GOTO MAIN

'**************************************************************
' Display time subroutine
'**************************************************************

Displaytime:
  I2COUT SDA, I2C_WR, [0]
  I2CIN SDA, I2C_RD, [Second,Minute,Hour,Day,Date,Month,Year]
  DEBUG CR, "The current time is ",HEX2 Month,"/",HEX2 Date, "/20",HEX2 Year, "    ",HEX2 Hour,":",HEX2 Minute,".",HEX2 Second,CR,CR
  RETURN

'**************************************************************
' Set time subroutine
'**************************************************************

Settime:
   DEBUG CR, "Enter hours (00-23): "
   DEBUGIN  HEX2 Hour
   Hour = Hour & %00111111      ' Disable century
   DEBUG CR, "Enter minutes (00-59): "
   DEBUGIN  HEX2 Minute
   DEBUG CR, "Enter seconds (00-59): "
   DEBUGIN  HEX2 Second
   Second = Second & %01111111  ' Enable oscillator
   DEBUG CR, "Enter day (01-07): "
   DEBUGIN  HEX2 Day
   DEBUG CR, "Enter date (01-31): "
   DEBUGIN  HEX2 Date
   DEBUG CR, "Enter month (01-12): "
   DEBUGIN  HEX2 Month
   DEBUG CR, "Enter year (00-99): "
   DEBUGIN  HEX2 Year
   I2COUT SDA, I2C_WR, [0,Second,Minute,Hour,Day,Date,Month,Year]
   DEBUG CR, CR, "The current time has been successfully set!", CR, CR

  RETURN
  RUN(0)
  END

Comments

  • Tracy AllenTracy Allen Posts: 6,662
    edited 2010-09-13 00:12
    The Stamp can't use x6,x7 with the I2C commands. I2C commands work only with dedicated pin pairs p0,p1 or p8,p9 as sda,scl on mainio, or x0,x1 or x8,x9 on auxio.
  • JPLJPL Posts: 8
    edited 2010-09-13 00:19
    I switched to auxio pin 0 and it works just fine. Thanks!
Sign In or Register to comment.