WA1FFL AD9951 Direct-Digital VFO

  • Bitte fangt einen neuen Thread zu diesen DDS an. Danke.


    Sorry, wenn es mein Posting den Rahmen dieses Threads vielleicht etwas gesprengt haben sollte. Nur bin ich nicht ganz sicher, ob genug Interesse für einen eigenen neuen Thread zum Thema der China-DDS-Moduln besteht.

    73 de Klaus, DJ7OO

  • Hallo Mitleser,

    bisher habe ich noch keine endgültige Festlegung der Bedienelemente für den AD9951 VFO gefunden.

    Aber mich für einen kompletten Umbau der Hardware entschieden.
    So wurde die AD9951 von allen alten Steckern und Buchsen befreit und die notwendigen Umbauten für den Betrieb einen Atmel atMega162 durchgeführt.

    Änderungen

    • C7, 1µF gegen 10k SMD 1206 und
    • Quarz, 16MHz gegen 14,7456 MHz gewechselt,
    • C5, C6 mit 27pF bestückt.

    Fertige Firmware-Module

    • LCD Treiber mit 4Bit Ansteuerung
    • LCD API für die Fensterverwaltung, mehrere Fenster liegen übereinander und über- und verdecken sich dadurch teilweise.
    • Eventsteuerung über Timer0 1ms (1000Hz) Timeslice
    • Tasterentprellung auf PortB und PortC, Eventsystem
    • Drehencoder-Decodierung, Eventsystem
    • AD9951 Frequenzeinstellung
    • RS232 Ansteuerung (57600Baud,8,N,1) des AD9951 VFO, dazu nutze ich dann eine USB-RS232 Bridge (z.B. FT232RL)

    Durch die Entscheidung, die LCD-Ansteuerung von 8-Bit auf 4-Bit zu wechseln, bekomme ich 4 weitere freie Ein- oder Ausgänge.
    Auf den Bildern sieht man nun die 3x 8Bit Steckverbinder.

    Hier sind die bisherigen Festlegungen:

    PortA
    Lcd4PinD4 ==> porta.0
    Lcd4PinD5 ==> porta.1
    Lcd4PinD6 ==> porta.2
    Lcd4PinD7 ==> porta.3
    Lcd4PinRS ==> porta.4
    Lcd4PinE ==> porta.5
    nicht belegt sind
    porta.6
    porta.7

    PortB
    ENCODER_A_MASK ==> portb.0
    ENCODER_B_MASK ==> portb.1

    RXD1_PIN ==> portb.2
    TXD1_PIN ==> portb.3

    ENCODER_KEY_MASK ==> portb.4

    ISP Schnittstelle
    MOSI_MASK ==> portb.5
    MISO_MASK ==> portb.6
    SCK_MASK ==> portb.7

    PortC
    KEY_C0_MASK ==> portc.0
    KEY_C1_MASK ==> portc.1
    KEY_C2_MASK ==> portc.2
    KEY_C3_MASK ==> portc.3
    KEY_C4_MASK ==> portc.4
    KEY_C5_MASK ==> portc.5
    KEY_C6_MASK ==> portc.6
    KEY_C7_MASK ==> portc.7

    PortD
    AD9951 Steuerleitungen
    AD9951_IO_UPDATE_MASK ==> portd.0
    AD9951_OSK_MASK ==> portd.1
    AD9951_SDIO_MASK ==> portd.2
    AD9951_SCLK_MASK ==> portd.3
    AD9951_RESET_MASK ==> portd.4
    AD9951_PWRDOWNCTRL_MASK ==> portd.5
    nicht belegt werden
    portd.6
    portd.7

    Nun muss ich noch den ISP-Programmer USBTinyISP anschließen, dazu wird es notwendig sein, einen 6pol ISP-Stecker frei zu verdrahten.
    Das erfolgt dann über die Rückseite der Platine.
    Also steht einem ersten Softwaretest nicht mehr viel im Wege.

    Links:
    * Artikel "An Advanced Direct-Digital VFO", erschienen in der QEX, Mai, Juni 2008.
    * Datenblatt Atmel atMega162

  • Hallo Forum,

    heute hat der atMega162 seinen Bootloader "fastboot 2.9" erhalten, danach konnte ich ihn auf der AD9951 VFO Platine in Betrieb nehmen.

    An RXD1, TXD1_PIN wurde ein MCP2200 (Microchip) USB zu UART Adapter angeschlossen.
    Darüber kann ich mit unterschiedlichen Baudraten (hier 57600) den atMega162 mit neuer Firmware beschreiben.

    Gerade läuft ein FA-NWT Firmware Clone, so kann ich die Funktionen einfach mit der SW LinNWT von Andreas, DL4JAL testen.

    73 de Uwe
    DC5PI

    Edited 2 times, last by DC5PI (May 17, 2013 at 11:44 AM).

  • Hallo,

    für alle, die sich über die möglichen Verbindung zwischen PC und einem Atmel µC mit Hilfe eines USB to Uart Konverter interessieren, kommt hier eine Auflistung meiner beiden Adapter:

    • MCP2200 liefert unter Linux ein Schnittstelle unter /dev/ttyACMn; n E |N
    • FT232RL liefert unter Linux ein Schnittstelle unter /dev/ttyUSBn; n E |N


    Andreas, DL4JAL habe ich angeschrieben, wie und wo die Software LinNWT - Steuerprogramm für den FA-NWT - abzuändern sei, damit auch die Schnittstelle unter /dev/ttyACM0-3 in der Auswahlbox erscheinen.

    Dank seiner schnellen Reaktion habe ich den Quellcode anpassen können, so dass ich nun neben /dev/ttyUSB0-3 auch /dev/ttyACM0-3 direkt auswählen kann. Siehe Bild.