mackrackit
- 22nd June 2011, 15:14
In another thread (http://www.picbasic.co.uk/forum/showthread.php?t=14938) dhouston is working on an Amicus18 shield for ConnectOne modules. These shields have a serial EEPROM on board to take some of the code load away from the MCU.
For comparison a simple email routine is looked at. The code size went from 3,812 bytes used with out the EEPROM to 1,462 bytes used with an external EEPROM. The EEPROM needs to be loaded with data beforehand.
The code displayed below was tested using an 18F6680 (not an Amicus) and a 24FC1025 EEPROM. This is my typical test bed.
This is the code without an EEPROM, You may think it could be tightened up by placing the
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
in a sub routine. That line needs to be directly after the "AT+i" command, even a gosub will miss the "I/OK".
' 18F6680
'BASIC CONNECT_ONE EMAIL
'Program Memory Bytes Used: 3812
'<FL_PIC18F6680>'
DEFINE OSC 20
@ __CONFIG _CONFIG1H, _OSC_HS_1H
@ __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
@ __CONFIG _CONFIG4L, _LVP_OFF_4L
BAUD CON 16572 '4800 INVERTED, PC
'BAUD CON 16390 '38400 INVERTED, PC
TX VAR PORTB.0
RX VAR PORTB.3
BOOT:
SEROUT2 TX,BAUD,[ "AT+I",$d ,$a]
SEROUT2 TX,BAUD,["AT+iWWW",$d,$a]
SERIN2 RX,BAUD,1000,BOOT,[WAIT("I/(")]
EMAIL_SET:
SEROUT2 TX,BAUD,["AT+iSBJ:MAC_ETHERNET",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iTOA:[email protected]",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+ito:MACKRACKIT",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iREA:[email protected]",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iFRM:MAC_ETH",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iSMTP:mail.XYZ.com",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iSMA=1",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iSMP:PASSWORD",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iSMU:[email protected]",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
EMAIL_SEND:
SEROUT2 TX,BAUD,["AT+iEMA:",$d,$a]
SEROUT2 TX,BAUD,["HI, THIS IS FROM MAC_ETH",$d,$a]
SEROUT2 TX,BAUD,["SENT EVERY HOUR.",$d,$a]
SEROUT2 TX,BAUD,["THE TEMPERATURE IS.",$d,$a]
SEROUT2 TX,BAUD,["XX F IN THE SHOP.",$d,$a]
SEROUT2 TX,BAUD,["GO TO:",$d,$a]
SEROUT2 TX,BAUD,["http://mackrackit.com/mac/ichip/ichipw.py",$d,$a]
SEROUT2 TX,BAUD,["FOR A ONE MINUTE UPDATE.",$d,$a]
SEROUT2 TX,BAUD,[$d,$a,".",$d,$a]
SERIN2 RX ,BAUD,60000,BOOT,[WAIT("I/ONLINE")]
PAUSE 1000
GOTO BOOT
Now for the EEPROM loading code. This loads the EEPROM with the "AT+i" strings.
' 18F6680 24FC1025
'LOAD EXTERNAL EEPROM WITH COMMAND STRINGS
'Program Memory Bytes Used: 3564
'<FL_PIC18F6680>'
DEFINE OSC 20
@ __CONFIG _CONFIG1H, _OSC_HS_1H
@ __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
@ __CONFIG _CONFIG4L, _LVP_OFF_4L
DPIN VAR PORTB.2 'I2C DATA PIN
CPIN VAR PORTB.1 'I2C CLOCK PIN
ADDR VAR WORD
B0 VAR BYTE
B1 VAR BYTE
DATO VAR BYTE
TEXT_ VAR BYTE[45]
'BUILD SOME TEXT
'FOR EMAIL_SET
'ES_1 : ADDR = 1 : DATO = 22
FOR B0 = 0 TO 21
LOOKUP B0,["AT+iSBJ:MAC_ETHERNET",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 1
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\22]
PAUSE 100
'ES_2 : ADDR = 23 : DATO = 21
FOR B0 = 0 TO 20
LOOKUP B0,["AT+iTOA:[email protected]",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 23
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\21]
PAUSE 100
'ES_3 : ADDR = 43 : DATO = 19
FOR B0 = 0 TO 18
LOOKUP B0,["AT+ito:MACKRACKIT",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 44
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\19]
PAUSE 100
'ES_4 : ADDR = 65 : DATO = 21
FOR B0 = 0 TO 20
LOOKUP B0,["AT+iREA:[email protected]",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 65
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\21]
PAUSE 100
'ES_5 : ADDR = 86 : DATO = 17
FOR B0 = 0 TO 16
LOOKUP B0,["AT+iFRM:MAC_ETH",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 86
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\17]
PAUSE 100
'ES_6 : ADDR = 103 : DATO = 23
FOR B0 = 0 TO 22
LOOKUP B0,["AT+iSMTP:mail.XYZ.com",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 103
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\23]
PAUSE 100
'ES_7 : ADDR = 128 : DATO = 11
FOR B0 = 0 TO 10
LOOKUP B0,["AT+iSMA=1",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 128
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\11]
PAUSE 100
'ES_8 : ADDR = 139 : DATO = 18
FOR B0 = 0 TO 17
LOOKUP B0,["AT+iSMP:PASSWORD",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 139
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\18]
PAUSE 100
'ES_9 : ADDR = 157 : DATO = 21
FOR B0 = 0 TO 20
LOOKUP B0,["AT+iSMU:[email protected]",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 157
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\21]
PAUSE 100
'#####################################
'BUILD SOME TEXT
'FOR EMAIL_SEND
'ESX_1 : ADDR = 178 : DATO = 10
FOR B0 = 0 TO 9
LOOKUP B0,["AT+iEMA:",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 178
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\10]
PAUSE 100
'ESX_2 : ADDR = 188 : DATO = 26
FOR B0 = 0 TO 25
LOOKUP B0,["HI, THIS IS FROM MAC_ETH",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 188
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\26]
PAUSE 100
'ESX_3 : ADDR = 214 : DATO = 18
FOR B0 = 0 TO 17
LOOKUP B0,["SENT EVERY HOUR.",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 214
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\18]
PAUSE 100
'ESX_4 : ADDR = 232 : DATO = 21
FOR B0 = 0 TO 20
LOOKUP B0,["THE TEMPERATURE IS.",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 232
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\21]
PAUSE 100
'ESX_5 : ADDR = 260 : DATO = 19
FOR B0 = 0 TO 18
LOOKUP B0,["XX F IN THE SHOP.",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 260
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\19]
PAUSE 100
'ESX_6 : ADDR = 279 : DATO = 8
FOR B0 = 0 TO 7
LOOKUP B0,["GO TO:",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 279
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\8]
PAUSE 100
'ESX_7 : ADDR = 287 : DATO = 43
FOR B0 = 0 TO 42
LOOKUP B0,["http://mackrackit.com/mac/ichip/ichipw.py",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 287
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\43]
PAUSE 100
'ESX_8 : ADDR = 330 : DATO = 26
FOR B0 = 0 TO 25
LOOKUP B0,["FOR A ONE MINUTE UPDATE.",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 330
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\26]
PAUSE 100
'ESX_9 : ADDR = 356 : DATO = 5
FOR B0 = 0 TO 4
LOOKUP B0,[$d,$a,".",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 356
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\5]
PAUSE 100
END
The code to work the ConnectOne module with the aid of an external EEPROM.
' 18F6680 24FC1025
'EEPROM DRIVEN CONNECT_ONE EMAIL
'Program Memory Bytes Used: 1462
'<FL_PIC18F6680>'
DEFINE OSC 20
@ __CONFIG _CONFIG1H, _OSC_HS_1H
@ __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
@ __CONFIG _CONFIG4L, _LVP_OFF_4L
BAUD CON 16572 '4800 INVERTED, PC
' BAUD CON 16390 '38400 INVERTED, PC
TX VAR PORTB.0
RX VAR PORTB.3
DPIN VAR PORTB.2 'I2C DATA PIN
CPIN VAR PORTB.1 'I2C CLOCK PIN
ADDR VAR WORD
DATI VAR BYTE[45]
DATO VAR WORD
B0 VAR BYTE
B1 VAR BYTE
TEXT_ VAR BYTE[45]
BOOT:
SEROUT2 TX,BAUD,[$d,$a]
SEROUT2 TX,BAUD,[$d,$a]
SEROUT2 TX,BAUD,[ "AT+I",$d ,$a]
SEROUT2 TX,BAUD,["AT+iWWW",$d,$a]
SERIN2 RX,BAUD,1000,BOOT,[WAIT("I/(")]
EMAIL_SET:
ES_1 : ADDR = 1 : DATO = 22
GOSUB TEXT_1
ES_2 : ADDR = 23 : DATO = 21
GOSUB TEXT_1
ES_3 : ADDR = 44 : DATO = 19
GOSUB TEXT_1
ES_4 : ADDR = 65 : DATO = 21
GOSUB TEXT_1
ES_5 : ADDR = 86 : DATO = 17
GOSUB TEXT_1
ES_6 : ADDR = 103 : DATO = 23
GOSUB TEXT_1
ES_7 : ADDR = 128 : DATO = 11
GOSUB TEXT_1
ES_8 : ADDR = 139 : DATO = 18
GOSUB TEXT_1
ES_9 : ADDR = 157 : DATO = 21
GOSUB TEXT_1
EMAIL_SEND:
ESX_1 : ADDR = 178 : DATO = 10
GOSUB TEXT_2
ESX_2 : ADDR = 188 : DATO = 26
GOSUB TEXT_2
ESX_3 : ADDR = 214 : DATO = 18
GOSUB TEXT_2
ESX_4 : ADDR = 232 : DATO = 21
GOSUB TEXT_2
ESX_5 : ADDR = 260 : DATO = 19
GOSUB TEXT_2
ESX_6 : ADDR = 279 : DATO = 8
GOSUB TEXT_2
ESX_7 : ADDR = 287 : DATO = 43
GOSUB TEXT_2
ESX_8 : ADDR = 330 : DATO = 26
GOSUB TEXT_2
ESX_9 : ADDR = 356 : DATO = 5
GOSUB TEXT_2
GOTO BOOT
TEXT_1:
I2CREAD DPIN,CPIN,$A0,ADDR,[STR DATI\DATO]
PAUSE 10
SEROUT2 TX, BAUD, [STR DATI\DATO]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
PAUSE 1000
RETURN
TEXT_2:
I2CREAD DPIN,CPIN,$A0,ADDR,[STR DATI\DATO]
PAUSE 10
SEROUT2 TX, BAUD, [STR DATI\DATO]
PAUSE 1000
RETURN
For comparison a simple email routine is looked at. The code size went from 3,812 bytes used with out the EEPROM to 1,462 bytes used with an external EEPROM. The EEPROM needs to be loaded with data beforehand.
The code displayed below was tested using an 18F6680 (not an Amicus) and a 24FC1025 EEPROM. This is my typical test bed.
This is the code without an EEPROM, You may think it could be tightened up by placing the
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
in a sub routine. That line needs to be directly after the "AT+i" command, even a gosub will miss the "I/OK".
' 18F6680
'BASIC CONNECT_ONE EMAIL
'Program Memory Bytes Used: 3812
'<FL_PIC18F6680>'
DEFINE OSC 20
@ __CONFIG _CONFIG1H, _OSC_HS_1H
@ __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
@ __CONFIG _CONFIG4L, _LVP_OFF_4L
BAUD CON 16572 '4800 INVERTED, PC
'BAUD CON 16390 '38400 INVERTED, PC
TX VAR PORTB.0
RX VAR PORTB.3
BOOT:
SEROUT2 TX,BAUD,[ "AT+I",$d ,$a]
SEROUT2 TX,BAUD,["AT+iWWW",$d,$a]
SERIN2 RX,BAUD,1000,BOOT,[WAIT("I/(")]
EMAIL_SET:
SEROUT2 TX,BAUD,["AT+iSBJ:MAC_ETHERNET",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iTOA:[email protected]",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+ito:MACKRACKIT",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iREA:[email protected]",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iFRM:MAC_ETH",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iSMTP:mail.XYZ.com",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iSMA=1",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iSMP:PASSWORD",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
SEROUT2 TX,BAUD,["AT+iSMU:[email protected]",$d,$a]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
EMAIL_SEND:
SEROUT2 TX,BAUD,["AT+iEMA:",$d,$a]
SEROUT2 TX,BAUD,["HI, THIS IS FROM MAC_ETH",$d,$a]
SEROUT2 TX,BAUD,["SENT EVERY HOUR.",$d,$a]
SEROUT2 TX,BAUD,["THE TEMPERATURE IS.",$d,$a]
SEROUT2 TX,BAUD,["XX F IN THE SHOP.",$d,$a]
SEROUT2 TX,BAUD,["GO TO:",$d,$a]
SEROUT2 TX,BAUD,["http://mackrackit.com/mac/ichip/ichipw.py",$d,$a]
SEROUT2 TX,BAUD,["FOR A ONE MINUTE UPDATE.",$d,$a]
SEROUT2 TX,BAUD,[$d,$a,".",$d,$a]
SERIN2 RX ,BAUD,60000,BOOT,[WAIT("I/ONLINE")]
PAUSE 1000
GOTO BOOT
Now for the EEPROM loading code. This loads the EEPROM with the "AT+i" strings.
' 18F6680 24FC1025
'LOAD EXTERNAL EEPROM WITH COMMAND STRINGS
'Program Memory Bytes Used: 3564
'<FL_PIC18F6680>'
DEFINE OSC 20
@ __CONFIG _CONFIG1H, _OSC_HS_1H
@ __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
@ __CONFIG _CONFIG4L, _LVP_OFF_4L
DPIN VAR PORTB.2 'I2C DATA PIN
CPIN VAR PORTB.1 'I2C CLOCK PIN
ADDR VAR WORD
B0 VAR BYTE
B1 VAR BYTE
DATO VAR BYTE
TEXT_ VAR BYTE[45]
'BUILD SOME TEXT
'FOR EMAIL_SET
'ES_1 : ADDR = 1 : DATO = 22
FOR B0 = 0 TO 21
LOOKUP B0,["AT+iSBJ:MAC_ETHERNET",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 1
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\22]
PAUSE 100
'ES_2 : ADDR = 23 : DATO = 21
FOR B0 = 0 TO 20
LOOKUP B0,["AT+iTOA:[email protected]",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 23
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\21]
PAUSE 100
'ES_3 : ADDR = 43 : DATO = 19
FOR B0 = 0 TO 18
LOOKUP B0,["AT+ito:MACKRACKIT",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 44
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\19]
PAUSE 100
'ES_4 : ADDR = 65 : DATO = 21
FOR B0 = 0 TO 20
LOOKUP B0,["AT+iREA:[email protected]",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 65
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\21]
PAUSE 100
'ES_5 : ADDR = 86 : DATO = 17
FOR B0 = 0 TO 16
LOOKUP B0,["AT+iFRM:MAC_ETH",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 86
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\17]
PAUSE 100
'ES_6 : ADDR = 103 : DATO = 23
FOR B0 = 0 TO 22
LOOKUP B0,["AT+iSMTP:mail.XYZ.com",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 103
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\23]
PAUSE 100
'ES_7 : ADDR = 128 : DATO = 11
FOR B0 = 0 TO 10
LOOKUP B0,["AT+iSMA=1",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 128
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\11]
PAUSE 100
'ES_8 : ADDR = 139 : DATO = 18
FOR B0 = 0 TO 17
LOOKUP B0,["AT+iSMP:PASSWORD",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 139
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\18]
PAUSE 100
'ES_9 : ADDR = 157 : DATO = 21
FOR B0 = 0 TO 20
LOOKUP B0,["AT+iSMU:[email protected]",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 157
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\21]
PAUSE 100
'#####################################
'BUILD SOME TEXT
'FOR EMAIL_SEND
'ESX_1 : ADDR = 178 : DATO = 10
FOR B0 = 0 TO 9
LOOKUP B0,["AT+iEMA:",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 178
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\10]
PAUSE 100
'ESX_2 : ADDR = 188 : DATO = 26
FOR B0 = 0 TO 25
LOOKUP B0,["HI, THIS IS FROM MAC_ETH",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 188
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\26]
PAUSE 100
'ESX_3 : ADDR = 214 : DATO = 18
FOR B0 = 0 TO 17
LOOKUP B0,["SENT EVERY HOUR.",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 214
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\18]
PAUSE 100
'ESX_4 : ADDR = 232 : DATO = 21
FOR B0 = 0 TO 20
LOOKUP B0,["THE TEMPERATURE IS.",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 232
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\21]
PAUSE 100
'ESX_5 : ADDR = 260 : DATO = 19
FOR B0 = 0 TO 18
LOOKUP B0,["XX F IN THE SHOP.",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 260
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\19]
PAUSE 100
'ESX_6 : ADDR = 279 : DATO = 8
FOR B0 = 0 TO 7
LOOKUP B0,["GO TO:",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 279
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\8]
PAUSE 100
'ESX_7 : ADDR = 287 : DATO = 43
FOR B0 = 0 TO 42
LOOKUP B0,["http://mackrackit.com/mac/ichip/ichipw.py",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 287
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\43]
PAUSE 100
'ESX_8 : ADDR = 330 : DATO = 26
FOR B0 = 0 TO 25
LOOKUP B0,["FOR A ONE MINUTE UPDATE.",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 330
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\26]
PAUSE 100
'ESX_9 : ADDR = 356 : DATO = 5
FOR B0 = 0 TO 4
LOOKUP B0,[$d,$a,".",$d,$a],B1
TEXT_(B0) = B1
NEXT B0
ADDR = 356
I2CWRITE DPIN,CPIN,$A0,ADDR,[STR TEXT_\5]
PAUSE 100
END
The code to work the ConnectOne module with the aid of an external EEPROM.
' 18F6680 24FC1025
'EEPROM DRIVEN CONNECT_ONE EMAIL
'Program Memory Bytes Used: 1462
'<FL_PIC18F6680>'
DEFINE OSC 20
@ __CONFIG _CONFIG1H, _OSC_HS_1H
@ __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
@ __CONFIG _CONFIG4L, _LVP_OFF_4L
BAUD CON 16572 '4800 INVERTED, PC
' BAUD CON 16390 '38400 INVERTED, PC
TX VAR PORTB.0
RX VAR PORTB.3
DPIN VAR PORTB.2 'I2C DATA PIN
CPIN VAR PORTB.1 'I2C CLOCK PIN
ADDR VAR WORD
DATI VAR BYTE[45]
DATO VAR WORD
B0 VAR BYTE
B1 VAR BYTE
TEXT_ VAR BYTE[45]
BOOT:
SEROUT2 TX,BAUD,[$d,$a]
SEROUT2 TX,BAUD,[$d,$a]
SEROUT2 TX,BAUD,[ "AT+I",$d ,$a]
SEROUT2 TX,BAUD,["AT+iWWW",$d,$a]
SERIN2 RX,BAUD,1000,BOOT,[WAIT("I/(")]
EMAIL_SET:
ES_1 : ADDR = 1 : DATO = 22
GOSUB TEXT_1
ES_2 : ADDR = 23 : DATO = 21
GOSUB TEXT_1
ES_3 : ADDR = 44 : DATO = 19
GOSUB TEXT_1
ES_4 : ADDR = 65 : DATO = 21
GOSUB TEXT_1
ES_5 : ADDR = 86 : DATO = 17
GOSUB TEXT_1
ES_6 : ADDR = 103 : DATO = 23
GOSUB TEXT_1
ES_7 : ADDR = 128 : DATO = 11
GOSUB TEXT_1
ES_8 : ADDR = 139 : DATO = 18
GOSUB TEXT_1
ES_9 : ADDR = 157 : DATO = 21
GOSUB TEXT_1
EMAIL_SEND:
ESX_1 : ADDR = 178 : DATO = 10
GOSUB TEXT_2
ESX_2 : ADDR = 188 : DATO = 26
GOSUB TEXT_2
ESX_3 : ADDR = 214 : DATO = 18
GOSUB TEXT_2
ESX_4 : ADDR = 232 : DATO = 21
GOSUB TEXT_2
ESX_5 : ADDR = 260 : DATO = 19
GOSUB TEXT_2
ESX_6 : ADDR = 279 : DATO = 8
GOSUB TEXT_2
ESX_7 : ADDR = 287 : DATO = 43
GOSUB TEXT_2
ESX_8 : ADDR = 330 : DATO = 26
GOSUB TEXT_2
ESX_9 : ADDR = 356 : DATO = 5
GOSUB TEXT_2
GOTO BOOT
TEXT_1:
I2CREAD DPIN,CPIN,$A0,ADDR,[STR DATI\DATO]
PAUSE 10
SEROUT2 TX, BAUD, [STR DATI\DATO]
SERIN2 RX ,BAUD,2500,EMAIL_SET,[WAIT("I/OK")]
PAUSE 1000
RETURN
TEXT_2:
I2CREAD DPIN,CPIN,$A0,ADDR,[STR DATI\DATO]
PAUSE 10
SEROUT2 TX, BAUD, [STR DATI\DATO]
PAUSE 1000
RETURN