Hallo,
ich hab ein Problem an den ich nicht weiterkomme, vielleicht kann mir
ein von Euch helfe. Also folgendes:
Ich hab das Bluetooth-Modul BTM-222, diesen hab ich über RS232 mit den
PC verbunden und kann über das Hyperterminal sämtliche Einstellungen
ändern. Wenn ich jetzt über ein zweites Hyperterminal über Bluetooth
verbinde kann ich über die erste Verbindung Daten oder Befehle senden
die ich auch ohne Probleme am zweites Hyperterminal ankommen, soweit
funktioniert also die Verbindung.
Wenn ich jetzt die RS232 Schnittstelle vom PC gegen die
UART0-Schnittstelle des µC R8C/13 tausche und im Prinzip genau das selbe
machen will, kommen am Ende nur Hieroglyphen. Ich hab sämtliche
Einstellungen bezüglich der Baudrate geändert, doch dabei kommen
wiederum nur andere Hieroglyphen an. Damit kann ich jedenfalls sagen das
die Hardware soweit korrekt ist sonst würde sich ja gar nicht tun, oder
?
Jetzt habe ich gelesen das der µC mit einem Startbit arbeitet den man
leider nicht ausschalten kann und der BTM-222 diesen gar nicht kennt.
Kann es damit zusammen hängen warum da nur Murks rauskommt ? Kann man
dies vielleicht sogar „austricksen“ ?
-------Mein QuellCode------------------------------
/* Definitionen der SFR (special funktion register) einbinden */
#include „sfr_r813.h“
#define F_OSC 20000000UL
#define BITRATE 19200UL
/* Implementierung siehe R8C Codebeispiel */
void Init_Takt_Extern(void);
void uart0_willkommen(unsigned char *stext);
void main(void)
{
/* Auf extern 20 MHz umschalten */
Init_Takt_Extern();
/*
** UART0 initialisieren
** Clock Asynchrous Serial I/O (UART) Mode
** s. a. Hardware Manual Kap. 13 Serial Interface
**
** Anm.: UART1 ist vom Debugger belegt.
*/
/*
** ‚UART0 bit rate generator‘ setzen abhängig
** von (externem) Takt und gewünschter Bitrate
** Hardware Manual Kap. 12.2.3
*/
u0brg = (unsigned char) (((F_OSC) / ((BITRATE) * 16)) - 1);
/*
** Übertragungsformat einstellen
*/
/* 8 Datenbits einstellen */
smd0_u0mr = 1;
smd1_u0mr = 0;
smd2_u0mr = 1;
/* Internal (!) Takt auswählen */
ckdir_u0mr = 0;
/* 1 Stopbit auswählen */
stps_u0mr = 0;
/* Parity disable (none) */
prye_u0mr = 0;
/*
** Übertragung erlauben
*/
/* Enable Transmission */
te_u0c1 = 1;
/* Enable Reception */
re_u0c1 = 1;
/*
** Terminal löschen
** FORMFEED hex. 0x0C oct. 014
** + Begrüssungstext
*/
uart0_willkommen("\014R8C/13 UART0 Codebeispiel\n\r");
/* Für immer… */
while(1)
{
unsigned char zeichen = ‚#‘;
unsigned char RXError = 0;
/* Zeichen am Empfang (RX) abholen */
/* Warten bis Empfangspuffer voll */
while (!ri_u0c1)
;
/* Empfangspuffer auslesen */
zeichen = u0rbl;
RXError = u0rbh; /* löscht gleichzeitig ri_u0c1 ! */
/* hier ggf. Fehlerbehandlung */
/* Etwas mit dem Zeichen machen */
if (zeichen >= ‚a‘ && zeichen = ‚A‘ && zeichen kein Teilung des Taktes */
/* kurz warten bis externe Taktquelle stabil läuft */
asm(„nop“);
asm(„nop“);
asm(„nop“);
asm(„nop“);
/* CPU Takt auf gerade festgelegte externe Taktquelle umschalten */
ocd2 = 0; /* 0 = ‚main clock‘ als CPU clock auswählen */
prc0 = 0; /* Schreibschutz für wichtige SFR wieder einschalten */
}
-------Die Ausgabe----------------------------------
ç[yB™~U[W>¿!7;–'ëÊ
--------Die Einstellungen am BTM-222-------------------
ATC=1, HARDWARE FLOW CONTROL
ATD=0000-00-000000, NEVER SET BLUETOOTH ADDRESS
ATE=1, ECHO CHARACTERS
ATH=1, DISCOVERABLE
ATK=0, ONE STOP BIT
ATL=2, BAUD RATE is 19200
ATM=0, NONE PARITY_BIT
ATN=AAE-WPF145, LOCAL NAME
ATO=0, ENABLE AUTO CONNECTING
ATP=1234, PIN CODE
ATQ=0, SEND RESULT CODE
ATR=1, SLAVE ROLE
ATS=1, ENABLE AUTO-POWERDOWN OF RS232 DRIVER
ATX=1, ALWAYS CHECK ‚+++‘
Ich hoffe jemand kann mir helfen, ich verzeifel.
Gruss
Peter