Travail sur la ceinture Ultra-Son

Comment compiler/telecharger/executer pour MPC555

Compilation

  • Pour compiler des programmes on utilise le Croos Compilateur ppc-elf32-gcc. Il se trouve dans /local/projets/robotique/Target/MPC555/bin/
  • Les librairies comCycab555 et libnode sont placees dans le repertoire /local/projets/robotique/lib/mpc555
  • Lors de la compilation il faut passer en parametre dans l edition de lien un script "script.ld"
  • Une fois le programme compile avec ppc-elf32-gcc il faut passer le programme en bin en utilisant elf2sdxbin que l'on peut trouver dans /local/projets/robotique/Target/MPC555/bin/

Telechargement

  • Pour telecharger le programme on utilise le CAN0 et la commande dwnbin_chouffe que l'on peut trouver dans /local/projets/robotique/Target/MPC555/bin/
  • Cette commande doit etre executee en root
  • Syntaxe : dwnbin_chouffe fichier.bin 16404
    • 16404 est le numero identifiant le MPC555 en decimal
    • L'execution du programme demarre des que le telechargement est termine

Ultra-Son sans syndex

"Archive du programme sans syndex"

  • Ce programme affiche les distances mesurees par les capteurs ultra-son sur la VT100
  • Un relais permet d'alimenter soit les capteurs avant soit les capteurs arriere (MPIO 10)
  • C est le PWM1 qui lance l'activation des ultra son. La duree du signal haut du PWM defini la distance maximale a laquelle un obstacle est repere
  • Des interruptions sont levees pour chaque changement d'etat du signal PWM1. Si le signal passe a 1, les canaux TPU commence a compter et ils sont stoppes si un signal echo provenant des capteurs ultra son est recu (ce signal entraine une interruption). Si le signal PWM1 passe a 0, les canaux du TPU sont stoppes et remis a zero.

