Forum: Mikrocontroller und Digitale Elektronik AVR32 RTC asframework bleibt bei busy flag hängen


von Godi S. (godi22)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin gerade dabei mich in die AVR32 Familie einzuarbeiten.
Dazu habe ich das ALVIDI AVR32 Board (http://alvidi.de/avr32_board.html) 
mit einem AT32UC3A0512 Controller.

Ich möchte als erstes einen RealTimeCounter verwenden der mir eine 
interrupt routine aufruft in der eine LED ein bzw ausgeschaltet werden 
soll.

Dazu habe ich mir das Example im Framework angesehen und möchte dazu 
auch das Framework benutzen.

Mein Problem ist jetzt das der Controller in der rtc_init() Methode bei 
der Abfrage nach dem Busy flag in der while Schleife hängen bleibt.
Mir ist dies aber nicht klar warum weil das Busy flag 0 ist und somit 
eigentlich weiter gearbeitet werden sollte. Im Anhang befindet sich noch 
ein Screenshoot von dem Problem.

Hier noch mein Code:
1
#include <avr32/io.h>
2
#include "gpio.h"
3
#include "sysclk.h"
4
#include "delay.h"
5
#include "rtc.h"
6
7
8
int main(void)
9
{  
10
  sysclk_init();
11
  delay_init(sysclk_get_cpu_hz());
12
  
13
  init_timer_interrupt();
14
  
15
    while(1)
16
    {
17
       tgl_led3_ms(1000);      
18
    }
19
}
20
21
void rtc_irq(void)
22
{
23
  gpio_tgl_gpio_pin(LED2_GPIO);  
24
  // clear the interrupt flag
25
  rtc_clear_interrupt(&AVR32_RTC);  
26
}
27
28
void tgl_led3_ms(uint8_t ms_time) {
29
  gpio_tgl_gpio_pin(LED3_GPIO);
30
  delay_ms(ms_time);
31
}
32
33
34
int init_timer_interrupt() {
35
  // Disable all interrupts. */
36
  Disable_global_interrupt();
37
  
38
    // The INTC driver has to be used only for GNU GCC for AVR32.
39
  #if __GNUC__
40
    // Initialize interrupt vectors.
41
    INTC_init_interrupts();
42
43
    // Register the RTC interrupt handler to the interrupt controller.
44
    INTC_register_interrupt(&rtc_irq, AVR32_RTC_IRQ, AVR32_INTC_INT0);
45
  #endif
46
  
47
   // Initialize the RTC
48
   if (!rtc_init(&AVR32_RTC, RTC_OSC_RC, RTC_PSEL_RC_1_76HZ)) {
49
     return 0;
50
   }
51
      
52
   // Set top value to 0 to generate an interrupt every seconds */
53
   rtc_set_top_value(&AVR32_RTC, 0);
54
   // Enable the interrupts
55
   rtc_enable_interrupt(&AVR32_RTC);
56
   // Enable the RTC
57
   rtc_enable(&AVR32_RTC);
58
59
   // Enable global interrupts
60
   Enable_global_interrupt();
61
   
62
   return 1;
63
}

Hat da jemand eine Ahnung warum das nicht funktioniert?

von Godi S. (godi22)


Lesenswert?

Kann mir da keiner weiterhelfen?

godi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.