Hallo,
wie der Titel schon sagt suche ich ein Beispiel für die Ansteuerung des AD9833 in Bascom! Wenn jemand was hat, bitte melden!
alexis-mch
27.02.2013, 19:32
Hallo Rasieel,
die Anfrage liegt zwar schon einige Zeit zurück, aber vielleicht interessiert die Lösung auch andere Leser.
Es gibt zwei versteckte Fallen in BASOM, wenn man das SPI-Interface zusammen mit dem AD9833 benutzt:
1) der AD9833 erwartet 16 Bit-Worte. Überträgt man mit SPIOUT die 16 Bit in 2 Befehlen zu je 8 Bit geht der SYNC (AD9833 Pin8) kurz auf High, was zu Fehlern führt
2) überträgt man mit SPIOUT zwei Bytes auf einmal hat man das SYNC-Problem nicht mehr, aber es wird die Reihenfolge der zwei 8 Bit-Bytes beim Senden vertauscht!
hier ein funktionierendens BASCOM Programm mit ATMega8 und 20 MHz Clock am AD9833
'Test: feste Frequenz als Sinus
Dim Ctrl As Integer 'AD9833 Control Register 16 Bit
Dim Freq_msb As integer 'AD9833 Frequenz Register
Dim Freq_lsb As integer 'AD9833 Frequenz Register
Config Spi = Hard , Interrupt = Off , Data Order = msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 4 , Noss = 0
'Spi = Hard = SCK(PB5) Clock Output, MOSI(PB3) Data Output, MISO(PB4) Data Input, SS(PB2) FSYNC am AD9833, Clockrate unkritisch
Spiinit
Ctrl = &B0000000000100000 'Control Register, Bit 15/14 = 0/0, Bit 13 = 1 (Fq folgt in 2 Bytes à 16Bit), Bit5/1 = 0/0 = Sinus
Spiout Ctrl , 2 'bei Augabe von 16 Bit ist die Reihenfolge Bit 7...0 Bit 15...8
Freq_lsb = &B1111111101111111 'Frequenz0 Register LSB, Bit 15/14 = 0/1, Bitreihenfolge wie Controlbyte
Freq_msb = &B0011111101000000 'Frequenz0 Register MSB, Bit 15/14 = 0/1, Bitreihenfolge wie Controlbyte
Spiout Freq_lsb , 2 'LSB muss zuerst übertragen werden
Spiout Freq_msb , 2 'ca. 75 kHz bei 20 MHz Clock
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.