Stap 1: Wat is een register?
Wacht, wat is een register dat u vragen? Kortom, is het een brok van geheugen meestal bestaande uit overal van 8 tot en met 64 bits van gegevens. Elke bit de waarde 1 of 0 wordt toegewezen, en de waarde van elke bit in de vele verschillende registers in een microcontroller vertellen de rest van het systeem, wat te doen en wanneer het te doen. Allermeest naar de registers in de ATMEGA328P-chip op de Arduino zijn 8-16-bits. De chipKIT planken gebruik PIC-processoren, en ze zijn meestal 16-32-bit registers. Er is veel meer ik zou kunnen ingaan met betrekking tot de registers, maar het wordt beter overgelaten aan een andere dag. Wikipedia heeft ook een goede uitleg.
U kunt denken aan een register als jij een matrix als u een stukje code in uw favoriete codering taal, schrijven behalve dat elk element een enkele bit, niet een verzameling bits waaruit de int of char die u gedefinieerd. Ook, net als matrices, de telling begint bij 0, niet 1. Zo heeft een 8-bit register (laten we noemen het myRegister voor schoppen) 8 bits totaal, genummerd van 0 tot en met 7. Dus als we zien een pin op onze microcontroller toegewezen aan het bit myRegister [6], weten we dat de 7th (tweede naar de laatste)-bit is die we willen manipuleren. Het kan worden taai om recht te houden, maar het is belangrijk. Ik zal proberen en verduidelijken meer later, waarschijnlijk op het punt van overkill.
Sommige dingen in gedachten - te houden Terwijl register manipulatie een volkomen haalbare programmering optie is, beveel ik echt het niet tenzij je uiterst vertrouwen in je capaciteiten zijn en u bent totaal onvoldoende geheugen op uw chip of moet vrijmaken van sommige extra klokcycli. Vaak zijn er een heleboel controles die gebeuren in de achtergrond wanneer u met de standaardfuncties en bibliotheken I/O richting en waarden toewijzen aan de pennen. Het lastige waarbij al dat spul recht kunt krijgen, en wellicht niet de moeite waard de tijd en inspanning die het neemt om te herschrijven uw code met behulp van registers. Dat gezegd zijnde, ervaring de voorbeelden die ik dat u zijn eenvoudige en elementaire in het uiterste tonen zal zodat iedereen ze, ongeacht gebruiken kan. Zij zullen minder geheugen en proces sneller dan als u moest gebruiken de standaard functies zeker nemen. Maar je moet uiterst zorgvuldig te zijn wanneer u de registers rechtstreeks manipuleren, en vierpersoonskamers check uw facturen of afschriften. Het zou moeilijk zijn om schade van de chips manipuleren van de registers onjuist kan, maar het veel moeilijker te zuiveren als het niet werkt goed, meestal omdat u de verkeerde waarde schreef de verkeerde register en/of bit. De standaardfuncties en bibliotheken zijn er voor een reden. Ze nemen meer geheugen en verwerkingstijd, maar zijn meestal meer gebruikersvriendelijk. Laatste ding, vergeet dan niet dat de prestatieparameters voor elke pin niet veranderen (bijvoorbeeld huidige afkomstig/gezonken, spanningen, enz.) wanneer u de registers. Don't blame me wanneer u probeert en rijden een 2A motor direct van pin 10 en het rookt uw chip. Dat is aan u, omdat u toch beter moet weten.