ATTiny USI I2C introductie - een krachtige, snelle en gemakkelijke communicatie-interface voor uw ATTiny projecten! (6 / 8 stap)

Stap 6: ATTiny USI I2C Code uitvoering - USI I2C Master


De USI I2C Master (usi_i2c_master.c/h) bibliotheek biedt I2C master-modus mogelijkheden met behulp van de USI hardware.  Er zijn twee belangrijke functies die de gebruiker bekend zijn met moet.  De eerste is de initialisatie functie die de SDA/SCL pinnen en USI hardware stelt, en de andere is de functie van transmissie , die voert een lezen of een schrijfbewerking op een I2C bericht, retourneert 1 (waar) als succesvolle en 0 (ONWAAR) als een fout (ontvangen een NACK) is opgetreden.  Een derde functie, de overdrachtsfunctie wordt gebruikt door de transceiver-functie voor het verzenden en ontvangen van gegevens.  De overdrachtsfunctie mag niet worden gebruikt buiten de usi_i2c_master bibliotheek.

De transmissie-functie heeft twee argumenten.  De eerste is een aanwijzer naar een gegevensbuffer waarin verzenden of ontvangen van gegevens uit.  Er wordt van uitgegaan dat de eerste byte in deze buffer het adres + R/W-byte is (bovenste 7 bits adres, LSB is R/W).   Deze byte, protocol, wordt altijd verzonden en nooit ontvangen.  De rest van de buffer zal worden verzonden uit of gevuld door ontvangen gegevens volgens de R/W-bit (1 voor lezen, 0 voor schrijven).  Het tweede argument is de totale grootte van de buffer (met inbegrip van de byte van het adres).

Hier is een kort voorbeeld.  Laten we zeggen dat we willen output de waarde 0x70 naar het interne adres 0x12 van het apparaat met het adres 0x40.  Eerst maken we een buffer om op te slaan onze transmissie:

char i2c_transmit_buffer [3];
char i2c_transmit_buffer_len = 3;

i2c_transmit_buffer [0] = (0x40 << 1) | 0 //Or'ing met 0 is niet nodig, maar voor alle duidelijkheid dat de R/W-bit ingesteld voor een schrijven.

i2c_transmit_buffer [1] = 0x12;  Intern adres

i2c_transmit_buffer [2] = 0x70;  Waarde te schrijven

Overdracht van het bericht van de I2C
USI_I2C_Master_Start_Transmission (i2c_transmit_buffer, i2c_transmit_buffer_size);

Daar heb je het, volledige overdracht van berichten!  Dat was makkelijk!  Wilt u meer informatie over de binnenwerkingen van de USI_I2C_Master code, neem dan eens een kijkje in het usi_i2c_master.c bestand waar ik de Staten, overdrachtsfunctie en andere interessante secties hebt gereageerd.  Ik heb gebruik van één regel #define macro's meer duidelijk wat elke lijn's doel is te maken.

In de volgende stap zal ik de code van de slave-modus, die aanzienlijk complexer maar ook makkelijk te gebruiken vanuit een oogpunt van de eindgebruiker is.  Ik heb gebruik gemaakt van een verschillende aanpak voor de uitvoering van de slave-code die ik nog niet in een andere tutorials gezien, het is interessant en nuttig!

Gerelateerde Artikelen

Verscherpen van een mes, snel en gemakkelijk

Verscherpen van een mes, snel en gemakkelijk

als u een carbide getipt zag blade, heb je een uitstekend hulpmiddel voor het slijpen van een mes, snel en gemakkelijk.  Alleen klem aan een tafelblad of het lock op je zag de arbor, zodat het niet draaien.Stap 1: Teken het mes-rand tegen een tand ca
Hoe maak je een krachtige, snelle "USS Hornet"!

Hoe maak je een krachtige, snelle "USS Hornet"!

Dit is mijn eerste Instructable, dus alle opmerkingen zijn welkom (positief en negatief, zolang ik feedback te krijgen!).Anyway, ik zal u tonen hoe maak je een goede papieren "USS Hornet"! Ik zie een heleboel Instructables zeggen kun je alleen g
Hoe aan te scherpen een beitel snel en gemakkelijk

Hoe aan te scherpen een beitel snel en gemakkelijk

Dit instructable is gonna verlenen u een snel en relaible manier om een scherpe rand op uw beitels.U zult;Norton India cobination steen maat 8 "x 2". Dit heeft een grijze 'plat' kant en een orangey bruin "fine" kant. Deze methode werkt
Verscherpen van een mes met een schaar (snel en gemakkelijk)

Verscherpen van een mes met een schaar (snel en gemakkelijk)

