mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Compilerfehler beim Beschreiben der ADC Register


Autor: Axel Krüger (axel)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Axel,

in Deinem Programm fehlt die main() Funktion. Eine Zuweisung wie ADMUX = 
...
kannst Du nur innerhalb einer Funktion machen.

Probier mal:
int main(void) 
{
  ADMUX = 0b01000000;
}

Beste Grüße

Alfred

Autor: Mobius (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Muetze1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
#define F_CPU 8000000UL     /* Quarz mit 1 Mhz */

Autor: Muetze1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?
#include "lcd-routines.c"

Autor: Axel Krüger (axel)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, aber das wird dann üblicherweise nicht included, sondern separat 
übersetzt und zusammengelinkt.

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.