xmega_tutorial.jpg

Xmega Tutorial - Real Time Counter

Bewertung:  / 7
SchwachSuper 
  • xmega_RTC

Neben den standard Timer/Counter Modulen bringen die Xmega-COntroller auch einen Realtimecounter mit. In vielen Systemen werden Real-Time Timer/Counter benötigt um verschiedene Echtzeit Aufgaben auf die Sekunde, bzw. Millisekunde genau zu realisieren. Zum Beispiel kann man mit solch einem Timer die Anwendungsfunktionen und die Dauer des Waschzyklus einer Waschmaschine planen und ablaufen lassen. Weiterhin kann man den Timer dafür verwenden um den Controller in regelmäsigen Abständen aus dem Low-Power-Modi aufzuwecken und verschiedene Aufgaben erledigen zu lassen.

Für den Real-Time-Counter stehen im Controller 2 interne und eine externe Taktquelle zur Verfügung.

  • interner 32 kHz Ultra Low Power (ULP) RC-Oszillator
  • interner 32kHz kalibrierter RC Oszillator (genauer als der ULP RC, benötigt mehr Strom)
  • externer 32,768 UhrenQuarz-Oszillator (hochpräzise).

Der Vorteil des RTC ist, dass sich der Takt des Timers eignet um einen hoch genauen Sekunden oder Millisekunden Zähler auf Hardwarebasis zu konfigurieren. Als Taktquelle wird bei den Xmegas ein im Controller integrierter interner Oszillator verwendet. Durch die 1024kHz Taktquelle und die Möglichkeit verschiedene Vorteiler zu verwenden, kann so relativ einfach ein gewünschter zeitgenauer Takt generiert werden. Der Realtimecounter ist ein 16-Bit Timer.

Features

  • 6- bit RTC with programmable period and alarm.
  • Clock source options
  • Accurate Internal 32 kHz RC oscillator
  • Ultra Low Power Internal 32 kHz RC oscillator
  • External 32 kHz cr ystal oscillator.
  • Optional division of 32 kHz clock to 1kHz to save power
  • RTC clock prescaling factor between 1 and 1024. 
  • Timer tick between 31us and 1 second

Das folgende Beispiel konfiguriert den Real-Time-Counter so, dass im Takt von 1Hz die zugehörige Serviceroutine aufgerufen wird, in welcher die LED an Pin D0 getoggelt wird. Der Interrupt wird als Hilevel Interrupt (RTC_OVFINTLVL_HI_gc) auslöst.

Xmega DAC Example
#include "clksys_driver.h"
 
...
 
//################################################## rtc_init
void rtc_init(void)
{
//############################### Clock für RTC aktivieren
// Schützt I/O Register, Interrupts werden ignoriert
CCP		= CCP_IOREG_gc;							
// Internen RTC Oszillator aktivieren
OSC.CTRL	|= OSC_RC32KEN_bm;						
// Internen Oszillator mit 1024khz für RTC verwenden
CLK.RTCCTRL	= CLK_RTCSRC_RCOSC_gc|CLK_RTCEN_bm;		
// Vorteiler auf 1024
RTC.CTRL	= RTC_PRESCALER_DIV1024_gc;				
// Warten bis Takt und RTC synchronisiert ist
while(RTC.STATUS & RTC_SYNCBUSY_bm);				
 
//############################### RTC --> 1Hz	
//Timertopwert einstellen
RTC.PER		= 0;									
//Timeroverflow Interrupt mit Interrupt Priorität Hoch einstellen
RTC.INTCTRL |= RTC_OVFINTLVL_HI_gc;					
//Timerregister CNT auf 0 stellen
RTC.CNT		= 0;									
RTC.COMP	= 2;		
}
 
//################################################## ISR RTC 1Hz
ISR(RTC_OVF_vect)
{
// LED D0 toggeln
toggle(PORTD.OUT,0);		
}

Ein ausführliches Beispiel zum Testen der vorgestellten Funktionen findet ihr unter Downloads. Weiterhin findet ihr die von Atmel zu dem Thema zur Verfügung gestellte Appnote im Anhang des Artikels unter Links.

Viel Spass beim Testen.

Hinweis:
Das Tutorial wird nach und nach von mir ergänzt. Wenn ihr Fehler in dem Tutorial findet würde ich mich freuen wenn ihr mir diese mitteilt, damit ich diese korrigieren kann. Wenn jemand eigene Tips, Informationen oder Code-Schnipsel hat kann er mir diese gern zusenden damit ich sie anschließend in das Tutorial einbinden kann.

Links

 
Atmel Appnote
Xmega Real Time Counter
AVR1314: Using the XMEGA Real Time Counter(pdf)
AVR1314: Using the XMEGA Real Time Counter(Software)

Downloads

Kommentar hinzufügen
  • Keine Kommentare gefunden

Neuste Beiträge

30/08/2016
Es gibt nun endlich ein Update für die Tinyg CNC Controller Hardware und der dazu gehörenden PC Software...
03/09/2015
In den letzten Monaten habe ich lange das CAD Programm und meinen kleinen Ultimaker 3D Drucker gequält....
15/05/2015
Zuerst wurde eine kleine Katze am Computer konstruiert. Der erste Druck mit 0,3mm Schichtstärke war...
06/05/2015
Da beim Ultimaker keine Beleuchtung des Arbeitstisches vorgesehen ist, muss ich mir hier selber eine...
10/03/2015
Nach vielen Überlegungen habe ich mich nun endlich dazu entschieden meinen Machinenpark mit einem 3D...
01/02/2015
Diese Hardware besteht aus einem mächtigem Hardwarecontroller und vier leistungsstarken...
123125