USB-Wii Classic Controller (9 / 18 stap)

Stap 8: TWI / I2C uitgelegd


I2C staat voor Inter-Integrated Circuit. I2C bussen zijn ook bekend als TWI voor twee Wire Interface, omdat het gebruik maakt van slechts twee draden.

Verwante lezingen:

Op een bus van TWI zijn de twee draden van het signaal SDA en SCL, in principe gegevens en klok. Deze signalen zijn open afvoer (wat betekent dat de logica is ofwel hoge impedantie, of laag, het kan ooit niet hoog), maar er moet een pull-up weerstand op elk van deze signalen (we zijn met behulp van de AVR interne pull-up weerstanden). Dit is significant omdat elk apparaat op een TWI-bus de signalen laag op elk gewenst moment, rijden kan dus het signaal kan pas hoog als alle apparaten mogelijk is te hoog worden. Hierdoor apparaten detecteren wanneer de bus is bezette ("arbitrage met behulp van SDA") en ook toestaan een traag apparaat om te dicteren de snelheid van de klok, of zelfs het onderbreken van een transmissie als het langzamere apparaat bezet is (Hierdoor wordt genoemd "klok uitrekken". Deze feiten maakt de TWI-bus goed voor communicatie tussen een stelletje chips met behulp van slechts twee draden.

Iedere transactie is tussen een meester (degene die het kloksignaal rijden) en een slave-apparaat. Elke transactie met een "start voorwaarde" begint en eindigt met een "einde aandoening". Een start-voorwaarde is wanneer de bus master stations SDA lage eerst, dan rijden SCL tweede laag. Een einde voorwaarde is wanneer het model releases de TWI bus door het vrijgeven van de SCL en SDA vervolgens het vrijgeven.

Na de start-voorwaarde heeft de kapitein om te kiezen van welk apparaat om te praten met door het sturen van een 7 bit adres byte. De 8e (laatst verzonden) bit geeft aan of de kapitein wenst te lezen (1) of (0) Schrijf naar de slaaf worden aangepakt. Als de meester schrijft, zal het meer gegevens vervolgens verzenden. Als de meester leest, het zal het vrijgeven van de SDA lijn zodat de slaaf gegevens stuurt (maar het model nog steeds de klok rijden is). Wanneer aangepakt

Alle bytes worden verzonden MSB eerst (meest significante bit eerst). Elke byte wordt optioneel beëindigd door een ontvangstbevestiging/nacknowledgement. Controleer het gegevensblad apparaat om te zien wat het apparaat zullen verwachten of terug sturen. Meestal aan quote Wikipedia: "als de meester wil schrijven naar de slaaf dan herhaaldelijk verzendt een byte met het sturen van een ACK-bit slaaf. (In deze situatie, is de meester in master overbrengen modus en de slaaf in slave modus ontvangen.) Wil de meester van de slaaf leest dan zij herhaaldelijk een byte van de slaaf heeft ontvangen, beetje de meester een ACK sturen na elke byte maar de laatstgenoemde. (In deze situatie, is de meester in master modus te krijgen en de slaaf is in slave modus verzenden.) "

Meer ingewikkelde details zijn meestal specifiek voor een bepaald apparaat, en dergelijke informatie zal komen uit het gegevensblad.

Toen ik gebruik I2C/TWI met AVR microcontrollers, gebruik ik de laag niveau laag van de "Draad" bibliotheek voor Arduino. De bibliotheek van de draad is de C++ wrapper voor de lagere niveau "twi.c" en "twi.h" module, die ik slighly wijzigen en compileren in mijn eigen code (omdat ik gebruik meestal niet C++). Het zorgt voor bijna alles.

De Wii Classic Controller heeft een I2C adres van 0x52, dat in gedachten houden. Met behulp van "twi.c" en "twi.h", sommige gegevens te sturen naar de Wii Classic Controller, start door het creëren van een byte-array met de gegevens moeten worden verzonden en die vervolgens doorgeven aan de functie van "twi_writeTo", samen met het adres van de bestemming, de hoeveelheid gegevens te verzenden, en het vertellen "wachten totdat alle gegevens is verzonden". De code ziet er als:

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

Om te lezen drie bytes, gebruik van de functie "twi_readFrom", en vertel het het adres, de gegevens wordt opgeslagen in een matrix die u doorgeeft, en de hoeveelheid gegevens die u opgeeft. De code ziet er als:

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

Gerelateerde Artikelen

Teensy USB-Wii Classic Controller

Teensy USB-Wii Classic Controller

Ik ben een fan van de Wii Classic Controller, maar ik heb nooit verzorgd moetend draadloze controllers houden betalen voor een occasionele aanval van nostalgie. Zou het niet geweldig zijn als ik mijn Wii Classic Controller via USB kon gebruiken? Dit
Arduino Lens Controller - Zoom/Focus gesynchroniseerd met Wii Classic Controller

Arduino Lens Controller - Zoom/Focus gesynchroniseerd met Wii Classic Controller

mijn Lumix GH2 Micro Four Thirds camera schiet niet alleen fantastische high definition video's, maar met goedkope adapters kan ik gebruiken met oudere manuele lenzen die goedkoop en vaak erg hoge kwaliteit. Ik schiet veel prestaties video's voor mij
USB-Wii Gamepad met behulp van de Arduino Leonardo

USB-Wii Gamepad met behulp van de Arduino Leonardo

Afgelopen weekend heb ik geprobeerd de nieuwe RetroPie op mijn mooie nieuwe Raspberry Pi 3, maar de enige spel controller die ik heb is het oudje Wii Classic Controller; Dus hoe kan ik het converteren naar een normale USB-spelbesturing?Na wat onderzo
USB-Biofeedback Game Controller

USB-Biofeedback Game Controller

Voortbouwend op onze laatste tutorial, die u geleerd hoe te bouwen van een spier-sensor, hebben we besloten om u een project dat echt de vitrines van de kracht van onze spier (EMG) sensoren. Advancer Technologies "USB-Biofeedback Game Controller"
Wii Nunchuk Controller

Wii Nunchuk Controller

Deze tutorial leert u hoe u kunt besturen VEX motoren met een Wii Nunchuk.Het kan erg handig zijn als u wilt controleren uw robot met een Arduino en niet een VEX cortex en controller.Stap 1: materialen Arduino UNOWii NunchukLaptop/ComputerDraadloze M
24-kanaals USB-Connected LED Controller, upto 1A per kanaal

24-kanaals USB-Connected LED Controller, upto 1A per kanaal

Dit apparaat is ontworpen als een veelzijdig high-current LED controller, met de mogelijkheid om te zinken of / en source stromingen tot 1A per kanaal met dissipatie van maximaal 2.5W per kanaal. De verschillende truien en transistor plaatsing mogeli
Bouwen van een USB-6 servo controller

Bouwen van een USB-6 servo controller

Hallo, ik was op zoek naar een servo-controller en vond dit. Ik dacht dat anderen net als ik zou vinden het interessant zijn om te bouwen. Echter, zelfs niet proberen dit te doen indien u geen kennis in de bouw van circuitboards. Het is bassicly een
Arduino Wii Nunchuck controller

Arduino Wii Nunchuck controller

Hoe u kunt besturen 2 servo's dacht dat de wii nunchuck.Stap 1: onderdelen Wii nunchuckArduino2 servoBreadboardJumper dradenStap 2: verbinding maken Sluit de wii nunchuck zoals dit schema.Stap 3: De Code uploadenStap 4: gedaan!!! U kunt nu de 2 servo
Funtendo - een multistick retro controller voor uw PC

Funtendo - een multistick retro controller voor uw PC

Funtendo is een volledig zelfstandige retro gaming & controller systeem voor uw PC.Het is geschikt voor het gebruik van de originele Nintendo controller, de N64 -controller en de Wii Classic controller op hetzelfde moment!Funtendo is USB powered en b
Aan de slag met de Pocket Mini Computer

Aan de slag met de Pocket Mini Computer

Ongeveer een maand en een half geleden, ik creëerde een project genaamd de Pocket Mini Computer en een Instructable schreef over hoe om het te bouwen. Dit Instructable gaat het hele project een stapje verder door u aan de slag met uw Pocket Mini Comp
Het creëren van animatie en Games: hoofdstuk 1 aan de slag.

Het creëren van animatie en Games: hoofdstuk 1 aan de slag.

Welkom bij de eerste van een multi-delige serie:Maken van animatie en Games: hoofdstuk 1 aan de slagDeze serie zal duik in het gebruik van de Propeller microcontroller gebaseerde systemen voor het maken van uw eigen afbeeldingen, animaties en video g
Bouw uw eigen mini zakcomputer

Bouw uw eigen mini zakcomputer

ooit willen ervaren jaren 70 en 80 computergebruik zonder gehannes met krakende oude hardware en 5,25-inch diskettes?In dit Instructable, zal ik je leren hoe te bouwen en uw eigen mini pocket computer program.Verkennen micro computing met een machine
Het creëren van animatie en Games: hoofdstuk 2 Game Controllers

Het creëren van animatie en Games: hoofdstuk 2 Game Controllers

Welkom bij de tweede van een multi-delige serie:Maken van animatie en Games: Gamecontrollers hoofdstuk 2Deze serie zal duik in het gebruik van de Propeller microcontroller gebaseerde systemen voor het maken van uw eigen afbeeldingen, animaties en vid
Het gebruik van een Wiimote als muis van uw Computer

Het gebruik van een Wiimote als muis van uw Computer

ooit afgevraagd welke leuke dingen je met een Wiimote doen kunt? Zo ja, is dit zeker waar je start-gebruiken als een muis!Stap 1: Stap 1: materialen1. een Wiimote (natuurlijk)2. WiiMotionPlus (eigenlijk is ingebouwd in sommige nieuwe Wiimotes!)3. Blu