paul@3 | 1 | Introduction
|
paul@3 | 2 | ============
|
paul@3 | 3 |
|
paul@3 | 4 | The CommonPIC32_VGA distribution provides schematic and circuit layout files
|
paul@3 | 5 | for use with KiCad describing a circuit board for use with a PIC32
|
paul@3 | 6 | microcontroller, offering VGA signal generation capabilities when used with
|
paul@3 | 7 | the appropriate software (provided in the CommonPIC32 software distribution).
|
paul@3 | 8 |
|
paul@3 | 9 | Other interfacing options are also provided for programming the
|
paul@3 | 10 | microcontroller using the ICSP mechanism, communicating with the
|
paul@3 | 11 | microcontroller using UART peripherals, and connecting the microcontroller to
|
paul@3 | 12 | parallel devices and to USB devices.
|
paul@3 | 13 |
|
paul@3 | 14 | Note that the breadboard circuit used to prototype this board only
|
paul@3 | 15 | investigated VGA signal generation, ICSP functionality, and UART
|
paul@3 | 16 | communication. The other interfacing support has yet to be tested and
|
paul@3 | 17 | verified.
|
paul@3 | 18 |
|
paul@3 | 19 | The following resources are provided:
|
paul@3 | 20 |
|
paul@3 | 21 | CommonPIC32_VGA.kicad_pcb The circuit board layout
|
paul@3 | 22 |
|
paul@3 | 23 | CommonPIC32_VGA.net The netlist, generated from the schematic
|
paul@3 | 24 | and distributed here for convenience
|
paul@3 | 25 |
|
paul@3 | 26 | CommonPIC32_VGA.pro The KiCad project file
|
paul@3 | 27 |
|
paul@3 | 28 | CommonPIC32_VGA.sch The circuit schematic providing the
|
paul@3 | 29 | relationships between components
|
paul@3 | 30 |
|
paul@3 | 31 | PIC32MX270F256B.lib PIC32MX270F256B component library
|
paul@3 | 32 | containing a definition for the
|
paul@3 | 33 | microcontroller itself (with the PCB
|
paul@3 | 34 | footprint being provided by generic KiCad
|
paul@3 | 35 | footprint libraries)
|
paul@3 | 36 |
|
paul@6 | 37 | Board Outline
|
paul@6 | 38 | =============
|
paul@6 | 39 |
|
paul@6 | 40 | The board has the same outline and mounting holes as the Arduino Duemilanove,
|
paul@6 | 41 | although it does not provide shield compatibility, physically or electrically:
|
paul@6 | 42 |
|
paul@6 | 43 | https://docs.arduino.cc/retired/boards/arduino-duemilanove
|
paul@6 | 44 |
|
paul@6 | 45 | Unfortunately, the physical characteristics of the Duemilanove are not
|
paul@6 | 46 | adequately documented by the Arduino initiative. Consequently, others have
|
paul@6 | 47 | been obliged to do this work, and the following resource was used to define
|
paul@6 | 48 | the board outline used in this project:
|
paul@6 | 49 |
|
paul@6 | 50 | http://www.robgray.com/temp/Arduino-PCB-dimensions.pdf
|
paul@6 | 51 |
|
paul@3 | 52 | Board Version Notes
|
paul@3 | 53 | ===================
|
paul@3 | 54 |
|
paul@3 | 55 | oshpark-7PB6tGOf (December 2021)
|
paul@3 | 56 | --------------------------------
|
paul@3 | 57 |
|
paul@3 | 58 | This version provides pads for very short resistors which are rather
|
paul@4 | 59 | inconvenient for generally available through-hole mounted resistors, although
|
paul@4 | 60 | the pad spacing is appropriate for the capacitors employed in the design. A
|
paul@4 | 61 | new version is anticipated with longer footprints for the resistors.
|
paul@4 | 62 |
|
paul@4 | 63 | Another flaw with this version is the combination of colour signals without
|
paul@4 | 64 | diodes isolating this part of the circuit. Since some of these pins are used
|
paul@4 | 65 | for parallel input/output, if the VGA signal resistors are connected, pairs of
|
paul@4 | 66 | pins are effectively joined, making the affected parallel signals unusable.
|
paul@4 | 67 | This affects PMD0/PMD1 (blue channel), PMD2/PMWR (green channel), PMD5 (if D7
|
paul@4 | 68 | is used for the red channel). Thus, any use of the parallel signals precludes
|
paul@4 | 69 | use of the VGA outputs unless only one pin of every affected pair is used, as
|
paul@4 | 70 | opposed to both pins.
|
paul@4 | 71 |
|
paul@4 | 72 | Diodes would correct this problem, but another approach could involve a way of
|
paul@4 | 73 | switching between VGA output and parallel signal usage since the use of one
|
paul@4 | 74 | generally precludes the use of the other: parallel traffic leaking through the
|
paul@4 | 75 | VGA connector would not produce a valid signal; VGA output leaking through the
|
paul@4 | 76 | parallel connector would not produce valid parallel transactions. A
|
paul@4 | 77 | multiplexer controlled by an output signal could be coupled with software to
|
paul@4 | 78 | permit switching between the connectors, allowing video output to be switched
|
paul@4 | 79 | between a panel and the VGA connector, for example.
|
paul@3 | 80 |
|
paul@5 | 81 | One limitation that the board has when used with an Arduino Duemilanove board
|
paul@5 | 82 | for programming is that it is not designed to be stacked on such a board. This
|
paul@5 | 83 | could have been useful when putting such a combination of boards in a case
|
paul@5 | 84 | designed for stacks of Arduino boards and shields, since there is otherwise
|
paul@5 | 85 | not enough space between the female headers of the Arduino board and the
|
paul@5 | 86 | underside of this board to be able to use jumper wires, as had been intended.
|
paul@5 | 87 | However, breadboard jumper cables can be used to route the signals between the
|
paul@5 | 88 | boards.
|
paul@5 | 89 |
|
paul@5 | 90 | Another potential change could involve the positioning of the VGA output
|
paul@5 | 91 | connectors, these having been situated at the opposite end of the board to
|
paul@5 | 92 | where an Arduino would have its USB and power connectors. It might have been
|
paul@5 | 93 | more sensible to have put the VGA connectors, these being external, on the
|
paul@5 | 94 | same end as the Arduino's own external connectors, with the programming pins
|
paul@5 | 95 | either being routed via stackable header connections or through connectors on
|
paul@5 | 96 | the end of the board that would be internal within any case or housing.
|
paul@5 | 97 |
|
paul@5 | 98 | Despite the above Arduino-related suggestions, this board was not designed as
|
paul@5 | 99 | an Arduino shield, needing rather more flexibility in terms of providing
|
paul@5 | 100 | connections of specific kinds, and although the intention was to make use of
|
paul@5 | 101 | Arduino-compatible cases or housings, it was never envisaged that any
|
paul@5 | 102 | particular case would be completely compatible with this board.
|
paul@5 | 103 |
|
paul@3 | 104 | Design Rules and Production
|
paul@3 | 105 | ===========================
|
paul@3 | 106 |
|
paul@3 | 107 | It was decided that OSHPark would be used to make the first set of boards.
|
paul@3 | 108 | Thus, the design rules for OSHPark were employed by this project. Such rules
|
paul@3 | 109 | can be found here:
|
paul@3 | 110 |
|
paul@3 | 111 | http://docs.oshpark.com/services/two-layer/
|
paul@3 | 112 | http://docs.oshpark.com/design-tools/kicad/kicad-design-rules/
|
paul@3 | 113 |
|
paul@3 | 114 | The board uploaded to OSHPark was tagged with oshpark-7PB6tGOf in this
|
paul@3 | 115 | repository. It resides on OSHPark at the following location:
|
paul@3 | 116 |
|
paul@3 | 117 | https://oshpark.com/projects/7PB6tGOf/view_design
|
paul@3 | 118 |
|
paul@3 | 119 | Contact, Copyright and Licence Information
|
paul@3 | 120 | ==========================================
|
paul@3 | 121 |
|
paul@3 | 122 | The author can be contacted at the following e-mail address:
|
paul@3 | 123 |
|
paul@3 | 124 | paul@boddie.org.uk
|
paul@3 | 125 |
|
paul@3 | 126 | Copyright and licence information can be found in the docs directory - see
|
paul@3 | 127 | docs/COPYING.txt and docs/gpl-3.0.txt for more information.
|