Hallo,
bin grad am FreeRTOS programmieren auf einem ATMEGA1284P mit einem
Dragon.
Ich habe folgendes seltsame Problem.
hier erstmal der code:
1 | static void led_toggle(void *x)
|
2 | {
|
3 | (void)x; //ignore argument
|
4 |
|
5 | for(;;)
|
6 | {
|
7 | PORTB^=(1<<PB1);
|
8 | vTaskDelay(100);
|
9 |
|
10 | }
|
11 | }
|
12 |
|
13 | static void led_toggle2(void *x)
|
14 | {
|
15 | (void)x;
|
16 | portTickType xLastWakeTime;
|
17 | const portTickType xFrequency =100;
|
18 | xLastWakeTime = xTaskGetTickCount();
|
19 | for(;;)
|
20 | {
|
21 | vTaskDelayUntil(&xLastWakeTime, xFrequency);
|
22 | PORTB^=(1<<PB2);
|
23 | }
|
24 | }
|
25 |
|
26 |
|
27 |
|
28 |
|
29 | int main( void )
|
30 | {
|
31 | PORTB= 0xff; // LEDs off
|
32 | DDRB = 0xff; // for LEDs
|
33 | DDRA = 0xff;
|
34 |
|
35 |
|
36 | //Task Erzeugen
|
37 | xTaskCreate(led_toggle,0,configMINIMAL_STACK_SIZE, (void*)0, tskIDLE_PRIORITY + 1,NULL);
|
38 | xTaskCreate(led_toggle2,0,configMINIMAL_STACK_SIZE, (void*)0, tskIDLE_PRIORITY +1,NULL);
|
39 |
|
40 |
|
41 |
|
42 | vTaskStartScheduler();
|
43 |
|
44 | return 0;
|
45 | }
|
und zwar trägt man bei vTaskDelay ja normal die ms als übergabewert ein,
wenn ich also ein 1 sec takt haben will 1000, doch in meinem Programm
muss ich 100 eintragen damit ich den 1 sec takt habe auf meinem STK500
board.
Kann mir wer sagen warum? Nebenbei 8MHz oszillator ist bei atmega
eingetragen.
mfg