mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hilfe datei aus Tutorial Compilieren


Autor: Huber M. (michael_h784)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte aus dem AVR/Gcc Tutorial/lcd ANSTEUERN zwei externe dateien 
einbinden. Dieses mache ich im Soloution explorer richtig?

dazu muss ich sie aber vorher seperat in meinem compiler übersetzen, und 
einzeln abspeichern, richtig ?

das heisst ich kopiere die datei aus dem tutorial in meinem compiler und 
übersetze sie richtig ?

er bringt mir abe hierbei lauter fehler, könnte mir das mal bitte jemand 
übersetzten, und sagen ob es bei ihm auch so ist. und vielleicht was ich 
hier falsch mache?

grüsse huber

Datei lcd-routines.h
// Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus
// http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
//
 
#ifndef LCD_ROUTINES_H
#define LCD_ROUTINES_H
 
////////////////////////////////////////////////////////////////////////////////
// Hier die verwendete Taktfrequenz in Hz eintragen, wichtig!
 
#ifndef F_CPU
#define F_CPU 8000000
#endif
 
////////////////////////////////////////////////////////////////////////////////
// Pinbelegung für das LCD, an verwendete Pins anpassen
// Alle LCD Pins müssen an einem Port angeschlossen sein und die 4
// Datenleitungen müssen auf aufeinanderfolgenden Pins liegen
 
//  LCD DB4-DB7 <-->  PORTD Bit PD0-PD3
#define LCD_PORT      PORTD
#define LCD_DDR       DDRD
#define LCD_DB        PD0
 
//  LCD RS      <-->  PORTD Bit PD4     (RS: 1=Data, 0=Command)
#define LCD_RS        PD4
 
//  LCD EN      <-->  PORTD Bit PD5     (EN: 1-Impuls für Daten)
#define LCD_EN        PD5
 
////////////////////////////////////////////////////////////////////////////////
// LCD Ausführungszeiten (MS=Millisekunden, US=Mikrosekunden)
 
#define LCD_BOOTUP_MS           15
#define LCD_ENABLE_US           20
#define LCD_WRITEDATA_US        46
#define LCD_COMMAND_US          42
 
#define LCD_SOFT_RESET_MS1      5
#define LCD_SOFT_RESET_MS2      1
#define LCD_SOFT_RESET_MS3      1
#define LCD_SET_4BITMODE_MS     5
 
#define LCD_CLEAR_DISPLAY_MS    2
#define LCD_CURSOR_HOME_MS      2
 
////////////////////////////////////////////////////////////////////////////////
// Zeilendefinitionen des verwendeten LCD
// Die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen passen
// Bei anderen Zeilenlängen müssen diese Einträge angepasst werden
 
#define LCD_DDADR_LINE1         0x00
#define LCD_DDADR_LINE2         0x40
#define LCD_DDADR_LINE3         0x10
#define LCD_DDADR_LINE4         0x50
 
////////////////////////////////////////////////////////////////////////////////
// Initialisierung: muss ganz am Anfang des Programms aufgerufen werden.
void lcd_init( void );
 
////////////////////////////////////////////////////////////////////////////////
// LCD löschen
void lcd_clear( void );
 
////////////////////////////////////////////////////////////////////////////////
// Cursor in die 1. Zeile, 0-te Spalte
void lcd_home( void );
 
////////////////////////////////////////////////////////////////////////////////
// Cursor an eine beliebige Position 
void lcd_setcursor( uint8_t spalte, uint8_t zeile );
 
////////////////////////////////////////////////////////////////////////////////
// Ausgabe eines einzelnen Zeichens an der aktuellen Cursorposition 
void lcd_data( uint8_t data );
 
////////////////////////////////////////////////////////////////////////////////
// Ausgabe eines Strings an der aktuellen Cursorposition 
void lcd_string( const char *data );
 
////////////////////////////////////////////////////////////////////////////////
// Definition eines benutzerdefinierten Sonderzeichens.
// data muss auf ein Array[8] mit den Zeilencodes des zu definierenden Zeichens
// zeigen. Später können diese mit lcd_data(0-7) aufgerufen werden
void lcd_generatechar( uint8_t startadresse, const uint8_t *data );
 
