UART1 die Zweite

Postby rolpli » Mon Feb 15, 2010 12:00 am

Helauauau und Alaaaf,
für ein Programm das mit dem PC kommunizieren soll wollte
ich die USB-Verbindung nutzen und deshalb aus probieren!
Mein Programm lehnt sich an das von "UART1" an. Siehe unten.
Aber auf Txd1 zuckt und Ruckt nichts. Wenn ich P6_7 (pin Txd1) direkt "anspreche" geht 's aber - nix kaputt!!!!
Wo ist was Falsch? Im "initUART1"? Oder im "sendTxD1"?

#include "sfr111.h"
#include "hwsetup.h"

void initUART1(void)
{
pd6_7 = 1;//Txd1 Output
pd6_6 = 0;//Rxd1 Input
p6_7 = 0;//Txd1 = 1

u1c0 = 0x10;//CTS disabled ????? ist es das CTS von der "Seriellen" -Welcher Pin?
u1brg = 0xA2;//9600bps ?????? Wie ist die Periphere Clock-Frequens auf unserem Board ( Nach "ConfigureOperatingFrequency();" )
u1c1 = 0x05;//
u1mr = 0x05;//
u1smr = 0x00;//
u1smr2 = 0x00;//
u1smr3 = 0x00; //
u1smr4 = 0x00; //
re_u1c1 = 1;//
te_u1c1 = 1;
}

void sendTxD1(unsigned char data)
{
while (ti_u1c1 == 0);
u1tb = data;
te_u1c1 = 1;
}

/**********************************************************************************
unsigned char receiveRxD1(void)
{
unsigned char data = 0;
unsigned char dummy;
while (ir_s1ric == 0);//Warten bis Post kommt
//if (ir_s1ric == 1)//ist Post gekommen?
{
ir_s1ric = 0;//Flag rücksetzen
data = u1rbl;//Post rausnehmen
dummy = u1rbh;
re_u1c1 = 1;
}
//else data = 0;keine Post!! 0 abliefern
return data;//und abliefern
}
************************************************************************************/
void main(void)
{
unsigned char Data;

ConfigureOperatingFrequency();
initUART1();

Data = 65;

while(1)
{
//Data = receiveRxD1();
sendTxD1(Data); //soll ständig senden!!!!!!!!!!!!//um was messen zu können
}
}

Ein funktionierendes Beispiel wehre sehr Hilfreich!!!
Ein paar elementare Fragen stehen auch in den Kommentaren.

schon mal Vielen Dank im voraus
Gruß Roland
rolpli
 
Posts: 63
Joined: Fri Jan 03, 2014 1:48 pm

Postby had » Wed Feb 17, 2010 12:00 am

Hallo Roland,

habe dir mal ein Beispiel im Dateianhang beigefügt.
Habes es kurz getestet und es sendet ohne Pause AAAAAAA.....

Ich hoffe es hilft dir.

Gruß

Hans
Attachments
TEST-UART.rar
(99.82 KiB) Downloaded 61 times
had
 
Posts: 15
Joined: Fri Jan 03, 2014 1:48 pm

Postby rolpli » Fri Feb 19, 2010 12:00 am

Hallo Hans,
probiert und funktioniert!!!
Es lag wohl an p6_7s = 3; und p6_6s = 3; .
Mit den zusätzlichen Befehlen in meinem C.File und dem Rausschmiss
von dem ganzen rumprobieren sendete es "AAAAAAAAAAAAAAAAA".
Da hab ich gleich mal "Echo" programmiert.
(sendTxd1 (receiveRxd1()) Geht- jetzt kann ich weiteres ausprobieren.
Vielen Dank für die Hilfe.
Gruß Roland
rolpli
 
Posts: 63
Joined: Fri Jan 03, 2014 1:48 pm

Postby rolpli » Sun Feb 28, 2010 12:00 am

Hallo,
ich hab irgendwo gelesen das der PL2303 bis zu 1Megabps übertragen kann.
Habe es probiert! Wenn man u1brg mit 01 "füttert" kommen
768kbps zustande! Bei 03 sind es noch 384kbps! Und 0D führen zu
115200bps. Beachtlich !!! Um zu synchronisieren (damit jedes Byte weiß wohin es gehört) hab ich noch CTS (Pin 11) an Port 3_0 gelegt. Geht auch!!!
Mit Delphi und der RSCOM DLL lies sich das auch einfach programmieren.
Und die Treiber des PL2303 ließen das zu.
Gruß Roland
rolpli
 
Posts: 63
Joined: Fri Jan 03, 2014 1:48 pm

Postby had » Mon Apr 05, 2010 12:00 am

Hallo und Frohe Ostern,

nach langer Pause komme ich heute endlich wieder dazu an meinen Vorhaben weiter zumachen. Die Aufgabe lautet ein Protokoll zuschreiben wie DLE STX [Daten ....] DLE ETX BCC oder so ähnlich.

Zunächst frage ich den Startus vom Ringbuffer ab.

uart1_ReceiveStatus()

wenn ein Zeichen im Ring- Buffer vorliegen verzweige ich zum

parser()

hier prüfe ich nun ob eine DLE vorliegt wenn ja prüfe ich ob das zweite zeichen STX ist und wenn ja springe ich zunächst zum Main
zurück und sende ein M zum PC.

Hier ist nun das Problem das ich das zweite Zeichen nicht mit bekomme wenn ich uart1_ReceiveStatus() auf > 0 abfrage wenn
ich auf > 2 abfrage und sende die gleiche Zeichenfolge z.B. HEX: 10 02 55 55 55 erkenne ich das 2 Zeichen.

Nur weiß ich ja nicht wo mein DLE STX im Datenstrom mit n- Zeichen liegt muss ich ja auch nicht wenn der Ringbuffer seine aufgabe erfüllt. Ich denke ich habe ein Problem mit dem Interrupt

Ich füge mal mein Projekt bei. Vielleicht hat auch jemand ein Beispel für eine Protokoll.

Gruß

Hans
Attachments
Me2010.rar
(246.35 KiB) Downloaded 63 times
had
 
Posts: 15
Joined: Fri Jan 03, 2014 1:48 pm


Return to R32C-Projekt

Who is online

Users browsing this forum: No registered users and 1 guest