I am not using external OSC I assumed it used the internal OSC. I changed a few setting settings in my code and now see it is jumping to the timesup function. So it appears that the debugin is waiting but not recieving the anything and the jumps to the timesup function.
New code below:
Code:'----------MASTER CODE------------ INCLUDE "modedefs.bas" DEFINE DEBUG_REG PORTC DEFINE DEBUG_BIT 2 DEFINE DEBUG_BAUD 2400 DEFINE DEBUG_MODE 1 bvar var byte Pause 2000 bvar = 1 Loop: DEBUG bvar Goto Loop: '----------SLAVE CODE------------ INCLUDE "modedefs.bas" DEFINE DEBUGIN_REG PORTC DEFINE DEBUGIN_BIT 2 DEFINE DEBUG_BAUD 2400 DEFINE DEBUGIN_MODE 1 bvar var byte TRISA = %001000 PORTA = %000001 Pause 2000 Loop: DEBUGIN 4000, timesup, [bvar] IF (bvar = 1) then PORTA = %000010 Pause 4000 ENDIF Pause 2000 PORTA = %000100 Pause 2000 PORTA = %100000 Pause 2000 Goto Loop: timesup: PORTA = %010000 Pause 2000 PORTA = %000001 Return
Unfortunately the internal OSC may not be accurate enough for SERIAL.
You may try setting the internal to run at 4Mhz if you have not done so. I know, the data sheet says that is the default...
and add
DEFINE OSC 4
to your code. I know, another default...but why take chances?
Your best bet will be to use an external OSC.
Dave
Always wear safety glasses while programming.
To clarify this statement, your choice of a crystal and caps, a 3 pin resonator, or an external oscillator. Or you might try a lower Baud rate with the internal to see if that works, it really depends how much and which way the intosc is off frequency. A big ALSO . . . make sure the analog stuff is turned off on those ports you are using . . . try these:
PICs are funny, they default to almost everything turned on, whereas you would think it would default everything off.Code:cmcon0 = 7 adcon0 = 0
Last edited by Archangel; - 24th June 2009 at 07:10.
If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
.
Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
.
There simply is no "Happy Spam" If you do it you will disappear from this forum.
Hi fignewt,
a few thoughts you may try...
Since RC2 could be used as Analog, its important to set it as digital ( like Joe just told you ).
The Debug/Debugin DEFINES should place the pin output/input, but is never too much to declare it anyway.
Separate the RX from the TX and connect them to the PC and use the MicroCode Studio's serial communicator to see if each one is working before connecting them together.
I believe that it will work with the internal OSC, but you can try with an external osc and see, but...
Did not see any reference on the internal OSC speed. The default is 4Mhz, but use this:
Code:osccon=%1100111 DEFINE OSC 4
A long time ago Bruce helped me with I2C comms between chips. I was having problems because it was so easy. As an example here is the slave code. I built a board with an address selector switch connected to port C so that I could place them on a Bus without having to reprogram them. The Slaves are monitoring inputs from Volt Free Contacts conected to Port B.
SteveCode:' PicBasic Pro I2C slave program - PIC16F72/PIC-X1 ' bootloader and OSC settings 'DEFINE LOADER_USED 1 ' bootloader DEFINE osc 20 INCLUDE "modedefs.bas" ' Alias pins scl VAR PORTC.3 ' I2C clock input sda VAR PORTC.4 ' I2C data input ' Define used register flags SSPIF VAR PIR1.3 ' SSP (I2C) interrupt flag BF VAR SSPSTAT.0 ' SSP (I2C) Buffer Full R_W VAR SSPSTAT.2 ' SSP (I2C) Read/Write D_A VAR SSPSTAT.5 ' SSP (I2C) Data/Address CKP VAR SSPCON.4 ' SSP (I2C) SCK Release Control SSPEN VAR SSPCON.5 ' SSP (I2C) Enable SSPOV VAR SSPCON.6 ' SSP (I2C) Receive Overflow Indicator WCOL VAR SSPCON.7 ' SSP (I2C) Write Collision Detect ' Allocate RAM result VAR BYTE ' ADC result datain VAR BYTE ' Data in readcnt VAR BYTE ' I2C read count I2Caddress VAR BYTE ' Our address ' Initialize ports and directions TRISA = %11111111 TRISB = %11111111 TRISC = %11111111 ' Initialize I2C slave mode reading inputs from hardware address settings I2Caddress=0 IF PORTC.0=0 Then I2Caddress=I2Caddress+1 IF PORTC.1=0 Then I2Caddress=I2Caddress+2 IF PORTC.2=0 Then I2Caddress=I2Caddress+4 IF PORTC.5=0 Then I2Caddress=I2Caddress+8 SSPADD = I2Caddress ' Set our address SSPCON = $36 ' Set to I2C slave with 7-bit address While 1>0 While NOT SSPIF Wend ' Check for I2C interrupt flag SSPIF = 0 ' Clear interrupt flag IF D_A = 0 Then readcnt = 0 ' Mark as first read EndIF SSPBUF = PORTB ' Get data from array CKP = 1 ' Release SCL line readcnt = readcnt + 1 ' Move along read count Wend
Bookmarks