Índice:

Adicionando um EEPROM 24LC256 ao Arduino Prazo: 3 etapas
Adicionando um EEPROM 24LC256 ao Arduino Prazo: 3 etapas

Vídeo: Adicionando um EEPROM 24LC256 ao Arduino Prazo: 3 etapas

Vídeo: Adicionando um EEPROM 24LC256 ao Arduino Prazo: 3 etapas
Vídeo: Teleduino ile Uzaktan Kontrol | Arduino'yu İnternete Bağlamak | Arduino Ethernet Shield 2024, Novembro
Anonim
Adicionando um EEPROM 24LC256 ao Arduino devido
Adicionando um EEPROM 24LC256 ao Arduino devido

O arduino devido carece de um eeprom. Este instrutível adiciona um e permite que você armazene valores em memória não volátil que sobreviverão a uma atualização de firmware do Arduino.

Etapa 1: breadboarding

Breadboarding
Breadboarding

Existem algumas instruções realmente boas aqui: https://www.hobbytronics.co.uk/arduino-external-eepromEu apenas as segui. A foto mostra o circuito breadboard. os pinos 1 a 4 e o pino 7 são aterrados. o pino 8 está conectado à alimentação de 3,3 V na placa devida. Os fios amarelo (pino 6) e branco (pino 5) conectados aos pinos i2c SDA (dados) e SCL (relógio) na placa devida (numerados 21 e 20)

Etapa 2: Código de tempo

Tempo do código
Tempo do código

Aqui estão alguns trechos de código que uso em meus esboços. Em primeiro lugar, inclua os cabeçalhos da biblioteca Wire em algum lugar próximo ao topo do seu esboço: / * Use 24LC256 EEPROM para salvar as configurações * / #include Em seguida, adicione algumas funções para ler e gravar bytes da EEPROM (eu só me importo com bytes individuais, mas há um recurso de gravação de página no chip também). Observe que há uma definição de macro de 0x50.. este é o endereço do chip no barramento i2c (você pode conectar mais de um dispositivo i2c em um barramento i2c e selecionar com qual deseja falar alterando o endereço). / * Essas duas funções nos ajudam a gravar no chip EEPROM 24LC256 * / #define EEPROM_ADDR 0x50 void EEPROM_write (sem sinal int addr, byte data) {int rdata = data; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.write (rdata); Wire.endTransmission (); //Serial.print("EEPROM write: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); atraso (5); } byte EEPROM_read (endereço interno não assinado) {byte data = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission (); Wire.requestFrom (EEPROM_ADDR, 1); if (Wire.available ()) data = Wire.read (); //Serial.print("EEPROM read: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); atraso (5); dados de retorno; } Você pode descomentar as linhas Serial.print (…) se quiser ver alguma saída de depuração. Na função arduinos setup () você inicia a biblioteca de fios e pode ler os valores iniciais. Aqui eu li em dois bytes (flags e max_cc), duas palavras (lean_min e lean_max) e um array de palavras sd_max [3]: // ler os valores salvos no EEPROM Wire.begin (); sinalizadores = EEPROM_read (0); max_cc = EEPROM_read (1); lean_min = palavra (EEPROM_read (3), EEPROM_read (2)); lean_max = palavra (EEPROM_read (5), EEPROM_read (4)); para (int j = 0; j <3; j) {sd_max [j] = palavra (EEPROM_read (7 j * 2), EEPROM_read (6 j * 2)); } Aqui está o trecho de código que os grava na EEPROM: EEPROM_write (0, sinalizadores); EEPROM_write (1, max_cc); EEPROM_write (2, lowByte (lean_min)); EEPROM_write (3, highByte (lean_min)); EEPROM_write (4, lowByte (lean_max)); EEPROM_write (5, highByte (lean_max)); para (int j = 0; j <3; j) {EEPROM_write (6 j * 2, lowByte (sd_max [j])); EEPROM_write (7 j * 2, highByte (sd_max [j])); } É sobre isso realmente.

Etapa 3: conecte-o

Wire It Up
Wire It Up

Ligue-o a algum veroboard para aparafusar em um gabinete e terminar o trabalho.

Recomendado: