-
-
PIC 18F4550 mit EEPROM 24C32A via I2C
Hallo,
kann mir jemand helfen den I2C Bus zu konfigurieren.
Mein PIC läuft mit eine Frequenz von 5 MHz.
Ziel meiner Bemühungen ist und war es den EEPROM auszulesen.
Doch leider klappt es leider nicht mit dem Hardware MSSP Module auf dem Chip.
Daher habe ich es mit der Software variante probiert doch hier habe ich enorme Probleme meine Timing so einzustellen das der EEPROM alles schafft zu schreiben bzw. die Daten bereitzustellen und auf den I2C-Bus rauszuschieben.
SDA und SCL Leitung haben bei pullup Widerstände von 20k.
Wie berechen ich die zeit für schreiben, also einfag gefragt wie lang müssen die delays sein damit die kommunikation zwischen. Master (PIC) und Slave(EEPROM) klappt??
Ich benutze den MPLAB C18 Compiler und ICD2 fürs Debugen.
Der Code sieht bei mir so aus:
//main.c
//** I N C L U D E S ************************************************/
#include <p18f4550.h>
#include <sw_i2c.h>
#include <delays.h>
#include <sw_i2c.h>
//** D E C L A R A T I O N S ******************************************/
#pragma config CPUDIV = OSC4_PLL6
#pragma config PLLDIV = 5
#pragma config FOSC = HS
#pragma config PWRT = ON
#pragma config WDT = OFF
#define control_IN 0b10100000
#define control_OUT 0b10100001
#define address_HI 0b00000000
#define address_LO 0b00000000
void init(void)
{
ADCON1 = 0b00001111; // Enable digital I/O
TRISB = 0b11111111; // Configure PORTB I/O
} // initializes the PICmicro
void main (void)
{
//**********************************
init();
SWStartI2C(); // Generate bus start condition
test = SWPutaI2C(p1 , 1); // write control_in byte
Delay10TCY();
test = SWPutaI2C(p2 , 1); // write address hi byte
Delay10TCY();
test = SWPutaI2C(p3 , 1); // write address lo byte
SWStopI2C();
Delay10TCY();
SWRestartI2C(); // Generate bus restart condition
test = SWPutaI2C(p4 , 1); // write control_OUT byte
for (k=0;k<dlength;k++)
{
Delay10TCY();
data[k] = SWReadI2C(); //read in a single byte
SWAckI2C();
Delay10TCY();
}
SWStopI2C(); // Generate bus stop condition
} // end main function
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen