ESP8266 - extern I2C EEPROM datalogger - AT24C32/64-drivrutinen (3 / 4 steg)

Steg 3: Driver genomförandet



Driver genomförandet

För att kunna komma åt och arbeta ordentligt med någon form av minnesenheter vi behöver minst 3 grundläggande funktioner genomförs: adressering, läsa och skriva. Plus korrekt I2C buss kommunikation initiering, såklart.

1. Init I2C bussen/interface:

Adress = 0x50,--A2, A1, A0 = 0
ID = 0

init = funktion (själv, sda, scl)
Self.ID = 0
I2C.Setup (self.id, sda, scl, i2c. LÅNGSAM)
slutet

ADRESSERING:

De 32K EEPROM kräver ett 8-bitars enhet adress ord efter en startvillkoret att aktivera chipet för en läsa eller skriva drift. Den använder tre enhet adress bitar A2, A1, A0 för att så många som åtta enheter på samma buss. Dessa bitar måste jämföra deras motsvarande hårdkodade in stift. A2, A1 och A0 stiften använder en inre egen krets som biases dem till en logik låg villkor om stiften får flyta.

Den åttonde biten av enhetens adress är läs/skriv drift väljer lite. En Läsåtgärd initieras om denna bit är hög och en skrivåtgärd initieras om denna bit är låg.

2. Läs funktion

En random läsa kräver en "dummy" byte skriva sekvens att ladda in data ordet adress. När enhetens adress word och data ordet adress är klockat in och bekräftas av EEPROM, måste mikrokontroller generera ett annat start tillstånd.

Mikrokontroller initierar nu en aktuell adress läsa genom att skicka en enhetsadress med den

Läs/skriv Välj lite hög. EEPROM erkänner enheten adressen samt ur seriellt

data ordet. Mikrokontroller svarar inte med en nolla men genererar en följande

stoppvillkor

read_EEPROM = funktion (själv, devadr, memadr, längd)
adrh=bit.rshift (memadr, 8)
adrl=bit.band(memadr,0xFF)
I2C.start(Self.ID)
I2C.address (self.id, self.address, i2c. SÄNDAREN)
I2C.write (self.id, adrh)
I2C.write (self.id, adrl)
I2C.stop(Self.ID)
I2C.start(Self.ID)
I2C.address (self.id, self.address, i2c. MOTTAGARE)
c=I2C.Read (self.id, längd)
I2C.stop(Self.ID)
Print(c)
returnera c
slutet

3. skriva funktion

En skrivåtgärd kräver två 8-bitars data word adresser efter enhet adress word och bekräftelse. Efter mottagandet av denna adress, EEPROM igen svarar med en nolla och sedan klockan i det första 8-bitars data ordet. Efter mottagandet av 8-bitars data ordet, EEPROM kommer ut en nolla och adressering enheten, t.ex en mikrokontroller, måste avsluta sekvensen skriva med ett stoppvillkor.

Vid denna tidpunkt EEPROM träder ett internt tt skriva cykel, tWR, till beständigt minne. Alla ingångar är inaktiverade under den här skriva cykel och EEPROM svarar inte förrän skriva är klar

write_EEPROM = funktion (själv, devadr, memadr, edata)
Jag = 1
längd = string.len(edata)
adrh=bit.rshift (memadr, 8)
adrl=bit.band(memadr,0xFF)
I2C.start(Self.ID)
I2C.address (self.id, self.address, i2c. SÄNDAREN)
I2C.write (self.id, adrh)
I2C.write (self.id, adrl)
--Print(edata)--debug endast
--Print(String.byte(edata,1))--debug endast
medan jag < = längd vill
TMR.wdclr()
I2C.write(Self.ID,String.byte(edata,i))
jag = i + 1
slutet
I2C.stop(Self.ID)
slutet

Se Steg
Relaterade Ämnen

Använda ATtiny85 med I2C EEPROM

detta är en enkel installation för att använda en I2C EEPROM med ATtiny85. Det finns många webbplatser som beskriver användningen av I2C eeprom, men det finns några nyanser när du använder en ATtiny85 som uppstår på grund av bristen på verkliga I2C....

Magic 8 Ball med hjälp Esp8266 och I2c LCD-skärm

