Hi, mittlerweile habe ich mich in das Thema AT91SAM7x soweit eingelesen das ich das RS232 Tutorial von sparkfun.com compilieren und flashen kann. Nur leider liefert das Ganze nur Datenmüll. Der Beispielcode empfängt 10 Zeichen und sendet sie zurück. Wenn ich jetzt ein 'a' sende bekomme ich ein 'x' zurück. Wenn ich den µC den Wert 25 senden lassen, bekomme ich ein 's' also 115. Ich kann keine Regelmäßigkeit und keinen Offset erkennen. Aber das verhalten ist reproduzierbar. Im Tutorial wird ein 18,4320 MHz Quarz verwendet. Selbigen habe ich auf meiner Platiene. Ich würde jetzt vermuten irgendwo ist eine Einstellung falsch. Es gibt beim AT91SAM7x so viele Einstellungen und Frequenzteiler. Aber die Einstellungen sind doch alle im Code enthalten. Hat der AT91SAM7x so etwas wie fuses? Wo könnte mein fehler liegen? code: http://www.sparkfun.com/datasheets/DevTools/SAM7/serial_tutorial_source.zip besagtes tutorial: http://www.sparkfun.com/datasheets/DevTools/SAM7/at91sam7%20serial%20communications.pdf
Hallo, Bei mir kam mit den Beispielen, die ich verwendet habe auch nur Müll raus (ein Ändern der BPS im Terminal brachte Besserung). Hier meine (abgeänderte ini für 115200/8/N/1): #define EXT_OC 18432000 /* Exetrnal ocilator MAINCK */ #define MCK 48054857 /* MCK (PLLRC div by 2) */ #define MCKKHz (MCK/1000) #define BR 115200 /* Baud Rate */ #define BRD (MCK/10/BR) /* Baud Rate Divisor */ AT91S_USART * pUSART = AT91C_BASE_US0; /* Global Pointer to USART0 */ void uart0_init(void) { *AT91C_PIOA_PDR = AT91C_PA5_RXD0 | /* Enable RxD0 Pin */ AT91C_PA6_TXD0; /* Enalbe TxD0 Pin */ pUSART->US_CR = AT91C_US_RSTRX | /* Reset Receiver */ AT91C_US_RSTTX | /* Reset Transmitter */ AT91C_US_RXDIS | /* Receiver Disable */ AT91C_US_TXDIS; /* Transmitter Disable */ pUSART->US_MR = AT91C_US_USMODE_NORMAL | /* Normal Mode */ AT91C_US_CLKS_CLOCK | /* Clock = MCK */ AT91C_US_CHRL_8_BITS | /* 8-bit Data */ AT91C_US_PAR_NONE | /* No Parity */ AT91C_US_NBSTOP_1_BIT; /* 1 Stop Bit */ pUSART->US_BRGR = BRD; /* Baud Rate Divisor */ pUSART->US_CR = AT91C_US_RXEN | /* Receiver Enable */ AT91C_US_TXEN; /* Transmitter Enable */ } Bei mir an AT91SAM7P256. MfG Peter
kannst du mir erklären wie ich auf MCK komme? bzw was es damit auf sich hat?
Nein, kann ich leider nicht. Aber ich nimm den Wert einfach mal quasi als Fix hin, weil der eigentlich immer in allen Projekten, die ich zu AT91SAM7 so gesehen habe vorkommt. Beitrag "Re: AT91SAM7P256 / Maximale Geschwindigkeit" <Vermutung> ich glaube, dass der MC den Externen Takt (18MHz) irgendwie intern auf die 48MHz "aufbläst". </Vermutung>
ich wollte jetzt mal den code so übernehmen, aber er findet die passende deffinition zu
1 | *AT91C_PIOA_PDR = AT91C_PA5_RXD0 | /* Enable RxD0 Pin */ |
2 | AT91C_PA6_TXD0; /* Enalbe TxD0 Pin */ |
nicht. kannst du mir die noch geben?
steht eigentlich alles in der AT91SAM7S256.h die gibts bei Atmel in den Democodes...
hmm die AT91SAM7S256.h hab ich drin. ich hab jetzt gerade nen mix aus deinem und menem code gebaut. ich bekomme jetzt anderen datenmüll. ich werde für heute schluss machen. hast du vielleicht nen komplettes projekt, das du mir schicken kannst? am besten würde mir ja ein code gefallen der mir einfach nur irgendwelche sinnvollen zeichen auf rs232 ausgibt.
hallo jack, ich würde dir empfehlen die beispielprogramme (software packages genannt) auf der atmel homepage runter zu laden und diese als basis zu benutzen. gruss gerhard
ich habe jetzt noch die grandiose idee mal mit der Boundrate runter zu gehen. Werde dies aber erst in einigen Tagen testen können. Seh ich es richtig das die Boundrate im Endeffekt nur von der ausgewählten Taktquelle und dem CD abhängt? Als Taktquelle wird MCK ausgewählt und MCK ist bei gegebendem Takt von 18432000Hz abhängig. und berechnet sich zu 48054857.
Hallo Peter, kannst du mir deine sende routine schicken? mfg
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.