////////////////////////////////////////////////////////////////////////////////
// Ausgabe eines Kommandos an das LCD.
void lcd_command( uint8_t data );
 
 
////////////////////////////////////////////////////////////////////////////////
// LCD Befehle und Argumente.
// Zur Verwendung in lcd_command
 
// Clear Display -------------- 0b00000001
#define LCD_CLEAR_DISPLAY       0x01
 
// Cursor Home ---------------- 0b0000001x
#define LCD_CURSOR_HOME         0x02
 
// Set Entry Mode ------------- 0b000001xx
#define LCD_SET_ENTRY           0x04
 
#define LCD_ENTRY_DECREASE      0x00
#define LCD_ENTRY_INCREASE      0x02
#define LCD_ENTRY_NOSHIFT       0x00
#define LCD_ENTRY_SHIFT         0x01
 
// Set Display ---------------- 0b00001xxx
#define LCD_SET_DISPLAY         0x08
 
#define LCD_DISPLAY_OFF         0x00
#define LCD_DISPLAY_ON          0x04
#define LCD_CURSOR_OFF          0x00
#define LCD_CURSOR_ON           0x02
#define LCD_BLINKING_OFF        0x00
#define LCD_BLINKING_ON         0x01
 
// Set Shift ------------------ 0b0001xxxx
#define LCD_SET_SHIFT           0x10
 
#define LCD_CURSOR_MOVE         0x00
#define LCD_DISPLAY_SHIFT       0x08
#define LCD_SHIFT_LEFT          0x00
#define LCD_SHIFT_RIGHT         0x04
 
// Set Function --------------- 0b001xxxxx
#define LCD_SET_FUNCTION        0x20
 
#define LCD_FUNCTION_4BIT       0x00
#define LCD_FUNCTION_8BIT       0x10
#define LCD_FUNCTION_1LINE      0x00
#define LCD_FUNCTION_2LINE      0x08
#define LCD_FUNCTION_5X7        0x00
#define LCD_FUNCTION_5X10       0x04
 
#define LCD_SOFT_RESET          0x30
 
// Set CG RAM Address --------- 0b01xxxxxx  (Character Generator RAM)
#define LCD_SET_CGADR           0x40
 
#define LCD_GC_CHAR0            0
#define LCD_GC_CHAR1            1
#define LCD_GC_CHAR2            2
#define LCD_GC_CHAR3            3
#define LCD_GC_CHAR4            4
#define LCD_GC_CHAR5            5
#define LCD_GC_CHAR6            6
#define LCD_GC_CHAR7            7
 
// Set DD RAM Address --------- 0b1xxxxxxx  (Display Data RAM)
#define LCD_SET_DDADR           0x80
 
#endif


Datei lcd-routines.c:
// Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus
// http://www.mikrocontroller.net/articles/HD44780
// http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
//
// Die Pinbelegung ist über defines in lcd-routines.h einstellbar
 
#include <avr/io.h>
#include "lcd-routines.h"
#include <util/delay.h>
 
////////////////////////////////////////////////////////////////////////////////
// Erzeugt einen Enable-Puls
static void lcd_enable( void )
{
    LCD_PORT |= (1<<LCD_EN);     // Enable auf 1 setzen
    _delay_us( LCD_ENABLE_US );  // kurze Pause
    LCD_PORT &= ~(1<<LCD_EN);    // Enable auf 0 setzen
}
 
////////////////////////////////////////////////////////////////////////////////
// Sendet eine 4-bit Ausgabeoperation an das LCD
static void lcd_out( uint8_t data )
{
    data &= 0xF0;                       // obere 4 Bit maskieren
 
    LCD_PORT &= ~(0xF0>>(4-LCD_DB));    // Maske löschen
    LCD_PORT |= (data>>(4-LCD_DB));     // Bits setzen
    lcd_enable();
}
 
