High Performance WM8741 Upsampling DAC New Version build thread (show 'n tell too)

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
It must be nice to have a stereoscope to do soldering with. I have the iron in one hand and solder in the other, squint like crazy and hope the shakes don't kick in. (lost more parts that way)

The 0603 parts are fine but i have to do zen breathing and reach my happy place to work with 0402. Anything smaller than that an I will give up and buy a pick-n-place machine.



Both channels are now up and running. Sound is crystal clear so I may not have damaged the output opamp (I'll probably change it eventually any way just to be safe).

I can handle 0603s (under a stereoscope), but please don't ever use 0402s or smaller (0201, 01005? Yikes I didn't know these pepper grains existed!).

That 144 pin tqfp on the other hand is a bear to work with by hand. Not so much soldering, as placing it in position and keeping it there until diagonal pins are soldered.

I like the fact that you keep your regulators close to the load and keep the inductance of the long traces at the input instead of output.
 
I use a host of loupes, lighted magnifying glasses and a magnafying headset at home. It is easier to bring it into work and stay late to use a solder station or use one at lunchtime.

I have problems holding the parts with tweezers until I can get the solder in place.

I'm just starting to look at the widget. Does your board plug into the USB-i2s board, or is it stand-alone? - Never mind, I re-read your web site and it answered my question.

Turbon, with large pin count devices I find it is easier to flood the pins with solder first to establish the pin to pad connection. Then go back and use solder wick to remove the excess leaving the pin to pad connection intact.

I found some OPTREX DCM20434 4 X 20 LCD modules in a box last night. They are parallel input, 8 bit and look like they are compatible with the HD44780, so I won't have to wait on a display from e-bay. They aren't lighted, but should work for development.
 
Last edited:
On the other hand if you have a serial one it should be a piece of cake to get it going!
I'll be here assisting you and others and hopefully we get some help from above ;-)

The first part is the initialization...

The lcd.writes and prints needs to be handled by the wire lib.

Thats pretty much it as I understand - but again I don't have one of these (yet anyway - but it would free a lot of pins) so I can't test...

I'm thinking of a function reading the registers of this dac (should be the same for them all really) to see what settings it have succeded to set. The LCDtoday shows what the program has been programmed to set - are we quite shure it is so? I'd rather set something and then check the source to be sure it complies.
So, another rewrite is in the pipe...

Brgds
 
Turbon,

Are you using a parallel LCD or serial? I thought this code was for the parallel.


#include <LiquidCrystal.h> // For LCD
// Initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);

The data sheet is for a parallel LCD.
 
Last edited:
...snip...

To straighten things out with LCD's I will include a new declaration, 0 will be for 4-bit init an 1 will be for serial LCD. Just to keep people happy with whatever type of LCD they bought.
A second one could be a declaration of what code to use for the remote - Sony, Apple or whatever you would prefer.
...snip

Brgds

Turbon, Did you ever do this? I don't see it in the code.
 
I started with a fresh Arduino 1.0 load.

I loaded LCDi2cW into the libraries directory and moved macros.h to the LCDi2cW directory From - C:\arduino-1.0\libraries\LCDi2cW\examples\Dales_Space_Invaders_Custom_Character_Sample\

I loaded your latest file "WM8741_DAC_4-9-2012" in to the Arduino 1.0 directory and started Arduino.

I loaded "WM8741_DAC_4-9-2012". When I compiled it I got the usual error and allowed it to move the file to a directory named the same.

Now I get the errors:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
at processing.app.Sketch.setCurrentCode(Sketch.java:1159)
at processing.app.Sketch.load(Sketch.java:219)
at processing.app.Sketch.<init>(Sketch.java:141)
at processing.app.Editor.handleOpenInternal(Editor.java:2132)
at processing.app.Editor.<init>(Editor.java:311)
at processing.app.Base.handleOpen(Base.java:700)
at processing.app.Base.handleOpen(Base.java:665)
at processing.app.Base.handleOpenPrompt(Base.java:654)
at processing.app.Editor$5.actionPerformed(Editor.java:503)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 
Try to run aurdino as administrator...

Brgds

I started with a fresh Arduino 1.0 load.

I loaded LCDi2cW into the libraries directory and moved macros.h to the LCDi2cW directory From - C:\arduino-1.0\libraries\LCDi2cW\examples\Dales_Space_Invaders_Custom_Character_Sample\

I loaded your latest file "WM8741_DAC_4-9-2012" in to the Arduino 1.0 directory and started Arduino.

I loaded "WM8741_DAC_4-9-2012". When I compiled it I got the usual error and allowed it to move the file to a directory named the same.

Now I get the errors:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
at processing.app.Sketch.setCurrentCode(Sketch.java:1159)
at processing.app.Sketch.load(Sketch.java:219)
at processing.app.Sketch.<init>(Sketch.java:141)
at processing.app.Editor.handleOpenInternal(Editor.java:2132)
at processing.app.Editor.<init>(Editor.java:311)
at processing.app.Base.handleOpen(Base.java:700)
at processing.app.Base.handleOpen(Base.java:665)
at processing.app.Base.handleOpenPrompt(Base.java:654)
at processing.app.Editor$5.actionPerformed(Editor.java:503)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.