Hallo, warum wird diese Berechnung falsch gemacht?
1 | int iStep_Puls_Pause=0; |
2 | uint16_t iZeit_Puls_Pause=0; |
3 | uint16_t iZeit_Puls=0; |
4 | uint16_t iZeit_Pause=0; |
5 | uint16_t iSollwert=0; |
6 | |
7 | int main(void) |
8 | {
|
1 | while(1) |
2 | {
|
3 | |
4 | |
5 | float fmemmSollwert=0; |
6 | |
7 | fmemmSollwert= (100-((215/250)*100))+0,5; |
8 | iSollwert=fmemmSollwert; |
9 | |
10 | switch (iStep_Puls_Pause) |
11 | {
|
12 | |
13 | //Puls Pausenzeit berechnen
|
14 | case(1): |
15 | iZeit_Puls_Pause = 100; |
16 | iZeit_Puls = ((iZeit_Puls_Pause/100)*iSollwert); |
17 | iZeit_Pause = iZeit_Puls_Pause - iZeit_Puls; |
18 | |
19 | usart_write_int0(iZeit_Puls_Pause); |
20 | usart_write_int0(iZeit_Puls); |
21 | usart_write_int0(iSollwert); |
22 | usart_write_int0(iZeit_Pause); |
23 | |
24 | iStep_Puls_Pause = 2; |
Ergebnis auf USART: 100 100 100 0 iSollwert müsste doch 14 sein... (100-((215/250)*100))+0,5 = 14.5 Nach int dann -> abrunden/schneiden = 14.