gitextract_18dfl17d/ ├── .gitignore ├── ATMega328 LEDblink/ │ ├── build_atmega328.bat │ ├── fuse_atmega328_int_1MHz.bat │ ├── fuse_atmega328_int_8MHz.bat │ ├── fuse_atmega328_xtal.bat │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATMega328 2015-01-01 USART serial/ │ ├── AVR Baud Rate Calculator.url │ ├── readme.md │ ├── tx only/ │ │ ├── README.md │ │ ├── build_atmega328.bat │ │ ├── fuse_atmega328_int_1MHz.bat │ │ ├── main.c │ │ ├── main.elf │ │ └── main.hex │ ├── tx rs set value/ │ │ ├── build.bat │ │ ├── fuse_atmega328_int_1MHz.bat │ │ ├── main.c │ │ ├── main.elf │ │ └── main.hex │ ├── tx rx interrupt/ │ │ ├── build.bat │ │ ├── fuse_atmega328_int_1MHz.bat │ │ ├── main.c │ │ ├── main.elf │ │ └── main.hex │ └── tx rx polling/ │ ├── build.bat │ ├── fuse_atmega328_int_1MHz.bat │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATMega328 2016-09-04 SN74LV8154/ │ ├── README.md │ ├── build_atmega328.bat │ ├── cleaner/ │ │ ├── build_atmega328.bat │ │ ├── fuse_atmega328_int_1MHz.bat │ │ ├── main.c │ │ ├── main.elf │ │ ├── main.hex │ │ └── main_minimal.c │ ├── demo.py │ ├── kicad/ │ │ ├── simple-cache.lib │ │ ├── simple.bak │ │ ├── simple.kicad_pcb │ │ ├── simple.pro │ │ └── simple.sch │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATMega328 2016-09-07 ramp DVM/ │ ├── README.md │ ├── build.bat │ ├── demo data/ │ │ ├── analyze.py │ │ └── capture.txt │ ├── kicad/ │ │ ├── quick ADC-cache.lib │ │ ├── quick ADC.bak │ │ ├── quick ADC.kicad_pcb │ │ ├── quick ADC.pro │ │ └── quick ADC.sch │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATMega328 2016-09-15 CVM/ │ ├── README.md │ ├── analysis/ │ │ ├── captureWarmup.txt │ │ └── graph.py │ ├── build.bat │ ├── demo.py │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATMega328 2017-02-07 ADC serial LM35/ │ ├── AVR Baud Rate Calculator.url │ ├── README.md │ ├── build_atmega328.bat │ ├── fuse_atmega328_int_1MHz.bat │ ├── main.c │ ├── main.elf │ ├── main.hex │ ├── main_both.c │ └── main_simple.c ├── ATMega328 2017-02-08 i2c LM75A thermometer/ │ ├── build_atmega328.bat │ ├── cmd.cmd │ ├── fuse_atmega328_int_1MHz.bat │ ├── i2c_master.c │ ├── i2c_master.h │ ├── main.c │ ├── main_01.c │ ├── readme.md │ └── serial_m328.c ├── ATMega328 2017-02-12 crystal turnover inspector/ │ ├── build_atmega328.bat │ ├── data.csv │ ├── exp01 - 11.0592/ │ │ ├── data.csv │ │ └── readme.md │ ├── exp02 - 10.140 smaller/ │ │ ├── data1.csv │ │ ├── data2.csv │ │ └── data3.csv │ ├── exp03 - longrun/ │ │ └── data3.csv │ ├── exp04 - 10.140 larger/ │ │ └── data.csv │ ├── exp05 - attiny2313 internal 8mhz/ │ │ └── data.csv │ ├── exp06 - attiny2313 external xtal/ │ │ ├── data.csv │ │ └── datalong.csv │ ├── exp07 - attiny2313 external xtal allday/ │ │ └── data.csv │ ├── exp07 - attiny2313 external xtal freezer/ │ │ └── data.csv │ ├── exp08a - mcu 2x18pf ceramic/ │ │ └── data.csv │ ├── exp08b - mcu 2x18 and 2x68 ceramic/ │ │ └── data.csv │ ├── exp08c - mcu 2x48 blue/ │ │ └── data.csv │ ├── exp08d - mcu 2x20 npo black tip/ │ │ └── data.csv │ ├── exp09a - mcu colpitts/ │ │ └── data.csv │ ├── exp09a - mcu colpitts all yellow npo/ │ │ └── data.csv │ ├── exp10 - aj4vd smt oscillator/ │ │ └── data.csv │ ├── exp11 - aj4vd smt oscillator/ │ │ └── data.csv │ ├── exp12 - aj4vd smt oscillator/ │ │ └── data.csv │ ├── exp13 - xtal only heated/ │ │ └── data.csv │ ├── fuse_atmega328_int_1MHz.bat │ ├── i2c_master.c │ ├── i2c_master.h │ ├── main.c │ ├── main.elf │ ├── main.hex │ ├── plot_both.py │ ├── plot_both2.py │ ├── plot_temp.py │ └── record_both.py ├── ATMega328 2017-03-19 i2c LCD backpack/ │ ├── main.elf │ ├── main.hex │ ├── readme.md │ ├── schematics/ │ │ └── atmega8_lcdpcf8574_sample.sch │ └── src/ │ ├── build_atmega328.bat │ ├── fuse_atmega328_int_8MHz.bat │ ├── i2chw/ │ │ ├── i2cmaster.h │ │ └── twimaster.c │ ├── lcdpcf8574/ │ │ ├── lcdpcf8574.c │ │ └── lcdpcf8574.h │ ├── main.c │ ├── main.elf │ ├── main.hex │ ├── pcf8574/ │ │ ├── pcf8574.c │ │ └── pcf8574.h │ └── uart/ │ ├── uart.c │ └── uart.h ├── ATMega328 2017-03-19 i2c LCD pressure sensor/ │ ├── notes.txt │ ├── readme.md │ ├── schematics/ │ │ └── atmega8_lcdpcf8574_sample.sch │ ├── src_i2cLCD_01_works/ │ │ ├── build_atmega328.bat │ │ ├── fuse_atmega328_int_8MHz.bat │ │ ├── i2c2/ │ │ │ ├── i2c2_master.c │ │ │ └── i2c2_master.h │ │ ├── i2chw/ │ │ │ ├── i2cmaster.h │ │ │ └── twimaster.c │ │ ├── lcdpcf8574/ │ │ │ ├── lcdpcf8574.c │ │ │ └── lcdpcf8574.h │ │ ├── main.c │ │ ├── main.elf │ │ ├── main.hex │ │ ├── pcf8574/ │ │ │ ├── pcf8574.c │ │ │ └── pcf8574.h │ │ └── uart/ │ │ ├── uart.c │ │ └── uart.h │ ├── src_i2cLCD_02_clean/ │ │ ├── build_atmega328.bat │ │ ├── calibration/ │ │ │ └── calibrate.py │ │ ├── fuse_atmega328_int_8MHz.bat │ │ ├── i2c2/ │ │ │ ├── i2c2_master.c │ │ │ └── i2c2_master.h │ │ ├── i2chw/ │ │ │ ├── i2cmaster.h │ │ │ └── twimaster.c │ │ ├── lcdpcf8574/ │ │ │ ├── lcdpcf8574.c │ │ │ └── lcdpcf8574.h │ │ ├── main.c │ │ ├── main.elf │ │ ├── main.hex │ │ ├── pcf8574/ │ │ │ ├── pcf8574.c │ │ │ └── pcf8574.h │ │ └── uart/ │ │ ├── uart.c │ │ └── uart.h │ └── src_serial/ │ ├── build_atmega328.bat │ ├── i2c_master.c │ ├── i2c_master.h │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATMega328 2017-08-14 action potential generator/ │ ├── build_atmega328.bat │ ├── fuse_atmega328_int_8MHz.bat │ ├── ltspice/ │ │ └── idea-1.asc │ ├── main.c │ ├── main.elf │ ├── main.hex │ └── readme.md ├── ATMega328 2018-02-25 16-bit pwm/ │ └── readme.md ├── ATMega328 2018-02-25 nrf24L01/ │ ├── readme.md │ └── src/ │ ├── build_rx.bat │ ├── build_tx.bat │ ├── fuse_atmega328_int_8MHz.bat │ ├── kehribar-nrf24L01_plus- Portable nrf24L01+ library with auto acknowledgement and auto retransmission support-.url │ ├── main.elf │ ├── main.hex │ ├── main_rx.c │ ├── main_tx.c │ ├── nRF24L01.h │ ├── nrf24.c │ ├── nrf24.h │ └── radioPinFunctions.c ├── ATMega328 2018-04-22 MAX7219 LED matrix/ │ ├── build_atmega328.bat │ ├── fuse_atmega328_int_8MHz.bat │ ├── fuse_atmega328_xtal.bat │ ├── main.c │ ├── main.elf │ ├── main.hex │ ├── main_01_works.c │ ├── main_02_matrix.c │ ├── main_03_scott.c │ └── readme.md ├── ATMega328 2019-06-20 TTL laser controller 2/ │ ├── README.md │ ├── main.c │ ├── main.elf │ ├── main.hex │ ├── program.bat │ └── setFuses.bat ├── ATMega328 2019-07-05 USB counter/ │ └── readme.md ├── ATMega328 2019-08-04 max7219 7segment display/ │ ├── compile.bat │ ├── display-max7219-7seg.c │ ├── main.c │ ├── main.elf │ ├── main.hex │ ├── program.bat │ └── readme.md ├── ATMega48 2013-05-14 SHRFP monitor/ │ ├── GUI/ │ │ ├── SH-RFP-monitor.py │ │ ├── SwhRecorder.py │ │ ├── SwhRecorder2.py │ │ ├── SwhRfpDecoder.py │ │ ├── theory ACTION.py │ │ ├── theory.py │ │ ├── ui.py │ │ ├── ui_plot.py │ │ └── ui_plot.ui │ ├── MCU code/ │ │ └── main.c │ └── readme.md ├── ATMega8 AD9850 DDS receiver/ │ ├── old/ │ │ ├── 03 mega8 DDS/ │ │ │ ├── _ mega8 EXT.cmd │ │ │ ├── main.c │ │ │ ├── main.elf │ │ │ └── main.hex │ │ ├── 08 multiband qrss dds/ │ │ │ ├── _ mega8 8mhz RC.cmd │ │ │ ├── main.c │ │ │ ├── main.elf │ │ │ └── main.hex │ │ ├── 09 temp controlled DDS/ │ │ │ ├── _ mega8 1mhz RC.cmd │ │ │ ├── _ mega8 8mhz RC.cmd │ │ │ ├── main.c │ │ │ ├── main.elf │ │ │ └── main.hex │ │ └── readme.md │ └── readme.md ├── ATTiny2313 2015-01-01 USART serial/ │ ├── build_attiny2313.bat │ ├── fuse_attiny2313_EXT_XTAL.bat │ ├── fuse_attiny2313_INT_1MHz.bat │ ├── fuse_attiny2313_INT_8MHz.bat │ ├── main.c │ ├── main.elf │ ├── main.hex │ └── readme.md ├── ATTiny2313 2016-08-14 clock divider/ │ ├── README.md │ ├── build_attiny2313.bat │ ├── fuse_attiny2313_EXT_XTAL.bat │ ├── main.c │ ├── main.elf │ ├── main.hex │ └── simple/ │ ├── build_attiny2313.bat │ ├── fuse_attiny2313_EXT_XTAL.bat │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATTiny2313 2017-02-01 PWM/ │ ├── build_attiny2313.bat │ ├── fuse_attiny2313_INT_1MHz.bat │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATTiny2313 2017-02-02 rotary encoder/ │ ├── build_attiny2313.bat │ ├── fuse_attiny2313_INT_8MHz.bat │ ├── main.c │ ├── main.elf │ ├── main.hex │ ├── main_v1_polling.c │ └── readme.md ├── ATTiny2313 2017-02-03 pin change interrupt/ │ ├── build_attiny2313.bat │ ├── fuse_attiny2313_INT_8MHz.bat │ └── main.c ├── ATTiny2313 2017-02-04 QRSS VFO controller/ │ ├── build_attiny2313.bat │ ├── fuse_attiny2313_INT_8MHz.bat │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATTiny2313 2017-07-22 shutter controller/ │ ├── build_attiny2313.bat │ ├── fuse_attiny2313_INT_8MHz.bat │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATTiny2313 2017-08-02 stimulus generator/ │ ├── build_attiny2313.bat │ ├── fuse_attiny2313_EXT_XTAL.bat │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATTiny2313 2018-02-25 ADC/ │ └── readme.md ├── ATTiny2313 2018-02-25 button interrupt/ │ └── readme.md ├── ATTiny2313 LEDblink/ │ ├── build_attiny2313.bat │ ├── fuse_attiny2313_EXT_XTAL CKOUT.bat │ ├── fuse_attiny2313_EXT_XTAL.bat │ ├── fuse_attiny2313_INT_1MHz.bat │ ├── fuse_attiny2313_INT_8MHz CKOUT.bat │ ├── fuse_attiny2313_INT_8MHz.bat │ ├── main.c │ ├── main.elf │ └── main.hex ├── ATTiny826 Clock/ │ ├── ATTiny826 Clock and Timer/ │ │ ├── ATTiny826 Clock and Timer.componentinfo.xml │ │ ├── ATTiny826 Clock and Timer.cproj │ │ └── main.c │ └── ATTiny826 Clock and Timer.atsln ├── ATTiny826 LED blink/ │ ├── LedBlink/ │ │ ├── LedBlink/ │ │ │ ├── LedBlink.componentinfo.xml │ │ │ ├── LedBlink.cproj │ │ │ └── main.c │ │ └── LedBlink.atsln │ └── readme.md ├── ATTiny826 PWM/ │ └── readme.md ├── ATTiny826 Timer 1pps/ │ ├── ATTiny826 Clock and Timer/ │ │ ├── ATTiny826 Clock and Timer.componentinfo.xml │ │ ├── ATTiny826 Clock and Timer.cproj │ │ └── main.c │ └── ATTiny826 Clock and Timer.atsln ├── ATTiny826 counter/ │ ├── ATTiny826 counter/ │ │ ├── ATTiny826 counter.componentinfo.xml │ │ ├── ATTiny826 counter.cproj │ │ ├── main.c │ │ └── serial.h │ └── ATTiny826 counter.atsln ├── ATTiny826 serial/ │ ├── ATTiny826 serial/ │ │ ├── ATTiny826 serial.componentinfo.xml │ │ ├── ATTiny826 serial.cproj │ │ └── main.c │ └── ATTiny826 serial.atsln ├── ATTiny826 speech/ │ ├── SpeechTest1.atsln │ ├── SpeechTest1.componentinfo.xml │ ├── SpeechTest1.cproj │ ├── main.c │ └── readme.md ├── ATTiny85 2016-07-24 TTL laser controller/ │ ├── KiCad/ │ │ ├── 16.07.26.laserPulse-cache.lib │ │ ├── 16.07.26.laserPulse.bak │ │ ├── 16.07.26.laserPulse.kicad_pcb │ │ ├── 16.07.26.laserPulse.pro │ │ └── 16.07.26.laserPulse.sch │ ├── README.md │ ├── burn.cmd │ ├── burn2.bat │ ├── fuse_attiny85_crystal.cmd │ ├── main.c │ ├── main.elf │ ├── main.hex │ └── up.py ├── ATTiny85 2016-07-31 frequency generator/ │ ├── README.md │ ├── burn.cmd │ └── main.c ├── ATTiny85 2016-12-30 PWM/ │ ├── fuseINT8.bat │ ├── main.c │ ├── main_squares_triangles.c │ ├── program.bat │ └── readme.md ├── ATTiny85 2017-02-05 ADC/ │ ├── fuseINT8.bat │ ├── main.c │ ├── program.bat │ └── readme.md ├── ATTiny85 2017-08-19 action potential generator/ │ ├── fuseINT8.bat │ ├── main.c │ ├── main.elf │ ├── main.hex │ ├── program.bat │ └── readme.md ├── ATTiny85 2017-09-01 PS4 controller auto run auto fire/ │ ├── fuseINT8.bat │ ├── main.c │ ├── main.elf │ ├── main.hex │ ├── program.bat │ └── readme.md ├── ATTiny85 LEDblink/ │ ├── fuseINT8.bat │ ├── main.c │ ├── main.elf │ ├── main.hex │ └── program.bat ├── AVR64DD32/ │ └── readme.md ├── AVR64DD32 7seg multiplex/ │ ├── GccApplication1.atsln │ ├── GccApplication1.componentinfo.xml │ ├── GccApplication1.cproj │ └── main.c ├── AVR64DD32 LEDblink/ │ ├── LEDblink/ │ │ ├── LEDblink.atsln │ │ ├── LEDblink.componentinfo.xml │ │ ├── LEDblink.cproj │ │ └── main.c │ └── readme.md ├── AVR64DD32 SPI audio/ │ ├── SpiQuickstart.atsln │ ├── SpiQuickstart.componentinfo.xml │ ├── SpiQuickstart.cproj │ └── main.c ├── AVR64DD32 adc/ │ ├── GccApplication1.atsln │ ├── GccApplication1.componentinfo.xml │ ├── GccApplication1.cproj │ └── main.c ├── AVR64DD32 audio music/ │ ├── SpeechTest2.atsln │ ├── SpeechTest2.componentinfo.xml │ ├── SpeechTest2.cproj │ ├── audio.h │ ├── main.c │ └── readme.md ├── AVR64DD32 audio speech/ │ ├── SpeechTest2.atsln │ ├── SpeechTest2.componentinfo.xml │ ├── SpeechTest2.cproj │ ├── audio.h │ ├── main.c │ └── readme.md ├── AVR64DD32 comparator/ │ ├── AVR64DD32 serial.atsln │ ├── AVR64DD32 serial.componentinfo.xml │ ├── AVR64DD32 serial.cproj │ └── main.c ├── AVR64DD32 counter/ │ ├── AVR64DD32 serial.atsln │ ├── AVR64DD32 serial.componentinfo.xml │ ├── AVR64DD32 serial.cproj │ ├── Serial.h │ └── main.c ├── AVR64DD32 serial/ │ ├── AVR64DD32 serial.atsln │ ├── AVR64DD32 serial.componentinfo.xml │ ├── AVR64DD32 serial.cproj │ └── main.c ├── AVR64DD32 talking counter/ │ ├── AVR64DD32 serial.atsln │ ├── AVR64DD32 serial.componentinfo.xml │ ├── AVR64DD32 serial.cproj │ ├── NumberSpeaker.h │ ├── NumberSpeakerAudio.h │ ├── Serial.h │ └── main.c ├── Analog action potential generator/ │ ├── data/ │ │ └── analyze.py │ └── ltspice/ │ ├── circuit.asc │ ├── circuit.log │ ├── circuit.op.raw │ └── circuit.raw ├── Arduino/ │ └── readme.md ├── Arduino ADC/ │ └── Arduino ADC.ino ├── Arduino ADC MCP3201/ │ └── Arduino ADC MCP3201.ino ├── Arduino ADS1115/ │ └── Arduino ADS1115.ino ├── Arduino BMP280 pressure sensor/ │ ├── bmp280/ │ │ ├── amazon.txt │ │ └── bmp280.ino │ └── readme.md ├── Arduino HX710B pressure sensor/ │ ├── hx710b/ │ │ ├── .theia/ │ │ │ └── launch.json │ │ └── hx710b.ino │ └── readme.md ├── Arduino LED blink/ │ └── led-blink.ino ├── Arduino LM75A/ │ └── Arduino LM75A.ino ├── Arduino PWM/ │ └── readme.md ├── Arduino SI5351 DDS/ │ └── dds/ │ └── dds/ │ ├── dds.ino │ ├── si5351.cpp │ └── si5351.h ├── Arduino SPI audio/ │ ├── readme.md │ └── test1/ │ └── test1.ino ├── Arduino speech/ │ ├── readme.md │ └── test1/ │ ├── speech.h │ └── test1.ino ├── BusPirate/ │ ├── demo.py │ └── readme.md ├── BusPirate 2017-02-04 i2c ms5661 pressure/ │ ├── busPirate_ms5661.py │ ├── buspirate.py │ ├── readme.md │ ├── scratch_record_i2c_pressure.py │ └── scratch_record_i2c_pressure_plot.py ├── BusPirate 2017-02-04 i2c temperature/ │ ├── busPirate_LM75A.py │ ├── file logging/ │ │ ├── data.csv │ │ ├── plot.py │ │ └── record.py │ └── readme.md ├── BusPirate 2017-03-11 crystal oven/ │ ├── busPirate_LM75A.py │ ├── data.csv │ └── plot.py ├── ESP8266/ │ └── readme.md ├── FT232H SPI ADC/ │ ├── UsbAdc/ │ │ ├── FTD2XX_NET/ │ │ │ ├── CommunicatorBase.cs │ │ │ ├── FTD2XX_NET.cs │ │ │ ├── SerialCommunicator.cs │ │ │ ├── SpiCommunicator.cs │ │ │ ├── TwiCommunicator.cs │ │ │ └── readme.md │ │ ├── Form1.Designer.cs │ │ ├── Form1.cs │ │ ├── Form1.resx │ │ ├── Program.cs │ │ ├── UsbAdc.csproj │ │ ├── UsbAdc.csproj.user │ │ ├── UsbAdc.sln │ │ └── obj/ │ │ ├── UsbAdc.csproj.nuget.dgspec.json │ │ ├── UsbAdc.csproj.nuget.g.props │ │ ├── UsbAdc.csproj.nuget.g.targets │ │ ├── project.assets.json │ │ └── project.nuget.cache │ └── readme.md ├── FTDI 2017-04-29 bitbang max7219 7seg/ │ ├── FT232H-spi7seg.cs │ └── readme.md ├── FTDI 2018-05-30 bit bang/ │ ├── 00-serial.cs │ ├── 01-serial.cs │ ├── 02-state-LEDs.cs │ ├── 03-state-LEDblink.cs │ ├── 04-state-send.cs │ ├── 05-stress-test.cs │ ├── 06-bit-bang-spi.cs │ ├── 07-AD9850-single-frequency.cs │ ├── 08-AD9850-sweep.cs.cs │ └── readme.md ├── FTDI 2018-06-03 ftdiDDS/ │ ├── binary/ │ │ └── demos/ │ │ ├── demo_help.bat │ │ ├── demo_hz_33222111.bat │ │ ├── demo_list.bat │ │ ├── demo_mhz_10.bat │ │ ├── demo_mhz_21.987654.bat │ │ ├── demo_none.bat │ │ └── demo_sweep.bat │ ├── readme.md │ └── source/ │ ├── FTDI-video-demo/ │ │ ├── App.config │ │ ├── FTD2XX_NET.XML │ │ ├── FTDI-video-demo.csproj │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ └── packages.config │ ├── FTDI-video-demo.sln │ └── packages/ │ └── FTD2XX.Net.1.0.14/ │ ├── FTD2XX.Net.1.0.14.nupkg │ └── content/ │ └── FTD2XX_NET.XML ├── LICENSE ├── NodeMCU-BMP8266/ │ ├── NodeMCU-BMP8266.ino │ └── readme.md ├── NodeMCU-weather-station/ │ ├── NodeMCU-weather-station.ino │ └── readme.md ├── QRSS TX - clock tx/ │ ├── PCB/ │ │ ├── fp-info-cache │ │ ├── qrss-clock-tx-cache.lib │ │ ├── qrss-clock-tx.bak │ │ ├── qrss-clock-tx.kicad_pcb │ │ ├── qrss-clock-tx.kicad_pcb-bak │ │ ├── qrss-clock-tx.net │ │ ├── qrss-clock-tx.pro │ │ └── qrss-clock-tx.sch │ ├── README.md │ ├── ideas/ │ │ └── readme.md │ └── ppv-to-power-calculator.xlsx ├── README.md ├── functions/ │ ├── delays.md │ └── readme.md ├── tips/ │ ├── 2016-08-14 CKOUT noise/ │ │ └── README.md │ └── 2017-02-04 thermistor calculations/ │ └── demo.py └── uBlox Neo-6M/ └── readme.md