Hallo liebe Mitstreiter,
leider bin ich ein Programmier- und C-Anfänger und habe ein Problem und hoffe, dass es hier ein paar Leute gibt, die mir weiterhelfen können. Gerne würde ich ein Display über I2C und einen PCF8574 ansprechen. Dazu habe ich eine Schaltung gemäß des folgenden Links aufgebaut (https://www.roboternetz.de/community/threads/20277-LCD-%C3%BCber-I2C-C-Bibliothek-f%C3%BCr-AVR) und die "i2clcd.h" von hier genommen (http://computerheld.de/i2clcd/). Bevor ich Fragen zum eigentlichen Programm habe, brauche ich Hilfe zum Erstellen der HEX-Datei im AVRStudio 5.1.
Ich habe meinem kleinen Programm die Codeschnipsel, wie auf computerheld.de angegeben (unter Documentation > Example), hinzugefügt. Die Dateien i2cmaster.h und i2clcd.h habe ich ins "Hauptverzeichnis" der Header-Dateien kopiert. Mein Programm schaltet eine LED Interrupt-gesteuert an und aus, was ohne I2CLCD-Funktionalität (in roter Schrift) gut klappt. Hier das Programm:
Nun zu meinem Problem. Wenn ich dieses Programm "kompilieren" möchte (F7 drücken), dann erscheinen die folgenden Fehlermeldungen:Code:#include <avr/io.h> // Header-Datei f. IO-Register #include <avr/interrupt.h> // Header-Datei f. Interruptfunktion #include <stdint.h> // Header-Datei f. standard Datentypen #include "i2clcd.h" volatile uint8_t tcount; // Globale Variable (volatile) uint8_t x; // Lokale Variable zum Schalter des Ports ISR (TIMER0_OVF_vect) { /* Interrupt alle (16.000.000/256)/256 Hz = 244,140625 Hz bzw. 1/488,28125 s = 4,096 ms */ tcount++; // tcount +1 pro Timer Interrupt (ca.10ms) } int main(void) // Hauptprogramm ab hier { x = 0; DDRD = (1 << DDD7); // PortD7 als Ausgang für LED1 lcd_init(); //- Display initialization // Timer 0 konfigurieren TCCR0 = (1<<CS02); // Prescaler 256 TIMSK |= (1<<TOIE0); // Overflow Interrupt erlauben sei(); // Global Interrupts aktivieren char string[] = "Hi World"; lcd_print(string); //- Print a string lcd_gotolr(2,4); //- Move to position (line 2, row 4) while (1) { // Endlosschleife im Hauptprogramm if ( tcount > 121 ) { // 122*4,096ms Warten (499,712ms) if ( x == 0 ) { // Wenn x gleich 0 ist PORTD &= ~( (1<<PD7)); // ...deaktiviere Port D7 x = 1; // Setze X auf 1 } else { // Ansonsten PORTD |= (1<<PD7); // ...aktiviere Port D7 x = 0; // Setze X auf 0 } tcount = 0; // Zähler wieder auf 0 setzen } } }
Könnt ihr entdecken, wo ich einen Fehler gemacht habe? Nach viel Sucherei und einigen Stunden arbeit, weiß ich nicht mehr weiter
Schon jetzt vielen Dank für eure Mühe und Hilfe,
euer Reissdorf







 
			
			
 
					
					
					
						 Zitieren
Zitieren 
			

Lesezeichen