Compilerfehler beim Beschreiben der ADC Register

OP #1890978
Lesenswert?
• ▲
▼
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
Gast #1890985
Lesenswert?
• ▲
▼
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
Gast #1890994
Lesenswert?
• ▲
▼
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
Gast #1891029
Lesenswert?
• ▲
▼
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 */
OP #1891117
Lesenswert?
• ▲
▼
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.