Hallo, icharbeite mich gerade mühsam in das Atmel Software Framework ein
und insbesondere in die Verwendung des ASF mit custom (eigenen) boards.
Immerhin habe ich alles jetzt soweit, dass zwei LEDs auf meinem custom
board mit den IOPORT, SYSTEM CLOCK CONTROL und DELAY services
abwechselnd jeweils mit 1Hz blinken. Hurra, hallo welt.
Mir fällt dabei nur auf, dass nach 9 durchläufen (dh mit dem start der
zehnten) die routine zu resetten scheint, was man kurz daran erkennt,
dass die letzte LED kurz unterbricht, wieder aufleuchtet und damit einen
minimalen (optisch aber bemerkbaren) Zeitversatz erzeugt.
Der code allerdings ist recht simpel und gib keinen Anlass für so etwas
wie eine for-loop mit n=9 bzw 10:
1 | #include <asf.h>
|
2 |
|
3 | int main (void)
|
4 | {
|
5 | /* Insert system clock initialization code here (sysclk_init()). */
|
6 | sysclk_init();
|
7 | board_init();
|
8 |
|
9 | delay_init(sysclk_get_cpu_hz());
|
10 |
|
11 | ioport_set_pin_level(LED0_GPIO, false);
|
12 | ioport_set_pin_level(LED1_GPIO, false);
|
13 |
|
14 | while(1){
|
15 | ioport_toggle_pin_level(LED0_GPIO);
|
16 | delay_ms(500);
|
17 | ioport_toggle_pin_level(LED1_GPIO);
|
18 | delay_ms(500);
|
19 | }
|
20 |
|
21 | }
|
Ich weiß, dass ohne den ganzen asf-header-wust evtl nur geringe aussagen
möglich sind, vielleicht ist das aber ein generelles ding dass euch
schon untergekommen ist - habt ihr Ahnungen wo ich nach der Ursache
suchen kann? Mir wäre recht das am anfang zu beheben und nicht dann,
wenn schon uart, spi etc implementiert ist und dann immer wieder
irgendwann irgendwelche fehler auftreten, die ich mir nicht erklären
kann.
Kann es irgendwie mit XTAL/Clock/initalisierung zu tun haben?