zag je al die instrueren-ables waarvoor schuurpapier of sommige aardewerk? Mij persoonlijk niet hebben die tot rond alle de tijd (bijvoorbeeld op het werk, op school)Wilt u nog steeds een snelle en vuile manier om het slijpen van je mes.Dat is waar s
Hoe een gebruiker snel en gemakkelijk toe te voegen

Hoe een gebruiker snel en gemakkelijk toe te voegen

Dit is mijn allereerste instructable okook is het gewoon om toe te voegen gebruikers verwijderen gebruikers enzovoort thxStap 1: Stap 1 of ietsZorg ervoor dat u opdrachtprompt oknu hebt u die openen als je op school bent dit gewoon werken, tenzij het
Snelle en gemakkelijke homestead gebruikt voor Plastic flessen (PET)

Snelle en gemakkelijke homestead gebruikt voor Plastic flessen (PET)

In de niet al te verre verleden, zou je melk, frisdrank, etc. in glazen flessen die u naar de winkel retourneren wilt te worden gesteriliseerd en opnieuw gebruikt. Nu, met onze wegwerp cultuur, plastic flessen hebben dit systeem vervangen en bijgevol
Goedkoop, snel en gemakkelijk LCD vervanging voor Samsung Galaxy S3

Goedkoop, snel en gemakkelijk LCD vervanging voor Samsung Galaxy S3

Had een incident en mijn telefoon geraakt op de perfecte hoek te breken van het LCD-scherm. Na veel zoekopdrachten besloten heb ik dat ik mezelf kon vervangen. Het inschakelen, de onderste rij verlicht en de LED-licht nog werkte. Ik heb niet alles op
Snel en gemakkelijk toetsenblok correctie (voor de meeste mobiele telefoons)

Snel en gemakkelijk toetsenblok correctie (voor de meeste mobiele telefoons)

de meesten van ons hebben mobiele telefoons en van tijd tot tijd hebben we de neiging te laten vallen of ze misschien te behandelen met een minder-dan-delicate manier. Op zijn beurt zal de celtelefoon rebelleren en stoppen met functioneren.Hedendaags
Snelle en gemakkelijke bluetooth-handset voor skype

Snelle en gemakkelijke bluetooth-handset voor skype

gekocht voor de Motorola HS820 headsets zoals voorgesteld in een andere instructable en het geplant in een traditionele telefoontoestelDit is echt een prototype tot ik vind een mooie 'klassieke' toestel. Slechts enkele vrijdagmiddag onzin in het kant
Make A snel en gemakkelijk fiets rek voor reparaties

Make A snel en gemakkelijk fiets rek voor reparaties

iedereen met een fiets vroeg of laat zult moeten doen sommige reparaties/onderhoud aan de fiets.  Het is echt lastig om te werken op hen, zelfs als ze een kick stand hebben.  U moet zitten kundig voor het uitstappen van de grond en beide handen gebru
Snel en gemakkelijk Taggy Buddy voor uw kleine één

Snel en gemakkelijk Taggy Buddy voor uw kleine één

deze zijn super makkelijk en leuk om te maken. :)Hebt u nodig:Papier (voor patroon)2 stuks van fleece3 of 4 verschillende soorten lint in 3" gesneden stukkenschaarNaaimachineStap 1: Maak een patroon Beslissen wat voor soort buddy u zou willen maken (
Snelle en gemakkelijke tazer, maken te laten uitzien als een USB-dongle

Snelle en gemakkelijke tazer, maken te laten uitzien als een USB-dongle

dit is een eenvoudige, snelle en gemakkelijke manier een te maken een die is bedoeld om te lijken op een USB-dongle. Zijn echt gemakkelijk te maken.Vereisten:AanstekerUSB-Dongle (ieder zal doen, ik gebruikte een gebroken)3 x schroevenEen hamerEen sch
SNEL en gemakkelijk NOTEBOOK PENNENHOUDER

SNEL en gemakkelijk NOTEBOOK PENNENHOUDER

dit is mijn eerste Instructable, dus ik ben benieuwd naar feedback...Ik wilde altijd een snelle en gemakkelijke pennenhouder vinden voor mijn zak notebooks en diaries (degene met een zakje de achtercover - zoals Moleskine, Leuchtturm 1917, of een van
Snelle en gemakkelijke knuppel decoraties

Snelle en gemakkelijke knuppel decoraties

HalloZijn die tijd van het jaar weer werden we uit de zwarte roos in bulk te breken!In dit instructable ga ik u tonen hoe te maken van een snelle en gemakkelijke Bat decoratie voor uw huis.Het is echt eenvoudig, dus kinderen kunnen doen, duurt ongeve