Möchte mit dem Programm den AD-Wert des AD-Wandlers ans Hyper Terminal schicken. Dazu hab ich diese Programm geschrieben. #include "p24fj128ga010.h" #include "adcDrv2.h" void InitUart (void) { // Load a value into Baud Rate Generator. Example is for 9600. // See section 19.3.1 of datasheet. // U2BRG = (Fcy/(16*BaudRate))-1 // U2BRG = (4M/(16*9600))-1 // U2BRG = 25; U2BRG = 25; U2MODEbits.STSEL = 0; // 1-stop bit U2MODEbits.PDSEL = 0; // No Parity, 8-data bits U2MODEbits.ABAUD = 0; // Autobaud Disabled IEC1bits.U2RXIE = 1; IPC7bits.U2RXIP = 1; IFS1bits.U2RXIF = 0; IPC7bits.U2TXIP = 0x04; IPC7bits.U2RXIP = 0x04; U2MODEbits.UARTEN = 1; // And turn the peripheral on U2STAbits.UTXEN = 1; } int main (void) { AD1PCFG = 0xffff; TRISA = 0; TRISD = 0xff; InitUart (); // Disable Watch Dog Timer RCONbits.SWDTEN = 0; // Peripheral Initialisation initAdc1(); // Init the A/D converter to convert Channel 5 while (1){ U2TXREG='h'; U2TXREG='a'; U2TXREG='l'; U2TXREG='l'; U2TXREG='o'; } } der AD-Wandler funktioniert einwandfrei (Hab ihn an den LED´s ausgegeben). Zum Testen des Uarts schike ich erst mals nur Buchstaben. so nun zu meinem Problem wie man im Programmtext lesen kann versuche ich ein Hallo ans hyperterminal zu schicken. das Einzigste was dort aber ankommt ist ein h und ab und zu ein l zeitweise empfange ich auch nur ein i oder andere Zeichen. Ich denke das es ist ein Problem mit der Baudrate. Weiß aber nicht wie ich den Internen Clock einstelle das ich damit meine Baudrate berechen kann.
Hallo Marc, was hast du in der Config (Fuses) stehen, da stellst du die Taktquelle ein. Ich kann dir nichts genaueres sagen, da ich den C18 Compiler nicht verwende und ich die zugehörigen include Files nicht habe. Jedenfalls heißt der interne Takt FRC. Mfg Kroko
> while (1){ > U2TXREG='h'; > U2TXREG='a'; U2TXREG='l'; U2TXREG='l'; U2TXREG='o'; > } du kannst doch nicht sicher stellen, dass du alle Zeichen rausschickst, du überschreibst doch die Zeichen im U2TXREG-Register. Du darfst erst ein Zeichen rausschicken, wenn das Transmit-Register leer ist. void uart2Send(unsigned char zeichen) { U2TXREG = zeichen; while(U2STAbits.TRMT == 0); }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.