Forum: Mikrocontroller und Digitale Elektronik M32C über UART0 an PC


von Bastian (Gast)


Lesenswert?

Hallo,

ich versuche gerade ganz simpel vom M32C/83 über den UART0 irgendwas an
meinen PC (HyperTerminal) zu senden. Doch irgendwie klappt das nicht.
Ich denke mal, dass meine Konfiguration irgendwo hakt.

Bisher habe ich folgendes konfiguriert:

// Protection Register
PRCR = 0x02; // ?? xxxx 0010;
  // PRC1 --> Enables writing to PM0, PM1, INVC0, INVC1 registers

// Processor mode register 0
PM0 = 0x00;  // PM00+PM01 = 00 --> Single-Chip Mode

PRCR = 0x00; // xxxx 0000

// UARTi baud rate register (
clk_tmp = (CLOCK  1  16 / BAUD) - 1; /* Set the baud rate */
  // (f1/(TC*16))-1 = m; f1=30MHz, TC=9600Baud --> m=203
U0BRG = clk_tmp;

// UARTi transmit/receive mode register
U0MR = 0x05; // 00000101;
  // SMD0-2 = 101 --> UART mode, transfer data 8 bits long
  // CKDIR = 0 --> Internal Clock
  // STPS = 0 --> 1 Stop bit
  // PRY = x(0) --> Enabled when PRYE = 1
  // PRYE = 0 --> Parity disabled
  // IOPOL = 0 --> TxD, RxD i/o not switched

// Control Register 0 (CTS=Clear To Send; RTS=Request To Send)
U0C0 = 0x10; // 0001 x000: f1 */
  // CLK0=0+CLK1=0 --> Selects f1
  // CRS=0
  // CRD=1

// Control Register 1
U0C1 = 0x01; // 0000 x0x1

// Port Direction
PD6 = PD6 & 0xF8; // 11111000; // RxD0 = 0 --> Input
PD6 = PD6 | 0x08; // 00001000; // TxD0 = 1 --> Output
//---config - Ende----

Des Weiteren würde ich denken, dass ich das Function Select Register A0
(PS0) noch einstellen müsste. Doch da stürzt mir das Programm immer ab.

//PS0 = PS0 || 0x08; // 00001000; // setzen der '1'
//PS0 = PS0 && 0x08; // 11111000;

Zum Schluß wollte ich einfach einen Buchstaben verschicken:
U0TBL = 'H';

Ich bin mir auch gar nicht ganz sicher, was ich überhaupt alles
konfigurieren muss.
Über eure Hilfe wäre ich sehr dankbar.

Gruß Bastian

von Lutz (Gast)


Lesenswert?

wollte (habe) Dir 'ne Mail schreiben, ungültiger Empf.

Lutz

von Lutz (Gast)


Lesenswert?

ah, mein Fehler, hast eine Mail.
Lutz

von chrissy (Gast)


Lesenswert?

Dann ist es ja mal gut!

Mich und wahrscheinlich alle anderen Forumsbesucher interessiert das
Problem, der Fehler ehh nicht die Bohne - absoluter Irrglaube, was den
meisten beim Stichwort 'Forum' (und nicht nur die, die mal Latein
genossen haben) einfällt.

kein Grund also für dich ausführlich, öffentlich zu schreiben!!!!! Das
wäre ja noch schöner, wenn jeder Infos abrufen könnte.

von Lutz (Gast)


Lesenswert?

@chrissy
jo, gut gemeckert ;-)
Du hast völlig recht!
Nur, meine Scriptfiles, die ich versendet habe, sind nicht
zur Veröffentlichung gedacht (nicht kommentiert etc.).
Vieleicht hatte ich ja auch nur geschrieben, dass ich mich
mit Ihm über den M32C austauschen möchte?
Grüße
Lutz

von Bastian (Gast)


Lesenswert?

Hi,

also ich habe nach weiterer langer Suche ein gutes Stück Code von
Dietmar in diesem wunderbaren Forum gefunden:
http://www.mikrocontroller.net/forum/read-1-44944.html#44944

Eigentlich habe ich auch alles so konfiguriert, jedoch habe ich eine
andere (ältere) Header-Datei eingebunden und benutzt.
Dietmar hat folgende eingebunden: sfr32c83.h
Darüber lassen sich die Bits der Register auch einzeln ansprechen, was
in meiner Headerdatei nicht möglich war.
Ich kann also leider nicht ganz direkt sagen, wodran es nun lag.

Wie oben zu sehen ist, habe ich das ganze in C programmiert. Welche
Headerdatei habt ihr denn eingebunden? Und welche habt ihr für die
Interrupts?

Danke und schöne Grüße
Bastian

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
Noch kein Account? Hier anmelden.