Page 1 sur 1
problème en ansi C
Posté : 05 janv. 2004 19:22
par BoumBoazerty2
Bonjour, je suis un pauvre amatteur en C, et je travaille en ce moment sur une carte de devellopement en HCS12 pour les amateurs.
Les registres sont configurés nickel mais mon code en ansi C ne tourne pas rond pas moyen de faire tourner ce fichu code pour recuperer des caractères sur une liaison serie; quelqu'un peut'il me donner un coup de main...
Merci d'avance
Code : Tout sélectionner
void init_serie(void)
{
SCI0BDH=0x00; /*Baud rate SBR12..SBR8=0*/
SCI0BDL=0x0D; /*9600 Bauds Attetion Freq SCI=2Mhz!!!*/
SCI0CR1=0x00; /*control bits LOOPS=SCISWAI=RSRC=M=WAKE=ILT=PE=PT=0*/
SCI0CR2=0x0C; /*control bits TR=TE=1*/
}
void send_carac(char c)
{
while((SCI0SR1) == 0){};
SCI0DRL = c;
}
void send_string( unsigned char * s)
{
while(*s)
send_carac(*s++);
}
void main(void)
{
init_serie();
while(1)
{
send_string("....Ceci est un test....");
send_carac(CR);
send_carac(LF);
}
}
Posté : 05 janv. 2004 21:07
par GregLand
Tu ne déclare pas tes fonctions ?
SCI0BDH il faut le déclarer avant !
Rassures toi... on a un pro du C sur ce forum... Naveed c'est a toi... moi c'est le Java, l'asm, le VB et le Delphi

c caca le C :langue:
Posté : 05 janv. 2004 21:18
par Naveed
Rassures toi... on a un pro du C sur ce forum... Naveed c'est a toi...
MDRRRRRRRRR
merci greg de m'envoyer à la mort :shoot:
lol si c moi qui corrige, alors là, on est pas dans la m*rde !!!
suis juste initié au C mouaaa , sans plus lol
moi c'est le Java, l'asm...

l'ASM ?? tiens c nouvo, ça, sans déconner? :langue:
hum hum mister greg , c pas sans me rappeler un tit souvenir récent lol

:)
Naveed

Posté : 05 janv. 2004 21:19
par GregLand
Pardon... le désassemblage ! :bravo:
J'ai trompé !

