USB-Wii Classic Controller (9 / 18 steg)

Steg 8: TWI / I2C förklarade



I2C står för Inter-Integrated krets. I2C bussar är även känd som TWI för två Wire Interface, eftersom den använder bara två trådar.

Relaterade värden:

På en TWI buss är två signal ledningarna SDA och SCL, i princip data och klocka. Dessa signaler är öppna avlopp (betyder dess logik är antingen hög impedans eller låg, det någonsin kan inte vara hög), men det måste finnas en pull-up resistor på var och en av dessa signaler (vi använder AVR: s interna pull-up motstånd). Detta är viktigt för alla enheter på en TWI buss kan köra signalerna låg när som helst, så att signalen kan endast bli hög när alla enheter tillåter att bli hög. Detta gör att enheter kan upptäcka när bussen är ockuperade ("skiljeförfarande med SDA") och även tillåta en långsam enhet att diktera hastigheten på klockan eller ens pausa en överföring om långsammare enheten är upptagen (detta kallas "klocka stretching". Dessa fakta gör TWI bussen bra för kommunikation mellan en massa chips med bara två kablar.

Varje transaktion är mellan en master (den som kör klocksignalen) och en slav enhet. Varje transaktion startar med en "starta skick" och slutar med ett "slutet villkor". En start villkora är när bus master enheterna SDA låg först, sedan köra SCL låg näst. Ett slutet villkor är när befälhavaren släpper TWI bussen genom att släppa SCL och sedan släppa SDA.

Efter start villkora har befälhavaren att välja vilken enhet att prata med genom att skicka en 7 bitars adress byte. Den 8: e (senast som skickas) biten anger huruvida befälhavaren vill läsa (1) från eller skriva (0) till slav behandlas. Om befälhavaren skriver, skickas sedan mer data. Om befälhavaren läser, kommer att det släppa SDA linjen så slav skickar data (men befälhavaren fortfarande driver klockan). När upp

Alla byte skickas MSB först (mest signifikanta bit först). Varje byte avslutas eventuellt av en bekräftelse/nacknowledgement. Kontrollera enheten databladet för att se vad enheten kommer att förvänta sig eller kommer att skicka tillbaka. Vanligtvis, för att citera Wikipedia: "om befälhavaren vill skriva till slav då upprepade gånger skickar en byte med slav skicka en ACK bit. (I denna situation, är befälhavaren i master sändningsläge och slaven är i slav ta emot-läge.) Om befälhavaren vill läsa från slav sedan den upprepade gånger får en byte från slav, lite befälhavaren skickar en ACK efter varje byte men sist. (I denna situation, master är i ledar-ta emot-läge och slaven är i slav överför funktionsläge.) "

Mer intrikata detaljer är oftast specifika för en viss enhet, och sådan information kommer från dess datablad.

När jag använder I2C/TWI med AVR mikrokontroller, använder jag låg nivå lagret av "Tråd" bibliotek för Arduino. Wire biblioteket är ett C++-omslag för lägre nivå "twi.c" och "twi.h"-modulen, som jag ändra spenslig och sammanställa i min egen kod (eftersom jag inte brukar använda C++). Det hand tar om nästan allt.

Wii Classic Controller har den I2C adressen 0x52, ha detta i åtanke. Använda "twi.c" och "twi.h", skickar vissa data till Wii Classic Controller, börja med att skapa en byte-array som innehåller data som ska skickas, och sedan skicka som till funktionen "twi_writeTo", tillsammans med måladressen, mängden data att skicka, och berätta det "vänta tills alla data skickas". Koden ser ut:

unsigned char dataArray [3] = {"a", "b", "c",};
twi_writeTo (0x52, dataArray, 3, 1);

Att läsa tre bytes, Använd funktionen "twi_readFrom" och berätta den adressen, data sparas i en matris du passera i, och du anger mängden data. Koden ser ut så:

unsigned char dataArray [3].
twi_readFrom (0x52, dataArray, 3);

Se Steg
Relaterade Ämnen

Teensy USB Wii Classic Controller

Jag är ett fan av Wii Classic Controller, men jag har aldrig brytt mig för att hålla trådlösa handkontroller som ansvarar för en tillfällig släng av nostalgi. Vore det inte bra om jag kunde använda min Wii Classic Controller via USB? Detta är hur jag...

Arduino lins Controller - synkroniseras Zoom/fokus med Wii Classic Controller

min Lumix GH2 Micro Four Thirds kamera skjuter inte bara fantastiskt hög definitionen video, men med billiga adaptrar kan jag använda den med äldre manuella objektiv som är billig och ofta mycket hög kvalitet. Jag skjuter en hel del prestanda videor...

USB-Wii Gamepad med Arduino Leonardo

Förra helgen jag provat den nya RetroPie på min härliga nya Raspberry Pi 3, men bara spelenheten jag har är oldie Wii Classic Controller; så hur kan jag konvertera den till en vanlig USB-spelenhet?Efter lite forskning fick jag reda det är ganska lätt...

USB: - DC Motor Controller med PIC18F4550 (keyboard)

USB: - DC Motor Controller med PIC18f4550 (keyboard)Hej vänner,KravUSB-DEMO gränssnitt styrelseL293D motor controller chipDetta ett litet projekt på att kontrollera DC motor med USB pic18f4550 gränssnittskortet med L293D motor Driver.Ett litet progra...

USB-Biofeedback Game Controller

bygger på våra senaste tutorial, som lärt dig hur man bygger en muskel sensor, har vi beslutat att ge dig ett projekt som verkligen visar upp kraften i våra muskler (EMG) sensorer. Advancer Technologies "USB-Biofeedback Game Controller" utnyttja...

Wii Nunchuk Controller

Denna tutorial lär dig hur man styr VEX motorer med en Wii Nunchuk.Det kan vara mycket bekvämt när du vill styra din robot med en Arduino och inte en VEX cortex och controller.Steg 1: material Arduino UNOWii NunchukLaptop/datorTrådlösa mikrokontrolle...

24 kanal USB ansluten LED Controller, upp till 1A per kanal

Denna enhet är avsedd att vara en mångsidig hög-aktuell LED-controller, med förmåga att sjunka eller / och källa strömmar upp till 1A per kanal med försvinnande av upp till 2.5W per kanal. De olika tröjor och transistor placering tillåta att enheten...

Bygga en USB 6 servo controller

Hej, jag letade efter en servo controller och hittade detta. Jag trodde att andra som jag skulle finna det intressant att bygga. Dock inte ens försök göra detta om du inte har kunskapen att bygga circuitboards. Det är bassicly en hemlagad modell av A...

PC USB Media volym Controller baserat på Arduino

Hej alla och Välkommen till min tredje Instructable.En vän till mig har ett ljudsystem med en urtavla för volymkontroll, och den sitter på hans skrivbord ser riktigt snyggt. Jag ville ha något liknande men med extra funktioner och anpassningsbara. Ja...

Arduino Wii Nunchuck controller

Hur man styr 2 servon trodde wii nunchuck.Steg 1: delar Wii nunchuckArduinoen2 servoSkärbrädaHoppare ledningarSteg 2: Anslut Anslut wii nunchuck som detta schema.Steg 3: Ladda upp kodenSteg 4: gjort!!! Du kan nu kontrollera 2 servon trodde wii nunchu...

Funtendo - en multistick retro controller för din PC

Funtendo är ett helt fristående retro gaming & controller för din dator.Det är kan använda den ursprungliga Nintendo controller, N64 handkontrollen och Wii Classic controller på samma gång!Funtendo är USB powered och innehåller också en flash-enhet s...

Skapa animering och spel: kapitel 1 komma igång.

Välkommen till först av en multi-del serien:Att skapa animering och spel: kapitel 1 komma igångDenna serie kommer att dyka in med Propeller microcontroller baserat system för att skapa din egen grafik, animering och video spel. Jag antar att du bara...

Komma igång med Mini fickdatorer

Om en och en halv månad sedan, jag skapade ett projekt kallat Mini fickdator och skrev en Instructable på hur man bygger den. Detta Instructable tar hela projektet ett steg längre genom att hjälpa dig att komma igång med din fickdator Mini. Har inte...

Bygg din egen mini fickdator

någonsin vill uppleva 70- och 80-talet datoranvändning utan mixtra med knarrig gammal hårdvara och 5,25 disketter?I detta Instructable, ska jag lära dig hur man bygger och programmera din egen mini fickdator.Utforska mikro computing med en maskin som...

Skapa animering och spel: kapitel 2 spelenheter

Välkommen till andra av ett flerdelat series:Att skapa animering och spel: kapitel 2 spelenheterDenna serie kommer att dyka in med Propeller microcontroller baserat system för att skapa din egen grafik, animering och video spel. Jag antar att du bara...

Hur man använder en Wiimote som din datorns mus

någonsin undrat vad coola saker du kan göra med en Wiimote? Så detta är definitivt där du bör start-använder den som en mus!Steg 1: Steg 1: material1. en Wiimote (naturligtvis)2. WiiMotionPlus (faktiskt är inbyggd i vissa nya Wiimotes!)3. Bluetooth-a...

Trådlös Wii Nunchuk-till-Mouse USB-minne för PC, Mac, och Tablet PC-spel

Redo att känna sig som den legendariska "Bruce Lee" med trådlös Wii Nunchuks på en rolig stickman kung fu PC video fightingspel kallas En Finger Death Punch (OFDP). Vad sägs om att spela Jetpack Joyride på Facebook eller din Android Tablet? Kans...

USB-mus gjord av A Wii Nunchuck

detta instructable kommer att beskriva hur du omvandlar en Nintendo Wii Nunchuck controller till en USB 2-knappars mus med en Teensy USB. Teensy USB är en mycket användarvänlig utveckling styrelse som kan programmeras i en Arduino miljö. Teensy USB u...

NES Controller USB-minne

jag blev inspirerad av en konversation på sidan Lego USB Stick!Detta är inte svårt. Det tog 10 minuter! (Inte inklusive köpa saker)! Lätt, roligt och lite töntig!(Använd den här metoden om du vill spara elektroniken, annars... du kan göra detta eller...