Hallo Dirk
bin am testen mit deinem Programm. Keine Angst, ist kein Bus diesmal, das geht ganz hervorragend. s geht um dein erstes Programm mit dem toggeln der LED. Da finde icgh nicht so richtig was dazu an Erlärungen bzw. Anwendung.
CodeBox C
du verwendest hier
CodeBox C
Bei port_pin_set_level sind mir zwei Angaben mit LED0_PIN und LED0_ACTIVE nicht klar. Warum zwei mal die Angabe?
Und der schöne Timer.
CodeBox C
Im Vergleich mit einem AVR ist es soweit klar. Bei jedem Durchlazf wird delaycount hohgezählt. Bei =250 wir LED getoggelt.
Das Problem liegt in diesem Teil:
CodeBox C
In der Beschreibung zu ASF steht zu wenig was verstehe. Bisher habe ich verstanden das ein Timer eingeschaltet wird und der Wert für den Interrupt auf 8000 steht/auslöst. Mit den anderen Sachen werden Angaben dazu gemacht. Eingeschaltet bzw. Aufruf und Init erfolgt damit
CodeBox C
Ist komplizieter als beim AVR.
achim
bin am testen mit deinem Programm. Keine Angst, ist kein Bus diesmal, das geht ganz hervorragend. s geht um dein erstes Programm mit dem toggeln der LED. Da finde icgh nicht so richtig was dazu an Erlärungen bzw. Anwendung.
CodeBox C
#define BUTTON_PIN PIN_PB23 // Angabe Taster 4 auf P110 #define LED0_PIN PIN_PA03 // Angabe LED 3 auf P110 #define LED0_ACTIVE false #define LED0_INACTIVE !LED0_ACTIVE #define LED_ON port_pin_set_output_level(LED0_PIN, LED0_ACTIVE); #define LED_OFF port_pin_set_output_level(LED0_PIN, LED0_INACTIVE); #define LED_TOGGLE port_pin_toggle_output_level(LED0_PIN);
du verwendest hier
CodeBox C
#define LED0_INACTIVE !LED0_ACTIVE #define LED_ON port_pin_set_output_level(LED0_PIN, LED0_ACTIVE);
Bei port_pin_set_level sind mir zwei Angaben mit LED0_PIN und LED0_ACTIVE nicht klar. Warum zwei mal die Angabe?
Und der schöne Timer.
CodeBox C
void SysTick_Handler(void) // Umschaltung LED on/off durch toggeln { static uint16_t delaycount = 0; // Angabe Variable delaycount if (delaycount < 250) // Abfrage delycount ob kleiner 250 { // solange kleiner 250 erhöhen delaycount++; // delaycount um eins erhöhen } else // wenn grösser gleich 250 { delaycount = 0; // delaycount auf 0 LED_TOGGLE // LED umschalten } }
Im Vergleich mit einem AVR ist es soweit klar. Bei jedem Durchlazf wird delaycount hohgezählt. Bei =250 wir LED getoggelt.
Das Problem liegt in diesem Teil:
CodeBox C
static void configure_systick_handler(void) { SysTick->CTRL = 0; SysTick->LOAD = 8000; //48000; // 1ms Event (1ms/(1/48Mhz)) SysTick->VAL = 0; SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; }
In der Beschreibung zu ASF steht zu wenig was verstehe. Bisher habe ich verstanden das ein Timer eingeschaltet wird und der Wert für den Interrupt auf 8000 steht/auslöst. Mit den anderen Sachen werden Angaben dazu gemacht. Eingeschaltet bzw. Aufruf und Init erfolgt damit
CodeBox C
irq_initialize_vectors(); cpu_irq_enable();
Ist komplizieter als beim AVR.
achim