////////////////////////////////////////////////////////////////////////////////
// Initialisierung: muss ganz am Anfang des Programms aufgerufen werden.
void lcd_init( void )
{
    // verwendete Pins auf Ausgang schalten
    uint8_t pins = (0x0F << LCD_DB) |           // 4 Datenleitungen
                   (1<<LCD_RS) |                // R/S Leitung
                   (1<<LCD_EN);                 // Enable Leitung
    LCD_DDR |= pins;
 
    // initial alle Ausgänge auf Null
    LCD_PORT &= ~pins;
 
    // warten auf die Bereitschaft des LCD
    _delay_ms( LCD_BOOTUP_MS );
    
    // Soft-Reset muss 3mal hintereinander gesendet werden zur Initialisierung
    lcd_out( LCD_SOFT_RESET );
    _delay_ms( LCD_SOFT_RESET_MS1 );
 
    lcd_enable();
    _delay_ms( LCD_SOFT_RESET_MS2 );
 
    lcd_enable();
    _delay_ms( LCD_SOFT_RESET_MS3 );
 
    // 4-bit Modus aktivieren 
    lcd_out( LCD_SET_FUNCTION |
             LCD_FUNCTION_4BIT );
    _delay_ms( LCD_SET_4BITMODE_MS );
 
    // 4-bit Modus / 2 Zeilen / 5x7
    lcd_command( LCD_SET_FUNCTION |
                 LCD_FUNCTION_4BIT |
                 LCD_FUNCTION_2LINE |
                 LCD_FUNCTION_5X7 );
 
    // Display ein / Cursor aus / Blinken aus
    lcd_command( LCD_SET_DISPLAY |
                 LCD_DISPLAY_ON |
                 LCD_CURSOR_OFF |
                 LCD_BLINKING_OFF); 
 
    // Cursor inkrement / kein Scrollen
    lcd_command( LCD_SET_ENTRY |
                 LCD_ENTRY_INCREASE |
                 LCD_ENTRY_NOSHIFT );
 
    lcd_clear();
}
  
////////////////////////////////////////////////////////////////////////////////
// Sendet ein Datenbyte an das LCD
void lcd_data( uint8_t data )
{
    LCD_PORT |= (1<<LCD_RS);    // RS auf 1 setzen
 
    lcd_out( data );            // zuerst die oberen, 
    lcd_out( data<<4 );         // dann die unteren 4 Bit senden
 
    _delay_us( LCD_WRITEDATA_US );
}
 
////////////////////////////////////////////////////////////////////////////////
// Sendet einen Befehl an das LCD
void lcd_command( uint8_t data )
{
    LCD_PORT &= ~(1<<LCD_RS);    // RS auf 0 setzen
 
    lcd_out( data );             // zuerst die oberen, 
    lcd_out( data<<4 );           // dann die unteren 4 Bit senden
 
    _delay_us( LCD_COMMAND_US );
}
 
////////////////////////////////////////////////////////////////////////////////
// Sendet den Befehl zur Löschung des Displays
void lcd_clear( void )
{
    lcd_command( LCD_CLEAR_DISPLAY );
    _delay_ms( LCD_CLEAR_DISPLAY_MS );
}
 
////////////////////////////////////////////////////////////////////////////////
// Sendet den Befehl: Cursor Home
void lcd_home( void )
{
    lcd_command( LCD_CURSOR_HOME );
    _delay_ms( LCD_CURSOR_HOME_MS );
}
 
////////////////////////////////////////////////////////////////////////////////
// Setzt den Cursor in Spalte x (0..15) Zeile y (1..4) 
 
void lcd_setcursor( uint8_t x, uint8_t y )
{
    uint8_t data;
 
    switch (y)
    {
        case 1:    // 1. Zeile
            data = LCD_SET_DDADR + LCD_DDADR_LINE1 + x;
            break;
 
        case 2:    // 2. Zeile
            data = LCD_SET_DDADR + LCD_DDADR_LINE2 + x;
            break;
 
        case 3:    // 3. Zeile
            data = LCD_SET_DDADR + LCD_DDADR_LINE3 + x;
            break;
 
        case 4:    // 4. Zeile
            data = LCD_SET_DDADR + LCD_DDADR_LINE4 + x;
            break;
 
        default:
            return;                                   // für den Fall einer falschen Zeile
    }
 
    lcd_command( data );
}
 
////////////////////////////////////////////////////////////////////////////////
// Schreibt einen String auf das LCD
 
void lcd_string( const char *data )
{
    while( *data != '\0' )
        lcd_data( *data++ );
}
 
