lud / loše učiniti serijski broj Tx i PWM

V

vsmGuy

Guest
Bok,

Htjela sam poslati podatke na 9600 bps, i to promjenjivo radnog ciklusa @ PWM 40Khz.

Moj PIC18F2550 je clocked @ 20Mhz i ovdje je broj do sada:

Kodeks u PICC:

Code:# define _PLIB# uključiti <htc.h>

/ / Će automatski uključiti periferne biblioteka zaglavlje datoteke kada - runtime = plib se koristi (morali proći tom eksplicitno na commandline)# uključiti <pic18.h>

# uključiti <stdio.h>praznina

glavni (void)

(

GIE = 0; / * ne prekine se koristi * /

IPEN = 0;TRISC = 0; / * PORTC.1 je izlaz iz PWM * /OpenUSART (USART_TX_INT_OFF &

USART_RX_INT_OFF &

USART_ASYNCH_MODE &

USART_EIGHT_BIT &

USART_CONT_RX &

USART_BRGH_HIGH,

129);/ *

Ova funkcija konfigurira navedenog PWM kanal za razdoblje i za vrijeme bazu.

PWM koristi samo Timer2.

Osim otvaranja PWM, Timer2 također mora biti otvoren sa OpenTimer2 () izjavu pred PWM će poslovati.razdoblju vrijednost može biti bilo koja od 0x00 do 0xff.

Ta vrijednost određuje PWM frekvenciji koristeći sljedeću formulu:

PWM period = [(razdoblje) 1] x 4 x TOSC x TMR2 prescaler * /OpenTimer2 (TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);OpenPWM2 (124);

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

putsUSART ( "Test \ r \ n");

)CloseTimer2 ();ClosePWM2 ();

CloseUSART ();

)

 
and OpenTimer2
functions.

Pa,
moram priznati nikad nisam učinio PIC prije, ali brzi pregled kod čini mi se sumnja o Vašem raspisivanje OpenUSART
i OpenTimer2
funkcije.Osim ako ste se odlučili čudna negativne logike da odredite svoje zastave, po mom iskustvu nađoh da su zastave su obično ILI-ED (ili dodati), a ne i-ed zajedno.
Ja bih misliti svoje pozive treba biti:
Code:

OpenUSART (USART_TX_INT_OFF |

USART_RX_INT_OFF |

USART_ASYNCH_MODE |

USART_EIGHT_BIT |

USART_CONT_RX |

USART_BRGH_HIGH,

129);

 
Pa, mi nikada ne treba zaboraviti da je:

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

Koji notaciju koju koristite ovisi o tome koliko ste definirali vaše zastave.

To bi moglo biti da HiTech, kako bi se jezik više "prirodnih sondiranje", tako da programer može pročitati: "Ja UART žele da imaju USART_TX_INT_OFF i USART_RX_INT_OFF .. itd." zastave definirani su u obrnutoj konvencija od onih koji se koriste normals u industriji.

0010
|
1000
----
1010

1101
&
0111
---
0101 =! (1010)

Kao što možete vidjeti, oba su isti i nemaju utjecaja na runtime.

Plus, ovaj dio je ukraden iz dokumentacije, tako da ne bi trebalo biti pogrešno

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

Welcome to EDABoard.com

Sponsor

Back
Top