pic24_uart.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef _PIC24_UART1_H_
00032 #define _PIC24_UART1_H_
00033
00034
00035 #if (NUM_UART_MODS >= 1)
00036
00037
00038
00039
00040
00052 #ifndef DEFAULT_BAUDRATE1
00053 #define DEFAULT_BAUDRATE1 DEFAULT_BAUDRATE
00054 #endif
00055
00059 #ifndef DEFAULT_BRGH1
00060 #define DEFAULT_BRGH1 DEFAULT_BRGH
00061 #endif
00062
00071 inline static void CONFIG_BAUDRATE_UART1(uint32 baudRate) {
00072 #if (DEFAULT_BRGH1 == 0)
00073 float f_brg = (((float) FCY)/((float) baudRate)/16.0) - 1.0;
00074 #else
00075 float f_brg = (((float) FCY)/((float) baudRate)/4.0) - 1.0;
00076 #endif
00077 ASSERT(f_brg < 65535.5);
00078 U1MODEbits.BRGH = DEFAULT_BRGH1;
00079 U1BRG = roundFloatToUint16(f_brg);
00080 }
00081
00082
00087 #define UXMODE_PDSEL_8DATA_NOPARITY 0
00088 #define UXMODE_PDSEL_8DATA_EVENPARITY 1
00089 #define UXMODE_PDSEL_8DATA_ODDPARITY 2
00090 #define UXMODE_PDSEL_9DATA_NOPARITY 3
00092
00093
00097 inline static void CONFIG_PDSEL_UART1(uint8 u8_pdsel) {
00098 ASSERT(u8_pdsel <= UXMODE_PDSEL_9DATA_NOPARITY);
00099 U1MODEbits.PDSEL = u8_pdsel;
00100 }
00101
00106 inline static void CONFIG_STOPBITS_UART1(uint8 u8_numStopbits) {
00107 ASSERT(u8_numStopbits <= 2);
00108 U1MODEbits.STSEL = u8_numStopbits - 1;
00109 }
00110
00112 inline static void ENABLE_UART1() {
00113 U1MODEbits.UEN = 0b00;
00114 U1MODEbits.UARTEN = 1;
00115 U1STAbits.UTXEN = 1;
00116 }
00117
00122 #define IS_CHAR_READY_UART1() U1STAbits.URXDA
00123
00128 #define IS_TRANSMIT_BUFFER_FULL_UART1() U1STAbits.UTXBF
00129
00135 #define IS_TRANSMIT_COMPLETE_UART1() U1STAbits.TRMT
00136
00138 inline static void WAIT_UNTIL_TRANSMIT_COMPLETE_UART1() {
00139 while (!IS_TRANSMIT_COMPLETE_UART1())
00140 doHeartbeat();
00141 }
00142
00143 void outChar1(uint8 u8_c);
00144 uint8 inChar1(void);
00145 void configUART1(uint32 u32_baudRate);
00146 uint8 isCharReady1(void);
00147 void checkRxErrorUART1(void);
00148
00149 #endif // #if (NUM_UART_MODS >= 1)
00150 #endif // #ifndef _PIC24_UART1_H_
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189 #ifndef _PIC24_UART2_H_
00190 #define _PIC24_UART2_H_
00191
00192
00193 #if (NUM_UART_MODS >= 2)
00194
00195
00196
00197
00198
00210 #ifndef DEFAULT_BAUDRATE2
00211 #define DEFAULT_BAUDRATE2 DEFAULT_BAUDRATE
00212 #endif
00213
00217 #ifndef DEFAULT_BRGH2
00218 #define DEFAULT_BRGH2 DEFAULT_BRGH
00219 #endif
00220
00229 inline static void CONFIG_BAUDRATE_UART2(uint32 baudRate) {
00230 #if (DEFAULT_BRGH2 == 0)
00231 float f_brg = (((float) FCY)/((float) baudRate)/16.0) - 1.0;
00232 #else
00233 float f_brg = (((float) FCY)/((float) baudRate)/4.0) - 1.0;
00234 #endif
00235 ASSERT(f_brg < 65535.5);
00236 U2MODEbits.BRGH = DEFAULT_BRGH2;
00237 U2BRG = roundFloatToUint16(f_brg);
00238 }
00239
00240
00245 #define UXMODE_PDSEL_8DATA_NOPARITY 0
00246 #define UXMODE_PDSEL_8DATA_EVENPARITY 1
00247 #define UXMODE_PDSEL_8DATA_ODDPARITY 2
00248 #define UXMODE_PDSEL_9DATA_NOPARITY 3
00250
00251
00255 inline static void CONFIG_PDSEL_UART2(uint8 u8_pdsel) {
00256 ASSERT(u8_pdsel <= UXMODE_PDSEL_9DATA_NOPARITY);
00257 U2MODEbits.PDSEL = u8_pdsel;
00258 }
00259
00264 inline static void CONFIG_STOPBITS_UART2(uint8 u8_numStopbits) {
00265 ASSERT(u8_numStopbits <= 2);
00266 U2MODEbits.STSEL = u8_numStopbits - 1;
00267 }
00268
00270 inline static void ENABLE_UART2() {
00271 U2MODEbits.UEN = 0b00;
00272 U2MODEbits.UARTEN = 1;
00273 U2STAbits.UTXEN = 1;
00274 }
00275
00280 #define IS_CHAR_READY_UART2() U2STAbits.URXDA
00281
00286 #define IS_TRANSMIT_BUFFER_FULL_UART2() U2STAbits.UTXBF
00287
00293 #define IS_TRANSMIT_COMPLETE_UART2() U2STAbits.TRMT
00294
00296 inline static void WAIT_UNTIL_TRANSMIT_COMPLETE_UART2() {
00297 while (!IS_TRANSMIT_COMPLETE_UART2())
00298 doHeartbeat();
00299 }
00300
00301 void outChar2(uint8 u8_c);
00302 uint8 inChar2(void);
00303 void configUART2(uint32 u32_baudRate);
00304 uint8 isCharReady2(void);
00305 void checkRxErrorUART2(void);
00306
00307 #endif // #if (NUM_UART_MODS >= 2)
00308 #endif // #ifndef _PIC24_UART2_H_
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347 #ifndef _PIC24_UART3_H_
00348 #define _PIC24_UART3_H_
00349
00350
00351 #if (NUM_UART_MODS >= 3)
00352
00353
00354
00355
00356
00368 #ifndef DEFAULT_BAUDRATE3
00369 #define DEFAULT_BAUDRATE3 DEFAULT_BAUDRATE
00370 #endif
00371
00375 #ifndef DEFAULT_BRGH3
00376 #define DEFAULT_BRGH3 DEFAULT_BRGH
00377 #endif
00378
00387 inline static void CONFIG_BAUDRATE_UART3(uint32 baudRate) {
00388 #if (DEFAULT_BRGH3 == 0)
00389 float f_brg = (((float) FCY)/((float) baudRate)/16.0) - 1.0;
00390 #else
00391 float f_brg = (((float) FCY)/((float) baudRate)/4.0) - 1.0;
00392 #endif
00393 ASSERT(f_brg < 65535.5);
00394 U3MODEbits.BRGH = DEFAULT_BRGH3;
00395 U3BRG = roundFloatToUint16(f_brg);
00396 }
00397
00398
00403 #define UXMODE_PDSEL_8DATA_NOPARITY 0
00404 #define UXMODE_PDSEL_8DATA_EVENPARITY 1
00405 #define UXMODE_PDSEL_8DATA_ODDPARITY 2
00406 #define UXMODE_PDSEL_9DATA_NOPARITY 3
00408
00409
00413 inline static void CONFIG_PDSEL_UART3(uint8 u8_pdsel) {
00414 ASSERT(u8_pdsel <= UXMODE_PDSEL_9DATA_NOPARITY);
00415 U3MODEbits.PDSEL = u8_pdsel;
00416 }
00417
00422 inline static void CONFIG_STOPBITS_UART3(uint8 u8_numStopbits) {
00423 ASSERT(u8_numStopbits <= 2);
00424 U3MODEbits.STSEL = u8_numStopbits - 1;
00425 }
00426
00428 inline static void ENABLE_UART3() {
00429 U3MODEbits.UEN = 0b00;
00430 U3MODEbits.UARTEN = 1;
00431 U3STAbits.UTXEN = 1;
00432 }
00433
00438 #define IS_CHAR_READY_UART3() U3STAbits.URXDA
00439
00444 #define IS_TRANSMIT_BUFFER_FULL_UART3() U3STAbits.UTXBF
00445
00451 #define IS_TRANSMIT_COMPLETE_UART3() U3STAbits.TRMT
00452
00454 inline static void WAIT_UNTIL_TRANSMIT_COMPLETE_UART3() {
00455 while (!IS_TRANSMIT_COMPLETE_UART3())
00456 doHeartbeat();
00457 }
00458
00459 void outChar3(uint8 u8_c);
00460 uint8 inChar3(void);
00461 void configUART3(uint32 u32_baudRate);
00462 uint8 isCharReady3(void);
00463 void checkRxErrorUART3(void);
00464
00465 #endif // #if (NUM_UART_MODS >= 3)
00466 #endif // #ifndef _PIC24_UART3_H_
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505 #ifndef _PIC24_UART4_H_
00506 #define _PIC24_UART4_H_
00507
00508
00509 #if (NUM_UART_MODS >= 4)
00510
00511
00512
00513
00514
00526 #ifndef DEFAULT_BAUDRATE4
00527 #define DEFAULT_BAUDRATE4 DEFAULT_BAUDRATE
00528 #endif
00529
00533 #ifndef DEFAULT_BRGH4
00534 #define DEFAULT_BRGH4 DEFAULT_BRGH
00535 #endif
00536
00545 inline static void CONFIG_BAUDRATE_UART4(uint32 baudRate) {
00546 #if (DEFAULT_BRGH4 == 0)
00547 float f_brg = (((float) FCY)/((float) baudRate)/16.0) - 1.0;
00548 #else
00549 float f_brg = (((float) FCY)/((float) baudRate)/4.0) - 1.0;
00550 #endif
00551 ASSERT(f_brg < 65535.5);
00552 U4MODEbits.BRGH = DEFAULT_BRGH4;
00553 U4BRG = roundFloatToUint16(f_brg);
00554 }
00555
00556
00561 #define UXMODE_PDSEL_8DATA_NOPARITY 0
00562 #define UXMODE_PDSEL_8DATA_EVENPARITY 1
00563 #define UXMODE_PDSEL_8DATA_ODDPARITY 2
00564 #define UXMODE_PDSEL_9DATA_NOPARITY 3
00566
00567
00571 inline static void CONFIG_PDSEL_UART4(uint8 u8_pdsel) {
00572 ASSERT(u8_pdsel <= UXMODE_PDSEL_9DATA_NOPARITY);
00573 U4MODEbits.PDSEL = u8_pdsel;
00574 }
00575
00580 inline static void CONFIG_STOPBITS_UART4(uint8 u8_numStopbits) {
00581 ASSERT(u8_numStopbits <= 2);
00582 U4MODEbits.STSEL = u8_numStopbits - 1;
00583 }
00584
00586 inline static void ENABLE_UART4() {
00587 U4MODEbits.UEN = 0b00;
00588 U4MODEbits.UARTEN = 1;
00589 U4STAbits.UTXEN = 1;
00590 }
00591
00596 #define IS_CHAR_READY_UART4() U4STAbits.URXDA
00597
00602 #define IS_TRANSMIT_BUFFER_FULL_UART4() U4STAbits.UTXBF
00603
00609 #define IS_TRANSMIT_COMPLETE_UART4() U4STAbits.TRMT
00610
00612 inline static void WAIT_UNTIL_TRANSMIT_COMPLETE_UART4() {
00613 while (!IS_TRANSMIT_COMPLETE_UART4())
00614 doHeartbeat();
00615 }
00616
00617 void outChar4(uint8 u8_c);
00618 uint8 inChar4(void);
00619 void configUART4(uint32 u32_baudRate);
00620 uint8 isCharReady4(void);
00621 void checkRxErrorUART4(void);
00622
00623 #endif // #if (NUM_UART_MODS >= 4)
00624 #endif // #ifndef _PIC24_UART4_H_
00625
00626
00627
00628
00629
00630
00631
00632