Today I learned about CPUlator Computer System Simulator while watching Assembly Language Programming with ARM – Full Tutorial for Beginners.
Author Archives: Jay Jay
C Pointer Operator Precedence
I have to think carefully about this every single bloody time. As seen here.
And… here we are
This week what we have all been fearing has happened to me: GitHub Copilot generated code for me which seems to meet all the requirements but which I don’t understand very much at all.
To date GitHub Copilot for me has just been mostly a useful auto-complete tool and it hasn’t given me any code which I didn’t understand. But with this code (to control two different hardware timers/counters on my Arduino) I don’t really understand it at all. I have passing familiarity with some of the registers used because I saw them named in the datasheet (which I have only skimmed so far) but basically I don’t understand how this works.
It is tempting to ignore the fact that I don’t fully understand and move on, but there’s a part of me which wants to return to the datasheet so I can understand what every assignment GitHub Copilot offered actually does and what every value it calculated implies. Is that the best use of my time?
ARM Cortex-M0
Controlling Arduino Uno with Serial commands
@kline helped me with Phase 1 of my Crustacean Chirpy Chip Challenge project, which I have completed (sort of). I got the programming done but I didn’t do all the reading (yet).
Note to self: My Arduino Uno knockoff identifies itself as a “QinHeng Electronics USB Serial” USB device.
This is my code:
enum state { OFF, ON, FLASH };
enum state state = OFF;
int blink_pin = 13;
void setup() {
pinMode( blink_pin, OUTPUT );
Serial.begin( 9600 );
}
void loop() {
if ( Serial.available() > 0 ) { read_command(); }
switch ( state ) {
case ON :
digitalWrite( blink_pin, HIGH );
break;
case OFF :
digitalWrite( blink_pin, LOW );
break;
case FLASH :
int pin = digitalRead( blink_pin );
digitalWrite( blink_pin, !pin );
delay( 500 );
digitalWrite( blink_pin, pin );
delay( 500 );
break;
}
}
void read_command() {
String command = Serial.readString();
command.trim();
command.toLowerCase();
Serial.print( "Command: " );
Serial.println( command );
if ( command == "on" ) {
state = ON;
}
else if ( command == "off" ) {
state = OFF;
}
else if ( command == "flash" ) {
state = FLASH;
}
else {
Serial.println( "Unknown command." );
}
}
The code which would actually implement the spec, as given:
void read_command() {
char c = Serial.read();
switch ( c ) {
case 'a' :
state = ON;
break;
case 's' :
state = OFF;
break;
}
}
Embedded Systems with ARM Cortex-M Microcontrollers in Assembly Language and C
Today I learned about Embedded Systems with ARM Cortex-M Microcontrollers in Assembly Language and C (Fourth Edition) by Yifeng Zhu while watching Lecture 9: Interrupts on YouTube. The full list of associated lectures are here: Short Lectures.
Data Analysis with Python for Excel Users – Full Course
Today I learned a little about Python, Jupyter, and Pandas in this video: Data Analysis with Python for Excel Users – Full Course.
PicoRC: PicoPSU on Retro Computers!
Today on 0084 A battery powered 486DX2/66 setup and a 386 motherboard with a fancy BIOS I learned about PicoRC: PicoPSU on Retro Computers and also ATX4VC: ATX Power on Retro Computers.
LTspice tutorial – EP4 How to import libraries and component models
I learned a lot today in this video: LTspice tutorial – EP4 How to import libraries and component models.
Descent3 Source Code
Today on lobsters there was a link to the Descent3 Source Code. Very cool.

