Aller au contenu


Photo
- - - - -

Arduino, je me lance.


82 réponses à ce sujet

#81 cocothebo

cocothebo

    Membre passionné

  • Membres
  • PipPipPip
  • 341 messages
  • Gender:Male

Posté 02 juin 2016 - 08:36

Pour le daisy chain, c'est juste une façon de de contourner le "problème" de CS, au lieu d'avoir un CS par esclave, on en utilise qu'un.

Pour que cela fonctionne, il faut donc chainer les esclaves SPI les uns après les autres.

 

En gros le MOSI du 1er slave est sur MOSI du master puis le MISO du 1er slave sur le MOSI du second etc, puis le MISO du dernier slave sur le MISO du master...une chaine quoi :)

La clock est CS sont en commun.

en image ca donne ça: http://en.wikipedia.org/wiki/File:SPI_three_slaves_daisy_chained.svg

 

Jusque la rien de bien compliqué. La ou ca se complique (un peu) c'est donc que maintenant quand tu envoies un message, faut avoir un système d'@ (te faire un protocole pour savoir a qui est adressé la commande), puis tu envoies toujours ta commande au premier slave qui la transmet au second si ce n'est pas pour lui ou transmet la reponse au second qui transmet a son tour etc jusqu'au dernier slave qui renvoie normalement la réponse de la commande au master (ou si personne ne l'a traité, la commande elle même).

Ca complique donc le principe du SPI, pas spécialement pour le master mais beaucoup pour les slaves. Et dans l'absolu, a chaque coup de clock chaque master est sensé traiter les données et transmettre a suivant.



#82 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée
  • Interests:Robotique, informatique, architecture et patrimoine...

Posté 04 juin 2016 - 10:57

Pour le robot, je pense utiliser l'I2C, ce sera plus simple. J'utiliserai probablement le SPI sur autre chose :secret: .


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#83 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 572 messages
  • Gender:Male
  • Location:Vendée
  • Interests:Robotique, informatique, architecture et patrimoine...

Posté 09 octobre 2016 - 09:29

Bon je commence à écrire mon premier programme de test :

int iJoyAcc;
int iJoyDir;

#define Joy1 A0 // Entrée analogique
#define Joy2 A1 // Entrée analogique
#define PwmDir 3 // Sortie PWM
#define PwmAcc 11 // Sortie PWM


void setup()
{
pinMode(PwmDir, OUTPUT); 
pinMode(PwmAcc, OUTPUT);
}

void loop()
{
iJoyAcc = analogRead(Joy1); 
iJoyDir = analogRead(Joy2);

analogWrite(PwmAcc, val / 4);
analogWrite(PwmDir, val / 4);
}

Le but étant d'envoyé un signal PWM sur les pins 3 et 11 en fonction du joystick branché sur les entrées analogique A0 et A1. L'objectif étant d'envoyer le signal PWM à la carte Sabertooth 2x50A qui pilote mes moteurs IG52.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users