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