|
|
View previous topic :: View next topic |
Author |
Message |
CyberTron Guest
|
RS232 doesn´t seem to work?! HELP!! |
Posted: Mon May 10, 2004 3:47 am |
|
|
Hi!
I have been coding a code that is transmitting some numbers through RS232, at some random times,
Well, it doesnt´ seem to work
will anyone please say if the code should work?!?! (then at least I may lay the code behind my troubleshooting.
CODE:
Quote: |
#include <16f870.h>
#include <stdlib.h>
#include <stdio.h>
/* Config för PIC-processor*/
#fuses XT, NOPROTECT, NOWDT, HS
#use delay (clock=4000000)
#use rs232(baud=19200,parity=N,xmit=PIN_C6,rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12
//#define RAND_MAX 60
void Config(void);
void Bevakning(void);
void tick(void);
void Clockwise(void);
void Counter_Clockwise(void);
int time_to_send=30;
int phase=8, step_pos=0;
unsigned int desired_step_pos=0;
/**************************************************/
/* Funktionen main() */
/* Funktionen startar Config() och Start() */
/* funktionerna samt även en oändlig whileloop */
/* som startar funktionen knappar() som känner */
/* av knapptryck */
/**************************************************/
void main(void)
{
Config();
while(1)
{
Tick();
}
}
/*****************************************************/
/* LÄGG ALLT SOM SKA STARTAS ENDAST EN GÅNG HÄR!!!*/
/*****************************************************/
void Config(void)
{
setup_adc_ports(RA0_RA1_RA3_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
setup_spi(FALSE);
setup_psp(PSP_DISABLED);
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_4,0xc0,2);
setup_ccp1(CCP_OFF);
enable_interrupts(INT_RDA);
enable_interrupts(INT_TIMER2);
enable_interrupts(global);
srand(1);
OUTPUT_HIGH(PIN_C4);
}
/***********************************************************/
/* HÅLLER KOLL PÅ OM DET FINNS STRÖM ELLER INTE */
/***********************************************************/
#INT_TIMER2 //timer function, random times
void tick(void)
{
static int8 tick=100;
static int8 time=10;
if (tick != 0)
--tick;
else
{
tick=100;
--time;
time_to_send=rand();
if (time_to_send == time)
Bevakning();
// else
// --time_to_send;
}
time=10;
}
void Bevakning(void) //sending function
{
int16 ad=12;
int16 id=5;
int16 random;
float check=0;
float test;
//ad=read_adc(); //time_to_send =0
check=(float)((id+ad)/2);
//test=(2*(check-id));
printf("%ld:%ld:%2.2f",id, ad, check);
ad=0;
check=0;
}
/************************************************/
/* Tar emot ett värde */
/************************************************/
#INT_RDA
void ta_emot(void)
{
int16 c;
int16 d;
int8 id=5;
if(kbhit())
{
c=getc();
if(c==id)
{
d=getc();
desired_step_pos=d;
if (desired_step_pos>step_pos)
{
Clockwise(); //not done yet
}
if (desired_step_pos < step_pos)
{
Counter_Clockwise(); //not done yet
}
}
}
}
|
|
|
|
Woody
Joined: 11 Sep 2003 Posts: 83 Location: Warmenhuizen - NL
|
|
Posted: Mon May 10, 2004 4:36 am |
|
|
Hi,
I am not completely sure what your program is meant to do but looking at it there are a couple of things that I would check:
- XT _and_ HS in the #fuses setting?
- In tick() tick and time are initialized to 100 and 10 every iteration. They never get to 0 and Bevakning() is never executed.
- tick() is executed every timer2 interrupt and also every pass through main?
Paul |
|
|
ckielstra
Joined: 18 Mar 2004 Posts: 3680 Location: The Netherlands
|
|
Posted: Mon May 10, 2004 4:48 am |
|
|
Can you be a little more specific? What is not working? In your headline you say the RS-232 is not working, but how would you confirm that? I mean, your rs-232 receive interrupt is doing nothing, so how can you say it is not working???
I don't know for the CCS compiler, but what value range is Rand() returning? You compare this return value to time (allways 9), I guess this will never be true so Bevakning() is nver called. |
|
|
CyberTron Guest
|
|
Posted: Mon May 10, 2004 5:30 am |
|
|
The program should only be able to send a byte to the computer,
(the recieve part of the program is just *for fun*) |
|
|
|
|
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
|