Forum: Compiler & IDEs Problem mit I2C Programm


von Achim S. (achims)


Lesenswert?

Hallo Gemeinde
habe ein Problem mit einem Stück Code in C (Atmega 32, 16MHz, PCF 8574)
1
#ifndef F_CPU      // CPU-Takt 
2
#define F_CPU 16000000L    // definiere ihn auf 16MHz
3
#endif
4
5
#include <util/delay.h>    // Einbinden der .h Datei
6
7
#include <stdlib.h>
8
#include <avr/io.h>
9
#include <avr/pgmspace.h>
10
#include <i2cmaster.h>
11
12
// i2c_init ();
13
14
unsigned char adr1_w = 0x40;  // Schreibadresse
15
unsigned char adr1_r = 0x41;  // Leseadresse
16
unsigned char d;
17
unsigned char e;
18
19
int main(void)
20
 {        // Hauptprogramm
21
   i2c_start(adr1_w);    // Schreibbefehl für Device 1
22
   i2c_write(0xff);          // Alle Pins des PCF auf 0
23
   while(1)     
24
     {                    // Hauptschleife
25
  i2c_write(0xff);  // Alle Pins des PCF auf 0
26
27
  //i2c_start(adr1_r);  // Starte Lesezugriff
28
  //d=i2c_readNak();  // Schreib Leseergebnis in d
29
      
30
     }
31
   _delay_ms(100);
32
   i2c_stop();
33
 }
Mein Problem ist ganz einfach. Der PCF 8575 reagiert auf nichts.
Was mach ich falsch? Ein paar Versuche stehen noch drin. Am PCF sind für 
A0,A1,A2 low (alle auf GND) eingestellt
achim

von Stefan D. (ste_d)


Lesenswert?

Hallo,

du solltest vor der Nutzung des I2C-Bus die i2c_init() Funktion 
aufrufen.

Der Beginn der main Funktion sieht dann so aus:
1
int main(void)
2
{
3
    i2c_init();
4
    i2c_start(adr1_w);
5
...

von Achim S. (achims)


Lesenswert?

Hallo Stefan
Danke für deine Antwort. Ich hatte das drin, dann aber auskommantiert. 
Es verursachte Fehler. Bin jetzt schon ein Stück weiter gekommen. Die 
LED gehen. bleibt noch die Abfrage der taster. Das Programm hatte die  h 
Datei nicht gefunden. Noch mal alles gemacht und beim nächsten Start und 
einem weiteren Bier ging es soweit.
achim

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.