Remarque

  • Branchement TPU channel 0 et 1 par Jaxe1
  • Controle de 3 I/O afin de couper les ultrasons en 3 groupes donc 3 initialisations differentes (mais toutes basees sur PWM1) (Ajout d'une porte logique ET sur la carte wrappee)
  • Avant :
    • groupe 1 : capteur 1, 2, 5
    • groupe 2 : capteur 3, 6
    • groupe 3 : capteur 4, 7
  • Arriere :
    • groupe 1 : capteur 1
    • groupe 2 : capteur 2, 3, 4
    • groupe 3 : capteur 5, 6, 7

  • groupe 1 : I/O sur MPIO9
  • groupe 2 : I/O sur MPIO6
  • groupe 3 : I/O sur MPIO7

Integration dans Syndex

"Archive du programme avec syndex"
  • Le graphe du syndex "linio2.sdx"
    • CapteurControle : a pour but d'ajuster les parametres des ultra son ( groupes de capteur interroges, avant ou arriere, portee des capteurs). Non implemente (le prg ne fonctionnant deja pas avec des valeurs fixees)
    • Capteur_US : gere l initialisation du MPC555 et la boucle principale de gestion des resultats (affichage, changement de parametres) (equivalent de main dans ceintult.c pour le programme sans syndex)

  • "linio2.m4x"
    • L'identifiant du MPC555 est defini au debut du fichier (pour les ultra-son : 4014)
    • Toutes les fonctions definies dans linio2.m4x sont des equivalents des fonctions assembleurs ou C du programme sans syndex
    • Les boucles (celle de Capteur_US) s'execute a un rythme fixe par rtai386.m4x
    • Une mesure d'ultra-son prends au moins une periode de PWM soit a peu pres 60 ms (ce qui devait donc etre la periode minimum d'execution des boucles)
    • L'initialisation du MPC555 se fait dans la boucle INIT de Capteur_US
    • Les fonctions definies dans linio2.m4x sont utilisees lors des interruptions (voir 555.m4x)

  • Macros modifiees
    • "rtai386.m4x" : Ligne 40 definie la periode des boucles d execution du root et du MPC555
    • "555.m4x" : A partir de la ligne 382, gestion des interruptions du MPC555
      • "Documentation Robosoft sur les macros de 555.m4x"
      • Interruption du PWM1 : genere soit le demarrage du TPU (passage de 0 a 1), soit son arret et sa remise a zero (passage de 1 a 0)
      • Interruption du TPU : elle est generee par le signal echo venant d'un capteur ultra-son. Elle entraine la mesure d'une distance
      • Probleme des Interruptions
        • Si on reautorise les interruptions a la fin de l'execution de celle ci, cela entraine un blocage du programme (le MPC555 semble ne jamais pouvoir sortir de l'interruption)
        • Si on efface les flags levant l'interruption, les interruptions suivantes ne sont levees que pour le passage de 0 a 1 (et plus de 1 a 0)
        • Si on ne reautorise pas les interruptions apres l'execution de l'une d'elle le programme ne se bloque pas (et on peut les reautoriser via la boucle de Capteur_US)
        • Impossible de touver une maniere de faire 2 executions de la meme interruption a la suite (une periode de PWM) sans que le MPC555 se bloque
        • J'ai change l'initialisation des interruptions et le retour des interruptions par celles qui fonctionnaient dans le programme sans Syndex mais le probleme persiste
        • Ce blocage est surement du a un probleme de retour d'interruption ou a un parametrage d'environnement mais impossible de trouver la source du probleme.

  • Makefile avec macros modifiees : "GNUMakefile"
    • Le chemin des macros est a definir par M4PATH (ligne 28)

  • Transfert sur CAN0 et CAN1
    • Actuellement le MPC555 est sur le CAN0, or le graphe actuel n'est valable que si le MPC555 passe sur le CAN1 (il faut juste changer les connexions)
    • Si on veut le faire marcher sur le CAN0, il faut rajouter le graphe linio2.sdx a celui existant linio.sdx et utliser la macro 555.m4x contenant la gestion des interruptions (il faut aussi reussir a faire un boucle temporelle plus lente pour le MPC555 qui gere les ultra son, car les autres MPC555 ont une boucle de 10 ms)
    • Je n'ai pas reussi a communiquer par le CAN1, il senble que :
      • La configuration du CAN1 est differente de celle du CAN0 (registre 0x307480, voir 16-22 dans user's manuel), donc le CAN1 n'est surement pas en attente d'un message
      • La configuration du port d'entree pour le CAN1 par le syndex n'a jamais ete teste, donc elle est peut-etre errone (macros CAN.m4x)

  • Parametrage des capteurs Ultra-son (Il est necessaire de rajouter des variables dans le graphe linio2.sdx)
    • Seul le capteur 4 est interroge pour le moment, et la distance maximum mesuree par les capteurs est fixee par l'initialisation du PWM1
    • Le parametrage devrait pouvoir permettre de choisir en changeant des variables dans la memoire partagee par CapteurControle :
      • Quels groupes de capteur interroger (numeros de groupe et avant ou arriere) : on change ce parametre dans le MPC555 par la gestion des MPIO
      • Distance maximum de portee des ultra-son (fixee actuellement vers 3m) : parametrage de PWM1 (Pulse register 0x30 600A)
      • Renvoie de la distance fournie par les capteur ultra-son

Guide d'utilisation Syndex

GuideUtilisationSyndex


-- AdrienGhariani - 24 Aug 2004
Topic attachments
I Attachment Action Size Date Who Comment
555.m4xm4x 555.m4x manage 78 K 19 Aug 2004 - 12:12 UnknownUser Macro gerant le MPC555
555macros.pdfpdf 555macros.pdf manage 403 K 20 Aug 2004 - 08:26 UnknownUser Documentation sur les macros de 555.m4x
GNUmakefileEXT GNUmakefile manage 2 K 19 Aug 2004 - 12:54 UnknownUser Makefile avec Syndex
MakefileEXT Makefile manage 1 K 09 Aug 2004 - 11:57 UnknownUser Exemple de Makefile sans Syndex
ceinture.tar.gzgz ceinture.tar.gz manage 83 K 17 Aug 2004 - 12:25 UnknownUser Programme ceinture ultra son sans Syndex
linio2.m4xm4x linio2.m4x manage 17 K 19 Aug 2004 - 13:08 UnknownUser Programme principal
linio2.sdxsdx linio2.sdx manage 1 K 19 Aug 2004 - 11:41 UnknownUser Graphe syndex
rtai386.m4xm4x rtai386.m4x manage 12 K 19 Aug 2004 - 12:12 UnknownUser Macro gerant entre autres la duree des boucles
script.ldld script.ld manage 5 K 09 Aug 2004 - 08:27 UnknownUser Script necessaire pour la compilation
ultrason.tar.gzgz ultrason.tar.gz manage 193 K 19 Aug 2004 - 13:10 UnknownUser Programme Ultra-Son avec Syndex
Topic revision: r16 - 31 Jul 2013, SorayaArias
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding SedWiki? Send feedback