2015-10-23 1 views
1

J'utilise le contrôleur d'image ci-dessus sur la carte Explorer 16. J'essaye de configurer UART mais cela ne fonctionne pas Mon code ressemble à ceci.PIC24FJ128GA010 L'Uart ne fonctionne pas

enter code here 
#define Bit8_No_Parity   0x00 
#define Bit8_E_Parity   0x01 
#define Bit8_O_Parity   0x10 

#define Stop_Bits_1    0 
#define Stop_Bits_2    1 


U2MODEBITS U2mode; 
U2STABITS U2Sta; 

void Uart2_Init() 
{ 
    U2BRG = 207;   // 9600 for 8 mhz 
    U2MODE = 0x8000; 
    U2STA = 0x8400; 
    U2mode.PDSEL = Bit8_No_Parity ; 

    U2mode.STSEL = Stop_Bits_1; 
    U2mode.BRGH = 1; 


    U2Sta.UTXISEL1 = 1; 
    U2Sta.UTXISEL0 = 0; 
    U2mode.UARTEN = 1; 

    U2Sta.UTXEN = 1; 




} 


void Transmit_Byte(UCHAR_8 byte) 
{ 
    while(U2Sta.UTXBF != 0); 
    U2TXREG = byte; 

} 

Le code ci-dessus ne fonctionne pas. Je n'initialise que les bits de configuration et la fonction Uart init dans mon fichier principal. Vous cherchez de l'aide.

Cordialement Sanket

Répondre

0

Vous semblez définir des variables (U2mode, U2sta) avec la mise en page des registres (U2MODEBITS, U2STABITS) au lieu d'utiliser des définitions de registre prédéfinies quel que soit votre tête est. Cela signifie que rien n'est écrit dans les registres, et que rien ne se passe. Supprimez les déclarations et écrivez aux versions en bits réels des registres qui sont tous en majuscules (C est sensible à la casse!) U2STATBITS, U2MODEBITS. Ceux-ci superposent les U2STA et U2MODE en mémoire, de sorte que vous pouvez mélanger l'écriture à eux.