Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

04/02/2013 #1


Problema de configuración oscilador DSPIC
gente les pido ayuda estoy muuuuuuuuuuuy complicado con el tema del oscilador para DSPIC30F4011, estoy intentando usar el oscilador interno. Cuando pruebo de levantar los datos en el hyperterminal o el hercules con un 232-usb comun, me da caulquier valores. estoy probando este código. Lo único que hace es programar la uart y escribe SEBASTIAN. Pero levanto cualquier cosa, solo con el pikyt2 levanto SEBASTIAN

supongo que el BRG está bien para 30 MIPS, pero no estoy seguro de estar en esta velocidad

Código:
#include <p30f4011.h>
  _FOSC( CSW_FSCM_OFF  & FRC_PLL16);
  _FWDT(WDT_OFF);
  _FBORPOR(PBOR_ON  & PWRT_OFF & MCLR_DIS);

#include <uart.h>
#include <stdio.h>
 
//////////////////////////////////////////////////////////
  void DelayUs(unsigned int v)  {    //  pierde 8+2
   while(v != 0){
      asm("nop");asm("nop");
      asm("nop");asm("nop");
      asm("nop");asm("nop");
      asm("nop");asm("nop");
      asm("nop");asm("nop");
      asm("nop");asm("nop");
    asm("nop");asm("nop");
    asm("nop");asm("nop");
    asm("nop");asm("nop");
    asm("nop");asm("nop");
    asm("nop");asm("nop");
    asm("nop");asm("nop");
      asm("nop");asm("nop");
    v--;
  }
 }
  //////////////////////////////////////////////////////////
   void DelayMs(unsigned int v) {
  //////////////////////////////////////////////////////////
   while (v != 0 ){ DelayUs(1000); v--;}
 }
 //////////////////////////////////////////////////////////
void __attribute__((__interrupt__)) _U1TXInterrupt(void)
    {
        IFS0bits.U1TXIF = 0;
    }
 //////////////////////////////////////////////////////////
void InicializaUART1()
   {
    unsigned int baud;
    unsigned int U1MODEvalue;
    unsigned int U1STAvalue;
    CloseUART1();
    ConfigIntUART1(UART_RX_INT_DIS & UART_RX_INT_PR0 & UART_TX_INT_DIS & UART_TX_INT_PR0);

    U1MODEvalue = UART_EN & UART_IDLE_CON & UART_DIS_WAKE & UART_DIS_LOOPBACK &
    UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT & UART_RX_TX;
    U1STAvalue  = UART_INT_TX_BUF_EMPTY & UART_TX_PIN_NORMAL & UART_TX_ENABLE &
    UART_INT_RX_CHAR & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR;
    baud=194;//9600 194      38400  48
   
    OpenUART1(U1MODEvalue, U1STAvalue, baud);
   }
 //////////////////////////////////////////////////////////
void InicializaUART2()
   {
    unsigned int baud;
    unsigned int U1MODEvalue;
    unsigned int U1STAvalue;
    CloseUART2();
    ConfigIntUART2(UART_RX_INT_DIS & UART_RX_INT_PR0 & UART_TX_INT_DIS & UART_TX_INT_PR0);

    U1MODEvalue = UART_EN & UART_IDLE_CON & UART_DIS_WAKE & UART_DIS_LOOPBACK &
    UART_DIS_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT & UART_RX_TX;
    U1STAvalue  = UART_INT_TX_BUF_EMPTY & UART_TX_PIN_NORMAL & UART_TX_ENABLE &
    UART_INT_RX_CHAR & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR;
    baud=194;//9600
   
    OpenUART2(U1MODEvalue, U1STAvalue, baud);
   }
 //////////////////////////////////////////////////////////

int main ()
{   
    TRISB=0xFFFF;
    TRISBbits.TRISB1=0;
    ADPCFG=0xFFFF;
    InicializaUART2();
    InicializaUART1();
    while(1)
    {
    WriteUART2(0x42);
    WriteUART1(0x42);
    printf ("SEBASTIAN \n\r");
    LATBbits.LATB1 = 1;
    DelayMs(100);
    LATBbits.LATB1 = 0;
    DelayMs(100);
    WriteUART1(0x45);
    WriteUART2(0x45);
    }
}
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.