From 1c332ed83839e06d86ce37ed9843064ed0c0b7fd Mon Sep 17 00:00:00 2001 From: Peter Gerwinski <peter.gerwinski@hs-bochum.de> Date: Wed, 31 May 2023 12:03:08 +0200 Subject: [PATCH] Vortragsfolien und Beispiele 31.5.2023 --- 20230531/blink-01.hex | 13 + 20230531/blink-01.s | 45 + 20230531/blink-02.hex | 13 + 20230531/blink-02.s | 45 + 20230531/blink-03.hex | 13 + 20230531/blink-03.s | 45 + 20230531/blink-04.hex | 13 + 20230531/blink-04.s | 45 + 20230531/blink-05.hex | 13 + 20230531/blink-05.s | 45 + 20230531/io-ports-and-interrupts.pdf | 1 + .../logo-hochschule-bochum-cvh-text-v2.pdf | 1 + 20230531/logo-hochschule-bochum.pdf | 1 + 20230531/morse-07.c | 83 ++ 20230531/morse-08.c | 81 ++ 20230531/morse-08.hex | 42 + 20230531/morse-08.s | 403 ++++++ 20230531/pgslides.sty | 1 + 20230531/rtech-20230531.pdf | Bin 0 -> 104001 bytes 20230531/rtech-20230531.tex | 1106 +++++++++++++++++ 20 files changed, 2009 insertions(+) create mode 100644 20230531/blink-01.hex create mode 100644 20230531/blink-01.s create mode 100644 20230531/blink-02.hex create mode 100644 20230531/blink-02.s create mode 100644 20230531/blink-03.hex create mode 100644 20230531/blink-03.s create mode 100644 20230531/blink-04.hex create mode 100644 20230531/blink-04.s create mode 100644 20230531/blink-05.hex create mode 100644 20230531/blink-05.s create mode 120000 20230531/io-ports-and-interrupts.pdf create mode 120000 20230531/logo-hochschule-bochum-cvh-text-v2.pdf create mode 120000 20230531/logo-hochschule-bochum.pdf create mode 100644 20230531/morse-07.c create mode 100644 20230531/morse-08.c create mode 100644 20230531/morse-08.hex create mode 100644 20230531/morse-08.s create mode 120000 20230531/pgslides.sty create mode 100644 20230531/rtech-20230531.pdf create mode 100644 20230531/rtech-20230531.tex diff --git a/20230531/blink-01.hex b/20230531/blink-01.hex new file mode 100644 index 0000000..23be3aa --- /dev/null +++ b/20230531/blink-01.hex @@ -0,0 +1,13 @@ +:100000000C9434000C943E000C943E000C943E0082 +:100010000C943E000C943E000C943E000C943E0068 +:100020000C943E000C943E000C943E000C943E0058 +:100030000C943E000C943E000C943E000C943E0048 +:100040000C943E000C943E000C943E000C943E0038 +:100050000C943E000C943E000C943E000C943E0028 +:100060000C943E000C943E0011241FBECFEFD8E04C +:10007000DEBFCDBF0E9440000C945A000C940000DB +:100080008FEF8AB980E08BB9AFEF61E17AE7A150D9 +:1000900060407040E1F700C0000084E08BB9AFEF32 +:1000A00061E17AE7A15060407040E1F700C00000D4 +:0800B0000C944200F894FFCF0C +:00000001FF diff --git a/20230531/blink-01.s b/20230531/blink-01.s new file mode 100644 index 0000000..7d4c627 --- /dev/null +++ b/20230531/blink-01.s @@ -0,0 +1,45 @@ + .text ; "Dies ist ausführbarer Code." + + .global main ; main-Label nach außen sichtbar machen + .type main, @function + +main: ; Einsprungpunkt: Hier geht's los. + + ldi r24,0xff ; Alle 8 Anschlüsse auf "Output" schalten + out 0x0a,r24 ; In DDRD schreiben (Port Nr. 0x0a, Speicherzelle 0x2a) + +loop: + ldi r24,0x00 ; LED ausschalten (angeschlossen an Ausgang Nr. 2) + out 0x0b,r24 ; In PORTD schreiben (Port Nr. 0x0b, Speicherzelle 0x2b) + + ldi r26,lo8(7999999) ; Warteschleife: von 7999999 rückwärts bis 0 zählen + ldi r22,hi8(7999999) ; Die 24-Bit-Zahl 7999999 in 3 8-Bit-Register + ldi r23,hlo8(7999999) +1: + subi r26,1 ; Subtrahiere 1 von den untersten 8 Bit + sbci r22,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry) + sbci r23,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry) + brne 1b ; branch if not equal (= not zero): bedingter Sprung zu Label 1 + rjmp . + nop + + ldi r24,0x04 ; LED einschalten (angeschlossen an Ausgang Nr. 2) + out 0x0b,r24 ; In PORTD schreiben (Port Nr. 0x0b, Speicherzelle 0x2b) + + ldi r26,lo8(7999999) ; 1 Taktzyklus + ldi r22,hi8(7999999) ; 1 Taktzyklus + ldi r23,hlo8(7999999) ; 1 Taktzyklus --> 3 Taktzyklen vor der Schleife +1: + subi r26,1 ; 1 Taktzyklus + sbci r22,0 ; 1 Taktzyklus + sbci r23,0 ; 1 Taktzyklus + brne 1b ; 2 Taktzyklen, wenn er springt, 1 Takzyklus, wenn er nicht springt + ; --> 5 Taktzyklen pro Schleifendurchlauf + rjmp . ; 2 Taktzyklen lang nichts machen + nop ; 1 Taktzyklus lang nichts machen + ; --> zusätzlich zu der Schleife weitere 3 + 3 = 6 Taktzyklen warten + ; --> Die Schleife wird sozusagen 8000000 mal durchlaufen + ; (7999999 Durchläufe + Extra-Taktzyklen) + ; und verbraucht dabei jedesmal 5 Taktzyklen. + ; Bei 16000000 Taktzyklen pro Sekunde sind das insgesamt 2.5 Sekunden. + jmp loop diff --git a/20230531/blink-02.hex b/20230531/blink-02.hex new file mode 100644 index 0000000..209f9c5 --- /dev/null +++ b/20230531/blink-02.hex @@ -0,0 +1,13 @@ +:100000000C9434000C943E000C943E000C943E0082 +:100010000C943E000C943E000C943E000C943E0068 +:100020000C943E000C943E000C943E000C943E0058 +:100030000C943E000C943E000C943E000C943E0048 +:100040000C943E000C943E000C943E000C943E0038 +:100050000C943E000C943E000C943E000C943E0028 +:100060000C943E000C943E0011241FBECFEFD8E04C +:10007000DEBFCDBF0E9440000C945A000C940000DB +:100080008FEF8AB980E085B9AFEF61E17AE7A150DF +:1000900060407040E1F700C0000084E085B9AFEF38 +:1000A00061E17AE7A15060407040E1F700C00000D4 +:0800B0000C944200F894FFCF0C +:00000001FF diff --git a/20230531/blink-02.s b/20230531/blink-02.s new file mode 100644 index 0000000..c171558 --- /dev/null +++ b/20230531/blink-02.s @@ -0,0 +1,45 @@ + .text ; "Dies ist ausführbarer Code." + + .global main ; main-Label nach außen sichtbar machen + .type main, @function + +main: ; Einsprungpunkt: Hier geht's los. + + ldi r24,0xff ; Alle 8 Anschlüsse auf "Output" schalten + out 0x0a,r24 ; In DDRD schreiben (Port Nr. 0x0a, Speicherzelle 0x2a) + +loop: + ldi r24,0x00 ; LED ausschalten (angeschlossen an Ausgang Nr. 2) + out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25) + + ldi r26,lo8(7999999) ; Warteschleife: von 7999999 rückwärts bis 0 zählen + ldi r22,hi8(7999999) ; Die 24-Bit-Zahl 7999999 in 3 8-Bit-Register + ldi r23,hlo8(7999999) +1: + subi r26,1 ; Subtrahiere 1 von den untersten 8 Bit + sbci r22,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry) + sbci r23,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry) + brne 1b ; branch if not equal (= not zero): bedingter Sprung zu Label 1 + rjmp . + nop + + ldi r24,0x04 ; LED einschalten (angeschlossen an Ausgang Nr. 2) + out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25) + + ldi r26,lo8(7999999) ; 1 Taktzyklus + ldi r22,hi8(7999999) ; 1 Taktzyklus + ldi r23,hlo8(7999999) ; 1 Taktzyklus --> 3 Taktzyklen vor der Schleife +1: + subi r26,1 ; 1 Taktzyklus + sbci r22,0 ; 1 Taktzyklus + sbci r23,0 ; 1 Taktzyklus + brne 1b ; 2 Taktzyklen, wenn er springt, 1 Takzyklus, wenn er nicht springt + ; --> 5 Taktzyklen pro Schleifendurchlauf + rjmp . ; 2 Taktzyklen lang nichts machen + nop ; 1 Taktzyklus lang nichts machen + ; --> zusätzlich zu der Schleife weitere 3 + 3 = 6 Taktzyklen warten + ; --> Die Schleife wird sozusagen 8000000 mal durchlaufen + ; (7999999 Durchläufe + Extra-Taktzyklen) + ; und verbraucht dabei jedesmal 5 Taktzyklen. + ; Bei 16000000 Taktzyklen pro Sekunde sind das insgesamt 2.5 Sekunden. + jmp loop diff --git a/20230531/blink-03.hex b/20230531/blink-03.hex new file mode 100644 index 0000000..0695d1c --- /dev/null +++ b/20230531/blink-03.hex @@ -0,0 +1,13 @@ +:100000000C9434000C943E000C943E000C943E0082 +:100010000C943E000C943E000C943E000C943E0068 +:100020000C943E000C943E000C943E000C943E0058 +:100030000C943E000C943E000C943E000C943E0048 +:100040000C943E000C943E000C943E000C943E0038 +:100050000C943E000C943E000C943E000C943E0028 +:100060000C943E000C943E0011241FBECFEFD8E04C +:10007000DEBFCDBF0E9440000C945A000C940000DB +:100080008FEF8AB980E085B9AFEF61E17AE7A150DF +:1000900060407040E1F700C0000083E185B9AFEF38 +:1000A00061E17AE7A15060407040E1F700C00000D4 +:0800B0000C944200F894FFCF0C +:00000001FF diff --git a/20230531/blink-03.s b/20230531/blink-03.s new file mode 100644 index 0000000..70d033a --- /dev/null +++ b/20230531/blink-03.s @@ -0,0 +1,45 @@ + .text ; "Dies ist ausführbarer Code." + + .global main ; main-Label nach außen sichtbar machen + .type main, @function + +main: ; Einsprungpunkt: Hier geht's los. + + ldi r24,0xff ; Alle 8 Anschlüsse auf "Output" schalten + out 0x0a,r24 ; In DDRD schreiben (Port Nr. 0x0a, Speicherzelle 0x2a) + +loop: + ldi r24,0x00 ; LED ausschalten (angeschlossen an Ausgang Nr. 2) + out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25) + + ldi r26,lo8(7999999) ; Warteschleife: von 7999999 rückwärts bis 0 zählen + ldi r22,hi8(7999999) ; Die 24-Bit-Zahl 7999999 in 3 8-Bit-Register + ldi r23,hlo8(7999999) +1: + subi r26,1 ; Subtrahiere 1 von den untersten 8 Bit + sbci r22,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry) + sbci r23,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry) + brne 1b ; branch if not equal (= not zero): bedingter Sprung zu Label 1 + rjmp . + nop + + ldi r24,0x13 ; LED einschalten (angeschlossen an Ausgang Nr. 2) + out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25) + + ldi r26,lo8(7999999) ; 1 Taktzyklus + ldi r22,hi8(7999999) ; 1 Taktzyklus + ldi r23,hlo8(7999999) ; 1 Taktzyklus --> 3 Taktzyklen vor der Schleife +1: + subi r26,1 ; 1 Taktzyklus + sbci r22,0 ; 1 Taktzyklus + sbci r23,0 ; 1 Taktzyklus + brne 1b ; 2 Taktzyklen, wenn er springt, 1 Takzyklus, wenn er nicht springt + ; --> 5 Taktzyklen pro Schleifendurchlauf + rjmp . ; 2 Taktzyklen lang nichts machen + nop ; 1 Taktzyklus lang nichts machen + ; --> zusätzlich zu der Schleife weitere 3 + 3 = 6 Taktzyklen warten + ; --> Die Schleife wird sozusagen 8000000 mal durchlaufen + ; (7999999 Durchläufe + Extra-Taktzyklen) + ; und verbraucht dabei jedesmal 5 Taktzyklen. + ; Bei 16000000 Taktzyklen pro Sekunde sind das insgesamt 2.5 Sekunden. + jmp loop diff --git a/20230531/blink-04.hex b/20230531/blink-04.hex new file mode 100644 index 0000000..3ba5573 --- /dev/null +++ b/20230531/blink-04.hex @@ -0,0 +1,13 @@ +:100000000C9434000C943E000C943E000C943E0082 +:100010000C943E000C943E000C943E000C943E0068 +:100020000C943E000C943E000C943E000C943E0058 +:100030000C943E000C943E000C943E000C943E0048 +:100040000C943E000C943E000C943E000C943E0038 +:100050000C943E000C943E000C943E000C943E0028 +:100060000C943E000C943E0011241FBECFEFD8E04C +:10007000DEBFCDBF0E9440000C945A000C940000DB +:100080008FEF8AB980E085B9AFEF61E17AE7A150DF +:1000900060407040E1F700C0000080E285B9AFEF3A +:1000A00061E17AE7A15060407040E1F700C00000D4 +:0800B0000C944200F894FFCF0C +:00000001FF diff --git a/20230531/blink-04.s b/20230531/blink-04.s new file mode 100644 index 0000000..c2944f5 --- /dev/null +++ b/20230531/blink-04.s @@ -0,0 +1,45 @@ + .text ; "Dies ist ausführbarer Code." + + .global main ; main-Label nach außen sichtbar machen + .type main, @function + +main: ; Einsprungpunkt: Hier geht's los. + + ldi r24,0xff ; Alle 8 Anschlüsse auf "Output" schalten + out 0x0a,r24 ; In DDRD schreiben (Port Nr. 0x0a, Speicherzelle 0x2a) + +loop: + ldi r24,0x00 ; LED ausschalten (angeschlossen an Ausgang Nr. 2) + out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25) + + ldi r26,lo8(7999999) ; Warteschleife: von 7999999 rückwärts bis 0 zählen + ldi r22,hi8(7999999) ; Die 24-Bit-Zahl 7999999 in 3 8-Bit-Register + ldi r23,hlo8(7999999) +1: + subi r26,1 ; Subtrahiere 1 von den untersten 8 Bit + sbci r22,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry) + sbci r23,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry) + brne 1b ; branch if not equal (= not zero): bedingter Sprung zu Label 1 + rjmp . + nop + + ldi r24,0x20 ; LED einschalten (angeschlossen an Ausgang Nr. 2) + out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25) + + ldi r26,lo8(7999999) ; 1 Taktzyklus + ldi r22,hi8(7999999) ; 1 Taktzyklus + ldi r23,hlo8(7999999) ; 1 Taktzyklus --> 3 Taktzyklen vor der Schleife +1: + subi r26,1 ; 1 Taktzyklus + sbci r22,0 ; 1 Taktzyklus + sbci r23,0 ; 1 Taktzyklus + brne 1b ; 2 Taktzyklen, wenn er springt, 1 Takzyklus, wenn er nicht springt + ; --> 5 Taktzyklen pro Schleifendurchlauf + rjmp . ; 2 Taktzyklen lang nichts machen + nop ; 1 Taktzyklus lang nichts machen + ; --> zusätzlich zu der Schleife weitere 3 + 3 = 6 Taktzyklen warten + ; --> Die Schleife wird sozusagen 8000000 mal durchlaufen + ; (7999999 Durchläufe + Extra-Taktzyklen) + ; und verbraucht dabei jedesmal 5 Taktzyklen. + ; Bei 16000000 Taktzyklen pro Sekunde sind das insgesamt 2.5 Sekunden. + jmp loop diff --git a/20230531/blink-05.hex b/20230531/blink-05.hex new file mode 100644 index 0000000..58d03d5 --- /dev/null +++ b/20230531/blink-05.hex @@ -0,0 +1,13 @@ +:100000000C9434000C943E000C943E000C943E0082 +:100010000C943E000C943E000C943E000C943E0068 +:100020000C943E000C943E000C943E000C943E0058 +:100030000C943E000C943E000C943E000C943E0048 +:100040000C943E000C943E000C943E000C943E0038 +:100050000C943E000C943E000C943E000C943E0028 +:100060000C943E000C943E0011241FBECFEFD8E04C +:10007000DEBFCDBF0E9440000C945A000C940000DB +:100080008FEF84B980E085B9AFEF61E17AE7A150E5 +:1000900060407040E1F700C0000080E285B9AFEF3A +:1000A00061E17AE7A15060407040E1F700C00000D4 +:0800B0000C944200F894FFCF0C +:00000001FF diff --git a/20230531/blink-05.s b/20230531/blink-05.s new file mode 100644 index 0000000..f0bd74d --- /dev/null +++ b/20230531/blink-05.s @@ -0,0 +1,45 @@ + .text ; "Dies ist ausführbarer Code." + + .global main ; main-Label nach außen sichtbar machen + .type main, @function + +main: ; Einsprungpunkt: Hier geht's los. + + ldi r24,0xff ; Alle 8 Anschlüsse auf "Output" schalten + out 0x04,r24 ; In DDRB schreiben (Port Nr. 0x04, Speicherzelle 0x24) + +loop: + ldi r24,0x00 ; LED ausschalten (angeschlossen an Ausgang Nr. 2) + out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25) + + ldi r26,lo8(7999999) ; Warteschleife: von 7999999 rückwärts bis 0 zählen + ldi r22,hi8(7999999) ; Die 24-Bit-Zahl 7999999 in 3 8-Bit-Register + ldi r23,hlo8(7999999) +1: + subi r26,1 ; Subtrahiere 1 von den untersten 8 Bit + sbci r22,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry) + sbci r23,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry) + brne 1b ; branch if not equal (= not zero): bedingter Sprung zu Label 1 + rjmp . + nop + + ldi r24,0x20 ; LED einschalten (angeschlossen an Ausgang Nr. 2) + out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25) + + ldi r26,lo8(7999999) ; 1 Taktzyklus + ldi r22,hi8(7999999) ; 1 Taktzyklus + ldi r23,hlo8(7999999) ; 1 Taktzyklus --> 3 Taktzyklen vor der Schleife +1: + subi r26,1 ; 1 Taktzyklus + sbci r22,0 ; 1 Taktzyklus + sbci r23,0 ; 1 Taktzyklus + brne 1b ; 2 Taktzyklen, wenn er springt, 1 Takzyklus, wenn er nicht springt + ; --> 5 Taktzyklen pro Schleifendurchlauf + rjmp . ; 2 Taktzyklen lang nichts machen + nop ; 1 Taktzyklus lang nichts machen + ; --> zusätzlich zu der Schleife weitere 3 + 3 = 6 Taktzyklen warten + ; --> Die Schleife wird sozusagen 8000000 mal durchlaufen + ; (7999999 Durchläufe + Extra-Taktzyklen) + ; und verbraucht dabei jedesmal 5 Taktzyklen. + ; Bei 16000000 Taktzyklen pro Sekunde sind das insgesamt 2.5 Sekunden. + jmp loop diff --git a/20230531/io-ports-and-interrupts.pdf b/20230531/io-ports-and-interrupts.pdf new file mode 120000 index 0000000..bcd46f7 --- /dev/null +++ b/20230531/io-ports-and-interrupts.pdf @@ -0,0 +1 @@ +../common/io-ports-and-interrupts.pdf \ No newline at end of file diff --git a/20230531/logo-hochschule-bochum-cvh-text-v2.pdf b/20230531/logo-hochschule-bochum-cvh-text-v2.pdf new file mode 120000 index 0000000..4aa99b8 --- /dev/null +++ b/20230531/logo-hochschule-bochum-cvh-text-v2.pdf @@ -0,0 +1 @@ +../common/logo-hochschule-bochum-cvh-text-v2.pdf \ No newline at end of file diff --git a/20230531/logo-hochschule-bochum.pdf b/20230531/logo-hochschule-bochum.pdf new file mode 120000 index 0000000..b6b9491 --- /dev/null +++ b/20230531/logo-hochschule-bochum.pdf @@ -0,0 +1 @@ +../common/logo-hochschule-bochum.pdf \ No newline at end of file diff --git a/20230531/morse-07.c b/20230531/morse-07.c new file mode 100644 index 0000000..32fc541 --- /dev/null +++ b/20230531/morse-07.c @@ -0,0 +1,83 @@ + [''] = "-.-.-", + [''] = ".-.-.", + [''] = "...-.-", + [''] = "...-.", + ['!'] = "-.-.--", + ['"'] = ".-..-.", + ['''] = ".----.", + ['('] = "-.--.", + [')'] = "-.--.-", + ['+'] = ".-.-.", + [','] = "--..--", + ['-'] = "-....-", + ['.'] = ".-.-.-", + ['/'] = "-..-.", + ['0'] = "-----", + ['1'] = ".----", + ['2'] = "..---", + ['3'] = "...--", + ['4'] = "....-", + ['5'] = ".....", + ['6'] = "-....", + ['7'] = "--...", + ['8'] = "---..", + ['9'] = "----.", + [':'] = "---...", + [';'] = "-.-.-.", + ['='] = "-...-", + ['?'] = "..--..", + ['@'] = ".--.-.", + ['A'] = ".-", + ['B'] = "-...", + ['C'] = "-.-.", + ['D'] = "-..", + ['E'] = ".", + ['F'] = "..-.", + ['G'] = "--.", + ['H'] = "....", + ['I'] = "..", + ['J'] = ".---", + ['K'] = "-.-", + ['L'] = ".-..", + ['M'] = "--", + ['N'] = "-.", + ['O'] = "---", + ['P'] = ".--.", + ['Q'] = "--.-", + ['R'] = ".-.", + ['S'] = "...", + ['T'] = "-", + ['U'] = "..-", + ['V'] = "...-", + ['W'] = ".--", + ['X'] = "-..-", + ['Y'] = "-.--", + ['Z'] = "--..", + ['_'] = "..--.-", + ['a'] = ".-", + ['b'] = "-...", + ['c'] = "-.-.", + ['d'] = "-..", + ['e'] = ".", + ['f'] = "..-.", + ['g'] = "--.", + ['h'] = "....", + ['i'] = "..", + ['j'] = ".---", + ['k'] = "-.-", + ['l'] = ".-..", + ['m'] = "--", + ['n'] = "-.", + ['o'] = "---", + ['p'] = ".--.", + ['q'] = "--.-", + ['r'] = ".-.", + ['s'] = "...", + ['t'] = "-", + ['u'] = "..-", + ['v'] = "...-", + ['w'] = ".--", + ['x'] = "-..-", + ['y'] = "-.--", + ['z'] = "--..", + [''] = "........", diff --git a/20230531/morse-08.c b/20230531/morse-08.c new file mode 100644 index 0000000..602effa --- /dev/null +++ b/20230531/morse-08.c @@ -0,0 +1,81 @@ +#include <avr/io.h> +#include <stdint.h> + +#define F_CPU 16000000 +#include <util/delay.h> + +#define DIT 200 +#define DAH (3 * DIT) + +uint8_t morse_bits[128] = +{ + 0x00, 0x00, 0x15, 0x0a, 0x28, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x35, 0x12, 0x00, 0x00, 0x00, 0x00, 0x1e, + 0x0d, 0x2d, 0x00, 0x0a, 0x33, 0x21, 0x2a, 0x09, + 0x1f, 0x1e, 0x1c, 0x18, 0x10, 0x00, 0x01, 0x03, + 0x07, 0x0f, 0x07, 0x15, 0x00, 0x11, 0x00, 0x0c, + 0x16, 0x02, 0x01, 0x05, 0x01, 0x00, 0x04, 0x03, + 0x00, 0x00, 0x0e, 0x05, 0x02, 0x03, 0x01, 0x07, + 0x06, 0x0b, 0x02, 0x00, 0x01, 0x04, 0x08, 0x06, + 0x09, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x2c, + 0x00, 0x02, 0x01, 0x05, 0x01, 0x00, 0x04, 0x03, + 0x00, 0x00, 0x0e, 0x05, 0x02, 0x03, 0x01, 0x07, + 0x06, 0x0b, 0x02, 0x00, 0x01, 0x04, 0x08, 0x06, + 0x09, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +uint8_t morse_length[128] = +{ + 0, 0, 5, 5, 6, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 6, 0, 0, 0, 0, 6, 5, 6, 0, 5, 6, 6, 6, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 0, 5, 0, 6, + 6, 2, 4, 4, 3, 1, 4, 3, 4, 2, 4, 3, 4, 2, 2, 3, + 4, 4, 3, 3, 1, 3, 4, 3, 4, 4, 4, 0, 0, 0, 0, 6, + 0, 2, 4, 4, 3, 1, 4, 3, 4, 2, 4, 3, 4, 2, 2, 3, + 4, 4, 3, 3, 1, 3, 4, 3, 4, 4, 4, 0, 0, 0, 0, 8 +}; + +void morse (char *s) +{ + if (s) + while (*s) + { + int c = *s++; + if (c == ' ') + _delay_ms (7 * DIT); + else + { + uint8_t bits = morse_bits[c]; + uint8_t mask = 1; + int l = morse_length[c]; + for (int i = 0; i < l; i++) + { + PORTD = 0x04; + if (bits & mask) + _delay_ms (DAH); + else + _delay_ms (DIT); + mask <<= 1; + PORTD = 0x00; + _delay_ms (DIT); + } + _delay_ms (3 * DIT); + } + } +} + +int main (void) +{ + DDRD = 0xff; + PORTD = 0x00; + while (1) + { + morse ("Hochschule Bochum"); + _delay_ms (15 * DIT); + } + return 0; +} diff --git a/20230531/morse-08.hex b/20230531/morse-08.hex new file mode 100644 index 0000000..347245c --- /dev/null +++ b/20230531/morse-08.hex @@ -0,0 +1,42 @@ +:100000000C9434000C9449000C9449000C94490061 +:100010000C9449000C9449000C9449000C9449003C +:100020000C9449000C9449000C9449000C9449002C +:100030000C9449000C9449000C9449000C9449001C +:100040000C9449000C9449000C9449000C9449000C +:100050000C9449000C9449000C9449000C944900FC +:100060000C9449000C94490011241FBECFEFD8E036 +:10007000DEBFCDBF12E0A0E0B1E0E4E6F1E002C0F7 +:1000800005900D92A231B107D9F70E949F000C9400 +:10009000B0000C940000009709F450C0FC0154E03B +:1000A0002191222309F44AC0022E000C330B203286 +:1000B000310541F42FEF7BE584E42150704080400E +:1000C000E1F739C0D901A058BE4F6C91D901A050B9 +:1000D000BF4F8C9190E020E030E041E028173907D5 +:1000E0001CF55BB9742F762341F0AFEFBBE47DE1E3 +:1000F000A150B0407040E1F707C0AFEFB3EC79E03A +:10010000A150B0407040E1F700C00000440F1BB8A0 +:10011000AFEFB3EC79E0A150B0407040E1F700C020 +:1001200000002F5F3F4FDACF8FEF9BE4ADE18150AE +:100130009040A040E1F700C00000B2CF08958FEFDB +:100140008AB91BB880E092E00E944B002FEF8BE74A +:1001500092E9215080409040E1F700C00000F2CFCA +:04016000F894FFCF41 +:100164000000050506000500000000000000000076 +:10017400000000000000000000000000000000007B +:100184000006060000000006050600050606060532 +:100194000505050505050505050506060005000612 +:1001A4000602040403010403040204030402020318 +:1001B4000404030301030403040404000000000610 +:1001C40000020404030104030402040304020203FE +:1001D40004040303010304030404040000000008EE +:1001E4000000150A280008000000000000000000BC +:1001F40000000000000000000000000000000000FB +:10020400003512000000001E0D2D000A33212A09BA +:100214001F1E1C1810000103070F07150011000C06 +:10022400160201050100040300000E050203010784 +:10023400060B020001040806090D03000000002C4F +:10024400000201050100040300000E05020301077A +:10025400060B020001040806090D0300000000005B +:10026400486F6368736368756C6520426F63687573 +:020274006D001B +:00000001FF diff --git a/20230531/morse-08.s b/20230531/morse-08.s new file mode 100644 index 0000000..37ffdc9 --- /dev/null +++ b/20230531/morse-08.s @@ -0,0 +1,403 @@ + .file "morse-08.c" +__SP_H__ = 0x3e +__SP_L__ = 0x3d +__SREG__ = 0x3f +__tmp_reg__ = 0 +__zero_reg__ = 1 + .text +.global morse + .type morse, @function +morse: +/* prologue: function */ +/* frame size = 0 */ +/* stack size = 0 */ +.L__stack_usage = 0 + sbiw r24,0 + brne .+2 + rjmp .L1 + movw r30,r24 + ldi r21,lo8(4) +.L3: + ld r18,Z+ + tst r18 + brne .+2 + rjmp .L1 + mov __tmp_reg__,r18 + lsl r0 + sbc r19,r19 + cpi r18,32 + cpc r19,__zero_reg__ + brne .L4 + ldi r18,lo8(4479999) + ldi r23,hi8(4479999) + ldi r24,hlo8(4479999) +1: subi r18,1 + sbci r23,0 + sbci r24,0 + brne 1b + rjmp .L13 +.L4: + movw r26,r18 + subi r26,lo8(-(morse_bits)) + sbci r27,hi8(-(morse_bits)) + ld r22,X + movw r26,r18 + subi r26,lo8(-(morse_length)) + sbci r27,hi8(-(morse_length)) + ld r24,X + ldi r25,0 + ldi r18,0 + ldi r19,0 + ldi r20,lo8(1) +.L6: + cp r18,r24 + cpc r19,r25 + brge .L15 + out 0xb,r21 + mov r23,r20 + and r23,r22 + breq .L7 + ldi r26,lo8(1919999) + ldi r27,hi8(1919999) + ldi r23,hlo8(1919999) +1: subi r26,1 + sbci r27,0 + sbci r23,0 + brne 1b + rjmp .L12 +.L7: + ldi r26,lo8(639999) + ldi r27,hi8(639999) + ldi r23,hlo8(639999) +1: subi r26,1 + sbci r27,0 + sbci r23,0 + brne 1b +.L12: + rjmp . + nop + lsl r20 + out 0xb,__zero_reg__ + ldi r26,lo8(639999) + ldi r27,hi8(639999) + ldi r23,hlo8(639999) +1: subi r26,1 + sbci r27,0 + sbci r23,0 + brne 1b + rjmp . + nop + subi r18,-1 + sbci r19,-1 + rjmp .L6 +.L15: + ldi r24,lo8(1919999) + ldi r25,hi8(1919999) + ldi r26,hlo8(1919999) +1: subi r24,1 + sbci r25,0 + sbci r26,0 + brne 1b +.L13: + rjmp . + nop + rjmp .L3 +.L1: + ret + .size morse, .-morse + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "Hochschule Bochum" + .section .text.startup,"ax",@progbits +.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 + out 0xb,__zero_reg__ +.L17: + ldi r24,lo8(.LC0) + ldi r25,hi8(.LC0) + call morse + ldi r18,lo8(9599999) + ldi r24,hi8(9599999) + ldi r25,hlo8(9599999) +1: subi r18,1 + sbci r24,0 + sbci r25,0 + brne 1b + rjmp . + nop + rjmp .L17 + .size main, .-main +.global morse_length + .data + .type morse_length, @object + .size morse_length, 128 +morse_length: + .byte 0 + .byte 0 + .byte 5 + .byte 5 + .byte 6 + .byte 0 + .byte 5 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 6 + .byte 6 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 6 + .byte 5 + .byte 6 + .byte 0 + .byte 5 + .byte 6 + .byte 6 + .byte 6 + .byte 5 + .byte 5 + .byte 5 + .byte 5 + .byte 5 + .byte 5 + .byte 5 + .byte 5 + .byte 5 + .byte 5 + .byte 5 + .byte 6 + .byte 6 + .byte 0 + .byte 5 + .byte 0 + .byte 6 + .byte 6 + .byte 2 + .byte 4 + .byte 4 + .byte 3 + .byte 1 + .byte 4 + .byte 3 + .byte 4 + .byte 2 + .byte 4 + .byte 3 + .byte 4 + .byte 2 + .byte 2 + .byte 3 + .byte 4 + .byte 4 + .byte 3 + .byte 3 + .byte 1 + .byte 3 + .byte 4 + .byte 3 + .byte 4 + .byte 4 + .byte 4 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 6 + .byte 0 + .byte 2 + .byte 4 + .byte 4 + .byte 3 + .byte 1 + .byte 4 + .byte 3 + .byte 4 + .byte 2 + .byte 4 + .byte 3 + .byte 4 + .byte 2 + .byte 2 + .byte 3 + .byte 4 + .byte 4 + .byte 3 + .byte 3 + .byte 1 + .byte 3 + .byte 4 + .byte 3 + .byte 4 + .byte 4 + .byte 4 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 +.global morse_bits + .type morse_bits, @object + .size morse_bits, 128 +morse_bits: + .byte 0 + .byte 0 + .byte 21 + .byte 10 + .byte 40 + .byte 0 + .byte 8 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 53 + .byte 18 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 30 + .byte 13 + .byte 45 + .byte 0 + .byte 10 + .byte 51 + .byte 33 + .byte 42 + .byte 9 + .byte 31 + .byte 30 + .byte 28 + .byte 24 + .byte 16 + .byte 0 + .byte 1 + .byte 3 + .byte 7 + .byte 15 + .byte 7 + .byte 21 + .byte 0 + .byte 17 + .byte 0 + .byte 12 + .byte 22 + .byte 2 + .byte 1 + .byte 5 + .byte 1 + .byte 0 + .byte 4 + .byte 3 + .byte 0 + .byte 0 + .byte 14 + .byte 5 + .byte 2 + .byte 3 + .byte 1 + .byte 7 + .byte 6 + .byte 11 + .byte 2 + .byte 0 + .byte 1 + .byte 4 + .byte 8 + .byte 6 + .byte 9 + .byte 13 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 44 + .byte 0 + .byte 2 + .byte 1 + .byte 5 + .byte 1 + .byte 0 + .byte 4 + .byte 3 + .byte 0 + .byte 0 + .byte 14 + .byte 5 + .byte 2 + .byte 3 + .byte 1 + .byte 7 + .byte 6 + .byte 11 + .byte 2 + .byte 0 + .byte 1 + .byte 4 + .byte 8 + .byte 6 + .byte 9 + .byte 13 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .ident "GCC: (GNU) 5.4.0" +.global __do_copy_data diff --git a/20230531/pgslides.sty b/20230531/pgslides.sty new file mode 120000 index 0000000..5be1416 --- /dev/null +++ b/20230531/pgslides.sty @@ -0,0 +1 @@ +../common/pgslides.sty \ No newline at end of file diff --git a/20230531/rtech-20230531.pdf b/20230531/rtech-20230531.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c3c180658cc46108bfab2b39e3757017c2793fc5 GIT binary patch literal 104001 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 Rp@Ffnp(U59s;j>n7XY>7Lv;WE literal 0 HcmV?d00001 diff --git a/20230531/rtech-20230531.tex b/20230531/rtech-20230531.tex new file mode 100644 index 0000000..1a6af10 --- /dev/null +++ b/20230531/rtech-20230531.tex @@ -0,0 +1,1106 @@ +% rtech-20230531.pdf - Lecture Slides on Computer Technology +% Copyright (C) 2012, 2013, 2014, 2021, 2022, 2023 Peter Gerwinski +% +% This document is free software: you can redistribute it and/or +% modify it either under the terms of the Creative Commons +% Attribution-ShareAlike 3.0 License, or under the terms of the +% GNU General Public License as published by the Free Software +% Foundation, either version 3 of the License, or (at your option) +% any later version. +% +% This document is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this document. If not, see <http://www.gnu.org/licenses/>. +% +% You should have received a copy of the Creative Commons +% Attribution-ShareAlike 3.0 Unported License along with this +% document. If not, see <http://creativecommons.org/licenses/>. + +% README: Hardwarenahe Programmierung: I/O, Endianness, Alignment + +\documentclass[10pt,t]{beamer} + +\usepackage{pgslides} +\usepackage{pdftricks} +%\usepackage[obeyfamily=false,mathrm=mathsf,textrm=sffamily]{siunitx} +%\usepackage{eurosym} +\usepackage{tikz} + +\newcommand{\Cin}{C\raisebox{-0.5ex}{\footnotesize in}} +\newcommand{\Cout}{C\raisebox{-0.5ex}{\footnotesize out}} + +\lstdefinestyle{asm}{basicstyle=\color{structure}, + language={}, + gobble=4} + +\begin{psinputs} + \usepackage[utf8]{inputenc} + \usepackage[german]{babel} + \usepackage[T1]{fontenc} + \usepackage{helvet} + \renewcommand*\familydefault{\sfdefault} + \usepackage{pstricks,pst-grad,pst-circ-pg} + \newcommand{\invisible}{\tiny\color{white}} + \psset{unit=1cm} + \psset{logicLabelstyle=\invisible} + \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}} + \psset{logicSymbolstyle=\logicSymbol} + \newcommand{\Cin}{C\raisebox{-0.5ex}{\footnotesize in}} + \newcommand{\Cout}{C\raisebox{-0.5ex}{\footnotesize out}} +\end{psinputs} + +\title{Rechnertechnik} +\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski} +\date{31.\ Mai 2022} + +\begin{document} + +\maketitleframe + +\nosectionnonumber{\inserttitle} + +\begin{frame} + + \shownosectionnonumber + + \begin{itemize} + \item[\textbf{1}] \textbf{Einführung} + \item[\textbf{2}] \textbf{Vom Schaltkreis zum Computer} + \item[\textbf{3}] \textbf{Assember-Programmierung} + \begin{itemize} + \item[3.1] Struktur von Assembler-Programmen + \item[3.2] Beispiel: Redcode + \item[3.3] Architekturmerkmale von Prozessore + \item[3.4] Der CPU-Stack + \color{medgreen} + \item[3.5] Computer-Sprachen + \end{itemize} +% \color{gray} + \item[\textbf{4}] \textbf{Hardwarenahe Programmierung} + \begin{itemize} + \color{orange} + \item[4.1] Bit-Operationen + \color{red} + \item[4.2] I/O-Ports + \item[4.3] Interrupts +% \item[4.1] volatile-Variable + \item[\dots] +% \item[4.4] Byte-Reihenfolge -- Endianness +% \item[4.5] Speicherausrichtung -- Alignment + \end{itemize} +% \item[\textbf{6}] \textbf{Anwender-Software} +% \item[\textbf{7}] \textbf{Bus-Systeme} +% \item[\textbf{8}] \textbf{Pipelining} +% \item[\textbf{9}] \textbf{Ausblick} + \item[\textbf{\dots\hspace{-0.75em}}] + \end{itemize} + +\end{frame} + +\setcounter{section}{2} +\section{Assembler-Programmierung} +\setcounter{subsection}{4} +\subsection{Computer-Sprachen} +\subsubsection{Maschinensprache} + +\begin{frame} + + \showsubsection + \showsubsubsection + + \begin{itemize} + \item + Lade- und Speicher-Befehle\\ + arithmetische Befehle\\ + unbedingte und bedingte Sprungbefehle + \arrowitem + Der Computer kann "`alles"' -- \newterm{Turing-Vollständigkeit} + \bigskip + \item + Maschinensprache = Zahlen \textarrow\ für Menschen schwer handhabbar + \arrowitem + Namen für die Befehle: \newterm{Mnemonics} + \arrowitem + \newterm{Assembler\/}-Sprache + \end{itemize} + +\end{frame} + +\subsubsection{\strut{\protect\color{gray}Maschinensprache \protect\textarrow\ }Assembler} + +\begin{frame}[fragile] + + \showsubsubsection + + Beispiel: Intel-x86-16-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{mov}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{inc}, \lstinline{dec}, + \lstinline{xor}, \lstinline{cmp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{jmp}, \lstinline{jz}, \lstinline{jae}, \dots + \item + Register\hfill + \lstinline{ax}, \lstinline{bx}, \dots + \end{itemize} + +% \begin{onlyenv}<1> +% \begin{center} +%% \includegraphics[width=10cm]{programm-screenshot.png} +% \vspace*{-0.5cm} +% \end{center} +% \end{onlyenv} +% \begin{onlyenv}<2-> + + \bigskip + + Beispiel: Atmel-AVR-8-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{ldi}, \lstinline{lds}, \lstinline{sti}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{subi}, + \lstinline{eor}, \lstinline{cp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{rjmp}, \lstinline{brsh}, \lstinline{brlo}, \dots + \item + Register\hfill + \lstinline{r0}, \lstinline{r1}, \dots + \end{itemize} + + \bigskip + + \textarrow\ für jeden Prozessor anders + +% \end{onlyenv} + +\end{frame} + +\subsubsection{\strut{\protect\color{gray}Maschinensprache \protect\textarrow\ Assembler \protect\textarrow\ }Hochsprachen} + +\begin{frame}[fragile] + + \showsubsubsection + + Beispiel: Intel-x86-16-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{mov}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{inc}, \lstinline{dec}, + \lstinline{xor}, \lstinline{cmp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{jmp}, \lstinline{jz}, \lstinline{jae}, \dots + \item + Register\hfill + \lstinline{ax}, \lstinline{bx}, \dots + \end{itemize} + + \bigskip + + Beispiel: Atmel-AVR-8-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{ldi}, \lstinline{lds}, \lstinline{sti}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{subi}, + \lstinline{eor}, \lstinline{cp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{rjmp}, \lstinline{brsh}, \lstinline{brlo}, \dots + \item + Register\hfill + \lstinline{r0}, \lstinline{r1}, \dots + \end{itemize} + + \bigskip + + \textarrow\ für jeden Prozessor anders + + \bigskip + + Hochsprache \textarrow\ für jeden Prozessor gleich + +\end{frame} + +\begin{frame}[fragile] + + \showsubsubsection + + Compiler-Sprachen + \begin{itemize} + \item + \newterm{Compiler\/} übersetzt Hochsprachen-\newterm{Quelltext\/} in die Assembler-Sprache + \item + \newterm{Assembler\/} übersetzt Assembler-Quelltext in die Maschinensprache + \item + Compiler und Assembler sind Programme,\\ + geschrieben in Maschinensprache, Assembler oder einer Hochsprache + \item + Beispiele: Fortran, Algol, Pascal, Ada, C, C++, \dots + \end{itemize} + + \pause + \medskip + Interpreter- oder Skript-Sprachen + \begin{itemize} + \item + \newterm{Interpreter\/} liest Hochsprachen-\newterm{Quelltext\/} und führt ihn sofort aus + \item + Der Interpreter ist ein Programm,\\ + geschrieben in Maschinensprache, Assembler oder einer Hochsprache + \item + Beispiele: Unix-Shell, BASIC, Perl, Python, \dots + \end{itemize} + + \pause + \medskip + Kombinationen + \begin{itemize} + \item + \newterm{Compiler\/} erzeugt \newterm{Zwischencode\/} für eine \newterm{virtuelle Maschine} + \item + \newterm{Interpreter\/} liest Hochsprachen-\newterm{Zwischencode\/} und führt ihn sofort aus + \item + Die virtuelle Maschine ist ein Programm, + geschrieben in Maschinensprache, Assembler, einer Hoch- oder Skript-Sprache + \item + Beispiele: UCSD-Pascal, Java, \dots + \end{itemize} + \medskip + +\end{frame} + +\section{Hardwarenahe Programmierung} +\subsection{Bit-Operationen} +\subsubsection{Zahlensysteme} + +\begin{frame}[fragile] + + \showsection + \vspace*{-\smallskipamount} + \showsubsection + \vspace*{-\medskipamount} + \showsubsubsection + + \begin{tabular}{rlrl} + Basis & Name & Beispiel & Anwendung \\[\smallskipamount] + 2 & Binärsystem & 1\,0000\,0011 & Bit-Operationen \\ + 8 & Oktalsystem & \lstinline,0403, & Dateizugriffsrechte (Unix) \\ + 10 & Dezimalsystem & \lstinline,259, & Alltag \\ + 16 & Hexadezimalsystem & \lstinline,0x103, & Bit-Operationen \\ + 256 & (keiner gebräuchlich) & 0.0.1.3 & IP-Adressen (IPv4) + \end{tabular} + + \bigskip + + \begin{itemize} + \item + Computer rechnen im Binärsystem. + \item + Für viele Anwendungen (z.\,B.\ I/O-Ports, Grafik, \dots) ist es notwendig,\\ + Bits in Zahlen einzeln ansprechen zu können. + \end{itemize} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsubsection + + \begin{tabular}{rlrlrc} + \qquad 000 & \bf 0 \hspace*{1.5cm} & 0000 & \bf 0 & \quad 1000 & \bf 8\\ + 001 & \bf 1 & 0001 & \bf 1 & 1001 & \bf 9\\ + 010 & \bf 2 & 0010 & \bf 2 & 1010 & \bf A\\ + 011 & \bf 3 & 0011 & \bf 3 & 1011 & \bf B\\[\smallskipamount] + 100 & \bf 4 & 0100 & \bf 4 & 1100 & \bf C\\ + 101 & \bf 5 & 0101 & \bf 5 & 1101 & \bf D\\ + 110 & \bf 6 & 0110 & \bf 6 & 1110 & \bf E\\ + 111 & \bf 7 & 0111 & \bf 7 & 1111 & \bf F\\ + \end{tabular} + + \medskip + + \begin{itemize} + \item + Oktal- und Hexadezimalzahlen lassen sich ziffernweise\\ + in Binär-Zahlen umrechnen. + \item + Hexadezimalzahlen sind eine Kurzschreibweise für Binärzahlen,\\ + gruppiert zu jeweils 4 Bits. + \item + Oktalzahlen sind eine Kurzschreibweise für Binärzahlen,\\ + gruppiert zu jeweils 3 Bits. + \item + Trotz Taschenrechner u.\,ä.\ lohnt es sich,\\ + die o.\,a.\ Umrechnungstabelle \textbf{auswendig} zu kennen. + \end{itemize} + +\end{frame} + +\subsubsection{Bit-Operationen in Assembler} + +\begin{frame}[fragile] + + \showsubsubsection + + \begin{tabular}{lll} + Operation & Verknüpfung & Anwendung \\[\smallskipamount] + \lstinline,and, & Und & Bits gezielt löschen \\ + \lstinline,or, & Oder & Bits gezielt setzen \\ + \lstinline,eor, & Exklusiv-Oder & Bits gezielt invertieren \\[\smallskipamount] + \lstinline,com, & Nicht (Einer-Komplement) & Alle Bits invertieren \\[\smallskipamount] + \lstinline,lsl, & Verschiebung nach links & Maske generieren \\ +% \lstinline,lsr, & Verschiebung nach rechts & Bits isolieren + \end{tabular} + + \bigskip + + Numerierung der Bits: von rechts ab 0 + + \medskip + + \begin{tabular}{ll} + Bit Nr.\ 3 auf 1 setzen: & +% \lstinline,a |= 1 << 3;, \\ + Oder-Verknüpfung mit einer\\&um 3 nach links geschobenen 1 + \hfill\lstinline|0000|\,\lstinline|1000|\\[\smallskipamount] + Bit Nr.\ 4 auf 0 setzen: & +% \lstinline,a &= ~(1 << 4);, \\ + Und-Verknüpfung mit dem Einer-Komplement \qquad\quad\strut\\&einer um 4 nach links geschobenen 1 + \hfill\lstinline|1110|\,\lstinline|1111|\\[\smallskipamount] + Bit Nr.\ 0 invertieren: & +% \lstinline,a ^= 1 << 0;, + Exklusiv-Oder-Verknüpfung mit einer\\&um 0 nach links geschobenen 1 + \hfill\lstinline|0000|\,\lstinline|0001|\\[\smallskipamount] + Ist Bit Nr.\ 1 eine Null? & + Ergibt eine Und-Verknüpfung mit einer um 1\\&nach links geschobenen 1 den Wert 0? + \hfill\lstinline|0000|\,\lstinline|0010| + \end{tabular} + +% \smallskip +% +% ~~Abfrage, ob Bit Nr.\ 1 gesetzt ist:\quad +% \lstinline{if (a & (1 << 1))} + +\end{frame} + +\iffalse + +\begin{frame}[fragile] + + \showsubsubsection + + C-Datentypen für Bit-Operationen: + \smallskip\par + \lstinline{#include <stdint.h>} + \medskip\par + \begin{tabular}{lllll} + & 8 Bit & 16 Bit & 32 Bit & 64 Bit \\ + mit Vorzeichen & \lstinline,int8_t, + & \lstinline,int16_t, + & \lstinline,int32_t, + & \lstinline,int64_t, \\ + ohne Vorzeichen & \lstinline,uint8_t, + & \lstinline,uint16_t, + & \lstinline,uint32_t, + & \lstinline,uint64_t, + \end{tabular} + + \bigskip + \bigskip + + Ausgabe: + \smallskip\par + \begin{lstlisting} + #include <stdio.h> + #include <stdint.h> + #include <inttypes.h> + ... + uint64_t x = 42; + printf ("Die Antwort lautet: %" PRIu64 "\n", x); + \end{lstlisting} + +\end{frame} + +\fi + +\subsection{I/O-Ports} + +\begin{frame}[fragile] + +% \showsection + \showsubsection + \vspace*{-1.5\medskipamount} + {\large\textbf{\color{structure}4.3\quad Interrupts}} + + \bigskip + + Kommunikation mit externen Geräten + + \bigskip + + \begin{center} + \includegraphics{io-ports-and-interrupts.pdf} + \end{center} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + In Output-Port schreiben = Aktoren ansteuern + + Beispiel: LED + + \medskip + + \begin{lstlisting} + ldi r24,0xff + out 0x0a,r24 + ldi r24,0x00 + out 0x0b,r24 + \end{lstlisting} + \begin{picture}(0,0) + \put(3,1.93){\begin{minipage}[t]{5cm} + \color{red}% + binär: 1111\,1111\\ + alle 8 Anschlüsse: Output\\ + binär: 0000\,0000\\ + alle 8 Ausgänge: 0\,V + \end{minipage}} + \put(11.5,1.00){\makebox(0,0)[r]{\color{red}Herstellerspezifisch!}} + \end{picture} + + \bigskip + + \lstinline{0x0a} = \lstinline{DDRD} = Data Direction Register D\\ + Bit = 1 für Output-Port\\ + Bit = 0 für Input-Port + + \bigskip + + \lstinline{0x0b} = \lstinline{PORTD} = I/O-Port D\\ + Bit = 1 für +5\,V\\ + Bit = 0 für 0\,V + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + In Output-Port schreiben = Aktoren ansteuern + + Beispiel: LED + + \medskip + + \begin{lstlisting} + ldi r24,0xff + out 0x0a,r24 + ldi r24,0x04 + out 0x0b,r24 + \end{lstlisting} + \begin{picture}(0,0) + \put(3,1.93){\begin{minipage}[t]{5cm} + \color{red}% + binär: 1111\,1111\\ + alle 8 Anschlüsse: Output\\ + binär: 0000\,0100\\ + Ausgang 2: 5\,V, alle anderen: 0\,V + \end{minipage}} + \put(11.5,1.00){\makebox(0,0)[r]{\color{red}Herstellerspezifisch!}} + \end{picture} + + \bigskip + + \lstinline{0x0a} = \lstinline{DDRD} = Data Direction Register D\\ + Bit = 1 für Output-Port\\ + Bit = 0 für Input-Port + + \bigskip + + \lstinline{0x0b} = \lstinline{PORTD} = I/O-Port D\\ + Bit = 1 für +5\,V\\ + Bit = 0 für 0\,V + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Warteschleife + + \begin{lstlisting} + ldi r26,lo8(7999999) + ldi r22,hi8(7999999) + ldi r23,hlo8(7999999) + 1: + subi r26,1 + sbci r22,0 + sbci r23,0 + brne 1b + rjmp . + nop + \end{lstlisting} + \begin{picture}(0,0) + \put(5,4.0){\begin{minipage}[t]{7cm} + \color{red}% + Anzahl der Taktzyklen\\ + \strut\\ + \strut\\ + \strut\\ + rückwärts zählen\\ + \strut\\ + Warteschleife: 5 Zyklen pro Durchlauf\\ + 2 Zyklen lang warten\\ + 1 Zyklus lang warten\\ + \end{minipage}} + \put(11.5,3.00){\makebox(0,0)[r]{\color{red}Herstellerspezifisch!}} + \end{picture} + + \bigskip + + \textarrow\ blinkende LED + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + +\end{frame} + +\iffalse + +\begin{frame}[fragile] + + \showsubsection + + Aus Input-Port lesen = Sensoren abfragen + + Beispiel: Taster + + \medskip + + \begin{lstlisting} + #include <avr/io.h> + ... + DDRC = 0xfd; + while ((PINC & 0x02) == 0) + ; /* just wait */ + \end{lstlisting} + \begin{picture}(0,0)(-1.5,-0.42) + \put(3,0.67){\begin{minipage}{3cm} + \color{red}% + binär: 1111\,1101\\ + binär: 0000\,0010 + \end{minipage}} + \put(10,0.67){\makebox(0,0)[r]{\color{red}Herstellerspezifisch!}} + \end{picture} + + \bigskip + + \lstinline{DDR} = Data Direction Register\\ + Bit = 1 für Output-Port\\ + Bit = 0 für Input-Port + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + + \bigskip + + Praktikumsaufgabe: Druckknopfampel + +\end{frame} + +\subsection{Interrupts} + +\begin{frame}[fragile] + + \showsubsection + + Externes Gerät ruft (per Stromsignal) Unterprogramm auf + + Zeiger hinterlegen: "`Interrupt-Vektor"' + + Beispiel: eingebaute Uhr\hfill + \makebox(0,0)[tr]{% + \only<1->{\begin{minipage}[t]{4.7cm} + \vspace*{-0.3cm}% + statt Zählschleife (\lstinline{_delay_ms}):\\ + Hauptprogramm kann\\ + andere Dinge tun + \end{minipage}}% + } + + \medskip + + \begin{lstlisting} + #include <avr/interrupt.h> + + ... + + + ISR (TIMER0B_COMP_vect) + { + PORTD ^= 0x40; + } + \end{lstlisting} + \begin{picture}(0,0) + \color{red} + \put(1.9,3.1){\makebox(0,0)[tr]{\tikz{\draw[-latex](0,0)--(-1.4,-1.0);}}} + \put(2.0,3.2){\makebox(0,0)[l]{"`Dies ist ein Interrupt-Handler."'}} + \put(2.3,2.6){\makebox(0,0)[tr]{\tikz{\draw[-latex](0,0)--(-0.6,-0.55);}}} + \put(2.4,2.6){\makebox(0,0)[l]{Interrupt-Vektor darauf zeigen lassen}} + \end{picture} + + Initialisierung über spezielle Ports: + \lstinline{TCCR0B}, \lstinline{TIMSK0} + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + + \vspace*{-2.5cm}\hfill + {\color{red}Herstellerspezifisch!}% + \hspace*{1cm} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Externes Gerät ruft (per Stromsignal) Unterprogramm auf + + Zeiger hinterlegen: "`Interrupt-Vektor"' + + Beispiel: Taster\hfill + \makebox(0,0)[tr]{% + \begin{minipage}[t]{4.7cm} + \vspace*{-0.3cm}% + statt \newterm{Busy Waiting\/}:\\ + Hauptprogramm kann\\ + andere Dinge tun + \end{minipage}} + + \medskip + + \begin{lstlisting} + #include <avr/interrupt.h> + ... + + ISR (INT0_vect) + { + PORTD ^= 0x40; + } + \end{lstlisting} + + \medskip + + Initialisierung über spezielle Ports: + \lstinline{EICRA}, \lstinline{EIMSK} + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + + \vspace*{-2.5cm}\hfill + {\color{red}Herstellerspezifisch!}% + \hspace*{1cm} + +\end{frame} + +\subsection{volatile-Variable} + +\begin{frame}[fragile] + + \showsubsection + + Externes Gerät ruft (per Stromsignal) Unterprogramm auf + + Zeiger hinterlegen: "`Interrupt-Vektor"' + + Beispiel: Taster + + \vspace*{-2.5pt} + + \begin{minipage}[t]{5cm} + \begin{onlyenv}<1> + \begin{lstlisting}[gobble=8] + ¡#include <avr/interrupt.h> + ... + + uint8_t key_pressed = 0; + + ISR (INT0_vect) + { + key_pressed = 1; + }¿ + \end{lstlisting} + \end{onlyenv} + \begin{onlyenv}<2> + \begin{lstlisting}[gobble=8] + ¡#include <avr/interrupt.h> + ... + + volatile uint8_t key_pressed = 0; + + ISR (INT0_vect) + { + key_pressed = 1; + }¿ + \end{lstlisting} + \end{onlyenv} + \end{minipage}\hfill + \begin{minipage}[t]{6cm} + \begin{lstlisting}[gobble=6] + ¡int main (void) + { + ... + + while (1) + { + while (!key_pressed) + ; /* just wait */ + PORTD ^= 0x40; + key_pressed = 0; + } + return 0; + }¿ + \end{lstlisting} + \end{minipage} + + \pause + \begin{picture}(0,0) + \color{red} + \put(10.3,4.0){\makebox(0,0)[b]{\begin{minipage}{6cm} + \begin{center} + \textbf{volatile}:\\ + Speicherzugriff\\ + nicht wegoptimieren + \end{center} + \end{minipage}}} + \put(10.3,3.95){\makebox(0,0)[tr]{\tikz{\draw[-latex](0,0)--(-0.5,-0.9);}}} + \end{picture} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Was ist eigentlich \lstinline{PORTD}? + + \bigskip + \pause + + \lstinline[style=cmd]{avr-gcc -Wall -Os -mmcu=atmega328p blink-3.c -E} + + \bigskip + \pause + \lstinline{PORTD = 0x01;}\\ + \textarrow\quad + \lstinline[style=terminal]{(*(volatile uint8_t *)((0x0B) + 0x20)) = 0x01;}\\ + \pause + \begin{picture}(0,2)(0,-1.7) + \color{red} + \put(5.75,0.3){$\underbrace{\rule{2.95cm}{0pt}}_{\mbox{Zahl: \lstinline|0x2B|}}$} + \pause + \put(1.55,0.3){$\underbrace{\rule{4.0cm}{0pt}}_{\mbox{\shortstack[t]{Umwandlung in Zeiger\\ + auf \lstinline|volatile uint8_t|}}}$} + \pause + \put(1.32,-1){\makebox(0,0)[b]{\tikz{\draw[-latex](0,0)--(0,1.3)}}} + \put(1.12,-1.1){\makebox(0,0)[tl]{Dereferenzierung des Zeigers}} + \end{picture} + + \pause + \textarrow\quad + \lstinline|volatile uint8_t|-Variable an Speicheradresse \lstinline|0x2B| + + \pause + \bigskip + \bigskip + + \textarrow\quad + \lstinline|PORTA = PORTB = PORTC = PORTD = 0| ist eine schlechte Idee. + +\end{frame} + +\subsection{Byte-Reihenfolge -- Endianness} +\subsubsection{Konzept} + +\begin{frame}[fragile] + + \showsubsection + \showsubsubsection + + Eine Zahl geht über mehrere Speicherzellen.\\ + Beispiel: 16-Bit-Zahl in 2 8-Bit-Speicherzellen + + \smallskip + + Welche Bits liegen wo? + +% \pause + \bigskip + + $1027 = 1024 + 2 + 1 = 0000\,0100\,0000\,0011_2 = 0403_{16}$ + +% \pause + \bigskip + Speicherzellen: + + \medskip + \begin{tabular}{|c|c|l}\cline{1-2} + \raisebox{-0.25ex}{04} & \raisebox{-0.25ex}{03} & \strut Big-Endian "`großes Ende zuerst"' \\\cline{1-2} + \multicolumn{2}{c}{} & % \pause + für Menschen leichter lesbar % \pause + \\ + \multicolumn{3}{c}{} \\[-5pt]\cline{1-2} + \raisebox{-0.25ex}{03} & \raisebox{-0.25ex}{04} & \strut Little-Endian "`kleines Ende zuerst"' \\\cline{1-2} + \multicolumn{2}{c}{} & % \pause + bei Additionen effizienter + \end{tabular} + +% \pause + \medskip + \textarrow\ Geschmackssache +% \pause\\ + \quad\textbf{\dots\ außer bei Datenaustausch!} + +% \pause +% \bigskip +% +% Aber: nicht verwechseln! \qquad $0304_{16} = 772$ + +\end{frame} + +\begin{frame} + + \showsubsection + \showsubsubsection + + Eine Zahl geht über mehrere Speicherzellen.\\ + Beispiel: 16-Bit-Zahl in 2 8-Bit-Speicherzellen + + \smallskip + + Welche Bits liegen wo? + + \medskip + + \textarrow\ Geschmackssache\\ + \textbf{\dots\ außer bei Datenaustausch!} + + \begin{itemize} + \item + Dateiformate + \item + Datenübertragung + \end{itemize} + +\end{frame} + +\subsubsection{Dateiformate} + +\begin{frame} + + \showsubsection + \showsubsubsection + + Audio-Formate: Reihenfolge der Bytes in 16- und 32-Bit-Zahlen + \begin{itemize} + \item + RIFF-WAVE-Dateien (\file{.wav}): Little-Endian + \item + Au-Dateien (\file{.au}): Big-Endian +% \pause + \item + ältere AIFF-Dateien (\file{.aiff}): Big-Endian + \item + neuere AIFF-Dateien (\file{.aiff}): Little-Endian + \end{itemize} + +% \pause + \bigskip + + Grafik-Formate: Reihenfolge der Bits in den Bytes + \begin{itemize} + \item + PBM-Dateien: Big-Endian\only<1->{, MSB first} + \item + XBM-Dateien: Little-Endian\only<1->{, LSB first} + \end{itemize} + \only<1->{MSB/LSB = most/least significant bit} + +\end{frame} + +\subsubsection{Datenübertragung} + +\begin{frame} + + \showsubsection + \showsubsubsection + + \begin{itemize} + \item + RS-232 (serielle Schnittstelle): LSB first + \item + I$^2$C: MSB first + \item + USB: beides + \pause + \medskip + \item + Ethernet: LSB first + \item + TCP/IP (Internet): Big-Endian + \end{itemize} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Frage: \emph{Für welche Zahl steht der Speicherinhalt\, + \raisebox{2pt}{% + \tabcolsep0.25em + \begin{tabular}{|c|c|}\hline + \rule{0pt}{11pt}a3 & 90 \\\hline + \end{tabular}} + (hexadezimal)?} + + \pause + \smallskip + Antwort: \emph{Das kommt darauf an.} ;--) + + \pause + \medskip + Little-Endian: + + \smallskip + + \begin{tabular}{lrl} + als \lstinline,int8_t,: & $-93$ & (nur erstes Byte)\\ + als \lstinline,uint8_t,: & $163$ & (nur erstes Byte)\\ + als \lstinline,int16_t,: & $-28509$\\ + als \lstinline,uint16_t,: & $37027$\\ + \lstinline,int32_t, oder größer: & $37027$ + & (zusätzliche Bytes mit Nullen aufgefüllt) + \end{tabular} + + \pause + \medskip + Big-Endian: + + \smallskip + + \begin{tabular}{lrl} + als \lstinline,int8_t,: & $-93$ & (nur erstes Byte)\\ + als \lstinline,uint8_t,: & $163$ & (nur erstes Byte)\\ + als \lstinline,int16_t,: & $-23664$\\ + als \lstinline,uint16_t,: & $41872$\\ als \lstinline,int32_t,: & $-1550843904$ & (zusätzliche Bytes\\ + als \lstinline,uint32_t,: & $2744123392$ & mit Nullen aufgefüllt)\\ + als \lstinline,int64_t,: & $-6660823848880963584$\\ + als \lstinline,uint64_t,: & $11785920224828588032$\\ + \end{tabular} + + \vspace*{-1cm} + +\end{frame} + +\subsection{Speicherausrichtung -- Alignment} + +\begin{frame}[fragile] + + \showsubsection + + \begin{lstlisting} + #include <stdint.h> + + uint8_t a; + uint16_t b; + uint8_t c; + \end{lstlisting} + + \pause + \bigskip + + Speicheradresse durch 2 teilbar -- "`16-Bit-Alignment"' + \begin{itemize} + \item + 2-Byte-Operation: effizienter + \pause + \item + \dots\ oder sogar nur dann erlaubt + \pause + \arrowitem + Compiler optimiert Speicherausrichtung + \end{itemize} + + \medskip + + \pause + \begin{minipage}{3cm} + \begin{lstlisting}[gobble=6] + ¡uint8_t a; + uint8_t dummy; + uint16_t b; + uint8_t c;¿ + \end{lstlisting} + \end{minipage} + \pause + \begin{minipage}{3cm} + \begin{lstlisting}[gobble=6] + ¡uint8_t a; + uint8_t c; + uint16_t b;¿ + \end{lstlisting} + \end{minipage} + + \pause + \vspace{-1.75cm} + \strut\hfill + \begin{minipage}{6.5cm} + Fazit: + \begin{itemize} + \item + \textbf{Adressen von Variablen\\ + sind systemabhängig} + \item + Bei Definition von Datenformaten\\ + Alignment beachten \textarrow\ effizienter + \end{itemize} + \end{minipage} + +\end{frame} + +\fi + +\end{document} -- GitLab