Autor Tema: dsPIC Curso Basico con C30  (Leído 349968 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dsPIC Curso Basico con C30
« Respuesta #180 en: 09 de Junio de 2011, 21:09:12 »
Buenas,

estoy utilizando las funciones que elaboró en su día Renatox para el envio de datos por la UART getcom y sendcom. La cuestión es que las simulo (utilizo MPLAB) y mirando los tiempos con el Stopwatch me tarda 3ms en enviar un simple float. Teoricamente tengo la UART configurada a 9600 (micro a 30MIPS) y utilizo los pines alternativos para la UART1. Cuelgo codigo de inicializacion de la UART y de la función (que en principio, lo único que he hecho es cambiar el nombre).

Código: [Seleccionar]
void config_UART(void) {
U1MODE=0x2420;
U1STA=0x8000;
BAUD=9600;
U1BRG=(1875000/BAUD)-1;
}

void SendUART(unsigned int k, char *p) { 
for(;k;--k) {
while(BusyUART1());
putcUART1(*p);
p++;
  }

Hay algo mal o es que no simula bien los envios por este canal??

gracias, saludos


Y es coherente... 1/9600= 104us por bits. 1 Start, 8 de datos y 1 de Stop, todo eso por 4  :? Aqui nada tiene que ver los MIPS
No contesto mensajes privados, las consultas en el foro

Desconectado ElEspañolito

  • PIC10
  • *
  • Mensajes: 6
Re: dsPIC Curso Basico con C30
« Respuesta #181 en: 09 de Junio de 2011, 23:36:11 »
 :oops: ... mientras cenaba, pensandolo con calma,... empezaba a ver que no era tan incoherente,... aunque con la explicacion me queda todo mas claro! Gracias  ;-)

Desconectado juantaipe

  • PIC10
  • *
  • Mensajes: 7
Re: dsPIC Curso Basico con C30
« Respuesta #182 en: 29 de Junio de 2011, 13:09:49 »
DESEANOLE EXITOS; POR FAVOR COMO SUBO IMAGENES AL FORO ; CUANDO INTENTO SUBIR LA IMAGEN; PULSO SOBRE EL BOTON IMAGEN Y ME SALE ; QUE HAGO PARA SUBIRLO                       

Desconectado jencaozh

  • PIC10
  • *
  • Mensajes: 1
Re: dsPIC Curso Basico con C30
« Respuesta #183 en: 08 de Julio de 2011, 12:09:11 »
Aqui les dejo un enlace mui interesante_la verdad si es mui bueno_nos enseña a programar los dspic con mplap tanto en asm como en c.
Consta de un libro i un cd aparte dond hai una serie d aplicaciones q c an explicando en la segunda parte del libro.
M gustaria saber tambien si alguien sabe como reproducir archivos wav desde una memoria sd con un dspic_si alguien sabe mandeme informacion les estare muy agradecidos.


Censurado
« Última modificación: 09 de Julio de 2011, 00:04:54 por un Moderador »

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dsPIC Curso Basico con C30
« Respuesta #184 en: 08 de Julio de 2011, 13:26:42 »
Aqui les dejo un enlace mui interesante_la verdad si es mui bueno_nos enseña a programar los dspic con mplap tanto en asm como en c.
Consta de un libro i un cd aparte dond hai una serie d aplicaciones q c an explicando en la segunda parte del libro.
M gustaria saber tambien si alguien sabe como reproducir archivos wav desde una memoria sd con un dspic_si alguien sabe mandeme informacion les estare muy agradecidos.

Lee las normas del foro, ese libro tiene Copyright. El link será eliminado...


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: dsPIC Curso Basico con C30
« Respuesta #185 en: 31 de Julio de 2011, 17:09:42 »
Hola gente estuve leyendo el post y muy interesante aprendí muchas cosas pero no encontré demasiado relacionado a la configuración del Oscilador de los dsPIC.
Estoy tratando de configurarlo ya que es bastante complejo o por lo menos para mi, encontré este link que es muy famoso:
http://www.micropic.es/index.php?option=com_content&task=view&id=32&Itemid=58
Pero no me funciona no genera nada lo probé en Google Chrome, Mozilla Firefox e Internet Explorer y no genera nada en ninguno.
Por lo que al código respecta este es:

Código: [Seleccionar]
//#include <p33FJ128GP804.h>
#define __dsPIC33FJ32MC202__
#include <p33fj32mc202.h>
#include <libpic30.h>
#include <uart.h>
#include <stdio.h>

//#include "utilities.c"
#include "mylibs.h"

char string[] = "Wiii un string xD";

int main (){

OSCCONbits.NOSC = 0b011;
//FOSCbits.POSCMD =0b01;
CLKDIVbits.PLLPRE = 0b00000; //Clock/2
CLKDIVbits.PLLPOST = 0b10;     //Clock/2
PLLFBDbits.PLLDIV = 32; //Clock*32

  RPINR18bits.U1RXR = 9; //Asignamos pin recepción UART1 a RP9.-
  RPOR4bits.RP8R = 0b00011; // Asignamos RP8 al pin de transmisión UART1.

//Configuración del USART 1 (Usado para debug y bootloader)
OpenUART1(UART_EN & UART_IDLE_CON & UART_IrDA_DISABLE & UART_MODE_SIMPLEX & UART_UEN_00 & UART_EN_WAKE &
  UART_DIS_LOOPBACK & UART_DIS_ABAUD & UART_NO_PAR_8BIT & SPEED_MODE & UART_1STOPBIT,
  UART_TX_ENABLE & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR, BAUDIOS);

printf("Hello Torno!! Con C30 y dsPIC!! Adentro AVR!! -> %s",string);

while(1){}

}

La idea es con un cristal de 10MHz llegar a 40MIPS en teoría si entro con 10MHz lo divido /2 me quedan 5MHz por 32 me da 160MHz dividido nuevamente por 2 me dan 80MHz que serían 40MIPS. Lo estoy simulando en PROTEUS no si ese será el problema es un dsPIC33FJ32MC202 les adjunto el archivo del Proteus por si quieren probarlo es la versión 7.7.
El código en sí funciona y al parecer está trabajando a una frecuencia real de 3.685.005 Hz o 3.685 MIPS, esto lo pude ver en el proteus ademas de que los baudios que genera al enviar por el USART son los correctos no tengo idea de por que trabaja a esa frecuencia y por más que cambie la frecuencia en el PIC del Proteus sigo generando bien los baudios asi que me parece que puede ser eso también pero no se de que otra manera se cambia la frecuencia...

Espero puedan ayudarme saludos !!
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: dsPIC Curso Basico con C30
« Respuesta #186 en: 31 de Julio de 2011, 21:40:45 »
Bueno al final pude solucionar el problema el código me quedó asi:

Código: [Seleccionar]
PLLFBDbits.PLLDIV = 30; // M=32
CLKDIVbits.PLLPOST = 0;    // N1=2
CLKDIVbits.PLLPRE  = 0;    // N2=2
OSCTUN             = 0;    // Tune FRC oscillator, if FRC is used
RCONbits.SWDTEN=0;      // Disable Watch Dog Timer
while(OSCCONbits.LOCK!=1) {}; // Wait for PLL to lock

El problema estaba en el PLLPOST que lo configuraba como 10 que segun la hoja de datos es Reserved y tenia que estar en 00 que es /2 la verdad ni idea de por que puse eso mil disculpas un error por falta de atención mío... Continuo con estas maravillas de PIC  :mrgreen:
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: dsPIC Curso Basico con C30
« Respuesta #187 en: 06 de Agosto de 2011, 15:03:40 »
Nuevamente les vengo con una pregunta  :D Estuve viendo el post y muestran como configurar el timer 2/3 para que funcione como 32bits pero con clock interno e interrupción.
Estoy haciendo un frecuencímetro y necesito el timer 2/3 en 32bits pero con clock externo, lo he configurado pero no capta los pulsos de afuera, el pin está como entrada pero lee siempre 0, si le cargo cualquier valor al timer luego leo ese valor es decir no incrementa en nada y he metido señal por todos los pines porque en el datasheet dice que el TxCK es el pin de entrada osea T2CK o T3CK pero esos pines no figuran en la hoja de datos son muy raros los pines en los dsPIC ya que no figuran bien por ejemplo el UART es UxTX y no figura sin embargo está como se nombran ??

Asi configuro el timer:

Código: [Seleccionar]
TRISA = 0xFF; TRISB = 0xFFFF;
T2CONbits.TON = 0; //Apago Timer2
T3CONbits.TON = 0; //Apago Timer3
T2CONbits.T32 = 1; //T2 y T3 forman un timer de 32 bits
T2CONbits.TSIDL = 0; //Se apaga en moo IDLE
T2CONbits.TGATE = 0; //Tgate apagado (sirve para medir período)
T2CONbits.TCKPS = 0b00; //Preescaler 1:1
T2CONbits.TCS   = 1; //Clock externo

while(1){

WriteTimer23(0); //Reinicio timer
T2CONbits.TON = 1; //Enciendo el timer

__delay32(40000000); //Delay de 1 segundo exacto a 40MIPS

T2CONbits.TON = 0; //Apago el timer
FRECC = ReadTimer23(); //Leo el valor del timer (que al estar muestreando durante un segundos son los Hz)
PERIODO = 1.0 / (float)FRECC; //Tomo el período de la frecuencia

Y les adjunto la simulación en PROTEUS. Este es el PIC que utilizo

http://ww1.microchip.com/downloads/en/DeviceDoc/70283J.pdf

Es el dsPIC33FJ32MC202 no se si esta mal configurado o no le estoy dando al pin porque ya meti señal por todos como veran en la simulacion y no hay caso.
Espero puedan ayudarme...

Saludos y muchas gracias por su tiempo y ayuda !!
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: dsPIC Curso Basico con C30
« Respuesta #188 en: 06 de Agosto de 2011, 17:39:03 »
Es por que microchip hizo algo grande xD, y no nos dejo sujeto a pines especificos xD. Existe lo que son los pines remappeables..  o sea vos elegis de los 25 creo pines RPn , en cual queres la entrada T2CK

RPINR3: PERIPHERAL PIN SELECT INPUT REGISTER 3

En ese registro aputnas a que pin lo queres. y a tener en cuenta:

Código: [Seleccionar]
For input mapping only, the Peripheral Pin Select (PPS) functionality does not have priority over the TRISx settings. Therefore, when configuring the RPn pin for input, the corresponding bit in the TRISx register must also be configured for input (i.e., set to ‘1’).
Entonces por ejemplo vos hiciste mal un caminito en la placa y cambias directamente un registro en el PIC, o si te quedan cruzados los caminos y complejos lo arreglas por software.

No llegue a probar con entradas externas, lo hice en ASM pero solo para ver funcionar a los TIMER1 y TMR2/TMR3 con el oscilador interno y interrupciones de overflow.

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: dsPIC Curso Basico con C30
« Respuesta #189 en: 07 de Agosto de 2011, 15:49:19 »
Haaaaa que dato tan interesante ahora todo concuerda  :D Sisi ahora funciona perfectamente simplemente era decirle donde estaba la dichosa entrada muchas gracias !!
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: dsPIC Curso Basico con C30
« Respuesta #190 en: 07 de Agosto de 2011, 19:08:05 »
Me alegro haberte sido util, algun dia yo tambien me pondre con C30 y C para PIC32, lo espero con ganas :D por ahora ASM! xD

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: dsPIC Curso Basico con C30
« Respuesta #191 en: 07 de Agosto de 2011, 19:29:41 »
Jajaja si yo programe por poco menos de 2 meses asm luego durante 3 años usé CCS y ahora q necesito dsPic uso C30 porq s imposible en CCS sin embargo debo decir que Microchip debería repensar su función printf son 2K de memoria y 1K más si usas float y en CCS son unos pocos bytes no se por q tanta diferencia y además el printf de CCS lo mandas a donde quieras no sólo el usart es la única crítica que le hago por lo demás  es excelente...
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dsPIC Curso Basico con C30
« Respuesta #192 en: 07 de Agosto de 2011, 19:47:51 »
....y además el printf de CCS lo mandas a donde quieras no sólo el usart es la única crítica que le hago por lo demás  es excelente...

Hay que hacer un par de modificaciones y se puede usar para mandar cadenas formateadas a cualquier dispositivo, por aquí un ejemplo.


Saludos!

No contesto mensajes privados, las consultas en el foro

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: dsPIC Curso Basico con C30
« Respuesta #193 en: 07 de Agosto de 2011, 20:01:19 »
Si es verdad lo que comentas Suky lo que aún no me explico es por que semejante cantidad de memoria...
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re:dsPIC Curso Basico con C30
« Respuesta #194 en: 03 de Marzo de 2019, 19:25:31 »
Les dejo un video por si les interesa
8)


 

anything