Stap 11: Software - Microcontroller-firmware
Hoewel de Atmega324p waarschijnlijk niet de meest gebruikte microcontroller (uC), de meeste van deze code werkt prima op de meer populaire atmega168 serie die op arduinos wordt gebruikt. De enige belangrijke wijziging zou de uitvoering van een UART-software voor de MIDI-poort omdat de 168 reeks heeft alleen een UART. Echter kan die functie gemakkelijk worden weggelaten, want ik toegeven moet, ik heb nooit een apparaat aangesloten op de netspanning rechtstreeks via MIDI sinds ik met klaar het testen dat het werkte.De firmware op de uC is ingesteld om te behandelen of input van de MIDI-poort, de USB-poort of beide tegelijk. Schakelen tussen modi bepaalt de routering van berichten. Bovendien kan de huis notitie worden ingesteld op afstand of lokaal de schakeloptie front drukknop. Wanneer de schakelaar wordt ingedrukt, wordt de volgende noot ingedrukt en losgelaten op het toetsenbord de eerste gloeilamp als die opmerking ingesteld. Dit is natuurlijk niet een noodzaak, echter vind ik mensen zijn een beetje minder raadsel wat de verlichting doen als ze zien dat de gloeilampjes oplichten in volgorde van links naar rechts. Wanneer de wortel nota van de sleutel uw spelen in is de eerste gloeilamp, de lichten neiging om springen rond een beetje minder schokkerig, afhankelijk van wat je natuurlijk aan het spelen bent. Het aardige ding is dat, aangezien dit kan op afstand worden gecontroleerd, is het gemakkelijk om de sleutel van je liedje zo instellen dat het automatisch bijgewerkt telkens als u overschakelt van nummers (Zie de laatste sectie op het max4live-object met behulp van ableton).
Wanneer de modus van de eenheid is overgeschakeld, leidde de voorkant licht op een andere kleur, die aangeeft of de lokale gebruiker controle of of het op afstand wordt gecontroleerd. Dit gaat in de vrijwel nutteloos maar ziet er cool categorie.
De meerderheid van de software is ingesteld voor het verwerken van de inkomende berichten (midi/usb). Het externe kristal drijft de uC op 18.423 MHz, om 0% fout op 115200 baud-rate. Afgezien van gaan per regel door de code is er niet veel meer om te praten over, voel je vrij om vragen hebt, de codes hieronder. Het zip-bestand heeft het hele project-inlcluding het bestand avrstudio (avrstudio5, ik onlangs opgewaardeerd en omgerekend al mijn oude projecten, je moet ook! zijn zo veel beter dan avrstudio4!). Ik liet uit de afzonderlijke UART-bestanden omdat ze elders beschikbaar zijn.
Enkele nuttige punten bij het schrijven voor midi. U moet een UART-klok van 31250 baud, wat, voor een 0% fout betekent, moet u een kristal met een geheel veelvoud daarvan. Dat werkt oke maar omdat de ingebouwde 8Mhz boete, of 16Mhz werkt, enz. Echter, een probleem ontstaat bij het combineren van MIDI UART op dezelfde chip als RS232 UART. De "standaard" baud tarieven, 9600, 112500 enz., niet goed werken met 8Mhz kristallen. Dus, wat te do...well er is twee keuzes IMHO.
1. Gebruik de ingebouwde kristal of soortgelijke frequentie (8Mhz... of 16 Mhz, 20 Mhz enz) en baudrate aliasing gebruiken om te corrigeren voor de usb.
2. Accepteer fout op een van uw regels. Persoonlijk, ik houd niet van deze optie, ik weet dat een heleboel mensen dingen uitvoeren met 9600 baud met 16Mhz kristallen, maar ik niet graag.
Dus, hier is een bos van links naar aliasing de baud-rate, het FT232R stuurprogramma gebruikt. Ik heb dit gedaan op een PC en een MAC, het werkt geweldig, en kunt u gegevens op nog veel hogere transmissiesnelheden dan RS232 was bedoeld voor verzenden. Bijvoorbeeld, in plaats van een piek op 225 kbps, kan je al manier tot 3Mbps (hoewel de meeste atmegas alleen maar op 2Mbps doen kunnen).
Hoe dit te doen op OSX (volg de stappen zorgvuldig, het werkt eigenlijk, ik beloof)
En, op een PC
Groot artikel over aliasing de baud-rate voor het gebruik van xbee controllers voor midi (Alleen PC)