SPI sur l'AVR pour générer un signal carré

E

Eugen_E

Guest
Bonjour,

Je veux utiliser SPI comme capitaine sur ATmega8 cadencé à 16MHz pour générer un signal carré rapide sur MOSI - pas pour la transmission de données, mais pour la génération du signal.Pour ce faire je configurer SPI en tant que maître à 2Mb / s et écrire le signal 8 "samples" dans le registre SPDR.Dans le SPI interruption (généré à la fin de la transmission de la "précédent échantillons") J'écris 8 échantillons «nouveau» dans SPDR.

Parce que le SPI en AVR dans la transmission n'est pas double mémoire tampon, je voudrais demander s'il y aura un décalage dans le signal MOSI entre les 8 échantillons successifs.Dans la routine d'interruption, j'écris imediatly la valeur SPDR nouveau - il est calculé hors ISR, dans le programme principal.

Aussi, quand j'ai simulé en studio AVR, avec SPDR = 0xFF, la sortie MOSI n'est pas continuellement '1 'quand il transmet 0xFF, mais 1010101010101010 - je pense qu'il est «1» que sur les bords d'échantillonnage du signal SCK.C'est étrange.

J'ai utilisé SPI avant pour la communication avec d'autres puces, mais sans respecter les signaux réels SPI.

 
Puis-je utiliser TWI/I2C au lieu de SPI pour la génération de signal?Le SPI est attractif car il a une plus grande vitesse.

Je ne pouvais générer le signal simplement, sans SPI.La raison de SPI en génération de signaux, c'est que j'ai besoin de faire quelques autres choses dans le prog principal.Sans SPI Je voudrais écrire un code uniquement pour la génération de signaux, beaucoup de temps contraint, gaspiller le pouvoir UC - Je ne peux pas faire un peu l'interface externe, il suffit de génération de signaux.

Pour clarifier, j'ai besoin de concevoir un DDS (synthèse numérique directe) pour les signaux carrés, avec la variable de fréquence de 0,1 Hz à au moins 500kHz, en 0.1Hz étapes.

 

Welcome to EDABoard.com

Sponsor

Back
Top