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
Gast
#1788649
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"
Gast
#1788661
Mal eine andere Frage: Hast Du es schon mal geschafft, das Flash anzusteuern? Gruß, Klaus Beitrag "AVR XPLAIN 8MB Flash ansteuern ?"
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.