Atmega328: förlora kristallen och få två stift
Detta instructable förklarar hur du kör Atmega328 chip som chip i en Arduino utan kristallen att göra breadboarding lättare och ger dig två extra stift att arbeta med. Detta program fungerar inte på en Arduino Uno. Det använder sig av funktioner av Atmega328 chip som inte är tillgängliga på Arduino. Stiften på en 328 och alla Atmel mikrokontroller, är ordnade i banker av åtta. "D" banken är tillgänglig men endast har du full tillgång till en bank. Det finns endast sex stift finns på "C" banken, analog ingång pins, eftersom en av dem inte är brutit ut och den andra är Återställ. Två av stiften på "B" banken tas upp av kristallen.
Det är möjligt att köra chip utan kristallen och har full tillgång till alla åtta stift på bank "B". Det finns ett internt R/C-nätverk som kan användas att klocka chip. Chip kommer att köras på åtta MHz istället för sexton. Detta är vanligtvis inte ett problem eftersom de flesta Arduino program inte behöver hastigheten ändå. Också är den interna klockan inte lika exakt. Den avvikelse som anges i databladet för ATtiny85 är +/-tio procent medan de flesta kristaller har en tolerans på 30 PPM. Jag antar att 328 är samma men jag kunde inte hitta det i 328 datablad. (Databladet är hundratals sidor med mycket torr läsning.) Det finns en mycket bra chans ditt chip inte kommer bort någonstans nära tio procent. Denna samling av instructables ingår ett test av den interna klockan i ATtiny85 chip. och förklarar hur delar testas för att försäkra de är inom toleransen.
Jag har hört talas om fall där seriell kommunikation hårdvara på Arduino kan störa en fungerande stift noll och ett. Med chip av styrelsen kommer detta inte vara ett problem, men om du använder dem för seriell kommunikation måste bevara dem.
Varje bank av åtta stift styrs av tre åtta bitars register.:
- DDR registret är data riktning, 0 = ingång, 1 = utgång.
- PIN registret används för att läsa digitala värdet av pin.
- PORT registret har två funktioner:
- Om DDR registrera sätts till 0 anger pin låg och 1 anger det höga.
- Om DDR registret har angetts till ingång 1 sätter den inre pull-up resistorn.
Arduino IDE har inget sätt att styra stiften där kristallen var, de har inte digital pin-koder. Lyckligtvis ger det direkt stöd för att manipulera de kontrollerande register. Detta instructable visar hur du använder pin register för att göra programmen snabbare, mindre och i många fall lättare att koden.