dev: Getting the GPIO and such set up, starting to poke at NeoPixel

This commit is contained in:
A.M. Rowsell 2025-08-03 13:12:09 -04:00
commit ba27097ced
Signed by untrusted user who does not match committer: amr
GPG key ID: E0879EDBDB0CA7B1
4 changed files with 237 additions and 16 deletions

View file

@ -7,7 +7,7 @@
#ifndef NEOPIXEL_HPP
#define NEOPIXEL_HPP
#include <stdint.h>
#include <cstdint>
class NeoPixel {
public:

View file

@ -60,6 +60,12 @@
volatile uint8_t spi_rx_buffer[8];
// dummy open to get rid of linker error
extern "C" int open(const char *buf, int flags, int mode) {
// Always return failure — no file system.
return -1;
}
void sendChar(uint8_t c) {
U1TXREG = c;
while(!U1STAbits.TRMT); // wait for transmission

View file

@ -41,7 +41,7 @@
</logicalFolder>
<projectmakefile>Makefile</projectmakefile>
<confs>
<conf name="default" type="2">
<conf name="Debug" type="2">
<toolsSet>
<developmentServer>localhost</developmentServer>
<targetDevice>PIC32MX270F256B</targetDevice>
@ -85,7 +85,6 @@
<C32>
<property key="additional-warnings" value="true"/>
<property key="addresss-attribute-use" value="false"/>
<property key="appendMe" value=""/>
<property key="cast-align" value="false"/>
<property key="code-model" value="default"/>
<property key="const-model" value="default"/>
@ -102,7 +101,7 @@
<property key="extra-include-directories" value=""/>
<property key="generate-16-bit-code" value="false"/>
<property key="generate-micro-compressed-code" value="false"/>
<property key="isolate-each-function" value="true"/>
<property key="isolate-each-function" value="false"/>
<property key="keep-inline" value="false"/>
<property key="make-warnings-into-errors" value="true"/>
<property key="oXC16gcc-errata" value=""/>
@ -114,7 +113,7 @@
<property key="oXC16gcc-sfr-warn" value="false"/>
<property key="oXC16gcc-smar-io-lvl" value="1"/>
<property key="oXC16gcc-smart-io-fmt" value=""/>
<property key="optimization-level" value="-O1"/>
<property key="optimization-level" value="-O0"/>
<property key="place-data-into-section" value="true"/>
<property key="post-instruction-scheduling" value="default"/>
<property key="pre-instruction-scheduling" value="default"/>
@ -144,6 +143,220 @@
<property key="generate-micro-compressed-code" value="false"/>
<property key="keep-locals" value="false"/>
<property key="list-assembly" value="false"/>
<property key="list-section-info" value="true"/>
<property key="list-source" value="false"/>
<property key="list-symbols" value="false"/>
<property key="oXC16asm-extra-opts" value=""/>
<property key="oXC32asm-list-to-file" value="false"/>
<property key="omit-debug-dirs" value="false"/>
<property key="omit-forms" value="false"/>
<property key="preprocessor-macros" value=""/>
<property key="relax" value="false"/>
<property key="warning-level" value=""/>
</C32-AS>
<C32-CO>
<property key="coverage-enable" value=""/>
<property key="stack-guidance" value="false"/>
</C32-CO>
<C32-LD>
<property key="additional-options-use-response-files" value="false"/>
<property key="additional-options-write-sla" value="false"/>
<property key="allocate-dinit" value="false"/>
<property key="code-dinit" value="false"/>
<property key="ebase-addr" value=""/>
<property key="enable-check-sections" value="false"/>
<property key="enable-data-init" value="true"/>
<property key="enable-default-isr" value="true"/>
<property key="exclude-floating-point-library" value="false"/>
<property key="exclude-standard-libraries" value="false"/>
<property key="extra-lib-directories" value=""/>
<property key="fill-flash-options-addr" value=""/>
<property key="fill-flash-options-const" value=""/>
<property key="fill-flash-options-how" value="0"/>
<property key="fill-flash-options-inc-const" value="1"/>
<property key="fill-flash-options-increment" value=""/>
<property key="fill-flash-options-seq" value=""/>
<property key="fill-flash-options-what" value="0"/>
<property key="generate-16-bit-code" value="false"/>
<property key="generate-cross-reference-file" value="true"/>
<property key="generate-micro-compressed-code" value="false"/>
<property key="heap-size" value="1000"/>
<property key="input-libraries" value=""/>
<property key="kseg-length" value=""/>
<property key="kseg-origin" value=""/>
<property key="linker-symbols" value=""/>
<property key="map-file" value="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"/>
<property key="no-device-startup-code" value="false"/>
<property key="no-ivt" value="false"/>
<property key="no-startup-files" value="false"/>
<property key="oXC16ld-force-link" value="false"/>
<property key="oXC16ld-no-smart-io" value="false"/>
<property key="oXC16ld-stackguard" value="16"/>
<property key="oXC32ld-extra-opts" value=""/>
<property key="optimization-level" value="-O1"/>
<property key="preprocessor-macros" value=""/>
<property key="remove-unused-sections" value="true"/>
<property key="report-memory-usage" value="true"/>
<property key="serial-length" value=""/>
<property key="serial-origin" value=""/>
<property key="stack-size" value="100"/>
<property key="symbol-stripping" value=""/>
<property key="trace-symbols" value=""/>
<property key="warn-section-align" value="false"/>
</C32-LD>
<C32CPP>
<property key="additional-warnings" value="false"/>
<property key="addresss-attribute-use" value="false"/>
<property key="check-new" value="false"/>
<property key="eh-specs" value="true"/>
<property key="enable-app-io" value="false"/>
<property key="enable-omit-frame-pointer" value="false"/>
<property key="enable-symbols" value="true"/>
<property key="enable-unroll-loops" value="false"/>
<property key="exceptions" value="true"/>
<property key="exclude-floating-point" value="false"/>
<property key="extra-include-directories" value=""/>
<property key="generate-16-bit-code" value="false"/>
<property key="generate-micro-compressed-code" value="false"/>
<property key="isolate-each-function" value="false"/>
<property key="make-warnings-into-errors" value="false"/>
<property key="optimization-level" value=""/>
<property key="place-data-into-section" value="true"/>
<property key="post-instruction-scheduling" value="default"/>
<property key="pre-instruction-scheduling" value="default"/>
<property key="preprocessor-macros" value=""/>
<property key="rtti" value="true"/>
<property key="strict-ansi" value="false"/>
<property key="toplevel-reordering" value=""/>
<property key="unaligned-access" value=""/>
<property key="use-cci" value="false"/>
<property key="use-iar" value="false"/>
<property key="use-indirect-calls" value="false"/>
<appendMe value="-std=c++17"/>
</C32CPP>
<C32Global>
<property key="combine-sourcefiles" value="false"/>
<property key="common-include-directories" value=""/>
<property key="common-macros" value=""/>
<property key="dual-boot-partition" value="0"/>
<property key="generic-16-bit" value="false"/>
<property key="gp-relative-option" value=""/>
<property key="legacy-libc" value="true"/>
<property key="mdtcm" value=""/>
<property key="mitcm" value=""/>
<property key="mpreserve-all" value="false"/>
<property key="mstacktcm" value="false"/>
<property key="omit-pack-options" value="1"/>
<property key="preserve-all" value="false"/>
<property key="preserve-file" value=""/>
<property key="relaxed-math" value="false"/>
<property key="save-temps" value="false"/>
<property key="stack-smashing" value=""/>
<property key="wpo-lto" value="false"/>
</C32Global>
</conf>
<conf name="Production" type="2">
<toolsSet>
<developmentServer>localhost</developmentServer>
<targetDevice>PIC32MX270F256B</targetDevice>
<targetHeader></targetHeader>
<targetPluginBoard></targetPluginBoard>
<platformTool>noID</platformTool>
<languageToolchain>XC32</languageToolchain>
<languageToolchainVersion>4.60</languageToolchainVersion>
<platform>2</platform>
</toolsSet>
<packs>
<pack name="PIC32MX_DFP" vendor="Microchip" version="1.6.369"/>
</packs>
<ScriptingSettings>
</ScriptingSettings>
<compileType>
<linkerTool>
<linkerLibItems>
</linkerLibItems>
</linkerTool>
<archiverTool>
</archiverTool>
<loading>
<useAlternateLoadableFile>false</useAlternateLoadableFile>
<parseOnProdLoad>false</parseOnProdLoad>
<alternateLoadableFile></alternateLoadableFile>
</loading>
<subordinates>
</subordinates>
</compileType>
<makeCustomizationType>
<makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>
<makeUseCleanTarget>false</makeUseCleanTarget>
<makeCustomizationPreStep></makeCustomizationPreStep>
<makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>
<makeCustomizationPostStep></makeCustomizationPostStep>
<makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID>
<makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>
<makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>
</makeCustomizationType>
<C32>
<property key="additional-warnings" value="false"/>
<property key="addresss-attribute-use" value="false"/>
<property key="cast-align" value="false"/>
<property key="code-model" value="default"/>
<property key="const-model" value="default"/>
<property key="data-model" value="default"/>
<property key="disable-instruction-scheduling" value="false"/>
<property key="enable-app-io" value="false"/>
<property key="enable-omit-frame-pointer" value="false"/>
<property key="enable-procedural-abstraction" value="false"/>
<property key="enable-short-double" value="false"/>
<property key="enable-symbols" value="false"/>
<property key="enable-unroll-loops" value="false"/>
<property key="exclude-floating-point" value="true"/>
<property key="expand-pragma-config" value="false"/>
<property key="extra-include-directories" value=""/>
<property key="generate-16-bit-code" value="false"/>
<property key="generate-micro-compressed-code" value="false"/>
<property key="isolate-each-function" value="true"/>
<property key="keep-inline" value="false"/>
<property key="make-warnings-into-errors" value="false"/>
<property key="oXC16gcc-errata" value=""/>
<property key="oXC16gcc-large-aggregate" value="false"/>
<property key="oXC16gcc-mpa-lvl" value=""/>
<property key="oXC16gcc-name-text-sec" value=""/>
<property key="oXC16gcc-near-chars" value="false"/>
<property key="oXC16gcc-no-isr-warn" value="false"/>
<property key="oXC16gcc-sfr-warn" value="false"/>
<property key="oXC16gcc-smar-io-lvl" value="1"/>
<property key="oXC16gcc-smart-io-fmt" value=""/>
<property key="optimization-level" value="-O2"/>
<property key="place-data-into-section" value="true"/>
<property key="post-instruction-scheduling" value="default"/>
<property key="pre-instruction-scheduling" value="default"/>
<property key="preprocessor-macros" value=""/>
<property key="scalar-model" value="default"/>
<property key="strict-ansi" value="false"/>
<property key="support-ansi" value="false"/>
<property key="tentative-definitions" value="-fcommon"/>
<property key="toplevel-reordering" value=""/>
<property key="unaligned-access" value=""/>
<property key="use-cci" value="false"/>
<property key="use-iar" value="false"/>
<property key="use-indirect-calls" value="false"/>
</C32>
<C32-AR>
<property key="additional-options-chop-files" value="false"/>
</C32-AR>
<C32-AS>
<property key="assembler-symbols" value=""/>
<property key="enable-symbols" value="false"/>
<property key="exclude-floating-point-library" value="true"/>
<property key="expand-macros" value="false"/>
<property key="extra-include-directories-for-assembler" value=""/>
<property key="extra-include-directories-for-preprocessor" value=""/>
<property key="false-conditionals" value="false"/>
<property key="generate-16-bit-code" value="false"/>
<property key="generate-micro-compressed-code" value="false"/>
<property key="keep-locals" value="false"/>
<property key="list-assembly" value="false"/>
<property key="list-section-info" value="false"/>
<property key="list-source" value="false"/>
<property key="list-symbols" value="false"/>
@ -163,7 +376,6 @@
<property key="additional-options-use-response-files" value="false"/>
<property key="additional-options-write-sla" value="false"/>
<property key="allocate-dinit" value="false"/>
<property key="appendMe" value=""/>
<property key="code-dinit" value="false"/>
<property key="ebase-addr" value=""/>
<property key="enable-check-sections" value="false"/>
@ -180,9 +392,9 @@
<property key="fill-flash-options-seq" value=""/>
<property key="fill-flash-options-what" value="0"/>
<property key="generate-16-bit-code" value="false"/>
<property key="generate-cross-reference-file" value="false"/>
<property key="generate-cross-reference-file" value="true"/>
<property key="generate-micro-compressed-code" value="false"/>
<property key="heap-size" value="0"/>
<property key="heap-size" value="1000"/>
<property key="input-libraries" value=""/>
<property key="kseg-length" value=""/>
<property key="kseg-origin" value=""/>
@ -195,13 +407,13 @@
<property key="oXC16ld-no-smart-io" value="false"/>
<property key="oXC16ld-stackguard" value="16"/>
<property key="oXC32ld-extra-opts" value=""/>
<property key="optimization-level" value=""/>
<property key="optimization-level" value="-O1"/>
<property key="preprocessor-macros" value=""/>
<property key="remove-unused-sections" value="true"/>
<property key="report-memory-usage" value="false"/>
<property key="report-memory-usage" value="true"/>
<property key="serial-length" value=""/>
<property key="serial-origin" value=""/>
<property key="stack-size" value=""/>
<property key="stack-size" value="100"/>
<property key="symbol-stripping" value=""/>
<property key="trace-symbols" value=""/>
<property key="warn-section-align" value="false"/>
@ -209,7 +421,6 @@
<C32CPP>
<property key="additional-warnings" value="false"/>
<property key="addresss-attribute-use" value="false"/>
<property key="appendMe" value=""/>
<property key="check-new" value="false"/>
<property key="eh-specs" value="true"/>
<property key="enable-app-io" value="false"/>
@ -217,14 +428,14 @@
<property key="enable-symbols" value="true"/>
<property key="enable-unroll-loops" value="false"/>
<property key="exceptions" value="true"/>
<property key="exclude-floating-point" value="false"/>
<property key="exclude-floating-point" value="true"/>
<property key="extra-include-directories" value=""/>
<property key="generate-16-bit-code" value="false"/>
<property key="generate-micro-compressed-code" value="false"/>
<property key="isolate-each-function" value="true"/>
<property key="make-warnings-into-errors" value="false"/>
<property key="optimization-level" value="-O1"/>
<property key="place-data-into-section" value="false"/>
<property key="optimization-level" value="-O2"/>
<property key="place-data-into-section" value="true"/>
<property key="post-instruction-scheduling" value="default"/>
<property key="pre-instruction-scheduling" value="default"/>
<property key="preprocessor-macros" value=""/>

View file

@ -11,7 +11,11 @@
<sourceRootList/>
<confList>
<confElem>
<name>default</name>
<name>Debug</name>
<type>2</type>
</confElem>
<confElem>
<name>Production</name>
<type>2</type>
</confElem>
</confList>