DemUinoDuo (1 / 3 steg)

Steg 1: Systemöversikt



DemUino konceptet kretsar kring en controller-dator och i synnerhet AVR 8 lite djur använder Arduino bibliotek. I ett försök att hålla projektet uppdaterade haft jag att anpassa det till att använda USB-tangentbord och moderna lagringsmedia – SD eller microSD med adaptrar – oformaterad text PC stödfiler (fett).

Det stora problemet med "uppgraderingen" är enorm resurs offer både i flash koden och RAM efterfrågan antingen statiska eller dynamiska. Användning av ett system med dubbla processorer lindrar smärtan från rysliga förlust vilket ger en sorts värt ansträngningen känsla när projektet når ett påtagligt användbara resultat. Systemet kan byggas med både processorer är atmega328s, något som återger alla funktioner som DemUino version 1,66 men endast lite över 700 bytes RAM gratis. Användningen av en atmega644 som huvudprocessorn hantering av SD-kortet och delegeringen av USB, I2C master och RS232 (PC data) till en atmega328 bygger en bättre mer kapabla system med över 1300 bytes gratis för DemUinoDuo version 1.0 inklusive SD fett funktionalitet. Displayen är en 4 x 20 standardtext LCD (parallellt läge) driven av den GPOUT porten av maxim controller på USB host shield.

Följande sida visas systemarkitekturen. Beslutet att överföra USB-kontrollen över till atmega328 baserades på knepiga arten av den Usb.Task() funktion som behöver köra obehindrat i en kontinuerlig och förutsägbar loop. Huvudprocessorn – atmega644 – måste serva alla möjliga situationer och även vänta på saker att hända förutom bara användaren förseningar. Tangentbordet pressarna skickas över I2C bussen orsakar händelsehanterare i den huvudsakliga MCU att snabbt svara och mata dem till programmet när de inträffar. Det finns en kontinuerlig ström av 21 byte i taget behandlas som en grupp/paket med data från slav-atmega644 (#3 på I2C bussen) till den master atmega328 som antingen LCD kommandon eller synkroniseringsdata. Den externa EEPROM slaven närvarande riktar sig inte för närvarande av befälhavaren.

Det finns en 200ms fördröjning för upprepning av någon nyckel pressa att registrera. På den primära domänkontrollant sidan LCD förfrågningar betjänas med en 5ms försening och loop keyboardavailable() införs en 5ms fördröja alltför. Dock om användarprogrammet inte använder någon LCD kommandon kör sedan en tom för loop själv räkna till 1000 i ca 126ms totalt 1002 uttalanden. En tilldelning till en variabel i en samma slinga ökar körningstid för att 535ms för totalt 2002 uttalanden.

USB host shield är gjord med bra folk på http://www.tkjelectronics.dk/ och jag måste tacka Kristian Lauszus på https://github.com/Lauszus vänligen svara på mina frågor och även för seriell opti-startprogrammet för atmega644.

Enheten faktiskt byggdes och fotograferade med hjälp av DemUino2 och SD2RS232 styrelser för att spara pengar. Den schematiska presenteras på följande sidor är det föreslagna sättet att bygga enheten som kräver färre delar än vad uppfattas från foton.

Under start enheten kontrollerar om förekomsten av ett SD-kort och om inte hitta sedan Summer ljud för en sekund. LOGOTYPEN kan visas direkt men vänta tills lamporna på tangentbordet blinkar ögonblickligt innan du skriver bort i salighet.

Hårdvaran som erbjuder mycket goda utvecklingsmöjligheter, definitivt bättre som vad jag för närvarande itu med version 1.0 av släppta koden. Förutom krävs optimering spara flash och RAM utrymme (utan att ändra det glupska SD biblioteket) finns det otämjda potentialen i den stödjande atmega328 som GPIO modul av sig själv och självklart anställningen av den externa EEPROM som ett datalager.

Se Steg
Relaterade Ämnen