RS232 Kommunikation mit AT91SAM7 funktioniert, liefert aber nur Datenmüll

Gast #1915833
Lesenswert?
• ▲
▼
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
Gast #1915853
Lesenswert?
• ▲
▼
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
Gast #1915928
Lesenswert?
• ▲
▼
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?
Gast #1915941
Lesenswert?
• ▲
▼
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.
Gast #1916180
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.