Gast
#3411682
Abend, ich habe hier einen Atmega48 und ein Raspberry Pi, welche ich per TWI verbinden möchte. Da ich in dem Gebiet noch nicht so bewandert bin, habe ich mir via Google diverse Codeschnipsel dazu angesehen. Meine Interrup Routine sieht nun folgendermaßen aus (Atmega=Slave):
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
Raspberry seitig nutze ich die i2c-Tools. Das Schreiben funktioniert ohne Probleme, jedoch wenn ich "i2cget -y 1 TWI-ADRESSE REGISTER" ausführe, bekomme ich ein "Error: Read failed". Führe ich dannach den Befehl ohne REGISTER aus, wird der korrekte Wert ausgeliefert! Lässt man den ersten Befehl komplett weg, wird die Variable buff_adr aber nicht gesetzt. Normalerweise müsste er doch wie bei dem Befehl i2cset handeln und zuerst buff_adr setzen und dannach den 2. Interrupt auslösen? Wo liegt hier das Problem? Habe ich etwas Elementares beim TWI Protokoll übersehen? MfG ReduX69