petite question sur un tampon de série ..

B

Buriedcode

Guest
Salut,

Je suis la conception d'un contrôleur MIDI (clavier) avec 49 commutateurs.Utilisation de "port série PIC a '(USART).Alors que l'écriture du code, j'ai soudain pensé, comment vais-je envoyer des messages multiples?MIDI exige que, pour, disons, une «note sur« le message, 3 octets sont envoyés, consécutivement (l'un après l'autre).Mais bien sûr, il faut du temps pour envoyer un octet, et je ne peux pas attendre que le tampon est vide, le commandant de bord doit être faire d'autres choses.
Thats ok, mais si je suis en train d'envoyer un message (3 au total octets), et plus de données vient du clavier, tandis que la numérisation, où dois-je mettre ces nouvelles données?

Alors, j'ai pensé que, si j'ai une interruption, que lorsque les pings SBUFF est vide (envoi de données / envoyé) je pourrais avoir une sous-routine petits, qui se charge en l'octet suivant doit être envoyé si il n'ya pas d'écarts entre les 3 octets.Thats ok, mais dans cette sous-routine, je suis sûr que j'aurais besoin de plusieurs "tampon" des registres, pour stocker les données à envoyer, à savoir: une mémoire tampon FIFO.Short de déplacer le contenu des registres de la mémoire tampon, je ne sais pas vraiment quoi faire.

J'imagine une utilisation habile de interupts et minuteries est nécessaire, afin que je ne manquer aucune information provenant du clavier, ou commencent à tomber messages.Je tiens également à garder de latence bas.

Je me demandais si quelqu'un connaissait quelques trucs pour cela.

confus,

BuriedCOde.

 
seems to be just for you.

Le tampon circulaire
semble être juste pour vous.Vous avez besoin de connaître l'emplacement tête, la longueur de la mémoire tampon et le contenu des compteurs.on charge le processus de la mémoire tampon, et le processus UART envoie des caractères à partir de cette mémoire tampon si elle n'est pas vide.
La longueur de la mémoire tampon doit être assez grande pour accueillir tous vos messages.

 
Yego,

Merci pour votre réponse!Très utile.
J'ai entendu parler d'anneau tampon «a» avant, en arrière au sein d'UNI, mais je n'ai jamais mis en œuvre un, alors je lire sur elle sur le net et l'utilisation de certains livres que j'ai.Exactement ce que vous avez dit, juste pour ma demande, je ne pense pas que j'ai une limite réelle de sa taille (évidemment une certaine limite, car cela a PIC mémoire finie) parce que mon code principal est en fait assez petite, et utilise seulement environ 20 registres.Je pense que la taille du tampon, au maximum ne doivent être trouvées peut-être 20, probablement 12.

Je suis tente de mettre en œuvre un maintenant, en essayant d'obtenir de latence bas, et à la rendre aussi petite aussi efficace que possible (peut être assez difficile dans l'assemblage, mais vaut la peine).Le fait que le PIC j'ai interupts a sortir de ses oreilles est aussi utile

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />Merci encore mon frère,

BuriedCode

 
BuriedCode,

Je suis très heureux que je pouvais aider.
Bonne chance, Yego

 

Welcome to EDABoard.com

Sponsor

Back
Top