Hi! Bin gerade etwas ratlos. Ich arbeite mit AVR Studio4 und progge in C. #include <avr/io.h> #ifndef F_CPU #define F_CPU 8000000UL /* Quarz mit 1 Mhz */ #endif #include <util/delay.h> #include <util/twi.h> #include <avr/interrupt.h> #include "lcd-routines.h" #include "lcd-routines.c" #include <stdlib.h> //TWI SLAVE EINSTELLUNGEN #define TWI_BIT_RATE 255 #define TWI_PRESCALER 3 #define TWI_EIGENE_ADRESSE 127//eigene SLAVE ADRESSE 1...127 #define TWI_ADRESSE_SLAVE 100 #define TWI_GENERAL_CALL_enable 1 //1=Generral Call enabled / 0=disabled volatile unsigned char TWI_DATENEMPFANG_char; unsigned int TWI_DATENEMPFANG_int; char string_itoa_temp[11]; volatile unsigned char TWI_BUSY_FLAG = 0; //ADC konfigurieren----------------------------------------------------------- --- ADMUX = 0b01000000; m.E. sind doch alle Register in io.h definiert. Die letzte Zeile bringt jedoch komische Fehlermeldungen: ../Display.c:27: error: expected identifier or '(' before 'volatile' ../Display.c:27: error: expected ')' before '(' token make: *** [Display.o] Error 1 Build failed with 2 errors and 0 warnings... Koennt ihr damit etwas anfangen? gruss Axel
Hallo Axel, in Deinem Programm fehlt die main() Funktion. Eine Zuweisung wie ADMUX = ... kannst Du nur innerhalb einer Funktion machen. Probier mal:
1 | int main(void) |
2 | {
|
3 | ADMUX = 0b01000000; |
4 | }
|
Beste Grüße Alfred
Hi, Ist das der gesamte Code? Ich denke nicht, oder? Weil eine Zuweisung außerhalb einer Funktion wird nicht hinhauen. Wenn es das nicht ist, poste mal bitte den gesamte Code (inc. Funktion). Aber wenn ich ehrlich sein soll, der Compiler-Fehler deutet genau auf meine Frage (der beschwert sich, dass er keinen Funktionskopf findet). Ansonsten, bitweise zuweisen, empfinde ich (ganz persönlich) als einen Fehler. Es ist a) unübersichtlich, b) fehleranfällig (man bedenke was eine 0 zu wenig/zu viel alles anrichtet) und c) hilft nichts um den Code zu verstehen. Verwende doch bitte bit-masken, entweder (1<<ADEN) oder _BV(ADEN). Das hilft beim Lesen und der Code wird mit 90% Wahrscheinlichkeit auch auf einem ATMEGA laufen, der das ADEN bit mal woanders hat. Und der Compiler (zumindest alle ab avr-gcc 4.0) ist "klug" genug um das als eine Zuweisung mit einer Konstanten hinzukriegen. Wenn nicht, wechsle mal den Compiler ;). gruß Mobius
Das Mittel der Wahl zum Schreiben von unleserlichen Programmen ist immer, in Kommentaren zu lügen. Beschreiben Sie alles, nur nicht das, was der Code macht.
1 | #define F_CPU 8000000UL /* Quarz mit 1 Mhz */ |
OMG, geht ja noch weiter. Wozu sollte man um alles in der Welt ein C File inkludieren? Hast du nicht schon genug Probleme mit dem Code?
1 | #include "lcd-routines.c" |
Guten Morgen! Vielen Dank fuer die schnelle Hilfe! Ja, der Code geht noch weiter aber ist schon relativ lang, deswegen habe ich ihn nich ganz gepostet. Ich denke das das der Fehler ist (Zuweisung nicht in main). Bins noch von Assembler und Bascom gewoehnt und bislang habe ich nur C und C++ auf Windowsrechner geproggt. Dummer Fehler )) @muetze1: Wieso ist das ein Problem wenn man c files includiert? Wenn man zb bei 2000Zeilen Code ist dann isses doch ganz normal das man zwecks der uebersicht usw etwas auslagert.. gruss
Jo, aber das wird dann üblicherweise nicht included, sondern separat übersetzt und zusammengelinkt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.