Buggy / mala código de serie para hacer Tx y PWM

V

vsmGuy

Guest
Hola,

Quería enviar datos a 9600 bps, y que la variable ciclo de PWM @ 40Khz.

Mi reloj es PIC18F2550 @ 20Mhz y aquí está el código hasta la fecha:

Código PICC:

Código:# define _PLIB# include <htc.h>

/ / Se incluirá automáticamente los archivos de cabecera de biblioteca periférica cuando - = tiempo de ejecución se utiliza PLib (tuvo que pasar esto explícitamente a la línea de órdenes)# include <pic18.h>

# include <stdio.h>vacío

main (void)

(

GIE = 0; / * No se utilizan las interrupciones * /

IPEN = 0;TRISC = 0; / * PORTC.1 es la salida de PWM * /OpenUSART (USART_TX_INT_OFF y

USART_RX_INT_OFF y

USART_ASYNCH_MODE y

USART_EIGHT_BIT y

USART_CONT_RX y

USART_BRGH_HIGH,

129);/ *

Esta función configura el canal especificado PWM para el período de tiempo y de base.

PWM utiliza sólo Timer2.

Además de la apertura de la PWM, Timer2 también debe ser abierto con un OpenTimer2 () antes de la declaración PWM funcionará.período puede ser cualquier valor de 0x00 a 0xFF.

Este valor determina la frecuencia PWM utilizando la siguiente fórmula:

PWM periodo = [(período) 1] x 4 x TOSC x TMR2 prescaler * /OpenTimer2 (TIMER_INT_OFF y T2_PS_1_1 y T2_POST_1_1);OpenPWM2 (124);

SetDCPWM2 (0);/ / SetOutputPWM2 (SINGLE_OUT, PWM_MODE_1);while (1) (

putsUSART ( "Test \ r \ n");

)CloseTimer2 ();ClosePWM2 ();

CloseUSART ();

)

 
and OpenTimer2
functions.

Bueno, debo admitir que nunca he hecho antes de PIC, pero una rápida inspección de su código que me hace tener dudas acerca de su vocación de OpenUSART
y OpenTimer2
funciones.A menos que usted
haya elegido una extraña lógica negativa a definir sus banderas, en mi experiencia he encontrado que las banderas son generalmente O-ed (o añadido) y no E-unido.
Yo creo las llamadas deben ser:
Código:

OpenUSART (USART_TX_INT_OFF |

USART_RX_INT_OFF |

USART_ASYNCH_MODE |

USART_EIGHT_BIT |

USART_CONT_RX |

USART_BRGH_HIGH,

129);

 
Bueno, no debemos olvidar nunca que:

(A | B) =! (A
& B)

Notación que se utiliza depende de cómo se definen sus banderas.

Puede ser que HiTech, a fin de que el idioma más "natural de sondeo" para que el programador puede leer "Quiero tener la UART USART_TX_INT_OFF y USART_RX_INT_OFF etc .." han definido banderas invertido en un convenio que las normales que se utilizan en la industria.

0010
|
1000
----
1010

1101
Y0111
---
0101 =! (1010)

Como puede ver, ambos son lo mismo y no tienen ningún impacto en tiempo de ejecución.

Además, esta parte es robado de la documentación,
por lo que no debe ser mal

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top