Lutz schrieb:
> Wie soll denn jemand ohne den vollständigen Code etwas zum Code sagen
> können?
also, hier ist alles, aber wie gesagt, der rest ist nur einfach dummy
1 | int main(void)
|
2 | {
|
3 | uint8_t val[10];
|
4 |
|
5 | ck_prescale_set(clock_div_2); //interne 8 mhz osc. auf 4 mhz teilen.
|
6 |
|
7 | timer_init();
|
8 |
|
9 | sei;
|
10 |
|
11 | for (uint8_t i = 0; i <10; i++)
|
12 | {
|
13 | val[i] = i + 1;
|
14 | }
|
15 | }
|
16 |
|
17 | void timer_init(void)
|
18 | {
|
19 | ACSR = 0x80;
|
20 | ASSR |= (1<<AS2); //ext. 32,768 khz osz. freigeben.
|
21 | _delay_ms(100);
|
22 | TCCR2B|=(1<<CS22)|(1<<CS20); //prescaler auf 256 setzten --> 1 sek
|
23 | _delay_ms(1);
|
24 | TIMSK2|=(1<<TOIE2); // interrupt frei geben.
|
25 | TCNT2=0; // timercounter auf null setzten, und los gehts
|
26 | }
|
27 |
|
28 | /* bei interrupt wird time hochgezählt und pin B5 getoggelt */
|
29 | ISR(TIMER2_OVF_vect)
|
30 | {
|
31 | time++;
|
32 | if (var == 0)
|
33 | {
|
34 | PORTB |= _BV(PB5);
|
35 | var = 1;
|
36 | }
|
37 | else
|
38 | {
|
39 | PORTB &= ~( _BV(PB5));
|
40 | var = 0;
|
41 | }
|
42 | }
|
hab paar breakpoints. ISR-routine wird 4-5 mal durchgeführt, dann fängt
plötlich der JTAG Mk2, wieder von anfang der main()-Funktion!!
geht mit dem programm weiter und fängt wieder von vorne an, alle
overflow interrupts werden dann ignoriert!!!
ich hab irgendwie das gefühl das warum auch immer das programm immer
wieder zur boot-vektor geführt wird, quasi wie beim reset!!
watchdogtimer,und brwon-out sind ausgeschaltet per jtag.