Dit instructable wordt uitgelegd hoe de Atmega328 chip als de chip in een Arduino uitgevoerd zonder het kristal maken breadboarding makkelijker en geeft u twee extra pinnen om mee te werken. Dit programma werkt niet op een Arduino Uno. Het maakt gebruik van de functies van de Atmega328 chip die niet beschikbaar zijn op de Arduino. De pinnen op de 328 en alle Atmel microcontrollers, zijn gerangschikt in de banken van acht. De "D" bank is beschikbaar, maar u alleen volledige toegang hebben tot de één bank. Er zijn slechts zes pinnen beschikbaar op de "C" bank, de analoge ingang pinnen, omdat een van hen niet uitgebroken is en de andere het resetten is. Twee van de pinnen op de 'B'-bank worden overgenomen door het kristal.
Het is mogelijk om de chip zonder het kristal worden uitgevoerd en hebben volledige toegang tot alle acht pinnen aan de oever van de "B". Er is een interne R/C-netwerk dat kan worden gebruikt om de klok van de chip. De chip wordt uitgevoerd bij acht MHz in plaats van zestien. Dit is meestal geen probleem omdat de meeste Arduino programma's niet de snelheid toch hoeven. Ook is de interne klok niet zo nauwkeurig. De tolerantie die is opgegeven in het gegevensblad voor de ATtiny85 bedraagt +/-tien procent, terwijl de meeste kristallen een tolerantie van 30 PPM hebben. Ik zou veronderstellen dat de 328 hetzelfde is, maar ik het niet in het 328 gegevensblad vinden kon. (Het gegevensblad is honderden pagina's van het zeer droge lezen.) Er is een zeer goede kans die uw chip niet uit overal dicht bij tien procent worden zal. Deze collectie van instructables omvat een test van de interne klok in de ATtiny85-chip. en legt uit hoe onderdelen worden getest om te verzekeren zij binnen de tolerantie.
Ik heb gehoord van gevallen waar de seriële communicatiehardware op de Arduino interfereren kan met het functioneren van pins nul en één. Met de chip uit de Raad van bestuur zal dit geen probleem zijn, maar als u ze voor seriële communicatie gebruikt moet u om ze te bewaren.
Elke bank van acht pennen wordt geregeld door drie 8-bits registers.:
- Het register van de DDR is de richting van de gegevens, 0 = ingang, 1 = output.
- Het register van de PIN wordt gebruikt om de digitale waarde van de pin te lezen.
- Het register van de poort heeft twee functies:
- Als de DDR registreert is ingesteld op 0 wordt de pin laag 1 ingesteld het hoog en de uitgang.
- Als het DDR-register is ingesteld op ingang 1 draait op de interne pull-up weerstand.
De Arduino IDE heeft geen manier om te bepalen van de pennen waar het kristal was, ze hebben geen digitale pincodes. Gelukkig biedt directe ondersteuning voor het manipuleren van de controlerende registers. Dit instructable laat zien hoe met de pin registers zodat programma's sneller, kleiner, en in veel gevallen gemakkelijker aan code.