Hey Leute. Ich habe hier mit einem Programm auf einem Atmega 16 etwas schwierigkeiten. Ist es möglich eine Funktion in sich selbst als "Loop" aufzurufen? Wenn nein, wie würde man sowas am besten lösen? Die Funktion und somit der Loop überprüfen ob ein Pegel für eine gewisse Zeit auf low sind. ist dies gegeben soll die Funktion beendet werden. Der Microkontroller stürzt mir aber nach einer sekunde ab und gibt mir auf dem Display nur noch Müll raus. Wenn ich die Funktion nicht aufrufe läuft das Programm. zum Progi:
1 | void dcf_sync(void) |
2 | {
|
3 | show_matched_date(0,1); |
4 | show_matched_time(0,2); |
5 | //LED_DATA |= (1<<4);
|
6 | |
7 | set_cursor(19,1); |
8 | lcd_data('?'); |
9 | //LED_DATA |= (1<<4);
|
10 | //LED_DATA &= ~(1<<5);
|
11 | |
12 | if(!(PINA & (1<<PA0))) |
13 | {
|
14 | if(counter_low>=1750 && counter_low<=1950) |
15 | {
|
16 | set_cursor(19,1); |
17 | lcd_data('!'); |
18 | //LED_DATA &= ~(1<<4);
|
19 | //LED_DATA |= (1<<5);
|
20 | |
21 | counter_reset(); |
22 | dcf_date_reset(); |
23 | dcf_time_reset(); |
24 | }
|
25 | else
|
26 | {
|
27 | counter_low=0; |
28 | dcf_sync(); |
29 | }
|
30 | }
|
31 | else
|
32 | {
|
33 | dcf_sync(); |
34 | }
|
35 | }
|