Problème de tx avec uart1

Postby cricroucrok » Wed May 30, 2007 12:00 am

Bonjour à tous,

Voici mon petit problème, je désire utiliser le uart1 dans mon application, le même que celui utilisé pour programmer le rc813 (rx pin1 et tx pin32).

Je suis donc partit de l'exemple "R8C - Premiers pas - Jean Brunet" en remplaçant les registres de l'uart 0 en l'uart 1

exemple:

u1mr = 0x05; ===> ancienne valeur: u0mr = 0x05;
u1c0 = 0x00; ===> ancienne valeur: u0c0 = 0x00;
//u1rrm = 0;u0rrm ===> pas d'équivalent en uart1 ???
u1brg =32-1; ===> ancienne valeur: u0brg =32-1;
etc, etc....

A ce stade je pense avoir un petit résultat, apparemement la réception d'un caractère dans le programme du rc813 fonctionne, car je recopie sa valeur sur le port p1 et celle-ci semble correspondre au code ascii du caractère envoyé par hyperterminal. Par contre aucune donnée n'est transmise du µc vers hyperterminal. Le problème ne peut pas être électrique puisque le port fonctionne pour l'upload du programme et sa vérification...

j'ai rajouté l'instruction prc2=1 partout pour être sûr de bien déverouiller p0 mais sans succès.

Voici le code utilisé:

void UART1_INIT(void){
p0=0xff;
prc2=1;
pd0=0xff;
p0=0xff;
pd3=pd3&0x7f; // Ok car réception OK
u1mr = 0x05;
u1c0 = 0x00;
//u1rrm = 0; mis en commentaire car u1rrm n'existe pas (dans l'exemple: u0rrm=0)
u0brg = 32-1; // 38400 baud avec l'horloge 20MHz
re_u0c1 = 1; // réception activéere_u1c1 = 1;
}

void sendTxd1(unsigned char data){
while (ti_u1c1 == 0); //wait empty tx buffer
u1tbl=data; // u1tb=data ne fonctionne pas non plus
te_u1c1=1; //send
}

unsigned char receiveRxd1(void){
unsigned char data;
unsigned char dummy;
while (ir_s1ric == 0); //wait for serial data
ir_s1ric = 0;
data = u1rbl; //put in buffer
dummy = u1rbh; //mem error
re_u1c1=1;
return data;
}


void main(void){

char Message[]="Je passe un message";
unsigned char touche;
unsigned char i;

/*-- Change on-chip oscillator clock to Main clock --*/

asm("FCLR I");
prc0 = 1; /* Protect off */
cm13 = 1; /* Xin Xout */
cm15 = 1; /* XCIN-XCOUT acity */
cm05 = 0; /* Xin on */
cm16 = 0; /* Main clock = No division mode */
cm17 = 0;
cm06 = 0; /* CM16 and CM17 enable */
asm("nop"); /* Waiting for stable of oscillation */
asm("nop");
asm("nop");
asm("nop");
ocd2 = 0; /* Main clock change */
prc0 = 0;

pd1 = 0x0ff;
UART1_INIT();

while (1){
touche=receiveRxd1(); //OK
sendTxd1(touche); //Non OK rien dans hyperterm.
p1=touche; //OK
}
}

Rien n'y fait, pas moyen d'obtenir de caractère sur l'hyperterminal, si quelqu'un a une idée ou un programme qui fonctionne sur uart1 (rx+tx), ça me ferait vraiment plaisir.

Merci d'avance, bonne prog a tous...
cricroucrok
 
Posts: 3
Joined: Fri Jan 17, 2014 4:36 pm

Postby ymasquel » Wed May 30, 2007 12:00 am

Bonjour "cricroucrok",

Après un rapide survol il apparait que le bit TXD1SEL du registre UCON n'est pas positionné à 1 (voir chapitre 13 et principalement page 113 du HARDWARE_MANUAL).
Je n'ai pas poussé plus avant mais c'est suffisant pour que cela ne fonctionne pas.
Ha, si, dans ton UART1_INIT tu termines par 2 lignes qui intéressent l'UART0 (u0brg et re_u0c1) et non l'UART1 !!!

Amicalement, Yves.
Amicalement,
Yves.
ymasquel
Site Admin
 
Posts: 3387
Joined: Thu Jan 02, 2014 10:44 am
Location: Oise (60)

Postby cricroucrok » Wed May 30, 2007 12:00 am

Problème résolu

Au sujet de u0brg et re_u0c1 c'était juste une erreur de recopie sur le forum, par contre, un petit "txd1sel=1;" au sommet de UART_INIT et tout est rentré dans l'ordre. Quand je pense que ça fait plus de deux jours que je vérife et revérifie mon circuit...

Yves, un GRAND merci, je commençais vraiment à désespérer...merci d'avoir pris le temps de me répondre...



cricroucrok
 
Posts: 3
Joined: Fri Jan 17, 2014 4:36 pm

Postby alfa » Wed May 30, 2007 12:00 am

Bonjour à tous,

Voir R8C/13 Group - Manuel HARDWARE - page 185 (du 27/01/2006)

Sur la carte Glyn R8C/13, c'est le Standard Serial I/O Mode 2 qui est imposé et malheureusement....(CNVss et MODE à la masse)
IL EST DIT QU'IL FAUT CONNECTER au minimum un résonnateur ceramic !!!

joint la photocopie du document Renesas.

Pour le mode Standard Serial I/O Mode 1, il est possible de se passer d'une oscillation externe.

Bien à vous.

Hervé.
Attachments
fr_1619395178171.jpg
fr_1619395178171.jpg (20.84 KiB) Viewed 788 times
alfa
 
Posts: 14
Joined: Fri Jan 17, 2014 4:36 pm


Return to R8C/13 (01-2006)

Who is online

Users browsing this forum: No registered users and 1 guest