mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einstellung der MIDI Baudrate für einen 80c537


Autor: theo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,

ich baue zur Zeit eine Midi Controllerbox. Ich benutze als MC ein
Infineon 80C537 Entwicklungsboard von Elektor. Hab bis jetzt alles
geschafft (analoge Digitale Ein und Ausgänge etc).
Nur die Einstellung der Baudrate auf 31250 Baud bereitet mir Probleme.
Der Controller hat 2 Serielle Ausgänge, von denen einer laut Datenblatt
eine eigene Baudratenerzeugung hat. Habe das aber leider nicht
hinbekommen.
Der Controller kann per Jumper zwischen 16 und 12 MHZ umgeschaltet
werden (leider keine Ahnung ob statt der 12MHZ ein 11.059 MHZ Quarz
eingebaut ist).

im Momet benutze ich diesen code zur initialisierung des uart:

SCON = 0x50; /* Setup serial port control register */
             /* Mode 1: 8-bit uart var. baud rate */

TMOD = 0x20; /* Set M1 for 8-bit autoreload timer */
TH1 = 0xFE; /* Set autoreload value for timer 1 */
            /* 9600 baud with 11.0592 MHz xtal */
TR1 = 1; /* Start timer 1 */


eine Änderung in TH1 macht sich aber leider nicht bemerkbar (bin über
ein Hyperterminal verbunden).

Hoffe ihr könnt mir helfen. Ich überlege jetzt schon viele Nächte aber
es geht nicht vorran.


Vielen Dank im vorraus....

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mein 80537 hatt nch keinen int. Quarz aber wenn im Datenblatt 12MHZ
steht, werden es auch 12 sein. Ich bin mir nicht sicher dass das
klappt, was Du da in der Initialisierung machst.

/******************* serial_port
****************************************/
/******************* putch erfassen *******************************/
void putch(char ch)
{

while(!(TRANSMIT));

S1CON=S1CON&0xfd; /* Löschen des TI-Bit */

BUFFER=ch;

} /* putch */

/******************* getch erfassen *******************************/
char getch()
{

while(!(RECIEVE));

S1CON=S1CON&0xfe; /* Löschen des RI-Bit */

return(BUFFER);

}

/******************* printstring erfassen
*******************************/
void printstring(char *str)

{
 char i=0;
 while(str[i]!=0) {
  putch(str[i]);
  i=i+1;
 } /*WHILE*/
} /* printstring */


/******************* initser1 erfassen
*******************************/
void initser1()
{
S1RELL=0xDC;
S1RELH=0x03;
S1CON=0xb2;
}

/******************* Ausgabe erfassen *******************************/
void Ausgabe(char *str)
{
 PCON = fast;
 Watchdog();
 initser1();
 printstring(str);
 putch(0x0d);
 putch(0x0a);
}
/******************* serial end **************************************/

Autor: theo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super vielen Dank, dass hilft sehr.
Was ist das für ein compiler, dass RECEIVE und TRANSMIT definiert sind.
Ich denke S1CON ist nicht bit-addressierbar.......


Gruss

Theo

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
S1CON=0xb2 schreibt ja auch ein ganzes Byte ins Register.  RECEIVE und
TRANSMIT sind wohl eigene Defines.
#define TRANSMIT S1CON&0x02
#define BUFFER S1BUF
#define RECIEVE S1CON&0x01
der Compiler ist ein http://www.raisonance.com/ Compiler gewesen,
inzwischen 12 Jahre alt und damals schon deutlich besser als das Zeug
das man heute bekommt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.