////////////////////////////////////////////////////////////////////////////////
// Schreibt ein Zeichen in den Character Generator RAM
 
void lcd_generatechar( uint8_t startadresse, const uint8_t *data )
{
    // Startposition des Zeichens einstellen
    lcd_command( LCD_SET_CGADR | (startadresse<<3) ); //Startadressen: 0;1;2;3;4;5;6;7
 
    // Bitmuster übertragen
    for ( uint8_t i=0; i<8; i++ )
    {
        lcd_data( data[i] );
    }
    lcd_command(LCD_SET_DDADR); //DRAM auf 0 setzen
}

: Verschoben durch Moderator
Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huber M. schrieb:
> er bringt mir abe hierbei lauter fehler, könnte mir das mal bitte jemand
> übersetzten, und sagen ob es bei ihm auch so ist. und vielleicht was ich
> hier falsch mache?

ja, der Fehler ist das du uns die Fehler nicht zeigst.

Autor: Stromverdichter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fehlende Infos:

Welche IDE
Welcher Compiler
Welcher Controller
Kompletter Auszug der Fehlermeldung

Autor: Huber M. (michael_h784)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Avr Studio 6.0 und atmega8a

hier für lcd-routine.h
------ Build started: Project: lcd-routines.h, Configuration: Debug AVR ------
Build started.
Project "lcd-routines.h.cproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files\Atmel\Atmel Studio 6.0\Vs\Compiler.targets" from project "C:\Users\Daniela Weinhart\Documents\Atmel Studio\lcd-routines.h\lcd-routines.h\lcd-routines.h.cproj" (target "Build" depends on it):
  Using "RunCompilerTask" task from assembly "C:\Program Files\Atmel\Atmel Studio 6.0\Vs\Compiler.Task.dll".
  Task "RunCompilerTask"
    C:\Program Files\Atmel\Atmel Studio 6.0\make\make.exe all 
    Building file: .././lcd-routines.h.c
    Invoking: AVR/GNU C Compiler : (AVR_8_bit_GNU_Toolchain_3.4.1_830) 4.6.2
    "C:\Program Files\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-gcc.exe" -funsigned-char -funsigned-bitfields -O1 -fpack-struct -fshort-enums -g2 -Wall -c -std=gnu99 -MD -MP -MF "lcd-routines.h.d" -MT"lcd-routines.h.d" -MT"lcd-routines.h.o"  -mmcu=atmega8a   -o"lcd-routines.h.o" ".././lcd-routines.h.c" 
C:\Users\Daniela Weinhart\Documents\Atmel Studio\lcd-routines.h\lcd-routines.h\lcd-routines.h.c(71,21): unknown type name 'uint8_t'
C:\Users\Daniela Weinhart\Documents\Atmel Studio\lcd-routines.h\lcd-routines.h\lcd-routines.h.c(71,37): unknown type name 'uint8_t'
C:\Users\Daniela Weinhart\Documents\Atmel Studio\lcd-routines.h\lcd-routines.h\lcd-routines.h.c(75,16): unknown type name 'uint8_t'
C:\Users\Daniela Weinhart\Documents\Atmel Studio\lcd-routines.h\lcd-routines.h\lcd-routines.h.c(85,24): unknown type name 'uint8_t'
C:\Users\Daniela Weinhart\Documents\Atmel Studio\lcd-routines.h\lcd-routines.h\lcd-routines.h.c(85,24): unknown type name 'uint8_t'
C:\Users\Daniela Weinhart\Documents\Atmel Studio\lcd-routines.h\lcd-routines.h\lcd-routines.h.c(89,19): unknown type name 'uint8_t'
C:\Users\Daniela Weinhart\Documents\Atmel Studio\lcd-routines.h\lcd-routines.h\lcd-routines.h.c(5,0): unterminated #ifndef
    make: *** [lcd-routines.h.o] Error 1
  Done executing task "RunCompilerTask" -- FAILED.
Done building target "CoreBuild" in project "lcd-routines.h.cproj" -- FAILED.
Done building project "lcd-routines.h.cproj" -- FAILED.

Build FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========



