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:
	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
     
    }
}
}
 Nun zu meinem Problem. Wenn ich dieses Programm "kompilieren" möchte (F7 drücken), dann erscheinen die folgenden Fehlermeldungen: 
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
						
					
Lesezeichen