ayuda por favor!!! con modulo usart
4 participantes
Página 1 de 1.
ayuda por favor!!! con modulo usart
hola a todos estoy tratando de transmitir algo y noc cual es el problema, me compila bien pero cuando lo pruebo con el proteus me trnsmite todo cero, de esta manera: 00 00 00 00 esto es lo que muestra la terminal virtual del proteus. estoy usando la libreria de USART (proporcionada por arcachofo), la cual consegui de aca:
https://pic-linux.forosactivos.net/t36-sdcc-driver-para-usart-pic16?highlight=USART
el codigo que tengo es el siguiente:
#include
#define Br 9600
#define Tx TRISC6
#define Rx TRISC7
#define FREQ 4000
#include
/* ----------------------------------------------------------------------- */
/* Configuration bits: adapt to your setup and needs */
typedef unsigned int word;
word at 0x2007 CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF & _CP_OFF;
void delay_ms(long ms)
{
long i;
while (ms--)
for (i=0; i < 300; i++);
}
void main()
{ /* << insert code >> */
int i=0;
char nombre[10];
init_serie();
nombre[0]='m';
nombre[1]='a';
nombre[2]='r';
nombre[3]='t';
nombre[4]='i';
nombre[5]='n';
nombre[6]='\0';
while(1)
{
for(i=0;i<5;i++);
{
putchar(nombre[i]);
delay_ms(300);
}
}
}
https://pic-linux.forosactivos.net/t36-sdcc-driver-para-usart-pic16?highlight=USART
el codigo que tengo es el siguiente:
#include
#define Br 9600
#define Tx TRISC6
#define Rx TRISC7
#define FREQ 4000
#include
/* ----------------------------------------------------------------------- */
/* Configuration bits: adapt to your setup and needs */
typedef unsigned int word;
word at 0x2007 CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF & _CP_OFF;
void delay_ms(long ms)
{
long i;
while (ms--)
for (i=0; i < 300; i++);
}
void main()
{ /* << insert code >> */
int i=0;
char nombre[10];
init_serie();
nombre[0]='m';
nombre[1]='a';
nombre[2]='r';
nombre[3]='t';
nombre[4]='i';
nombre[5]='n';
nombre[6]='\0';
while(1)
{
for(i=0;i<5;i++);
{
putchar(nombre[i]);
delay_ms(300);
}
}
}
Pincho_86- Participante
- Mensajes : 12
Fecha de inscripción : 08/01/2011
Re: ayuda por favor!!! con modulo usart
Hola Pincho..
He estado revisando tu codigo y lo hice funcionar pero con un pic16f876 , es basicamente lo mismo a lo que quieres tu.
Encontre dos problemas el primero es en la libreria (aunque deberia funcionar en teoria, quiza sea un problema de sdcc.)
Revisa la libreria USART.h y ve a esta seccion .
El otro problema es con tu codigo en la seccion
dejalo asi
Ademas si quieres manejar cadenas te recomiendo que uses la funcion print
Ejemplo
Espero que te sirva y nos cuentes tus experiencias, SDCC es un compilador bastante bueno aunque aun esta en desarollo, yo por lo menos me he divertido bastante, aunque aveces da algunos problemas, te recomiendo bajar la ultima version desde la pagina de sdcc.
Saludos
RiSanti
He estado revisando tu codigo y lo hice funcionar pero con un pic16f876 , es basicamente lo mismo a lo que quieres tu.
Encontre dos problemas el primero es en la libreria (aunque deberia funcionar en teoria, quiza sea un problema de sdcc.)
Revisa la libreria USART.h y ve a esta seccion .
- Código:
#define x (FREQ * 1000 / Br - 16) / 16 // calculo para SPBRG
- Código:
#define x 25 // valor para 9600 para SPBRG
El otro problema es con tu codigo en la seccion
- Código:
for(i=0;i<5;i++);
dejalo asi
- Código:
for(i=0;i<5;i++)
{
putchar(nombre[i]);
delay_ms(300);
}
Ademas si quieres manejar cadenas te recomiendo que uses la funcion print
Ejemplo
- Código:
print("Martin");
Espero que te sirva y nos cuentes tus experiencias, SDCC es un compilador bastante bueno aunque aun esta en desarollo, yo por lo menos me he divertido bastante, aunque aveces da algunos problemas, te recomiendo bajar la ultima version desde la pagina de sdcc.
Saludos
RiSanti
GRACIAS RISANTI!!!!!!
Gracias risanti sos muy gorso!!! hice lo que me dijiste y me funciono perfecto, lo unico que no entiendo es porque cuando lo hago en el proteus en la terminal lo unico que se ve es 00 00 00 y asi sucesivamente, pero si voy enviando la cadena a un display si me muestra los valores.
tambien aprobecho para preguntarte algo. el SDCC no acepta funciones de para menejar cadenas??? como por ejemplo "strcpy". muchas gracias por tu disposicion para responder y ayudar. saludos
tambien aprobecho para preguntarte algo. el SDCC no acepta funciones de para menejar cadenas??? como por ejemplo "strcpy". muchas gracias por tu disposicion para responder y ayudar. saludos
Pincho_86- Participante
- Mensajes : 12
Fecha de inscripción : 08/01/2011
Re: ayuda por favor!!! con modulo usart
Hola bienvenido!,
Ya ando metiendo mi cuchara , con respecto a tu pregunta SDCC si maneja la libreria string.h
Checate un "porting" que hice de la página de RedPic, para controlar servos con un pic18F2550; solo que debes tomar en cuenta que, el usar strcpy genera mucho código.
Te dejo el link y espero te sirva
Manejo de servo por puerto serial
Esta es la parte donde hago uso de strcpy, strncpy y atoi
Ya ando metiendo mi cuchara , con respecto a tu pregunta SDCC si maneja la libreria string.h
Checate un "porting" que hice de la página de RedPic, para controlar servos con un pic18F2550; solo que debes tomar en cuenta que, el usar strcpy genera mucho código.
Te dejo el link y espero te sirva
Manejo de servo por puerto serial
Esta es la parte donde hago uso de strcpy, strncpy y atoi
- Código:
flagcommand=false;
//Recibe el nombre del servo a mover
strcpy(cmd,cbuff);
strncpy(servo,cmd,1);
//guarda la posicion del servo
strcpy(cmd,cbuff);
for(i=1;i<4;i++){
pos[i-1]= cmd[i];
}
posicion = atoi(pos);
//guarda la velocidad a la que se moverá el servo
strcpy(cmd,cbuff);
for(i=4;i<7;i++)
{
velocidad[i-4]=cmd[i];
}
vel = atoi(velocidad);
tempo = 0;
tempoh=0;
tempol=0;
switch(servo[0]){
case 'a':
posI=SelectServo(0);
break;
case 'b':
posI=SelectServo(1);
break;
case 'c':
posI=SelectServo(2);
break;
case 'd':
posI=SelectServo(3);
break;
case 'e':
posI=SelectServo(4);
break;
case 'f':
posI=SelectServo(5);
break;
default:
Print_str("3"); //Error 3 opcion elegida no válida
Printf(INTRO);
break;
}
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 47
Localización : Mexico
Re: ayuda por favor!!! con modulo usart
Hola.
maigke, yo no lo he probado pero mi consulta es si la libreria string.h es solo para pic18f??? en el caso de trabajar con un pic16f, quiza se pueda usar lo que publico felixls en el foro de ucontrol (ver utilities)
Librerias SDCC
Ademas si quieres revisa wikipedia, explica como usar esta funcion y los mas interesante que muestra posibles formas de realizar la funcion strcpy strcpy
Quiza sea posibles adaptarlas y probarlas en sdcc
Saludos
Risanti
maigke, yo no lo he probado pero mi consulta es si la libreria string.h es solo para pic18f??? en el caso de trabajar con un pic16f, quiza se pueda usar lo que publico felixls en el foro de ucontrol (ver utilities)
Librerias SDCC
Ademas si quieres revisa wikipedia, explica como usar esta funcion y los mas interesante que muestra posibles formas de realizar la funcion strcpy strcpy
- Código:
char *strcpy(char *dest, const char *src)
{
unsigned i;
for (i=0; src[i] != '\0'; ++i)
dest[i] = src[i];
dest[i] = '\0';
return dest;
}
- Código:
char *strcpy(char *dest, const char *src)
{
char *save = dest;
while(*dest++ = *src++);
return save;
}
Quiza sea posibles adaptarlas y probarlas en sdcc
Saludos
Risanti
Re: ayuda por favor!!! con modulo usart
Saludos Risanti, yo la verdad no he usado string.h en pic16, aunque no se hasta que punto sea conveniente, ya que esta librería usa mucho espacio.
Los links de la wikipedia que pones son muy interesantes, enhorabuena!
Los links de la wikipedia que pones son muy interesantes, enhorabuena!
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 47
Localización : Mexico
Muchas gracias!!!
gracias por sus aprotes muchachos!! ya me voy a poner a investigar un poco mas sobre esto
Pincho_86- Participante
- Mensajes : 12
Fecha de inscripción : 08/01/2011
Re: ayuda por favor!!! con modulo usart
Pincho_86 escribió:hola a todos estoy tratando de transmitir algo y noc cual es el problema, me compila bien pero cuando lo pruebo con el proteus me trnsmite todo cero, de esta manera: 00 00 00 00 esto es lo que muestra la terminal virtual del proteus. estoy usando la libreria de USART (proporcionada por arcachofo), la cual consegui de aca:
https://pic-linux.forosactivos.net/t36-sdcc-driver-para-usart-pic16?highlight=USART
el codigo que tengo es el siguiente:
#include
#define Br 9600
#define Tx TRISC6
#define Rx TRISC7
#define FREQ 4000
#include
/* ----------------------------------------------------------------------- */
/* Configuration bits: adapt to your setup and needs */
typedef unsigned int word;
word at 0x2007 CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF & _CP_OFF;
void delay_ms(long ms)
{
long i;
while (ms--)
for (i=0; i < 300; i++);
}
void main()
{ /* << insert code >> */
int i=0;
char nombre[10];
init_serie();
nombre[0]='m';
nombre[1]='a';
nombre[2]='r';
nombre[3]='t';
nombre[4]='i';
nombre[5]='n';
nombre[6]='\0';
while(1)
{
for(i=0;i<5;i++);
{
putchar(nombre[i]);
delay_ms(300);
}
}
}
hola, yo soy nuevo en esto y me preguntaba si me podrian facilitar la libreria USART y algun software que me permita hacer la conexion, asi como los comandos de la misma
otra cosa, me pueden pasar algun tutorial para instalar proteus ? gracias!!
PD. normalmente uso el pic 16f887
fredska4- Nuevo Usuario
- Mensajes : 2
Fecha de inscripción : 30/07/2011
Re: ayuda por favor!!! con modulo usart
saludos compañero
revisa este link que postee hace un rato, en ella encontraras el manejo de una libreria para USART de un PIC18f, asì como el uso de strings en SDCC.
https://pic-linux.forosactivos.net/t317-control-de-8-servos-de-rc-por-puerto-serie-original-de-redpic-traducido-a-sdcc
revisa este link que postee hace un rato, en ella encontraras el manejo de una libreria para USART de un PIC18f, asì como el uso de strings en SDCC.
https://pic-linux.forosactivos.net/t317-control-de-8-servos-de-rc-por-puerto-serie-original-de-redpic-traducido-a-sdcc
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 47
Localización : Mexico
Temas similares
» por favor una ayuda con leguaje asembler
» ayuda por favor (acceso a /dev/parport0)
» Applets "Utilidades"
» Problema entre modulo PWM y TMR0
» Sensor temperatura + PIC18F2550 + comunicación USB
» ayuda por favor (acceso a /dev/parport0)
» Applets "Utilidades"
» Problema entre modulo PWM y TMR0
» Sensor temperatura + PIC18F2550 + comunicación USB
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.