Hallo
Ich verwende auch KAMAvr und habe
#include "RP6RobotBaseLib.h"
im Programmkopf. Unter "Files" sind nur RP6RobotBaseLib.c und RP6uart.c eingetragen.
Gruß
mic
Beim kompilieren folgendes Programms:
erhalte ich folgendes Warning:Code:int main(void) { initRobotBase(); // Initialization – ALWAYS CALL THIS FIRST! // [...] Program code... while(1); // Infinite loop return 0; }
Line 3: implicit declaration of function 'initRobotBase'
Dass in meinem Code keine "#include"'s vorkommen liegt daran, dass ich diese über meine IDE(KamAVR) inkludiere. Inkludiert werden folgende Dateien:
RP6RobotBaseLib.h
RP6RobotBaseLib.c
RP6uart.h
RP6uart.c
Hallo
Ich verwende auch KAMAvr und habe
#include "RP6RobotBaseLib.h"
im Programmkopf. Unter "Files" sind nur RP6RobotBaseLib.c und RP6uart.c eingetragen.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Wenn ich "#include"'s verwende geht bei mir aber garnichts, da die zu inkludierenden Dateien dann nicht gefunden werden.Zitat von radbruch
Die .h müssen aber trotzdem im Quellcode per #include eingebunden werden.
Ist einfach in C so vorgegeben.
#ifndef MfG
#define MfG
Die " " im Include-Befehl bedeuten, dass die Datei im selben Verzeichniss ist wie die Programmdatei. Ich verwende dafür einen Ordner mit dem Namen Projekte und habe alle Dateien aus RP6Lib/RP6Base und RP6Lib/RP6Common dorthin kopiert. In diesem Ordner speichere ich auch die Projektdateien (*.kam) und die eigentlichen Programme (*.c).
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Das sehe ich anders, daZitat von Jaecko
1. ich nur eine Warning aber keine Errors erhalte.
2. aus dem Sourcecode ein funktionsfähiges Binärfile(.hex) kompiliert wurde
Hallo
Zu 1: Warnungen sind die Vorboten von völlig unerklärlichen Programmfunktionen. Nach kurzem googlen weiß ich nun, dass der Kompiler bei dieser Warnung zwar weitermacht, aber für die ihm nicht genauer bekannte Funktion irgendetwas reincodiert. Viel Spass beim Debuggen, wenn sich das mal auf das Programm auswirkt.
Und zu 2:
Siehe zu 1
Besser keine Warnungen tolerieren!
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ich habe jetzt mal die Empfehlungen befolgt und statt die Dateien einfach über die IDE zu inkludieren folgende Include-Anweisungen an den Anfang des Quelltexts geschrieben:
#include "RP6RobotBaseLib.h"
#include "RP6RobotBaseLib.c"
#include "RP6uart.h"
#include "RP6uart.c"
Seitdem bekomme ich folgende Errors:
Code:In file included from censored.c:2: RP6RobotBaseLib.c: In function 'initRobotBase': RP6RobotBaseLib.c:1774: error: 'UBRRH' undeclared (first use in this function) RP6RobotBaseLib.c:1774: error: (Each undeclared identifier is reported only once RP6RobotBaseLib.c:1774: error: for each function it appears in.) RP6RobotBaseLib.c:1775: error: 'UBRRL' undeclared (first use in this function) RP6RobotBaseLib.c:1776: error: 'UCSRA' undeclared (first use in this function) RP6RobotBaseLib.c:1777: error: 'UCSRC' undeclared (first use in this function) RP6RobotBaseLib.c:1777: error: 'URSEL' undeclared (first use in this function) RP6RobotBaseLib.c:1778: error: 'UCSRB' undeclared (first use in this function) RP6RobotBaseLib.c:1787: error: 'GICR' undeclared (first use in this function) RP6RobotBaseLib.c:1788: error: 'ISC2' undeclared (first use in this function) In file included from censored.c:4: RP6uart.c: In function 'writeChar': RP6uart.c:73: error: 'UCSRA' undeclared (first use in this function) RP6uart.c:74: error: 'UDR' undeclared (first use in this function) RP6uart.c: At top level: RP6uart.c:219: warning: 'USART_RXC_vect' appears to be a misspelled signal handler RP6uart.c: In function 'USART_RXC_vect': RP6uart.c:223: error: 'UDR' undeclared (first use in this function) RP6uart.c: In function 'clearReceptionBuffer': RP6uart.c:297: error: 'UCSRB' undeclared (first use in this function) RP6uart.c:298: error: 'UDR' undeclared (first use in this function)
Dass das compilieren ohne #include bei dir geht, liegt nur an der IDE. Übertrag das Programm z.B. mal nach Keil µVision, der haut dir dank der fehlenden #includes gleich mal Errors auf den Tisch.
Ich compilier z.B. immer mit der Option "Warnings as errors", somit lauf ich garnicht erst Gefahr, Warnungen zu übersehen bzw. absichtlich zu ignorieren.
Die aktuellen Fehler lesen sich so, als wäre ein falscher (oder garkein) AVR ausgewählt. Wird in irgend einer Datei die avr/io.h eingebunden?
Oder ist in den Projekteinstellungen der richtige AVR ausgewählt (ATMega32 z.B.)?
#ifndef MfG
#define MfG
Lesezeichen