Hi, Ich hab den Atmega32. Ich wollte mir eine/zwei Funktionen schreiben, die mir es erlauben die WCET und die BCET einer funktion oder eines Codesegments zu bestimmen. Hier der Code:
1 | void ETE_start(void){ |
2 | // set the counter value to 0
|
3 | TCNT1L = 0; // set the low part to 0 |
4 | TCNT1H = 0; // set the high part to 0 |
5 | USART_Transmit(TCNT1L); |
6 | USART_Transmit(TCNT1H); |
7 | // set the prescaler s. Table 48 Datasheet
|
8 | // 0,5µs= 1/(F_CPU/8)
|
9 | TCCR1B|=(1<<CS11); |
10 | }
|
11 | |
12 | |
13 | void ETE_stop(void){ |
14 | uint16_t temp=0; //auxiliary variable |
15 | // combine TCNT1L and TCNT1H
|
16 | temp=TCNT1L; //save the lower part |
17 | temp|=(TCNT1H<<8); // save the higher part to the right place |
18 | USART_Transmit_uint16(&temp); |
19 | // evaluate if it was a BCET or a WCET
|
20 | if (temp<BCET){ |
21 | BCET=temp; // save the new BCET to the global variable |
22 | }else if(temp>WCET){ |
23 | WCET=temp; // save the new WCET to the global variable |
24 | }
|
25 | TCCR1B&=~(1<<CS11); |
26 | }
|
Leider hab ich festgestellt (mit den USART Ausgaben) das TCNT nicht auf 0 gesetzt wird, warum ? kann mir jemand helfen?