Hallo, ich plane eine Hardware, die im Haupteil aus einem ATXMEGA128A1, einer RTC und einem externen ADC bestehen soll, welcher einen externen Takt benötigt um eine Wandlung auszulösen (nicht zum Wandeln selbst). Dazu plane ich, das 32kHz Square-Wave-Signal der RTC abzugreifen, da dies sehr genau und sowieso vorhanden ist. Da ich mit der Samplefrequenz flexibel sein möchte, suche ich eine Möglichkeit die Frequenz irgendwie teilen zu können. Meine Frage ist, ob das mit dem ATXMEGA möglich ist, ohne diesen mit Interrupts zu belasten. Ich hatte mir im Datenblatt mal die Waveform Generation der Timer angeschaut, bin aber noch nicht ganz durchgestiegen. Ginge das damit, oder arbeitet die auch mit Interrupts? Vielleicht weiße ja einer von euch noch einen alternativen Vorschlag. Grüße, Alex
Die Timer-PWM arbeitet rein in Hardware, ohne Interrupts. Oliver
Die Taktquelle für den Timer ist ja der Systemtakt oder kommt vom Event. Beim ersten währe der Systemtakt sehr langsam u d beim zweiten brauchst du einen Interrupt, wenn das von der RTC her geht. Du kannst aber mit dem Prescaler auf 256 oder 1024 und dann über die Timerhardwate gehen. Über die DFLL kannst du den Sytemtakt vom internen Osc. über den RTC Takt live kalibrieren . Nur der A1 hat hier einen Hatdwarebug. Der A1U währe besser wenn die Hardware noch nicht hast. Gruß JackFrost
Beim Eventsysten hab ich mich getäuscht das geht ohne Interrupt. Da geht der Überlauf und Compare von der RTC. Sofern du die RTC nicht für mich was anderes brauchst und der Überlauf auf 0 gestellt werden kann kannst du die 32 kHZ nutzen aber der nächst kleinere Wert ist dann eh 16 kHz. Wenn der Überlauf >0 sein muss kannst durch nur 16 kHz und kleiner nutzen Gruß JackFrost
Hallo, danke für die Antworten. Mein Plan zielt in die Richtung, den Timer mit den 32kHz der RTC zu Takten, das habe ich schon mal in einem anderen Projekt umgesetzt, und dann abhängig vom Wert eines Registers einen Port-Pin zu togglen. Also ein bisschen wie Compare-Match, aber ohne Interrupt eben. Wenn ich hier: http://www.atmel.com/images/doc8045.pdf auf Seite 6 ganz unten lese, klingt das, als wäre Wave Form Generation Mode genau das, was ich suche.
Damit sollte es gehen. Du willst den Takt der RTC an TOSC anlegen und damit den Timer laufen lassen , oder ? Was für eine Samplefrequenz willst du nutzen ? Reichen dir die Teilungen von 16,4 kHz , 8,2 kHz, 5,5 kHz .... Oder sind dir da die Sprünge schon zu groß ? Gruß JackFrost
Hallo Bastian, beim letzten Projekt ging der Takt zum Pin PORTB2 und ich hab das dann über das Event-System gelöst.
1 | TCC1.CTRLA = TC_CLKSEL_EVCH0_gc; //event channel 0 |
2 | TCC1.CTRLB = TC_WGMODE_FRQ_gc; //frequency mode |
3 | TCC1.CCA = 31; |
4 | TCC1.CNT = 0x00; // clear counter |
So würde ich es wieder machen, nur eben ohne Interrupt. Zu den Frquenzen: Wenn ich 32kHz habe, würde ich dann daraus gern ein paar gängige Raten machen, also 2048, 1024, 512 usw., besser wären natürlich runde Wert, also 1000, 500 und so weiter. Ich möchte nur nicht gezwungen sein, immer mit voller Abtastrate zu arbeiten. Grüße, Alex
Du kannst den Takt nur durch gerade Teiler teilen damit geht 500 und 1000 nicht. Du kannst den Vortakt der RTC nicht auf 4kHz teilen. Das würde dann über den Systemtakt gehen. Aber nur beim A1U mit der DFLL.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.