UART1

Postby had » Sat Aug 29, 2009 12:00 am

Hallo zusammen!

Ich habe ein EVBR32C111 von Glyn/Elektor und möchte gerne
vom PC Zeichen an das EVB übertragen.
Für die Übertragung möchte ich die USB Schnittstelle nutzen die
mit dem Uart1 verbunden ist.

Hat vieleicht jemand ein Beispiel, und wie muss die Configuration für die Operating Frequenz aussehen.


Hans
had
 
Posts: 15
Joined: Fri Jan 03, 2014 1:48 pm

Postby had » Sat Aug 29, 2009 12:00 am

Hallo!
Noch ein Nachtrag mein Programm sieht wie folgt aus

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


// Interrupt declaration
//#pragma INTERRUPT TimerA0_int

// functions
void uart1_init(void);
void sendTxd1(unsigned char data);
unsigned char receiveRxd1(void);

// globals
char ch;


// main function
void main(void)

{

ConfigureOperatingFrequency();// init oscillator an pll
uart1_init(); // init uart1

while(1)
{

// ch = receiveRxd1();
sendTxd1(1);

}
}


// init Uart1
void uart1_init(void)
{

pd6_7 = 1; // Txd output
pd6_6 = 0; // RxD input
p6_7 = 1; // Txd output
p6_6 = 0; // RxD input


u1brg = 97; // Count Sorce of BGR f1
// Setting value of BRG
u1mr = 0x05; // 8 bit, internal clock, 1 stop bit, non inverted
u1c0 = 0x00; // count source f1, resered, 0, cts enabled, 0, LSB
u1c1 = 0x05; // Txd enabled, 0, Rxd enabled, 0, continuous reiceve mode, non inverted, 0
u1rrm_u1c1 = 1;
re_u1c1 = 1;

}

void sendTxd1(unsigned char data)
{

while (ti_u1c1 == 0); //Wait for transmission buffer emty
u1tb = data; //Set transmission data
te_u1c1 = 1; // Transmission enabled

}

unsigned char receiveRxd1(void)
{

unsigned char data;
unsigned char dummy;
while (ir_s1ric == 0); //Wait for received data
ir_s1ric = 0;
data = u1rbl; //Get reception data
dummy = u1rbh; //Get error
re_u1c1 = 1; // Reception enabeld
return data;

}
had
 
Posts: 15
Joined: Fri Jan 03, 2014 1:48 pm

Postby mr. teflon » Sat Aug 29, 2009 12:00 am

Hallo,

ich bin selbst noch Anfänger, aber Du brauchst zum Empfang bestimmt eine ReadTxd bzw. ReadRxd Funktion statt sendTxd ...

Tschau
Mr. Teflon
mr. teflon
 
Posts: 146
Joined: Fri Jan 03, 2014 1:48 pm

Postby had » Sat Aug 29, 2009 12:00 am

Hallo Mr. Teflon,

ich habe eine sendTxd1 und eine receiveRxd1 auch eine Uart1 init und bei dieser bin ich mir nicht sicher ob alles richtig gesetzt ist.

Beim R8C hatte diese Struktur von Programm funktioniert.
Ich denke ich habe beim ConfigureOperatingFrequency() einen
Fehler.

Gruß

Hans
had
 
Posts: 15
Joined: Fri Jan 03, 2014 1:48 pm

Postby had » Sun Aug 30, 2009 12:00 am

Guten Morgen!

So nun kann ich ein Zeichen über ein Terminal Programm an den
Controller senden, der Controller sendet auch eine Zeichen zurück, aber leider nur selten das Zeichen was das Terminal Programm gesendet hat zB: 2 =>0.
Ich denke das die Baudrate ist nicht richtig abgestimmt.
Wie kann ich das überprüfen?

Gute Nacht und bis Später....

Hans
had
 
Posts: 15
Joined: Fri Jan 03, 2014 1:48 pm

Postby mr. teflon » Sun Aug 30, 2009 12:00 am

Hallo,

ich habe da auch keine Ahnung. Aber vielleicht eine Idee.
Die Zeichen werden mittels ASCI Code übermittelt. Ich weis jetzt nicht wie das bei 'Terminal > µC > Terminal' abläuft. Aber zur richtigen Ausgabe vom µC ans Terminal bzw. auf ein Display muß immer +48 addiert werden, damit die Ausgabe wieder stimmt.
Vielleicht bekommt Dein µC die richtige Zahl 2, sendet diese als 2 an den µC und der µC sendet die 2 als ASCI 2 zurück statt 2+48 zu senden also ASCI Code 50, was wieder die Zahl 2 wäre.

Ist nur so eine Idee. Mehr weis ich dazu wirklich nicht.
mr. teflon
 
Posts: 146
Joined: Fri Jan 03, 2014 1:48 pm

Postby had » Wed Sep 02, 2009 12:00 am

Hallo Zusammen,

leider habe ich den Fehler noch nicht gefunden.
Wenn ich ein großes "A" an die MCU sende bekomme ich
ich ein kleines "a" zurück. Was kann die Ursache sein?

Hat denn keine ein Beispiel für den R32C111.
Die Baud Rate ist doch abhänig vom Clock Generator und
da benutze ich das Beispiel Sinusgenerator.

Kann mir dabei jemad helfe?

Gruß

Hans
Attachments
hwsetup.1.c
(3.63 KiB) Downloaded 24 times
had
 
Posts: 15
Joined: Fri Jan 03, 2014 1:48 pm

Postby had » Thu Sep 03, 2009 12:00 am

Hat denn keiner bisher eine Idee oder ein Beispiel?
Hat denn noch keiner Daten vom PC zum R32C gesendet?

Bin für jede Hilfe/Idee dankbar!
Attachments
R32C-Sinwave.c
(4.21 KiB) Downloaded 31 times
had
 
Posts: 15
Joined: Fri Jan 03, 2014 1:48 pm

Postby had » Sun Sep 13, 2009 12:00 am

Hallo,

habe den Fehler gefunden, lag wirklich an der Baudrate:

u1brg = 13-1; // UiBRG Count Source (UiC0 b1 and b0) = f1 => 115200 bps BRG n = 13 at Peripheral Clock 25MHz

Nun bekomme ich die Zeichen 1 zu 1als Echo zurück und das mit
115200 B/s

Gruß


Hans
had
 
Posts: 15
Joined: Fri Jan 03, 2014 1:48 pm

Postby karmeij » Sat Jan 02, 2010 12:00 am

Hallo Hans,

Entschuldige für mein schlechtes Deutsch.

Es gelingt mir nicht um ein UART Verbindung zwischen mein PC und Micro zu machen. An Anfang habe ich versucht UART3 und 5 zu benutzen, aber leider ohne Erfolg.

Dann habe ich auch deine Code versucht and bei mir klapt es nicht. Könntest du vielleicht eine mot Datei schicken damit ich meine Hardware testen kann?

Danke und Gruss,

Karst
karmeij
 
Posts: 6
Joined: Fri Jan 03, 2014 1:48 pm

Next

Return to R32C-Projekt

Who is online

Users browsing this forum: No registered users and 1 guest