Hi,
ich programmiere gerade ein Raspberry (mit Minibian) in C. Dieser soll
mittels SPI, I2C, GPIO und einem UnixSocket verschiedene Aufgaben
ausführen.
Dabei wird pro Sekunde ungefähr 100 mal auf SPI, 100 mal auf GPIO, 200
mal auf TWI zugegriffen. Nach ziemlich genau 15 Minuten ist jedoch kein
Zugriff mehr möglich, auf keine dieser Schnittstellen. Ich kann sie
weder öffnen, schließen oder etwas hineinschreiben. Erst ein
Programmneustart bringt Abhilfe (für 15 Minuten).
Mein Zugriff auf die Dateien ist immer gleich :
1 | int i2c_start(uint8_t deviceadress)
|
2 | {
|
3 | int result;
|
4 | int fd;
|
5 | char error_code[100];
|
6 |
|
7 | fd = open(I2C_FILE, O_RDWR);
|
8 |
|
9 | if(fd < 0) {
|
10 | output_error("I2C: Failed to open file\n");
|
11 | snprintf(error_code, 100, "i2c_start : Failed to open file, Code : %d",fd);
|
12 | output_error_detail(error_code, "i2cfox.c");
|
13 | return -1;
|
14 | }
|
15 |
|
16 | result = ioctl(fd,I2C_SLAVE,deviceadress);
|
17 |
|
18 | if(result<0)
|
19 | {
|
20 | output_error("I2C Error: ioctl \n");
|
21 | return -1;
|
22 | }
|
23 |
|
24 | return fd;
|
25 | }
|
26 |
|
27 | int i2c_close(int fd)
|
28 | {
|
29 | int result;
|
30 |
|
31 | result = close(fd);
|
32 |
|
33 | if(result < 0)
|
34 | {
|
35 | output_error("I2C Error: error by closing file\n");
|
36 | }
|
37 |
|
38 | return result;
|
39 |
|
40 | }
|
Hat dazu jemand eine Idee wie ich an die Fehlerfindung herangehe ?