|
|
View previous topic :: View next topic |
Author |
Message |
soonc
Joined: 03 Dec 2013 Posts: 215
|
Works in Debug but not in Normal mode [Solved] |
Posted: Fri Dec 20, 2013 9:11 am |
|
|
My new project uses a PIC18F67K22 with 10MHz Crystal.
Just to get the project started a wrote a simple program that
flashes an LED and Sends a string to hardware UART #2 which uses port G.
In Debug mode everything works as expected.
The LED flashes at 1 second interval and the string is transmitted at 9600 Baud.
When I disconnect the debugger (ICDU64) and compile without debugging info. then program the chip to unit stand alone the RS232 does not output anything. The LED flashes at 1 second interval.
After much ado. I changed the LED interval to flash at 2 Seconds and Erase the chip, Check that chip was erased and reprogrammed it.
The LED still flashes at 1 Second! not 2 and there is no output on the RS232 port.
So I assume I'd loaded the wrong file.
Cleared all compiler output files and recompiled. Loaded the new HEX (checking the date and time on the file) and programmed the chip.
The LED still flashes at 1 Second! not 2 and there is no output on the RS232 port
Started all over making sure I'm awake. Erased chip. Check it is erased.
Checked that compiler issues no errors or warnings. Check that the Oscillator is running at 10MHz (scope) checked that the debugger produces working code. Recompiled for normal stand alone code. Erased chip again to start fresh, Checked my sanity. had a cup of tea and after programming the code that should flash the led at 2 second interval and send the string "hello port2"
I fired up and really did expect the LED to flash at 2 second interval and the string to appear on the terminal.
The LED still flashes at 1 Second! not 2 and there is no output on the RS232 port ... even more
Now I have to stop as I'm beginning to sense that Albert is testing me... Repeating the same thing over and over and expecting different results is not working out...
Should I check myself into an institution or what ?
Code: |
#include <18F67K22.h>
#device adc=16
#FUSES NOWDT
#FUSES WDT128
#FUSES HSM
#FUSES NOPLLEN
#FUSES PUT
#FUSES NOBROWNOUT
#FUSES WDT_NOSLEEP
#fuses NOPROTECT
#fuses SOSC_DIG
#fuses NOBROWNOUT
#use delay(clock=10000000)
///////////////////////////////////////////////////////////////////////////////////
#use rs232(baud=9600,parity=N,xmit=PIN_G1,rcv=PIN_G2,bits=8,errors)
void SendMyString(char* p)
{
printf("%s",p);
}
///////////////////////////////
void main()
{
set_tris_G(0b00000100); //
// this block of code was generated by the PIC-Wizard I really don't think I need this. I think timers are disabled at power up.
setup_timer_3(T3_DISABLED | T3_DIV_BY_1);
setup_timer_4(T4_DISABLED,0,1);
setup_timer_5(T5_DISABLED | T5_DIV_BY_1);
setup_timer_6(T6_DISABLED,0,1);
setup_timer_7(T7_DISABLED | T7_DIV_BY_1);
setup_timer_8(T8_DISABLED,0,1);
setup_timer_10(T10_DISABLED,0,1);
setup_timer_12(T12_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_oscillator(OSC_NORMAL|OSC_PLL_OFF);
enable_interrupts(GLOBAL); // tried not enabling interrupts.
///////////////////////////////////
// this works in debug mode, but not in stand alone.
while(1)
{
delay_ms(2000);
output_high(PIN_B1);
sprintf(SendBuf,"Hello Port 2\r\n");
SendMyString(SendBuf);
delay_ms(2000);
output_low(PIN_B1);
}
} |
|
|
|
soonc
Joined: 03 Dec 2013 Posts: 215
|
Solution |
Posted: Fri Dec 20, 2013 11:20 am |
|
|
Thanks Richard of CCS Tech Support.
#FUSES NOWDT // Correct I did not want a WDT at this time.
#FUSES WDT_NOSLEEP // output by the Pic-Wizard project setup feature.
The WDT_NOSLEEP re-enables the WDT and causes the PIC to restart. The restart made the LED blink at the faster rate, and of course the restart prevented the RS232 from sending the string.
My mistake is using an old version V4.134 the newer Pic-Wizard does not make this mistake.
Happy at last... |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9226 Location: Greensville,Ontario
|
|
Posted: Fri Dec 20, 2013 2:09 pm |
|
|
nice you got it 'up and running'
I don't use the wizard as I'm 'old school', I did suspect a 'fuse' though.
More of them than instructions !!
once i got my 46k22 running right, I saved the fuses as an include file ( 46k22.fuz) , so I have a KNOWN good setup and it reduces typos on future projects.
cheers
jay |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|