You pause 500 after transmit, but pause 1000 after reception?
Robert
You pause 500 after transmit, but pause 1000 after reception?
Robert
Besides what Robert noted, you have to setup port A.3 as high before transmitting. RS232 needs a standard state before tx/rx.
So, I suppose T9600 made the difference?
IoannisCode:Include "modedefs.bas" DEFINE OSC 10 high porta.3 TRISA = %00000000 CMCON=7 pause 2000 TEST: serout PortA.3, T9600,["SSSSSSSBOB"] PAUSE 500 GOTO TEST END
Hi all, I'm trying the true mode, but my loopback setup is still not working.
The communications not working. The led blinks when the remote transceiver is not powered, as it should. When its powered the program should branch to a solid on led , but no it keeps blinking. Any ideas?Code:'************************************************************************** '*Program to test XRF radio communications via loopback method * '*Uses a pushbutton switch on porta pin 4 * '*Target processor is PIC 12f1822 * '*207 program words, revised 05/07/2013 * '*Program by Dick Ivers * '*All rights reserved * '************************************************************************** 'set 12f1822 configurat1on #CONFIG __config _CONFIG1, _FOSC_INTOSC & _MCLRE_OFF & _CLKOUTEN_OFF & _WDTE_ON __config _CONFIG2, _PLLEN_OFF & _LVP_OFF #endconfig 'set registers OSCCON = %01111000 '16 mhz osc OSCTUNE = 0 'factory calibration ANSELA = 0 'all digital inputs OPTION_REG.7 = 0 'global pullups enabled WPUA = %010000 'porta pin 4 weak pullup enabled CM1CON0.7 = 0 'comparator disabled TRISA = %011110 'porta.0 & porta.5 are outputs, all others input while OSCSTAT.0 = 0 'wait for stable freq. wend define OSC 16 '16 mhz oscillator 'Define debug parameters DEFINE DEBUG_REGG PORTA 'set debug port to porta DEFINE DEBUG_BIT 0 'use pin ra0 of porta for debug DEFINE DEBUG_BAUD 9600 'set baud rate to 9600 DEFINE DEBUG_MODE 0 'communicate in true mode DEFINE DEBUGIN_REGG PORTA 'set debug port to porta DEFINE DEBUGIN_BIT 1 'use pin ra1 of porta for debugin DEFINE DEBUGIN_BAUD 9600 'set baud rate to 9600 DEFINE DEBUGIN_MODE 0 'communicate in true mode i var byte char var byte For i = 1 to 3 porta.5 = 0 'led on pause 333 porta.5 = 1 'led off pause 333 next asleep: nap 2 'delay 4 ms if porta.4 = 1 then asleep DT: debug 55 debugin 100,blink,[char] if char = 55 then porta.5 = 0 'led on solid goto halt endif blink: porta.5 = 0 'led pause 500 porta.5 = 1 'led off pause 500 if porta.4 =1 then asleep goto DT halt: stop 'led stays on
Dick, I would suggest at first to test your code with a PC and see if you have the PIC working. For this you will need a MAX232 or similar to invert and drive the serial port.
If this test passes please post your results. But I have a feeling that it won't.
Ioannis
P.S. Also try with capitals in define OSC 16. As this: DEFINE OSC 16. Just in case...
Last edited by Ioannis; - 8th May 2013 at 08:22.
Ioannis,
PIC to PC is working. Code and setup as follows:
The PIC echos back to the PC correctly. Double characters display as expected. Note that the transmission mode is inverted. I believe this mode is standard for RS232 communications. Also, I am using a null modem cable (Tx and Rx reversed ). I believe this is also standard. Haven't tried the radio link yet with this set up.. Any suggestions?Code:'************************************************************************** '*Program to test PIC to PC communications via loopback method * '*Target processor is PIC 12f1822 * '*142 program words, revised 05/08/2013 * '*Program by Dick Ivers * '*All rights reserved * '************************************************************************** 'set 12f1822 configurat1on #CONFIG __config _CONFIG1, _FOSC_INTOSC & _MCLRE_OFF & _CLKOUTEN_OFF & _WDTE_ON __config _CONFIG2, _PLLEN_OFF & _LVP_OFF #endconfig 'set registers OSCCON = %01111000 '16 mhz osc OSCTUNE = 0 'factory calibration ANSELA = 0 'all digital inputs OPTION_REG.7 = 0 'global pullups enabled WPUA = %010010 'porta pin 1 and pin 4 weak pullups enabled CM1CON0.7 = 0 'comparator disabled TRISA = %011110 'porta.0 & porta.5 are outputs, all others input while OSCSTAT.0 = 0 'wait for stable freq. wend define OSC 16 '16 mhz oscillator 'Define debug parameters DEFINE DEBUG_REGG PORTA 'set debug port to porta DEFINE DEBUG_BIT 0 'use pin ra0 of porta for debug DEFINE DEBUG_BAUD 9600 'set baud rate to 9600 DEFINE DEBUG_MODE 1 'communicate in inverted mode DEFINE DEBUGIN_REGG PORTA 'set debug port to porta DEFINE DEBUGIN_BIT 1 'use pin ra1 of porta for debugin DEFINE DEBUGIN_BAUD 9600 'set baud rate to 9600 DEFINE DEBUGIN_MODE 1 'communicate in inverted mode i var byte char var byte For i = 1 to 3 porta.5 = 0 'led on pause 333 porta.5 = 1 'led off pause 333 next 'user input with VT100 terminal re: debugin [char] debug char goto re
Dick
p.s. The DEFINES are capitals in the actual code. Not all show this way with the pasted code.
Last edited by Dick Ivers; - 8th May 2013 at 18:10.
I'd type over the DEFINES in capitals. If you copy & paste from your code and they come out in lower case here, then it seems like your IDE is just displaying to you in upper case. They are still lower as far as PBP is concerned.
Robert
Since PIC to PC is working then I have three thoughts on this.
1. one or both modules are not working. You may try here to change the modules between them.
2. Settings are not the defaults
3. The feeds to the modules are reversed (tx to rx etc).
The modules need true mode and not the inverse you just tested with the PC. But I suppose you will change your code for this test.
Wish you luck, cannot see anything else now...
Ioannis
Bookmarks