initial commit
This commit is contained in:
commit
bb0fdeff66
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
spi
|
22
.vimspector.json
Normal file
22
.vimspector.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"configurations": {
|
||||
"spi": {
|
||||
"adapter": "vscode-cpptools",
|
||||
"configuration": {
|
||||
"name": "spi (cpp)",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"externalConsole": true,
|
||||
"logging": {
|
||||
"engineLogging": true
|
||||
},
|
||||
"stopOnEntry": true,
|
||||
"stopAtEntry": true,
|
||||
"debugOptions": [],
|
||||
"MIMode": "gdb",
|
||||
"cwd": "~/6502/spi/",
|
||||
"program": "./spi"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
19
Makefile
Normal file
19
Makefile
Normal file
@ -0,0 +1,19 @@
|
||||
CFLAGS = -g -std=c++20 -O2 -DBCM2835_HAVE_LIBCAP
|
||||
LFLAGS = -lbcm2835
|
||||
|
||||
TARGET = spi
|
||||
|
||||
default: $(TARGET)
|
||||
|
||||
.PHONY = clean
|
||||
|
||||
%: %.cpp
|
||||
g++ $< -o $@ $(CFLAGS) $(LFLAGS)
|
||||
|
||||
run: default
|
||||
sudo ./$(TARGET)
|
||||
|
||||
|
||||
|
||||
clean:
|
||||
rm $(TARGET)
|
54
spi.cpp
Normal file
54
spi.cpp
Normal file
@ -0,0 +1,54 @@
|
||||
#include <bcm2835.h>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <vector>
|
||||
|
||||
#define BCM2835
|
||||
|
||||
|
||||
int main(int argc, const char** argv) {
|
||||
if (bcm2835_init() != 1) {
|
||||
printf("Error: Could not initalise gpio libraray\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (bcm2835_spi_begin() != 1) {
|
||||
printf("Error: Could not begin SPI mode. You might need this: https://www.airspayce.com/mikem/bcm2835/ \"Running as root\"\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* if (argc != 2) { */
|
||||
/* printf("Error: Expected exactly one argument (filename), got %d\n", argc); */
|
||||
/* return 1; */
|
||||
/* } */
|
||||
|
||||
bcm2835_spi_chipSelect(BCM2835_SPI_CS0);
|
||||
/* bcm2835_spi_set_speed_hz(5); */
|
||||
bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_65536);
|
||||
bcm2835_spi_setDataMode(BCM2835_SPI_MODE0);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
||||
|
||||
std::string send = "Hello 6502!";
|
||||
/* char send[] = "Hello 6502!"; */
|
||||
std::vector<char> buffer;
|
||||
buffer.reserve(send.size());
|
||||
for (char c : send) {
|
||||
std::cout << c << std::endl;
|
||||
buffer.push_back(c);
|
||||
}
|
||||
/* for (char i = 0; i < 8; i++) { */
|
||||
/* buffer.push_back(i); */
|
||||
/* } */
|
||||
/* buffer.push_back(0b10110101); */
|
||||
bcm2835_spi_transfern(buffer.data(), buffer.size());
|
||||
|
||||
/* std::jthread eepromT(simulateEEPROM, bytes); */
|
||||
/* std::atomic<CurrentState> cs; */
|
||||
/* std::jthread clockT(printBusWithClock, PHI2, std::ref(cs)); */
|
||||
/* /1* auto handler = std::bind(signalHandler, std::placeholders::_1, std::move(eepromT)); *1/ */
|
||||
/* signal(SIGINT, signalHandler); */
|
||||
|
||||
|
||||
bcm2835_spi_end();
|
||||
}
|
Loading…
Reference in New Issue
Block a user