Hallo, ich bin mal wieder an meinem Projekt von hier dran: Beitrag "ATmega8 ADC-Durchschnittsberechnung" Weil ich aber ein neues grundsätzliches Problem habe, will ich es in einem neuen Beitrag nachfragen. Ich will in meinem 500-Zeilen-Code die einzelnen Funktionen "auslagern". Das klappt nur leider nicht mit allen Funktionen. Ich habe die Beobachtung gemacht, dass ich Funktionen welche auf einen Timer zugreifen nicht separieren kann. Steht mein resetService mit in meiner main.c dann läuft es einwandfrei. Ähnliches Problem wir in diesem Beitrag hier: Beitrag "Funktionen in mehrere c files auslagern funktioniert nicht" Meinen Hauptcode hab ich jetzt erst mal nicht mit angehängt, weil wie gesagt 500 Zeilen. Bei Bedarf poste ich den gerne. Timer läuft über einen ISR. Ausgelagerter Code: resetService.c
1 | #include "resetService.h" |
2 | |
3 | void resetService() |
4 | {
|
5 | arbeitstag = 0; |
6 | eeprom_update_byte(&eeTage, arbeitstag); |
7 | |
8 | digit[2] = r; |
9 | digit[1] = E; |
10 | digit[0] = S; |
11 | |
12 | ///////////////////////////////////////////////////////
|
13 | //Auf meiner 7-Seg wird nur rES angezeigt, weiter passiert nicht mehr
|
14 | |
15 | timer2_wert = 0; |
16 | |
17 | //Timerschleife zur Anzeige der Ausgabe auf dem Display
|
18 | //Wartezeit 2 sec
|
19 | while (1) { |
20 | if (timer2_wert >= 200) { |
21 | break; |
22 | }
|
23 | }
|
24 | digit[2] = ZERO; |
25 | digit[1] = ZERO; |
26 | digit[0] = ZERO; |
27 | }
|
resetService.h
1 | #ifndef RESETSERVICE_H_
|
2 | #define RESETSERVICE_H_
|
3 | |
4 | #include <stdint.h> |
5 | #include <avr/eeprom.h> |
6 | #include "SegementZeichen.h" |
7 | |
8 | extern uint16_t arbeitstag; |
9 | extern uint8_t digit [3]; |
10 | extern uint8_t eeTage; |
11 | extern uint16_t timer2_wert; |
12 | |
13 | #endif /* RESETSERVICE_H_ */ |