Forum: Mikrocontroller und Digitale Elektronik AVR GCC Timer Funktion auslagern


von Alexander G. (illness)


Lesenswert?

Hi, ich versuche gerade eine Funktionen mit mehreren Variablen 
auszulagern. Aber irgendwie funktioniert das nicht. Was muss ich 
beachten um mehrere Variablen auszulagern?

Mit einer bekomme ich es hin, zB eine berechnung welche dann einen Wert 
zurück gibt.

main.c
1
.
2
.
3
void timer_options(void);
4
.
5
.

auslagerung.c
1
// Auslagerung
2
3
#include <avr/io.h>
4
#include <avr/interrupt.h>
5
#include <stdio.h>
6
7
void timer_options(void)
8
{
9
TCCR0A = 0x05; 
10
TCNT0 = 240;                     
11
SREG = (1<<7);   
12
TIMSK0=(1<<TOIE0);
13
}

auslagerung.h
1
void timer_options(void);

ich möchte einfach nur die 4 variablen für die timer/interrupt steuerung 
auslagern. Was mache ich falsch?

gruß Alex
von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Alexander G. schrieb:
> Was mache ich falsch?

Nicht beschreiben was nicht funktioniert resp. Compilerfehler?
von Karl H. (kbuchegg)


Lesenswert?

von Knut (Gast)


Lesenswert?

Du musst deine auslagerung.h auch in die auslagerung.c includen.



Knut
von Karl H. (kbuchegg)


Lesenswert?

> SREG = (1<<7);

ganz schlecht.
Gewöhn dir das gleich wieder ab.

Als C-Programmierer ist das SREG für dich tabu.
von Alexander G. (illness)


Lesenswert?

hoppla, ja die compilerfehler hab ich ganz vergessen


Nr.1) multiple definition of `timer_options'
Nr. 2) auslagerung.c:9: first defined here

mit diesen fehlern komm ich auch nicht weiter. hab include in die .h 
eingefügt, gleicher fehler

"ganz schlecht.
Gewöhn dir das gleich wieder ab."

Warum?
von Der Weise (Gast)


Lesenswert?

Hast du etwa "#include <auslagerung.c>" gemacht...
von Alexander G. (illness)


Lesenswert?

nein mit gänsefüßchen(#include "auslagerung.c"), hab alles im 
arbeitsordner
von Tom (Gast)


Lesenswert?

Alexander G. schrieb:
> nein mit gänsefüßchen(#include "auslagerung.c"), hab alles im
> arbeitsordner

Ganz schlecht.

Richtig:
#include "auslagerung.h"
von Alexander G. (illness)


Lesenswert?

ich hatte das auf die .h bezogen

in der main habe ich #include "auslagerung.h"
in der auslagerung.h habe ich #include "auslagerung.c"
von Tom (Gast)


Lesenswert?

Alexander G. schrieb:
> in der auslagerung.h habe ich #include "auslagerung.c"

Umgekehrt wird da ein Schuh draus:
In der auslagerung.c muß ein #include "auslagerung.h" stehen, sonst wird 
ja die .c überall mit eingebunden, wo ein "#include auslagerung.h" 
steht.
von Alexander G. (illness)


Lesenswert?

jaaa danke ^^ nun gehts

es fehlte auch noch was in der main

ich habe nur void timer_options(void); in einem block geschrieben.

habe diese aus dem block geholt und wo es aufgerufen werden soll ein 
timer_options(); reingemacht, man sollte die funktion schon aufrufen 
wenn man sie benutzen möchte :D
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
Noch kein Account? Hier anmelden.