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> | ||