und hier das erste der Errolist. die kann ich ja nicht in einem 
kopieren?

Error  1  unknown type name 'uint8_t'  C:\Users\Daniela 
Weinhart\Documents\Atmel 
Studio\lcd-routines.h\lcd-routines.h\lcd-routines.h.c  71  21 
lcd-routines.h

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schreib mal in die Header Datei
#include <stdint.h>

am anfang mit rein.

Autor: Huber M. (michael_h784)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke, es ist schon besser, aber jetzt hat er noch einen fehler

[c][------ Build started: Project: lcd-routines.h, Configuration: Debug 
AVR ------
Build started.
Project "lcd-routines.h.cproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; 
('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files\Atmel\Atmel Studio 
6.0\Vs\Compiler.targets" from project "C:\Users\Daniela 
Weinhart\Documents\header_dateien\lcd-routines.h\lcd-routines.h\lcd-rout 
ines.h.cproj"  (target "Build" depends on it):
  Task "RunCompilerTask"
    C:\Program Files\Atmel\Atmel Studio 6.0\make\make.exe all
    Building file: .././lcd-routines.h.c
    Invoking: AVR/GNU C Compiler : (AVR_8_bit_GNU_Toolchain_3.4.1_830) 
4.6.2
    "C:\Program Files\Atmel\Atmel Studio 
6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-gcc.exe" 
-funsigned-char -funsigned-bitfields -O1 -fpack-struct -fshort-enums -g2 
-Wall -c -std=gnu99 -MD -MP -MF "lcd-routines.h.d" -MT"lcd-routines.h.d" 
-MT"lcd-routines.h.o"  -mmcu=atmega8a   -o"lcd-routines.h.o" 
".././lcd-routines.h.c"
    Finished building: .././lcd-routines.h.c
    Building target: lcd-routines.h.elf
    Invoking: AVR/GNU Linker : (AVR_8_bit_GNU_Toolchain_3.4.1_830) 4.6.2
    "C:\Program Files\Atmel\Atmel Studio 
6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-gcc.exe" -o 
lcd-routines.h.elf  lcd-routines.h.o   -Wl,-Map="lcd-routines.h.map" 
-Wl,--start-group -Wl,-lm  -Wl,--end-group  -mmcu=atmega8a
    c:/program files/atmel/atmel studio 
6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6 
.2/../../../../avr/lib/avr4/crtm8a.o:  In function `__vectors':
/home/tools/hudson/workspace/avr8-gnu-toolchain/src/avr-libc/crt1/gcrt1. 
S(52,1):  undefined reference to `main'
    collect2: ld returned 1 exit status
    make: *** [lcd-routines.h.elf] Error 1
  Done executing task "RunCompilerTask" -- FAILED.
Done building target "CoreBuild" in project "lcd-routines.h.cproj" -- 
FAILED.
Done building project "lcd-routines.h.cproj" -- FAILED.

Build FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped 
==========
/c]

Autor: Stromverdichter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast versucht das Header-File zu compilieren? Dazu hast du an das .h 
noch ein .c angehangen?

Ich befürchte, deine Herangehensweise ist zu blauäugig. Du benötigst 
eigentlich schon etwas Hintergrundwissen, wenn du auf dem Weg was lernen 
willst.

Entweder du gehst den Weg des Arduino. Dann verwendest du deren 
Framework und kannst einfach einen Funktionierenden Code generieren.
Oder du fängst ganz am Anfang an. Dazu solltest du zunächst erlernen, 
was der Compiler macht und wie Register funktionieren. Das kannst du in 
diesem Falle nicht überspringen, wie beim Arduino-Framework.

Autor: Stromverdichter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine nicht existierende main() lässt den Compiler auch meckern. Ich 
sage das dir zwar jetzt, aber du kannst aus der Info nichts lernen, weil 
du nicht weißt, wer die Main aufruft, oder auch nur warum. Libraries 
laufen nicht standalone

Autor: Huber M. (michael_h784)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich will ja die beiden Dateien als libary zum Hauptprogramm 
hinzufügen. das, dass so nicht läuft, dachte ich mir schon. Wie es in 
diesem tutorial nachfolgend beschrieben ist. Und da sich da jemand so 
viel Arbeit gemacht hat. Dachte ich mir das das auch zsammen passt. Wenn 
ich das dann im soluotion explorer einfüge, aber dazu dachte ich mir 
muss ich es erst mal übersetzen

[[https://www.mikrocontroller.net/articles/AVR-GCC-T...]]

Der folgende Satz von Ansteuerroutinen für ein Text-LCD ist in der Datei 
lcd-routines.c zusammengefasst. Diese Datei muss man beim Einrichten 
zusätzlich zum eigenen Hauptprogramm in sein Projekt aufnehmen. Dies 
geschieht beim AVR Studio unter Source Files im Fenster AVR GCC oder bei 
WinAVR im Makefile (z. B. durch SRC += lcd-routines.c).

: Bearbeitet durch User
Autor: Stromverdichter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem AtmelStudio6 gibst du viel Verantwortung an die IDE ab. Es ist 
also in deinem Falle sicherlich ausreichend, wenn du in ein bestehendes 
funktionierendes Projekt für deinen Controller die 2 LCD-Routinen 
einfügst. Damit die IDE weiß, dass du die includet haben möchtest, mach 
das über den SolutionExplorer.
Dann gibtst du deinem File mit deiner main noch bekannt, dass er es auch 
die die LCD includen soll. Dann kannst du in der main auch die 
Display-Routinen verwenden.
Du musst also in dem Fall nicht gesondert die object-files erstellen, 
das erledigt das Studio für dich.

Autor: Stromverdichter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huber M. schrieb:
> Diese Datei muss man beim Einrichten
> zusätzlich zum eigenen Hauptprogramm in sein Projekt aufnehmen. Dies
> geschieht beim AVR Studio unter Source Files im Fenster AVR GCC oder bei
> WinAVR im Makefile (z. B. durch SRC += lcd-routines.c).

Du solltest das AVR Studio verwenden, wenn du dich darauf beziehst. Im 
Moment verwendest du das ATMEL Studio. Das ist etwas anderes. Birnen und 
Äpfel halt. Sind zwar beides Autos, aber werden unterschiedlich 
gehandhabt.

Autor: Huber M. (michael_h784)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also jetzt nochmal.

ich glaube jetzt zu wissen, das es einen Präprozessor gibt. Der die 
ganzen #include #indef #define # endif sachen, und das ganze nur aus 
reine .c dateien vorbearbeitet, richtig ?

danach kommt der Compiler dran der zb. die int und operatoren 
bearbeitet?

und zum Schluss der Linker der alles zusammen bündelt, zu einer 
Ausführbaren Datei ?

und deshalb müssen alle dateien zum Soloution explorer hinzugefügt 
werden, weil das da drin abläuft?

das heisst ich gehe mit der Maus im Soloution Explorer, auf 
Gcc-->rechtsklick-->add new file--> gehe zum tutorial--> kopiere die 
Datei lcd-routines.h--> Füge diese in das neue geöffnete fenster, und 
somit wäre das richtig drinen?

mit der zweiten Datei lcd-routines.c gehe ich genau so vor?

und danach füge ich noch das hauptprogramm in das erste fenster ein, 
also habe ich jetzt drei fenster, und beim übersetzen haut er mir immer 
nen fehler raus das er #include lcd-routines nicht kennt, und ich glaube 
das hängt nur noch mit der einstellung im Makefile zusammen, aber da tue 
ich mir schwer das zu finden.

//
// Anpassungen im makefile:
//    ATMega8 => MCU=atmega8 im makefile einstellen
//    lcd-routines.c in SRC = ... Zeile anhängen

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch in diesem Thread nochmal der Hinweis an den TO, dass er mal ein 
C-Buch durcharbeiten soll.


Beitrag "Re: Anfänger Frage zu variable hochzählen"



Gruß

Jobst

Autor: Arduinoquäler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jobst M. schrieb:
> dass er mal ein C-Buch durcharbeiten soll.

Nun, das wird auch schwierig weil er z.B. meint dass im
Soloution Explorer "etwas abläuft" ....

Huber M. schrieb:
> und deshalb müssen alle dateien zum Soloution explorer hinzugefügt
> werden, weil das da drin abläuft?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.