{"id":20522848,"url":"https://github.com/anachrocomputer/pic32pmp","last_synced_at":"2026-06-05T17:31:38.070Z","repository":{"id":70084989,"uuid":"169805540","full_name":"anachrocomputer/PIC32PMP","owner":"anachrocomputer","description":"Various MPLAB X projects exploring the PIC32's Parallel Master Port (PMP). Runs on PIC32MX250F256L and/or similar 100-pin PIC32s.","archived":false,"fork":false,"pushed_at":"2025-06-16T20:12:55.000Z","size":427,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-16T21:25:15.642Z","etag":null,"topics":["hmdl-2416","hmdl2416","ili9486","lcd","led","parallel","pic32","pic32mx","sixteen-segment-display","starburst","starburst-display"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anachrocomputer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-08T22:10:11.000Z","updated_at":"2025-06-16T20:12:58.000Z","dependencies_parsed_at":"2024-12-01T16:45:22.265Z","dependency_job_id":null,"html_url":"https://github.com/anachrocomputer/PIC32PMP","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/anachrocomputer/PIC32PMP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anachrocomputer%2FPIC32PMP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anachrocomputer%2FPIC32PMP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anachrocomputer%2FPIC32PMP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anachrocomputer%2FPIC32PMP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anachrocomputer","download_url":"https://codeload.github.com/anachrocomputer/PIC32PMP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anachrocomputer%2FPIC32PMP/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33951164,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hmdl-2416","hmdl2416","ili9486","lcd","led","parallel","pic32","pic32mx","sixteen-segment-display","starburst","starburst-display"],"created_at":"2024-11-15T22:37:04.729Z","updated_at":"2026-06-05T17:31:38.051Z","avatar_url":"https://github.com/anachrocomputer.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PIC32PMP #\n\nExplore the PIC32's Parallel Master Port on a PIC250F256L dev board.\nMillisecond timer interrupt generated by Timer 1,\nwhich also toggles RA7 (SQWAVE).\n\n## pmptest.X ##\n\nPIC32MX is connected to two HMDL-2416 starburst displays.\n\nPMP sends four bytes to CS1 and four bytes to CS2.\nData bus is eight bits wide and has two address lines (A0 and A1).\nThe address lines select which of the four digits within the display\nwill receive the ASCII data from the data bus.\nSends characters to USART3 depending on BUTTON state.\n\n| Signal | Chip  | Name       | Pin | Chip      | Name | Pin |\n|--------|-------|------------|-----|-----------|------|-----|\n| PMWR   | PIC32 | RD4/PMWR   | 81  | HMDL-2416 | /WR  | 6   |\n| PMRD   | PIC32 | RD5/PMRD   | 82  |           |      |     |\n| PMCS1  | PIC32 | RD11/PMCS1 | 71  | HMDL-2416 | /CE1 | 1   |\n| PMCS2  | PIC32 | RD10/PMCS2 | 70  | HMDL-2416 | /CE1 | 1   |\n| PMA0   | PIC32 | RB15/PMA0  | 44  | HMDL-2416 | A0   | 8   |\n| PMA1   | PIC32 | RB14/PMA1  | 43  | HMDL-2416 | A1   | 7   |\n| PMD0   | PIC32 | RE0/PMD0   | 93  | HMDL-2416 | D0   | 11  |\n| PMD1   | PIC32 | RE1/PMD1   | 94  | HMDL-2416 | D1   | 12  |\n| PMD2   | PIC32 | RE2/PMD2   | 98  | HMDL-2416 | D2   | 13  |\n| PMD3   | PIC32 | RE3/PMD3   | 99  | HMDL-2416 | D3   | 14  |\n| PMD4   | PIC32 | RE4/PMD4   | 100 | HMDL-2416 | D4   | 17  |\n| PMD5   | PIC32 | RE5/PMD5   | 3   | HMDL-2416 | D5   | 16  |\n| PMD6   | PIC32 | RE6/PMD6   | 4   | HMDL-2416 | D6   | 15  |\n| PMD7   | PIC32 | RE7/PMD7   | 5   |           |      |     |\n| Vcc    |       |            |     | HMDL-2416 | Vcc  | 9   |\n| Gnd    |       |            |     | HMDL-2416 | Gnd  | 10  |\n| Gnd    |       |            |     | HMDL-2416 | /CE2 | 2   |\n| Gnd    |       |            |     | HMDL-2416 | CUE  | 4   |\n| Vcc    |       |            |     | HMDL-2416 | /CLR | 3   |\n| Vcc    |       |            |     | HMDL-2416 | /CU  | 5   |\n| Vcc    |       |            |     | HMDL-2416 | /BL  | 18  |\n\nNote that we have two HMDL-2416 displays, so PMCS1 goes to the left-hand\none and PMCS2 goes to the right-hand one.\nThe data bus PMD[0-7] and the address bus PMA[0-1] connects to both\ndisplays in parallel, as does PMWR.\nPMRD is not connected (the displays are write-only) and nor is PMD7\n(they're 7-bit ASCII).\nSome pins on the HMDL-2416 displays are tied HIGH or LOW.\n\n## ili9486test.X ##\n\nPIC32MX is connected to an ILI9486 LCD controller with a 320x480 display.\nData bus is 16 bits wide and has one address line (A0).\nWhen A0 is LOW, the display accepts commands;\nwhen A0 is HIGH, 16-bit pixel data is sent.\n\nThe code goes through a sequence of display tests or demos.\nThere's an image of a sunflower stored in Flash which is displayed.\nOther displays are algorithmically generated, including circles,\nellipses, and straight lines.\nA text font is included and a 16x16 character text display is generated.\nThe goal is to determine if an oscilloscope display can be\ngenerated quickly enough to be used in real-time.\nThis takes 18ms when the PIC32MX is clocked at 48MHz.\n\nThe speed of the display seems to be limited, ultimately,\nby the PBCLK speed of the PIC32MX.\nOn the chip we're using at the moment, this is 48MHz.\nA faster chip is available, running at 80MHz,\nbut seems to require the PBCLK to be slowed down to 40MHz.\nFor CPU-intensive displays, this may be a better choice.\n\nNone of the PIC32MX chips that I have on dev PCBs have enough RAM for a full\n320x480 frame buffer (300k bytes).\nThe PIC32MX250F256L on the unmodified PCB only has enough Flash for an image\nthat's half the size of the display.\nI may swap to a bigger PIC32MX570F512L and make a bigger image,\nbut it's a lot of jumper wires to swap over.\n\n## Dev PCB Pinout ##\n\n| Signal | Chip  | Name       | Pin | Connector | Name     | Pin |\n|--------|-------|------------|-----|-----------|----------|-----|\n| 5V     |       |            |     |    P3     | USB_5V   | 4   |\n| 3.3V   | PIC32 | Vcc        |     |    P3     | 3V3      | 5   |\n| GND    | PIC32 | GND        |     |    P3     | GND_S    | 15  |\n| GND    | PIC32 | GND        |     |    P3     | GND_S    | 25  |\n| LED    | PIC32 | RB9        | 33  |    P2     | RB9      | 33  |\n| SQWAVE | PIC32 | RA7        | 92  |    P3     | RA7      | 42  |\n| RESET  | PIC32 | RD3        | 78  |    P3     | RD3      | 28  |\n| U3TX   | PIC32 | RC1        | 6   |    P2     | RC1      | 6   |\n| U3RX   | PIC32 | RC4        | 9   |    P2     | RC4      | 9   |\n| BUTTON | PIC32 | RA1        | 38  |    P2     | RA1      | 38  |\n\nPIC32 pin numbers are for the 100-pin package.\n\nLED lights when the pin is pulled LOW.\n\nTact switch or pushbutton on RA1, pin 38, with pull-up resistor.\nPin goes LOW when pressed.\n\n## PIC32MX Parallel Master Port Pinout ##\n\n| Signal | Chip  | Name       | Pin | Connector | Name     | Pin |\n|--------|-------|------------|-----|-----------|----------|-----|\n| PMWR   | PIC32 | RD4/PMWR   | 81  |    P3     | DIP1_4   | 31  |\n| PMRD   | PIC32 | RD5/PMRD   | 82  |    P3     | RD5      | 32  |\n| PMCS1  | PIC32 | RD11/PMCS1 | 71  |    P3     | RD11     | 21  |\n| PMCS2  | PIC32 | RD10/PMCS2 | 70  |    P3     | SCK1     | 20  |\n| PMA0   | PIC32 | RB15/PMA0  | 44  |    P2     | HV_En    | 44  |\n| PMA1   | PIC32 | RB14/PMA1  | 43  |    P2     | U1_FAULT | 43  |\n| PMA2   | PIC32 | RG9/PMA2   | 14  |    P2     | RG9      | 14  |\n| PMA3   | PIC32 | RG8/PMA3   | 12  |    P2     | ULEG_TX  | 12  |\n| PMA4   | PIC32 | RG7/PMA4   | 11  |    P2     | ULEG_RX  | 11  |\n| PMA5   | PIC32 | RG6/PMA5   | 10  |    P2     | LEG_EN   | 10  |\n| PMA6   | PIC32 | RA10/PMA6  | 29  |    P2     | RA10     | 29  |\n| PMA7   | PIC32 | RA9/PMA7   | 28  |    P2     | RA9      | 28  |\n| PMA8   | PIC32 | RF5/PMA8   | 50  |    P2     | 3V3FAULT | 50  |\n| PMA9   | PIC32 | RF4/PMA9   | 49  |    P2     | V+FAULT  | 49  |\n| PMA10  | PIC32 | RB13/PMA10 | 42  |    P2     | U1_SENSE | 42  |\n| PMA11  | PIC32 | RB12/PMA11 | 41  |    P2     | RB12     | 41  |\n| PMA12  | PIC32 | RB11/PMA12 | 35  |    P2     | RB11     | 35  |\n| PMA13  | PIC32 | RB10/PMA13 | 34  |    P2     | RB10     | 34  |\n| PMA14  | PIC32 | RD11/PMA14 | 71  |    P3     | RD11     | 21  |\n| PMA15  | PIC32 | RD10/PMA15 | 70  |    P3     | SCK1     | 20  |\n| PMD0   | PIC32 | RE0/PMD0   | 93  |    P3     | RE0      | 43  |\n| PMD1   | PIC32 | RE1/PMD1   | 94  |    P3     | CE1      | 44  |\n| PMD2   | PIC32 | RE2/PMD2   | 98  |    P3     | RE2      | 48  |\n| PMD3   | PIC32 | RE3/PMD3   | 99  |    P3     | SDO1     | 49  |\n| PMD4   | PIC32 | RE4/PMD4   | 100 |    P3     | WP1      | 50  |\n| PMD5   | PIC32 | RE5/PMD5   | 3   |    P2     | LEG_Q2   |  3  |\n| PMD6   | PIC32 | RE6/PMD6   | 4   |    P2     | LEG_POT  |  4  |\n| PMD7   | PIC32 | RE7/PMD7   | 5   |    P2     | RE7      |  5  |\n| PMD8   | PIC32 | RG0/PMD8   | 90  |    P3     | RG0      | 40  |\n| PMD9   | PIC32 | RG1/PMD9   | 89  |    P3     | RG1      | 39  |\n| PMD10  | PIC32 | RF1/PMD10  | 88  |    P3     | RF1      | 38  |\n| PMD11  | PIC32 | RF0/PMD11  | 87  |    P3     | SDI1     | 37  |\n| PMD12  | PIC32 | RD12/PMD12 | 79  |    P3     | RD12     | 29  |\n| PMD13  | PIC32 | RD13/PMD13 | 80  |    P3     | RD13     | 30  |\n| PMD14  | PIC32 | RD6/PMD14  | 83  |    P3     | DIP2_1   | 33  |\n| PMD15  | PIC32 | RD7/PMD15  | 84  |    P3     | DIP2_2   | 34  |\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanachrocomputer%2Fpic32pmp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanachrocomputer%2Fpic32pmp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanachrocomputer%2Fpic32pmp/lists"}