Vai al contenuto
PLC Forum


16f628 E I2c Con Eeprom Esterna


deebae

Messaggi consigliati

Ciao ragazzi, ho appena fatto una richiesta su questo forum e mi avete risposto praticamente subito... grazie 1000!!

Ho a disposizione un PIC 16F628 e il mio progetto sarebbe quello di collegarci un EEPROM della serie 24LC e programmarla in maniera Seriale. Ho trovato qualcosina in giro per la rete solamente che non è che abbia capito molto. Mi potreste spiegare con parole povere (mooolto povere) come funziona il bus i2c (già implementato nel 16f628). NOn mi è chiaro anche il collegamento circuitale del pic con la eeprom.

Ps: la eeprom la devo scrivere in maniera seriale, cioè con i pin A1 A2 A3 cortocircuitati...

Il linguaggio che intendo utilizzare è il C (con picclite)

l'unico traguardo che ho raggiunto finora è leggere e scrivere sulla eeprom interna del pic con questa routine:

Citazione:

/* *******************************************************************

* Funzione per la scrittura dati nella memoria EEprom del PIC *

* Author : Antonio Bruno 08/2003 *

* *******************************************************************/

#include <pic16f6x.h>

void eeprom_w(char addr,char value)

{

EEADR=addr; // indirizzo cella memoria eeprom

EEDATA=value; // valore da memorizzare

GIE=0; // disabilita interrupt

WREN=1; // abilita la scrittura

EECON2=0x55; // Sequenza richiesta

EECON2=0xAA;

WR=1;

while(WR);

WREN=0;

GIE=1; // riabilita global interrupt

}

/* *******************************************************************

* Funzione per la ettura dati dalla memoria EEprom del PIC *

* Author : Antonio Bruno 08/2003 *

* *******************************************************************/

unsigned char eeprom_r(char addr)

{

EEADR=addr; // indirizzo cella memoria eeprom

RD=1;

return EEDATA;

}

dite che c'è modo di modificarla per comunicare con una eeprom ESTERNA??

Modificato: da deebae
Link al commento
Condividi su altri siti


  • 2 weeks later...

ragazzi ho provato in tutti i modi con questa routine:

http://www.jofi.it/fiser/apex/Ms_i2c.c

ma non ci riesco proprio!! i pin sono giusti (li ho provati con dei led e una routine di test) ma sulla eeprom non scrive proprio nulla. Io devo farlo su una 2402, è possibile che la routine non sia compatibile con questa eepromo???

Link al commento
Condividi su altri siti

ciao,

volevo informarti che il 16f628 non implementa il protocollo I2C.

Le routine che tu hai riportato sono inerenti alla programmazione della memoria EEPROM del pic stesso.

Se vuoi implementare il protocollo I2C con questo pic devi usare opportune routine.

Vedi nel sito della MicroChip. troverai routine applicabili ai micro della famiglia 16xx.

Comunque per imparare a programmare i pic bisogna cercare di implementare le routinee e non copiarle ( al massimo adattarle) e cercare di usare sopratutto l'ASM

Link al commento
Condividi su altri siti

bhè, io ho scelto il C perché è molto più immediato, poi non mi interessa sapere TUTTO sui pic. E poi comunque basta che faccio #asm e inserisco i comandi a basso livello. Tutte le cose che sto facendo con il pic (non molte a dire la verità) le sto facendo x conto mio...

Infatti lo so che la prima routine che ho postato è relativa alla eeprom interna, la seconda invece riguarda l'implementazione "software" della routine I2C, l'ho letta e capita ma, sinceramente, con le mie conoscenze scrivere da zero una routine per l'I2C mi sembra difficile. Dici che la 2402 ha la memoria strutturata diversamente dalla 2416? :unsure:

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...