Jag trodde det skulle vara lite roligt att göra en Magic 8 Ball med en Arduino och en i2c LCD-skärm, så här är några instruktioner på hur man gör detta.Steg 1: Saker du behöver Arduino av någon typ (jag använder en esp8266 men det finns ingen anledni...

Lägga till I2C EEPROM till Arduino

fästa en EEPROM till Arduino är ganska enkel och det enklaste sättet att göra det är via I2C bussen. EEPROMs finns i många former men 24 LS256 eller 24LC256 är ett bra val eftersom det är lätt att använda och ganska billigt (85 euro cent på min lever...

ESP8266 - WIFI temperatur datalogger - MCP9808

I detta projekt kommer vi att bygga en enkel, hög precision, WIFI temperatur datalogger baserat på ESP8266 modul och MCP9808 chip, en ±0, 5 ° C maximalt precision Digital temperaturgivare.Funktioner• Noggrannhet:-±0.25 (typiskt) från-40 ° C till +125...

Enkel EEPROM modul för Arduino eller andra microcontroller

EEPROMs komma till hands om du vill lagra vissa uppgifter utan att förlora den. Många mikrokontrollers komma med vissa interna EEPROM, men eftersom EEPROMs har ett ändligt (men stort) antal skriver innan de börja bli felaktig, min anal glans karaktär...

Världens billigaste I2C (I-fyrkant-C) Adapter

göra en sensor gränssnitt för din dator för under en dollar!Uppdatering 6/9/08: efter att ha utforskat flera vägar avslutade jag har finns det inga praktiska sätt att genomföra denna teknik i Microsoft Windows. Detta är inte småaktiga OS bashing, jag...

Ett trådlöst kontrollerade, Arduino-Powered anslagstavla

bygga själv en trådlöst styrd, Arduino-powered anslagstavla!Här är ett enkelt projekt som skapar en trådlöst programmerbart anslagstavla. XBee moduler använder för att ge en trådlös seriell länk mellan datorn och enheten. Du interagerar med den via e...

LED - Mega klockan

Steg 1: Produktstruktur (allt du behöver)För bostäderTre 300x300mm x 3mm tjocklek akrylglas (svart)En 300x300mm x 3mm tjocklek akrylglas (genomskinliga)Akrylglas självhäftande och polska20 15 mm spacers M3 tråden20 M3 skruvar + brickorEn 300 x 300 bi...

Den omvända Andycache (Android-driv omvänd geocache)

för dem som inte vet, Omvänd Geocache puzzle är ett pussel-rutan som öppnas endast om rutan görs till en på förhand fastställd plats. Du vet inte vad det är, du har ett begränsat antal försök och box skaparen hatar dig tillräckligt för att bara berät...

LEDDE matrisen med hjälp av SKIFT register

detta instructable är tänkt att vara en mer fullständig förklaring än andra tillgängliga online. Detta kommer bland annat ge mer hårdvara förklaring än finns i LED markeringsramen instructable av led555.MålDetta instructable presenterar begreppen med...

IoT Coffee Pot Monitor

Ibland, en produkt är så enkelt, så uppenbart, du undrar varför ingen har skapat det ännu. Det är typ av historien här... Varje dag på jobbet, jag lyssnade på otaliga människor klagar att kaffepannan var tom. Den kollektiva rösten ringde ut med krav...

Gnista Core-101-blinkande lysdioder

Nyligen fick gnista kärnan att experimentera på, spark kärnan är helt lik till Arduino nano men är bättre och har fått en ganska cool WiFi modul på toppen av styrelsen. Spark är ganska lätt att arbeta med, det enda som kändes svårt lugnande kärnan oc...

102 - RBG LED

Här är den andra läraren att komma igång med Spark kärnan, om du är ny till Spark kärnan och söker efter den blinkande LED tutorial, kan du kolla in handledning en. I denna tutorial arbetar jag med RGB-ljusdioder dess en bland de saker du hittar i sp...

BookClock - Arduino-baserad klockan i en kartong

detta är den senaste (och billigaste ännu) Wise klocka familjemedlem.(Som en snabb resumé, de andra medlemmarna i familjen Wise klocka är, hittills, glaskupol Wise klocka och Wise klockan 2. De är "kloka" eftersom, tillsammans med tid, de också...

Öppna brain wave hårdvara

uppdaterad den 16 juni 2014 för avsnitt 9:Du kan också gå direkt till avsnitt 9.göra högkvalitativa brain wave interface som låg kostnad och liten storlek är mitt över 20 år av drömmen. För att göra detta måste samlas produktion, behöver arbete med i...

Sleep Cycle väckarklocka med rörelsesensor

Motivation:Jag ville på något sätt förbättra standard väckarklockan, så jag gjorde en som vaknar du upp försiktigt genom att bara vakna du när inte du i ditt djup sömn. En extra bonus är att det spelar Super Mario Theme Song som dess larm.Hur det fun...

Hyduino - automatiserad Hydroponics med en Arduino

Så, kanske du undrar... Vad är HYDROPONICS?I grund och botten växer hydroponics växter utan användning av traditionella smuts medium med hjälp av ett näringsämne rika vatten-lösning. Dessa medier används för att "plantera" i allt från glasfiber...

Muzak Visualizer

kanske du har hört musik. Men har du sett musik?Muzak bildeffekter ritades av mig, nmcclana. Den är baserad på öppen källkod Pixelmusic projektet med några ändringar att förstärka visuella och göra ADC på propellern. Obs: Detta projekt har uppdaterat...

Tricorder/konsolen!

Som jag är abscessed med Star Trek beslutat att göra en Star Trek baserade Arduino projekt. Jag gick ut först och började bygga en "Tricorder". En "Tricorder" är den små sensoriska handdatorn som Star Trek besättningen använder. Jag kö...