From eec328daaf55c39ed963a753602bd9ffeaefb807 Mon Sep 17 00:00:00 2001
From: Peter Gerwinski <peter.gerwinski@hs-bochum.de>
Date: Mon, 1 Apr 2024 17:24:14 +0200
Subject: [PATCH] =?UTF-8?q?Abschlu=C3=9F=20Sommersemester=202023?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 20230524/bit-ops-01.c       |  19 +++++++++++++++
 20230524/bit-ops-01.s       |  28 ++++++++++++++++++++++
 20230531/Makefile           |   8 +++++++
 20230531/blink_interlaced.s |  46 ++++++++++++++++++++++++++++++++++++
 20230531/download.sh        |   3 +++
 20230620/rtech-20230620.pdf | Bin 222563 -> 222560 bytes
 20230620/rtech-20230620.tex |   2 +-
 7 files changed, 105 insertions(+), 1 deletion(-)
 create mode 100644 20230524/bit-ops-01.c
 create mode 100644 20230524/bit-ops-01.s
 create mode 100644 20230531/Makefile
 create mode 100644 20230531/blink_interlaced.s
 create mode 100755 20230531/download.sh

diff --git a/20230524/bit-ops-01.c b/20230524/bit-ops-01.c
new file mode 100644
index 0000000..da61782
--- /dev/null
+++ b/20230524/bit-ops-01.c
@@ -0,0 +1,19 @@
+#include <avr/io.h>
+
+int main (void)
+{
+  uint8_t mask;
+  DDRD = 0xff;
+  PORTD = 0xf0;
+  mask = 1;
+  mask <<= 3;
+  PORTD |= mask;
+  mask = 1;
+  mask <<= 4;
+  PORTD &= ~mask;
+  mask = 1;
+  mask <<= 0;
+  PORTD ^= mask;
+  while (1);
+  return 0;
+}
diff --git a/20230524/bit-ops-01.s b/20230524/bit-ops-01.s
new file mode 100644
index 0000000..ee8d240
--- /dev/null
+++ b/20230524/bit-ops-01.s
@@ -0,0 +1,28 @@
+	.file	"bit-ops-01.c"
+__SP_H__ = 0x3e
+__SP_L__ = 0x3d
+__SREG__ = 0x3f
+__tmp_reg__ = 0
+__zero_reg__ = 1
+	.text
+.global	main
+	.type	main, @function
+main:
+/* prologue: function */
+/* frame size = 0 */
+/* stack size = 0 */
+.L__stack_usage = 0
+	ldi r24,lo8(-1)
+	out 0xa,r24
+	ldi r24,lo8(-16)
+	out 0xb,r24
+	sbi 0xb,3
+	cbi 0xb,4
+	in r25,0xb
+	ldi r24,lo8(1)
+	eor r24,r25
+	out 0xb,r24
+.L2:
+	rjmp .L2
+	.size	main, .-main
+	.ident	"GCC: (GNU) 5.4.0"
diff --git a/20230531/Makefile b/20230531/Makefile
new file mode 100644
index 0000000..7ae33df
--- /dev/null
+++ b/20230531/Makefile
@@ -0,0 +1,8 @@
+%.elf: %.c
+	avr-gcc -Wall -Os -mmcu=atmega328p $< -o $@
+
+%.hex: %.elf
+	avr-objcopy -O ihex $< $@
+
+download:
+	./download.sh
diff --git a/20230531/blink_interlaced.s b/20230531/blink_interlaced.s
new file mode 100644
index 0000000..bf14c3e
--- /dev/null
+++ b/20230531/blink_interlaced.s
@@ -0,0 +1,46 @@
+    .text
+
+    .global main
+    .type main, @function
+
+main:
+    ldi r24,0xff  ; 1111 1111 to r24
+    out 0x04,r24  ; r24 to 0x04 (DDRB)
+    out 0x0a,r24  ; r24 to 0x0a (DDRD)
+    
+
+loop:
+    ldi r24,0x00
+    out 0x05,r24
+    ldi r24,0x04
+    out 0x0b,r24
+    
+    ldi r26,lo8(7999999)
+    ldi r22,hi8(7999999)
+    ldi r23,hlo8(7999999)
+1:
+    subi r26,1      ; sub immediately
+    sbci r22,0      ; sub carry immediately
+    sbci r23,0
+    brne 1b         ; branch not equal (not zero)
+    rjmp .
+    nop
+
+    ldi r24,0x20
+    out 0x05,r24
+    ldi r24,0x00
+    out 0x0b,r24
+
+    ldi r26,lo8(7999999)
+    ldi r22,hi8(7999999)
+    ldi r23,hlo8(7999999)
+
+1: 
+    subi r26,1  ; 1 cycle
+    sbci r22,0
+    sbci r23,0
+    brne 1b     ; 2 cycles when jump, 1 if not
+    rjmp .     ; 2 cycle nop
+    nop         ; 1 cycle nop
+
+    jmp loop
diff --git a/20230531/download.sh b/20230531/download.sh
new file mode 100755
index 0000000..770c3b5
--- /dev/null
+++ b/20230531/download.sh
@@ -0,0 +1,3 @@
+port=$(ls -rt /dev/ttyACM* | tail -1)
+echo avrdude -P $port -c arduino -p m328p -U flash:w:$(ls -rt *.hex | tail -1)
+avrdude -P $port -c arduino -p m328p -U flash:w:$(ls -rt *.hex | tail -1) 2>/dev/null
diff --git a/20230620/rtech-20230620.pdf b/20230620/rtech-20230620.pdf
index 465e2ee19360113c72429ef38943f84b9d297681..c6878ab9b8fcd7a62c52719772b826faffdbaa13 100644
GIT binary patch
delta 2092
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

delta 2089
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

diff --git a/20230620/rtech-20230620.tex b/20230620/rtech-20230620.tex
index 507e64e..655a4e5 100644
--- a/20230620/rtech-20230620.tex
+++ b/20230620/rtech-20230620.tex
@@ -224,7 +224,7 @@
       .ppm.xz-Dateien sind kleiner als .png-Dateien
     \item
       mehrere Dateien, zusammengefaßt:\\
-      .ar, .tar
+      .a, .tar
     \item
       mehrere Dateien, zusammengefaßt und komprimiert:\\
       .tar.gz, .tar.bz2, .tar.xz, .zip, .7z
-- 
GitLab