Hallo,
ich arbeite mich gerade in i2c ein und habe ein Problem mit der Funktion
von Peter Fleury.
Bisher hab ich nur die ersten Bruchstücke von dem Programm, aber es
kommt schon die erste Meldung.
Die Dateien von Fleury hab ich in das gleiche Verzeichnis kopiert, in
der auch die .c-Datei von meinem Programm liegt. Allerdings ist da keine
i2c_init dabei. Und wenn ich wie im Beispielprogramm angegeben die
i2c_init aufrufe, kommt folgende Meldung:
D:\i2c_test\default/../i2c_test.c:73: undefined reference to `i2c_init'
Ist es überhaupt richtig, die Dateien von Fleury in mein Verzeichnis zu
packen, oder müssen diese in das include-Verzeichnis vom Win-Avr?
1 | #define F_CPU 8000000UL
|
2 | #define output1 0x40
|
3 |
|
4 | #include <avr/io.h>
|
5 | #include <util/delay.h>
|
6 | #include <avr/interrupt.h>
|
7 | #include <avr/eeprom.h>
|
8 | #include "i2cmaster.h"
|
9 |
|
10 |
|
11 |
|
12 | /* Interruptroutine Timer1
|
13 | */
|
14 |
|
15 | ISR (TIMER1_OVF_vect)
|
16 |
|
17 | {
|
18 | cli();
|
19 |
|
20 | TCNT1 = 60000;
|
21 |
|
22 | if (PINB & (1 << 0))
|
23 | {
|
24 | PORTB &= ~(1 << 0);
|
25 | }
|
26 |
|
27 | else
|
28 | {
|
29 | PORTB |= (1 << 0);
|
30 | }
|
31 |
|
32 | sei();
|
33 | }
|
34 |
|
35 |
|
36 |
|
37 | /* Hauptprogramm
|
38 | */
|
39 |
|
40 | int main (void)
|
41 |
|
42 | {
|
43 | DDRA = 0x00; // Richtungsregister PortA: alle Pins als Eingänge
|
44 | DDRB = 0xFF; // Richtungsregister PortB: alle Pins als Ausgänge
|
45 | DDRC = 0xFF; // Richtungsregister PortC: alle Pins als Ausgänge
|
46 | DDRD = 0xFF; // Richtungsregister PortD: alle Pins als Ausgänge
|
47 |
|
48 | PORTA = 0x00; // Pull-Up-Widerstände ausschalten
|
49 | PORTB = 0b00000000; // Alle Ausgänge ausschalten
|
50 | PORTC = 0x00; // Alle Ausgänge auschalten
|
51 | PORTD = 0x00; // Alle Ausgänge auschalten
|
52 |
|
53 | TIMSK |= (1 << TOIE1); // Timer1 Interrupt freigeben
|
54 | TCCR1B |= (1 << CS10); // Teiler Timer1 festlegen /1024
|
55 | TCCR1B |= (1 << CS12); // Teiler Timer1 festlegen /1024
|
56 | TCNT1 = 60000; ; // Blinkgeschwindigkeit ins Timercounterregister laden
|
57 |
|
58 | sei();
|
59 |
|
60 | i2c_init();
|
61 |
|
62 | while (1)
|
63 | {
|
64 | }
|
65 | }
|