Posté : 05 janv. 2004 23:17
par Nevada Smith
Greg a écrit :Tu ne déclare pas tes fonctions ?
SCI0BDH il faut le déclarer avant !
a mon avis cé un registre et t'a un include spéciale pour le proc..
sinon j'connais ke le 87c51 et j'code plutot en asm la d'ssus...
le while((SCI0SR1) == 0){}; cé pour etre sur ke le buffer
de sortie est vide avant d'envoyer le byte je suppose....
cé un bit ou un registre le SCIOSR1 ??
si cé un registre fo plutot faire un filtre sur un bit particulier nan??
du genre while((SCI0SR1 & bit_buffer_vide) == 0);
sinon aucune idée pour ton prob...dsl..
le HC12 cé com le HC11 du niveau registre??
si cé l'cas j'connais un pro du HC11 qu'a deja fais d'la rs232 avec...
(la suite qd j'aurais vu mon pote...)
Posté : 09 janv. 2004 12:37
par BoumBoazerty2
Nevada Smith a écrit :Greg a écrit :Tu ne déclare pas tes fonctions ?
SCI0BDH il faut le déclarer avant !
a mon avis cé un registre et t'a un include spéciale pour le proc..
sinon j'connais ke le 87c51 et j'code plutot en asm la d'ssus...
le while((SCI0SR1) == 0){}; cé pour etre sur ke le buffer
de sortie est vide avant d'envoyer le byte je suppose....
cé un bit ou un registre le SCIOSR1 ??
si cé un registre fo plutot faire un filtre sur un bit particulier nan??
du genre while((SCI0SR1 & bit_buffer_vide) == 0);
sinon aucune idée pour ton prob...dsl..
le HC12 cé com le HC11 du niveau registre??
si cé l'cas j'connais un pro du HC11 qu'a deja fais d'la rs232 avec...
(la suite qd j'aurais vu mon pote...)
Oui c kifkif!! mais bien c bien plus recent (des periph en plus c plus rapide plus de fonction...C AUSSI BCP PLUS CHER et pas dispo à l'unité sauf avec une carte d'eval)
Posté : 09 janv. 2004 13:49
par GregLand
Puré, moi g décroché là...

Posté : 10 janv. 2004 00:10
par Nevada Smith
BoumBoazerty2 a écrit :Oui c kifkif!! mais bien c bien plus recent (des periph en plus c plus rapide plus de fonction...C AUSSI BCP PLUS CHER et pas dispo à l'unité sauf avec une carte d'eval)
j'te confirme sinon ke tu dois tester un bit en particulier dans le
registre SCI0SR1 sinon j'pense pas ke sa marche tres fort ton prog...
mais en fait cé le bit a '1' ke tu dois tester car indique la presence
d'un caractere dans le buffer
un truc com ca :
void send_carac(char c)
{
// attendre bit = '0' pour envoyer le prochain caractere
while(SCIOR1 & bit_status_buffer_vide) == 1);
// envoyer le caractere
SCI0DRL = c;
}
(j'connais pas le HC12 par contre...a toi de voir ds la doc )

Merci
Posté : 15 janv. 2004 22:39
par boumboazerty2
Merci pour ces conseils avisés Nevada Smith, C CODE marche, j'avais mal fait mes calculs pour SCI0BDL=0x0D, j'avais pas pris la bonne frequence pour le quartz...
Bravo au fait Naveed :shoot:
Le C c'est pas ton truc??????

Posté : 15 janv. 2004 23:16
par Naveed
Bravo au fait Naveed :shoot:

ehhhh pas si fort

c dangereux une arme !!
(merci du petit mot , c trop gentil à vous...

no comment...)

Le C c'est un langage que je suis en train d'apprendre mais je suis encore
débutant et loin de ton niveau donc c'est tout à fait normal que je n'ai pas pu te répondre, préférant laisser la parole à une personne plus compétente.
ce que j'ai vu en C, c des ptits exos de calculs de factoriel et trucs ds le genre.
Rien à voir avec la programmation de microcontroleur ou communication série ou je ne sais quoi d'autres
greg : on a un pro du C sur ce forum... Naveed c'est a toi

GREG you're DEAD :shoot: grrr
Posté : 16 janv. 2004 01:32
par Nevada Smith
boumboazerty2 a écrit :Merci pour ces conseils avisés Nevada Smith, C CODE marche, j'avais mal fait mes calculs pour SCI0BDL=0x0D, j'avais pas pris la bonne frequence pour le quartz...
le principal cé ke ca marche.....
moi j'matte tjours a l'oscillo si jé la bonne frequence sur
la rs232, histoire de controler les valeurs du registre
(ou celle du quartz.....tu :sleep: ou koi ?? )
Naveed a écrit :Le C c'est un langage que je suis en train d'apprendre mais je suis encore débutant et loin de ton niveau donc c'est tout à fait normal que je n'ai pas pu te répondre, préférant laisser la parole à une personne plus compétente.
ce que j'ai vu en C, c des ptits exos de calculs de factoriel et trucs ds le genre.
Rien à voir avec la programmation de microcontroleur ou communication série ou je ne sais quoi d'autres
merdouille, moi ki pensais ke tété un pro du c,
jchsuis deçu la !!!

Posté : 16 janv. 2004 01:35
par Naveed
ah oui, c vrai que je devais te donner qq cours particuliers Nevada
merci d'être passé mister :bravo: