Hallo,
ich habe ein Verständnisproblem beim Refresh des DACs beim Xmega. In
2.2.2 der Application Note AVR1301 wird ausgesagt, dass der Wert
zyklisch refreshed werden muss. Soweit alles OK. Im Absatz darunter
heißt es dann, dass dies automatisch durchgeführt wird, wenn im TIMCTRL
das REFRESH-Bitfeld entsprechend gesetzt wird.
Baut man nun den Beispiel-Source von Atmel so um, dass nur ein Wert
ausgegeben wird, sieht man zwar auf dem Oszi den Peak, aber ein
Auto-Refresh findet nicht statt und somit hat man auch keinen stabilen
Ausgangswert.
Nachfolgend die geänderte Funktion:
void Example8a (void)
{
/* Given 2 MHz CPU speed, this is configured to 2µs separation time
and
* 16µs refresh time.
*/
DAC_DualChannel_Enable( &DACA,
DAC_REFSEL_INT1V_gc /*DAC_REFSEL_AVCC_gc*/,
false,
DAC_CONINTVAL_4CLK_gc,
DAC_REFRESH_32CLK_gc );
while ( DAC_Channel_DataEmpty( &DACA, CH0 ) == false )
{
/* Blocking code waiting for empty register. */
}
DAC_Channel_Write( &DACA, 0x0FFF, CH0 );
while (1)
{
}
Irgendwie widersprechen sich diese beiden Aussagen in der APP-Note. Gibt
es nun einen automatischen Refresh oder bin ich gezwungen zyklisch das
DAC-Register immer neu zu beschreiben? Wenn es den automatischen
Refresh gibt, was mache ich dann falsch?
Gruß covalin
Mit dem DAC habe ich auch schon mal herum geärgert. Hier ist eine Diskussion mit Code Beispiel: Beitrag "XMEGA/ AVR-EXPLAIN code examples und Diskussion"
Mal eine andere Frage: Hast Du es schon mal geschafft, das Flash anzusteuern? Gruß, Klaus Beitrag "AVR XPLAIN 8MB Flash ansteuern ?"
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.