Attiny2313 slumpmässiga bokstäver generator
En särskild utmaning var begränsa kod storleken för att passa in i de 2 kB av minne i Attiny2313. Det fungerade genom att lagra tecken teckensnitt matrisen i programmet minnesutrymmet PROGMEM och genom att använda direkt port manipulation i kombination med bitvis matematiska operationer.
Pin kartläggningen med Kingbright TC07-11EWA 5 x 7 ledde matrisen är:
Attiny2313 port pin LED matrix pin (470 ohms motstånd)
PB0 12 6 rad 7
PB1 13 5 rad 6
Pb2 14 4 rad 5
PB3 15-9 rad 4
PB4 16 2 rad 3
Pb5 17 11 rad 2
PB6 18 12 rad 1
PD0 2 1 kolumn 1
PD1 3 3 kolumn 2
PD2 6 10 kolumn 3
PD3 7 7 kolumn 4
PD4 8 8 kolumn 5
Pb5 (pin 9) är in PIN-koden för knappen. Att trycka på knappen kommer att ansluta knappen PIN-koden till GND.
Strömförsörjningen sker via en 7805 linjär regulator med två 100 nF kondensatorer för svängning dämpning. På bilden är de svåra att se. Jag lade också till en uttag och strömbrytare. Mekaniska stabiliseringen realiserades med indescriminate hjälp av en limpistol.
Det verkar som direkt köra en ledde matrisen med en mikrokontroller är inte den ortodoxa strategin men Attiny2313 inte har klagat ännu.
Hade jag funderat mer kretskort layout skulle jag ha lämnat mer utrymme mellan Attiny2313 och ledde matrisen för att rymma en annan signal linje. Denna linje är nu runt matrisen och sedan tillbaka för att nå stift 12. Med lite mer planering skulle också har jag placerat 100 nF kondensatorerna någon annanstans så jag kunde ha böjda 7805 tillsynsmyndigheten nedåt. Då kanske allt faktiskt har passar in i gamla musik kassetten fallet.
Jag ignorerade en frikoppling kondensator mellan VCC och GND av Attiny2313 eftersom jag tänkte att kondensatorerna på 7805 regulatorn är tillräckligt bra. Det finns också ingen debouncing på knappen input eftersom det finns en fördröjning som ingår i programvaran. Enkelheten i kretsen inte garanterar en återställningsknapp. Slutligen jag inte placera en 10 k motstånd mellan stift 1 (RESET) och VCC som föreslås i vissa minimala kretsar eftersom andra källor nämnde att det var en inre pull-up resistor ändå.
Eftersom ingen kristall är närvarande, använder mikrokontroller dess inre RC-oscillator. Jag hittade tidpunkten vara lite så jag var tvungen att empiriskt fastställa förskjutningsvärden i programvaran. Efter lastning av misstag en bootloader på Attiny2313, verkade tidpunkten bli bättre. Jag har ingen förklaring till detta.
För att programmera Attiny2313 använde jag min Arduino som en Internet-leverantör med lämpligt namngiven "ArduinoISP" skissen. Anvisningarna i skissen är enkelt. Förberedelse, jag har följt dessa instruktioner med denna Källa för krävs kärnfiler.
Som jag använder en Arduino Duemilanove, jag var tvungen att placera en 120 ohms motstånd mellan Återställ pin och VCC att förhindra felmeddelanden under programmering. Detta beskrivs här.
Jag hoppas den bifogade uppförandekoden är självförklarande.
Njut!
Anomalocaris