• Content count

  • Joined

  • Last visited

  • Days Won


bgreat last won the day on July 18 2014

bgreat had the most liked content!

Community Reputation

1 Neutral

About bgreat

  • Rank

Profile Information

  • Gender
  1. bgreat

    Arduino Pinout observations

    Welcome back! If you like, I can take a look at the routing. I have done some initial routing and it was a simple matter to correct the A0-A5 lines. I think I can route the PWM lines to the expected pins at a minimum. Enjoy! Bill
  2. bgreat

    Arduino Pinout observations

    One issue I ran into with the Papilio DUO is the ATmega32u4 to Arduino header wiring. I had expected it to be compatible with the Arduino Leonardo (and others) standard for the AVR signals. But, it is not. This will likely cause issues with shields and their supporting libraries -- particularly ones that use the on-chip peripheral functions -- I2C, SPI, etc. The only AVR signals that are routed as expected are PD2 (RXD1/AIN1/INT2) and PD3 (TXD1/INT3). The LED not being wired to the expected PC7 output caused me some initial grief when I was testing the board with the Arduino example sketches -- I should have referred to the schematic instead of assuming . As the Papilio DUO is implemented as a 4-layer PCB, it should not be overly difficult to route the board to use the default IO wiring. Here is a table with the expected pin mapping vs. the Papilio DUO pin mapping: Arduino Papio DUODigital (PWM~) Alternate AVR DIO AVR DIO======= ======================= ======= =======RX<=0 RXD1/AIN1/INT2 PD2 PD2TX=>1 TXD1/INT3 PD3 PD3 2 SDA/INT1 PD1 PB5 ~3 OC0B/SCL/INT0 PD0 PB4 4 ICP1/ADC8 PD4 PD7 ~5 OC3A/#OC4A PC6 PD6 ~6 T0/OC4D PD7 PD4 7 INT6/AIN0 PE6 PD1 8 ADC11/PCINT4 PB4 PD0 ~9 PCINT5/OC1A/#OC4B/ADC12 PB5 PB7 ~10 PCINT6/OC1B/OC4B/ADC13 PB6 PB0 ~11 PCINT7/OCA0/OC1C/#RTS PB7 PB2 12 T1/#OC4D/ADC9 PD6 PB3 ~13 ICP3/CLK0/OC4A PC7 PB1 GND AREFFor the Arduino Analog header, the Papilio DUO analog order is in reverse of the Arduino normal order. This could be an issue for Arduino familiar users. Wish List: 1. The current PCB brings the ICSP signals to the digital header, eliminating a need for a separate 6-pin header, but I would much prefer having the standard digital signals and an additional set of pads for installing a 6-pin ICSP header. There is room on the board. It could even be a set of pads on the board back side for a surface mount header. This would allow for simple pogo-pin programming during manufacturing without incurring the expense of installing a header -- and allow the user to install their own header if wanted. A set of surface mount pads for a standard 10-pin JTAG connection would also be convenient. 2. For the Arduino Power header, it would be nice to be able to use the Vin pin (currently NC on Papilio DUO) as an alternate power input. This would require a 5V regulator for full compatibility, so is an unlikely addition due to added cost. For now, 5Vdc can be supplied to the board via the header provided the USB power jumper is removed. 3. A set of jumpers to allow routing of the FT2232H ICSP pins directly to the ATmega32U4 to eliminate the current requirement of loading a bit file to the FPGA to route the signals. 4. A reset button for the Arduino would be convenient -- or a jumper header to allow sending the current reset button to the FPGA, Arduino, or both. 5. Label all components on the silk screen layer. Pin 1 and polarity marking would also be nice. These are not only useful for building, but also for board trouble shooting. During assembly, I would have appreciated some package outlines also. All in all, I have found the Papilio DUO to be a pleasure to build and work with so far. I am looking forward to the final product and tools that have been demonstrated. Enjoy! Bill
  3. bgreat

    Medium speed serial comms.

    Fascinating! I do understand the concept but I think I will need to ponder this for a time. Enjoy! Bill
  4. bgreat

    Board Builder

    Jack, you nailed that one. It's been a while since I worked with an Atmel AVR part. I was hoping they had extended the USB interface to alleviate the need for an initial programming device. Looking for my AVR programmer at the office. Hopefully, this evening I'll be able to burn a hex file and check out the processor section. I have high hopes that everything is ok since it is recognized on the USB. Enjoy! Bill
  5. bgreat

    Board Builder

    FPGA checks out! All pins to the headers appear to be working as expected. I can load directly or to FLASH. FLASH configures FPGA at power on. Still on my todo list is to check the SRAM. I am saving this for last as it should be a simple verification as it was the simplest to solder. Quick check of Arduino section by plugging in USB. ATm32U4DFU listed in Windows Device Manager. Time to load the Arduino development environment and see if I can toggle the LED. Enjoy! Bill
  6. bgreat

    Board Builder

    Inspected the board under the microscope at the office this morning. Couple of solder bridges located and corrected. Now on to testing the Arduino and FPGA interfaces. Enjoy! Bill
  7. bgreat

    Board Builder

    Thanks Jack! My Kickstarter Papilio DUO Board Builder version is assembled! I have confirmed the power supply and FTDI 2232 are working. This weekend I hope to have time to check out the Arduino, FPGA, and SRAM! When I have it up and running I'll share assembly details and photos. Enjoy! Bill
  8. There are many references on the web for accomplishing this. Most use a counter and clock to establish a debounce interval. Another option is a shift register with an appropriate clock input. As an example from the web, here is a switch debouncer using a shift register. I like the simplicity. module debouncer (noisy,clk_1KHz,debounced); input wire clk_1KHz, noisy; output reg debounced; reg [7:0] reg; // wait for stable before reporting transition always @ (posedge clk_1KHz) begin reg[7:0] <= {reg[6:0],noisy}; //shift register if(reg[7:0] == 8'b00000000) debounced <= 1'b0; // has been 0 for 8 or more clocks else if(reg[7:0] == 8'b11111111) debounced <= 1'b1; // has been 1 for 8 or more clocks else debounced <= debounced; // do not update when bounce detected endendmoduleEnjoy, Bill