Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.
robotics:computing:communication_spi_atmega [2012/03/08 16:42] ldo [Initialisation Master] |
robotics:computing:communication_spi_atmega [2012/09/20 10:52] (Version actuelle) |
||
---|---|---|---|
Ligne 10: | Ligne 10: | ||
L'esclave désigné peut envoyer des messages seulement si le maitre génère le signal d'horloge (il ne peut pas le générer lui-même). | L'esclave désigné peut envoyer des messages seulement si le maitre génère le signal d'horloge (il ne peut pas le générer lui-même). | ||
- | ===== mode esclave ===== | + | ===== Mode esclave ===== |
SS/ est configuré en entrée. La communication n'est active que si SS/ passe à 0. | SS/ est configuré en entrée. La communication n'est active que si SS/ passe à 0. | ||
- | ===== mode maitre ===== | + | ===== Mode maitre ===== |
SS/ est configuré en sortie. c'est lui qui initialise les communications en choisissant lesclave avec qui il veut échanger. | SS/ est configuré en sortie. c'est lui qui initialise les communications en choisissant lesclave avec qui il veut échanger. | ||
Ligne 43: | Ligne 43: | ||
* active les interruptions globales (mettre à 1 bit I de SREG) | * active les interruptions globales (mettre à 1 bit I de SREG) | ||
+ | ===== Exemple Master ===== | ||
+ | Le master envoie le caractère 0xAA. | ||
<code c> | <code c> | ||
/* | /* | ||
Ligne 67: | Ligne 69: | ||
SPDR = data; /* start transmission */ | SPDR = data; /* start transmission */ | ||
while (!(SPSR & (1<<SPIF))); /* wait transmission end */ | while (!(SPSR & (1<<SPIF))); /* wait transmission end */ | ||
- | return SPDR; | + | return SPDR; |
} | } | ||
int main (void) | int main (void) | ||
{ | { | ||
- | |||
- | PORTD = 0x00; | ||
- | |||
SPI_MasterInit(); | SPI_MasterInit(); | ||
Ligne 84: | Ligne 83: | ||
return 1; | return 1; | ||
} | } | ||
+ | </code> |