Added stuff from corona start

Signed-off-by: Tyrolyean <tyrolyean@tyrolyean.net>
This commit is contained in:
Tyrolyean 2020-03-14 22:30:05 +01:00
parent 4dc03e5250
commit a78cc80bb2
No known key found for this signature in database
GPG Key ID: 81EC9BAC5E9667C6
119 changed files with 119640 additions and 17 deletions

36
code/16550/README Normal file
View File

@ -0,0 +1,36 @@
#### 16550 CODE ####
The 16550 Code in this repository was developed for the ATMega 2560, which is
the Atmel AVR on the Arduino Megas from Revision 3 onwards.
The following port Registers have been used for the following things on the AVR:
- PORTF
This Port-Register is used for the Data-Bus. It is in most usecases
onedirectional, but if needed, for example for a feedback read, it can
be used as bi-directonal
- PORTE[0;2]
This part of the Port-Register is used for the Address bus and is
always driven by the AVR.
- PORTE[3]
This pin is used for the !WR pin of the 16550 UART and is always driven
by the AVR. THE !WR pin is used to signal a write access.
- PORTE[4]
This pin is used for the !RD pin of the 16550 UART and is always driven
by the AVR. The !RF pin is used to signal a read access.
- PORTE[5]
This pin is used for the MR pin of the 16550 UART and is always
driven by the AVR. The MR pin is used to reset the IC.
- PORTE[6]
This pin is used for the !CS3 pin of the 16550 UART and is always
driven by the AVR. The !CS3 pin is used to tell the cheip when data
on the data and address bus is meant for it.

70
code/16550/count/Makefile Normal file
View File

@ -0,0 +1,70 @@
MKDIR_P := mkdir -p
CP := cp
MV := mv
CC := avr-gcc
CCC := avr-g++
RM_RF = rm -rf
OCPY := avr-objcopy
AVRDUDE := avrdude
PORT := /dev/ttyACM0
#PORT := usb
#BOARD := atmega328p
BOARD := atmega2560
#PROGRAMMER := arduino
PROGRAMMER := usbasp
#PROGBOARD := m328p
PROGBOARD := m2560
BAUD_RATE_PROG := 115200
FLASH_CMD := $(AVRDUDE) -b $(BAUD_RATE_PROG) -p $(PROGBOARD) -D -P $(PORT) -c $(PROGRAMMER)
AVRSIZE := avr-size
AVRSIZE_FLAGS := -C --mcu=$(PROGBOARD)
# directories
CWD := $(realpath .)
BINDIR := $(CWD)/bin
BUILDDIR := $(CWD)/build
SRCDIR := $(CWD)/src
INCLUDEDIR := $(CWD)/include
# flas
CFLAGS := -mmcu=$(BOARD) -Os -I$(INCLUDEDIR) -Wall -Wextra
LDFLAGS := -mmcu=$(BOARD)
# target files
DIRS_TARGET := $(BINDIR) $(BUILDDIR)
TARGET := $(BINDIR)/mc.hex
TARGET_ELF := $(BINDIR)/mc.elf
SRCFILES := $(wildcard $(SRCDIR)/*.c)
OBJFILES := $(patsubst $(SRCDIR)/%.c,$(BUILDDIR)/%.o,$(SRCFILES))
# fancy targets
all: directories $(TARGET)
directories: $(DIRS_TARGET)
# less fancy targets
$(DIRS_TARGET):
$(MKDIR_P) $@
$(TARGET) : $(TARGET_ELF)
$(OCPY) -O ihex -j .text -j .data $^ $@
$(TARGET_ELF): $(OBJFILES)
$(CC) $(LDFLAGS) -o $@ $^
$(AVRSIZE) $(AVRSIZE_FLAGS) $@
$(BUILDDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c -o $@ $<
flash: $(TARGET)
# For atmega 2560
$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U lfuse:w:0xDF:m -U efuse:w:0xFF:m -U flash:w:$^:i -U efuse:w:0xfa:m
# For atmega 328p:
#$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U efuse:w:0xFF:m -U lfuse:w:0xDF:m -U flash:w:$^:i -U efuse:w:0xfd:m
# If unknown or no fuse bits available over programmer
#$(FLASH_CMD) -U flash:w:$^:i
$(FLASH_CMD) -U flash:v:$^:i
clean:
$(RM_RF) $(DIRS_TARGET)

BIN
code/16550/count/bin/mc.elf Executable file

Binary file not shown.

View File

@ -0,0 +1,26 @@
:100000000C9472000C948D000C948D000C948D0057
:100010000C948D000C948D000C948D000C948D002C
:100020000C948D000C948D000C948D000C948D001C
:100030000C948D000C948D000C948D000C948D000C
:100040000C948D000C948D000C948D000C948D00FC
:100050000C948D000C948D000C948D000C948D00EC
:100060000C948D000C948D000C948D000C948D00DC
:100070000C948D000C948D000C948D000C948D00CC
:100080000C948D000C948D000C948D000C948D00BC
:100090000C948D000C948D000C948D000C948D00AC
:1000A0000C948D000C948D000C948D000C948D009C
:1000B0000C948D000C948D000C948D000C948D008C
:1000C0000C948D000C948D000C948D000C948D007C
:1000D0000C948D000C948D000C948D000C948D006C
:1000E0000C948D0011241FBECFEFD1E2DEBFCDBF37
:1000F00000E00CBF84B78093000214BE0FB6F894E2
:10010000A8958091600088618093600010926000E3
:100110000FBE0E94AB000C94C6000C94000081B38B
:100120008F5F81BB8091080181508093080180918D
:100130000B01882371F080910B01880F80930B01D4
:100140008FE891E00197F1F700C0000090E080E0B7
:10015000089581E0F3CFF8948FEF80BB809307017F
:1001600080930A0111BA1092080110920B01789441
:1001700088E19EE00FB6F894A895809360000FBECA
:1001800090936000A8950E948F00FCCFF894FFCF59
:00000001FF

Binary file not shown.

View File

@ -0,0 +1,86 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#define F_CPU 16000000UL
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <avr/wdt.h>
#include <util/delay.h>
#include <avr/interrupt.h>
uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
void get_mcusr(void) \
__attribute__((naked)) \
__attribute__((section(".init3")));
void get_mcusr(void)
{
mcusr_mirror = MCUSR;
MCUSR = 0;
wdt_disable();
}
int routine();
int main(){
/* Disable interrupts during initialisation phase */
cli();
/* Setup Data Direction Registers and populate with sane default
values */
DDRF = 0xFF;
DDRK = 0xFF;
DDRL = 0xFF;
PORTF = 0x00;
PORTK = 0x00;
PORTL = 0x00;
sei();
/* Enable the hardware watchdog. In case the microcontroller fails to
* finish it's task within the specified time, the watchdog will reset
* the atmel cookie.
*/
wdt_enable(WDTO_1S);
for(;;){
wdt_reset();
routine();
}
return 0;
}
int routine(){
PORTF += 1;
PORTK -= 1;
if(PORTL){
PORTL <<= 1;
}else{
PORTL = 1;
}
_delay_us(100);
return 0;
}

70
code/16550/echo/Makefile Normal file
View File

@ -0,0 +1,70 @@
MKDIR_P := mkdir -p
CP := cp
MV := mv
CC := avr-gcc
CCC := avr-g++
RM_RF = rm -rf
OCPY := avr-objcopy
AVRDUDE := avrdude
PORT := /dev/ttyACM0
#PORT := usb
#BOARD := atmega328p
BOARD := atmega2560
#PROGRAMMER := arduino
PROGRAMMER := usbasp
#PROGBOARD := m328p
PROGBOARD := m2560
BAUD_RATE_PROG := 115200
FLASH_CMD := $(AVRDUDE) -b $(BAUD_RATE_PROG) -p $(PROGBOARD) -D -P $(PORT) -c $(PROGRAMMER)
AVRSIZE := avr-size
AVRSIZE_FLAGS := -C --mcu=$(PROGBOARD)
# directories
CWD := $(realpath .)
BINDIR := $(CWD)/bin
BUILDDIR := $(CWD)/build
SRCDIR := $(CWD)/src
INCLUDEDIR := $(CWD)/include
# flas
CFLAGS := -mmcu=$(BOARD) -Os -I$(INCLUDEDIR) -Wall -Wextra
LDFLAGS := -mmcu=$(BOARD)
# target files
DIRS_TARGET := $(BINDIR) $(BUILDDIR)
TARGET := $(BINDIR)/mc.hex
TARGET_ELF := $(BINDIR)/mc.elf
SRCFILES := $(wildcard $(SRCDIR)/*.c)
OBJFILES := $(patsubst $(SRCDIR)/%.c,$(BUILDDIR)/%.o,$(SRCFILES))
# fancy targets
all: directories $(TARGET)
directories: $(DIRS_TARGET)
# less fancy targets
$(DIRS_TARGET):
$(MKDIR_P) $@
$(TARGET) : $(TARGET_ELF)
$(OCPY) -O ihex -j .text -j .data $^ $@
$(TARGET_ELF): $(OBJFILES)
$(CC) $(LDFLAGS) -o $@ $^
$(AVRSIZE) $(AVRSIZE_FLAGS) $@
$(BUILDDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c -o $@ $<
flash: $(TARGET)
# For atmega 2560
$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U lfuse:w:0xDF:m -U efuse:w:0xFF:m -U flash:w:$^:i -U efuse:w:0xfa:m
# For atmega 328p:
#$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U efuse:w:0xFF:m -U lfuse:w:0xDF:m -U flash:w:$^:i -U efuse:w:0xfd:m
# If unknown or no fuse bits available over programmer
#$(FLASH_CMD) -U flash:w:$^:i
$(FLASH_CMD) -U flash:v:$^:i
clean:
$(RM_RF) $(DIRS_TARGET)

BIN
code/16550/echo/bin/mc.elf Executable file

Binary file not shown.

View File

@ -0,0 +1,47 @@
:100000000C9472000C948D000C948D000C948D0057
:100010000C948D000C948D000C948D000C948D002C
:100020000C948D000C948D000C948D000C948D001C
:100030000C948D000C948D000C948D000C948D000C
:100040000C948D000C948D000C948D000C948D00FC
:100050000C948D000C948D000C948D000C948D00EC
:100060000C948D000C948D000C948D000C948D00DC
:100070000C948D000C948D000C948D000C948D00CC
:100080000C948D000C948D000C948D000C948D00BC
:100090000C948D000C948D000C948D000C948D00AC
:1000A0000C948D000C948D000C948D000C948D009C
:1000B0000C948D000C948D000C948D000C948D008C
:1000C0000C948D000C948D000C948D000C948D007C
:1000D0000C948D000C948D000C948D000C948D006C
:1000E0000C948D0011241FBECFEFD1E2DEBFCDBF37
:1000F00000E00CBF84B78093000214BE0FB6F894E2
:10010000A8958091600088618093600010926000E3
:100110000FBE0E94DD000C946E010C9400008093D1
:1001200008010895A8E0B1E08C938FEF80BBEBE06D
:10013000F1E080818D7F808361BB8081877F8083B8
:1001400085E08A95F1F700008081886080831C92A9
:1001500080818260808311BA0895A8E0B1E08C9319
:1001600010BA11BAEBE0F1E080818B7F808380814F
:10017000877F808385E08A95F1F700008FB19081B9
:10018000986090831C929081946090839FEF90BBC5
:1001900011BA95E09A95F1F70000089585E00E9464
:1001A000AD0080FF07C080E00E94AD00682F80E0B6
:1001B0000E94920090E080E00895F8948FEF80BB59
:1001C0008093070180930A0111BA109208011092DE
:1001D0000B0180910B01826080930B0180910B01D8
:1001E000846080930B0180910B01886080930B01E8
:1001F00080910B01806180930B0180910B018160E4
:1002000080930B018FE891E00197F1F700C00000A7
:1002100080910B018E7F80930B018FE99FE0019706
:10022000F1F700C0000063E883E00E94920063E001
:1002300080E00E94920060E081E00E94920063E012
:1002400083E00E94920069E480E00E9492008FE3C4
:100250009CE90197F1F700C000006EE480E00E9485
:1002600092008FE39CE90197F1F700C0000069E478
:1002700080E00E9492008FE39CE90197F1F700C0B3
:10028000000064E580E00E9492008FE39CE9019702
:10029000F1F700C000006DE080E00E9492008FE363
:1002A0009CE90197F1F700C000006AE080E00E943D
:1002B00092008FE39CE90197F1F700C00000789469
:1002C00088E19EE00FB6F894A895809360000FBE79
:1002D00090936000A8950E94CE00FCCFF894FFCFC9
:00000001FF

Binary file not shown.

175
code/16550/echo/src/main.c Normal file
View File

@ -0,0 +1,175 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#define F_CPU 16000000UL
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <avr/wdt.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define BUS_HOLD_US 1
/* Shift values inside the PORTK Register */
#define WR_SHIFT 1
#define RD_SHIFT 2
#define MR_SHIFT 0
#define CS_SHIFT 3
#define CS_ADC_SHIFT 4
/* Registers in the 16550 UART */
#define UART_REG_DLLS 0
#define UART_REG_DLMS 1
#define UART_REG_TXRX 0
#define UART_REG_IER 1
#define UART_REG_IIR 2
#define UART_REG_LCR 3
#define UART_REG_MCR 4
#define UART_REG_LSR 5
#define UART_REG_MSR 6
#define UART_REG_SCR 7
uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
void get_mcusr(void) \
__attribute__((naked)) \
__attribute__((section(".init3")));
void get_mcusr(void)
{
mcusr_mirror = MCUSR;
MCUSR = 0;
wdt_disable();
}
int routine();
void set_addr(uint8_t addr){
PORTK = addr;
return;
}
void write_to_16550(uint8_t addr, uint8_t data){
set_addr(addr);
DDRF = 0xFF;
PORTL &= ~(1<<WR_SHIFT);
PORTF = data;
PORTL &= ~(1<<CS_SHIFT);
_delay_us(BUS_HOLD_US); /*Wait for the data and signal lanes to become stable*/
PORTL |= 1<<CS_SHIFT;
set_addr(0x00);
PORTL |= 1<<WR_SHIFT;
PORTF = 0x00;
return;
}
uint8_t read_from_16550(uint8_t addr){
uint8_t data = 0x00;
set_addr(addr);
DDRF = 0x00;
PORTF = 0x00;
PORTL &= ~(1<<RD_SHIFT);
PORTL &= ~(1<<CS_SHIFT);
_delay_us(BUS_HOLD_US); /* Wait for the data and signal lanes to become stable*/
data = PINF;
PORTL |= 1<<CS_SHIFT;
set_addr(0x00);
PORTL |= 1<<RD_SHIFT;
DDRF = 0xFF;
PORTF = 0x00;
_delay_us(BUS_HOLD_US); /*Wait for the data and signal lanes to become stable*/
return data;
}
int main(){
/* Disable interrupts during initialisation phase */
cli();
/* Setup Data Direction Registers and populate with sane default
values */
DDRF = 0xFF; /* Data Bus */
DDRK = 0xFF; /* Address Bus */
DDRL = 0xFF; /* Control Bus */
PORTF = 0x00;
PORTK = 0x00;
PORTL = 0x00;
/* Cleanly reset the 16550 uart */
PORTL |= (1<<WR_SHIFT);
PORTL |= (1<<RD_SHIFT);
PORTL |= (1<<CS_SHIFT);
PORTL |= (1<<CS_ADC_SHIFT);
PORTL |= (1<<MR_SHIFT);
_delay_us(100);
PORTL &= ~(1<<MR_SHIFT);
_delay_us(1000);
write_to_16550(UART_REG_LCR,0x83);
write_to_16550(UART_REG_DLLS,0x03);
write_to_16550(UART_REG_DLMS,0x00);
write_to_16550(UART_REG_LCR,0x03);
write_to_16550(UART_REG_TXRX,'I');
_delay_us(10000);
write_to_16550(UART_REG_TXRX,'N');
_delay_us(10000);
write_to_16550(UART_REG_TXRX,'I');
_delay_us(10000);
write_to_16550(UART_REG_TXRX,'T');
_delay_us(10000);
write_to_16550(UART_REG_TXRX,'\r');
_delay_us(10000);
write_to_16550(UART_REG_TXRX,'\n');
_delay_us(10000);
sei();
/* Enable the hardware watchdog. In case the microcontroller fails to
* finish it's task within the specified time, the watchdog will reset
* the atmel cookie.
*/
wdt_enable(WDTO_1S);
for(;;){
wdt_reset();
routine();
}
return 0;
}
int routine(){
uint8_t received = read_from_16550(UART_REG_LSR);
if(received & 0x01){
received = read_from_16550(UART_REG_TXRX);
write_to_16550(UART_REG_TXRX,received);
}
return 0;
}

View File

@ -0,0 +1,70 @@
MKDIR_P := mkdir -p
CP := cp
MV := mv
CC := avr-gcc
CCC := avr-g++
RM_RF = rm -rf
OCPY := avr-objcopy
AVRDUDE := avrdude
PORT := /dev/ttyACM0
#PORT := usb
#BOARD := atmega328p
BOARD := atmega2560
#PROGRAMMER := arduino
PROGRAMMER := usbasp
#PROGBOARD := m328p
PROGBOARD := m2560
BAUD_RATE_PROG := 115200
FLASH_CMD := $(AVRDUDE) -b $(BAUD_RATE_PROG) -p $(PROGBOARD) -D -P $(PORT) -c $(PROGRAMMER)
AVRSIZE := avr-size
AVRSIZE_FLAGS := -C --mcu=$(PROGBOARD)
# directories
CWD := $(realpath .)
BINDIR := $(CWD)/bin
BUILDDIR := $(CWD)/build
SRCDIR := $(CWD)/src
INCLUDEDIR := $(CWD)/include
# flas
CFLAGS := -mmcu=$(BOARD) -Os -I$(INCLUDEDIR) -Wall -Wextra
LDFLAGS := -mmcu=$(BOARD)
# target files
DIRS_TARGET := $(BINDIR) $(BUILDDIR)
TARGET := $(BINDIR)/mc.hex
TARGET_ELF := $(BINDIR)/mc.elf
SRCFILES := $(wildcard $(SRCDIR)/*.c)
OBJFILES := $(patsubst $(SRCDIR)/%.c,$(BUILDDIR)/%.o,$(SRCFILES))
# fancy targets
all: directories $(TARGET)
directories: $(DIRS_TARGET)
# less fancy targets
$(DIRS_TARGET):
$(MKDIR_P) $@
$(TARGET) : $(TARGET_ELF)
$(OCPY) -O ihex -j .text -j .data $^ $@
$(TARGET_ELF): $(OBJFILES)
$(CC) $(LDFLAGS) -o $@ $^
$(AVRSIZE) $(AVRSIZE_FLAGS) $@
$(BUILDDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c -o $@ $<
flash: $(TARGET)
# For atmega 2560
$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U lfuse:w:0xDF:m -U efuse:w:0xFF:m -U flash:w:$^:i -U efuse:w:0xfa:m
# For atmega 328p:
#$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U efuse:w:0xFF:m -U lfuse:w:0xDF:m -U flash:w:$^:i -U efuse:w:0xfd:m
# If unknown or no fuse bits available over programmer
#$(FLASH_CMD) -U flash:w:$^:i
$(FLASH_CMD) -U flash:v:$^:i
clean:
$(RM_RF) $(DIRS_TARGET)

BIN
code/16550/transmit/bin/mc.elf Executable file

Binary file not shown.

View File

@ -0,0 +1,40 @@
:100000000C9472000C948D000C948D000C948D0057
:100010000C948D000C948D000C948D000C948D002C
:100020000C948D000C948D000C948D000C948D001C
:100030000C948D000C948D000C948D000C948D000C
:100040000C948D000C948D000C948D000C948D00FC
:100050000C948D000C948D000C948D000C948D00EC
:100060000C948D000C948D000C948D000C948D00DC
:100070000C948D000C948D000C948D000C948D00CC
:100080000C948D000C948D000C948D000C948D00BC
:100090000C948D000C948D000C948D000C948D00AC
:1000A0000C948D000C948D000C948D000C948D009C
:1000B0000C948D000C948D000C948D000C948D008C
:1000C0000C948D000C948D000C948D000C948D007C
:1000D0000C948D000C948D000C948D000C948D006C
:1000E0000C948D0011241FBECFEFD1E2DEBFCDBF37
:1000F00000E00CBF84B78093000214BE0FB6F894E2
:10010000A8958091600088618093600010926000E3
:100110000FBE0E94F0000C9430010C9400008093FC
:1001200008010895A8E0B1E08C93EBE0F1E0808154
:100130008D7F808361BB8081877F80838AE08A9501
:10014000F1F700C08081886080831C92808182608A
:10015000808311BA089563E883E00E94920063E00F
:1001600080E00E94920060E081E00E94920063E0E3
:1001700083E00E94920061E480E00E9492008FE39D
:100180009CE90197F1F700C0000062E480E00E9462
:1001900092008FE39CE90197F1F700C0000061E253
:1001A00080E00E9492008FE39CE90197F1F700C084
:1001B00000006DE080E00E9492008FE39CE90197CF
:1001C000F1F700C000006AE080E00E9492008FE337
:1001D0009CE90197F1F700C0000090E080E00895ED
:1001E000F8948FEF80BB8093070180930A0111BAC6
:1001F0001092080110920B0180910B018260809394
:100200000B0180910B01846080930B0180910B01A5
:10021000886080930B0180910B01816080930B01BA
:100220008FE891E00197F1F700C0000080910B0189
:100230008E7F80930B018FE99FE00197F1F700C05B
:100240000000789488E19EE00FB6F894A89580931A
:1002500060000FBE90936000A8950E94AB00FCCF99
:04026000F894FFCF40
:00000001FF

Binary file not shown.

View File

@ -0,0 +1,142 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#define F_CPU 16000000UL
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <avr/wdt.h>
#include <util/delay.h>
#include <avr/interrupt.h>
/* Shift values inside the PORTK Register */
#define WR_SHIFT 1
#define RD_SHIFT 2
#define MR_SHIFT 0
#define CS_SHIFT 3
/* Registers in the 16550 UART */
#define UART_REG_DLLS 0
#define UART_REG_DLMS 1
#define UART_REG_TXRX 0
#define UART_REG_IER 1
#define UART_REG_IIR 2
#define UART_REG_LCR 3
#define UART_REG_MCR 4
#define UART_REG_LSR 5
#define UART_REG_MSR 6
#define UART_REG_SCR 7
uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
void get_mcusr(void) \
__attribute__((naked)) \
__attribute__((section(".init3")));
void get_mcusr(void)
{
mcusr_mirror = MCUSR;
MCUSR = 0;
wdt_disable();
}
int routine();
void set_addr(uint8_t addr){
PORTK = addr;
return;
}
void write_to_16550(uint8_t addr, uint8_t data){
set_addr(addr);
PORTL &= ~(1<<WR_SHIFT);
PORTF = data;
PORTL &= ~(1<<CS_SHIFT);
_delay_us(2); /*Wait for the data and signal lanes to become stable*/
PORTL |= 1<<CS_SHIFT;
set_addr(0x00);
PORTL |= 1<<WR_SHIFT;
PORTF = 0x00;
return;
}
int main(){
/* Disable interrupts during initialisation phase */
cli();
/* Setup Data Direction Registers and populate with sane default
values */
DDRF = 0xFF; /* Data Bus */
DDRK = 0xFF; /* Address Bus */
DDRL = 0xFF; /* Control Bus */
PORTF = 0x00;
PORTK = 0x00;
PORTL = 0x00;
/* Cleanly reset the 16550 uart */
PORTL |= (1<<WR_SHIFT);
PORTL |= (1<<RD_SHIFT);
PORTL |= (1<<CS_SHIFT);
PORTL |= (1<<MR_SHIFT);
_delay_us(100);
PORTL &= ~(1<<MR_SHIFT);
_delay_us(1000);
sei();
/* Enable the hardware watchdog. In case the microcontroller fails to
* finish it's task within the specified time, the watchdog will reset
* the atmel cookie.
*/
wdt_enable(WDTO_1S);
for(;;){
wdt_reset();
routine();
}
return 0;
}
int routine(){
write_to_16550(UART_REG_LCR,0x83);
write_to_16550(UART_REG_DLLS,0x03);
write_to_16550(UART_REG_DLMS,0x00);
write_to_16550(UART_REG_LCR,0x03);
write_to_16550(UART_REG_TXRX,'A');
_delay_us(10000);
write_to_16550(UART_REG_TXRX,'B');
_delay_us(10000);
write_to_16550(UART_REG_TXRX,'!');
_delay_us(10000);
write_to_16550(UART_REG_TXRX,'\r');
_delay_us(10000);
write_to_16550(UART_REG_TXRX,'\n');
_delay_us(10000);
return 0;
}

70
code/dac/saw/Makefile Normal file
View File

@ -0,0 +1,70 @@
MKDIR_P := mkdir -p
CP := cp
MV := mv
CC := avr-gcc
CCC := avr-g++
RM_RF = rm -rf
OCPY := avr-objcopy
AVRDUDE := avrdude
PORT := /dev/ttyACM0
#PORT := usb
#BOARD := atmega328p
BOARD := atmega2560
#PROGRAMMER := arduino
PROGRAMMER := usbasp
#PROGBOARD := m328p
PROGBOARD := m2560
BAUD_RATE_PROG := 115200
FLASH_CMD := $(AVRDUDE) -b $(BAUD_RATE_PROG) -p $(PROGBOARD) -D -P $(PORT) -c $(PROGRAMMER)
AVRSIZE := avr-size
AVRSIZE_FLAGS := -C --mcu=$(PROGBOARD)
# directories
CWD := $(realpath .)
BINDIR := $(CWD)/bin
BUILDDIR := $(CWD)/build
SRCDIR := $(CWD)/src
INCLUDEDIR := $(CWD)/include
# flas
CFLAGS := -mmcu=$(BOARD) -Os -I$(INCLUDEDIR) -Wall -Wextra
LDFLAGS := -mmcu=$(BOARD)
# target files
DIRS_TARGET := $(BINDIR) $(BUILDDIR)
TARGET := $(BINDIR)/mc.hex
TARGET_ELF := $(BINDIR)/mc.elf
SRCFILES := $(wildcard $(SRCDIR)/*.c)
OBJFILES := $(patsubst $(SRCDIR)/%.c,$(BUILDDIR)/%.o,$(SRCFILES))
# fancy targets
all: directories $(TARGET)
directories: $(DIRS_TARGET)
# less fancy targets
$(DIRS_TARGET):
$(MKDIR_P) $@
$(TARGET) : $(TARGET_ELF)
$(OCPY) -O ihex -j .text -j .data $^ $@
$(TARGET_ELF): $(OBJFILES)
$(CC) $(LDFLAGS) -o $@ $^
$(AVRSIZE) $(AVRSIZE_FLAGS) $@
$(BUILDDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c -o $@ $<
flash: $(TARGET)
# For atmega 2560
$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U lfuse:w:0xDF:m -U efuse:w:0xFF:m -U flash:w:$^:i -U efuse:w:0xfa:m
# For atmega 328p:
#$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U efuse:w:0xFF:m -U lfuse:w:0xDF:m -U flash:w:$^:i -U efuse:w:0xfd:m
# If unknown or no fuse bits available over programmer
#$(FLASH_CMD) -U flash:w:$^:i
$(FLASH_CMD) -U flash:v:$^:i
clean:
$(RM_RF) $(DIRS_TARGET)

BIN
code/dac/saw/bin/mc.elf Executable file

Binary file not shown.

25
code/dac/saw/bin/mc.hex Normal file
View File

@ -0,0 +1,25 @@
:100000000C9472000C948D000C948D000C948D0057
:100010000C948D000C948D000C948D000C948D002C
:100020000C948D000C948D000C948D000C948D001C
:100030000C948D000C948D000C948D000C948D000C
:100040000C948D000C948D000C948D000C948D00FC
:100050000C948D000C948D000C948D000C948D00EC
:100060000C948D000C948D000C948D000C948D00DC
:100070000C948D000C948D000C948D000C948D00CC
:100080000C948D000C948D000C948D000C948D00BC
:100090000C948D000C948D000C948D000C948D00AC
:1000A0000C948D000C948D000C948D000C948D009C
:1000B0000C948D000C948D000C948D000C948D008C
:1000C0000C948D000C948D000C948D000C948D007C
:1000D0000C948D000C948D000C948D000C948D006C
:1000E0000C948D0011241FBECFEFD1E2DEBFCDBF37
:1000F00000E00CBF84B78093000214BE0FB6F894E2
:10010000A8958091600088618093600010926000E3
:100110000FBE0E94A1000C94BE000C940000E8E009
:10012000F1E080818E7F808381B38F5F81BB80818E
:100130008160808385E08A95F1F7000090E080E09F
:100140000895F8948FEF80BB8091070181608093C0
:10015000070111BA809108018160809308017894A9
:1001600088E19EE00FB6F894A895809360000FBEDA
:1001700090936000A8950E948F00FCCFF894FFCF69
:00000001FF

BIN
code/dac/saw/build/main.o Normal file

Binary file not shown.

81
code/dac/saw/src/main.c Normal file
View File

@ -0,0 +1,81 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#define F_CPU 16000000UL
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <avr/wdt.h>
#include <util/delay.h>
#include <avr/interrupt.h>
uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
void get_mcusr(void) \
__attribute__((naked)) \
__attribute__((section(".init3")));
void get_mcusr(void)
{
mcusr_mirror = MCUSR;
MCUSR = 0;
wdt_disable();
}
int routine();
int main(){
/* Disable interrupts during initialisation phase */
cli();
DDRF = 0xFF;
DDRK |= (0x01<<0);
PORTF = 0x00;
PORTK |= (0x01<<0);
sei();
/* Enable the hardware watchdog. In case the microcontroller fails to
* finish it's task within the specified time, the watchdog will reset
* the atmel cookie.
*/
wdt_enable(WDTO_1S);
while(1){
wdt_reset();
if(routine() < 0){
}
}
return 0;
}
int routine(){
/* Produces a sawtooth */
#if 0
PORTE &= ~(0x01<<4);
PORTF += 0x01;
PORTE |= (0x01<<4);
_delay_us(1);
#endif
PORTK &= ~(0x01<<0);
PORTF += 0x01;
PORTK |= (0x01<<0);
_delay_us(1);
return 0;
}

View File

@ -0,0 +1,70 @@
MKDIR_P := mkdir -p
CP := cp
MV := mv
CC := avr-gcc
CCC := avr-g++
RM_RF = rm -rf
OCPY := avr-objcopy
AVRDUDE := avrdude
PORT := /dev/ttyACM0
#PORT := usb
#BOARD := atmega328p
BOARD := atmega2560
#PROGRAMMER := arduino
PROGRAMMER := usbasp
#PROGBOARD := m328p
PROGBOARD := m2560
BAUD_RATE_PROG := 115200
FLASH_CMD := $(AVRDUDE) -b $(BAUD_RATE_PROG) -p $(PROGBOARD) -D -P $(PORT) -c $(PROGRAMMER)
AVRSIZE := avr-size
AVRSIZE_FLAGS := -C --mcu=$(PROGBOARD)
# directories
CWD := $(realpath .)
BINDIR := $(CWD)/bin
BUILDDIR := $(CWD)/build
SRCDIR := $(CWD)/src
INCLUDEDIR := $(CWD)/include
# flas
CFLAGS := -mmcu=$(BOARD) -Os -I$(INCLUDEDIR) -Wall -Wextra
LDFLAGS := -mmcu=$(BOARD)
# target files
DIRS_TARGET := $(BINDIR) $(BUILDDIR)
TARGET := $(BINDIR)/mc.hex
TARGET_ELF := $(BINDIR)/mc.elf
SRCFILES := $(wildcard $(SRCDIR)/*.c)
OBJFILES := $(patsubst $(SRCDIR)/%.c,$(BUILDDIR)/%.o,$(SRCFILES))
# fancy targets
all: directories $(TARGET)
directories: $(DIRS_TARGET)
# less fancy targets
$(DIRS_TARGET):
$(MKDIR_P) $@
$(TARGET) : $(TARGET_ELF)
$(OCPY) -O ihex -j .text -j .data $^ $@
$(TARGET_ELF): $(OBJFILES)
$(CC) $(LDFLAGS) -o $@ $^
$(AVRSIZE) $(AVRSIZE_FLAGS) $@
$(BUILDDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c -o $@ $<
flash: $(TARGET)
# For atmega 2560
$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U lfuse:w:0xDF:m -U efuse:w:0xFF:m -U flash:w:$^:i -U efuse:w:0xfa:m
# For atmega 328p:
#$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U efuse:w:0xFF:m -U lfuse:w:0xDF:m -U flash:w:$^:i -U efuse:w:0xfd:m
# If unknown or no fuse bits available over programmer
#$(FLASH_CMD) -U flash:w:$^:i
$(FLASH_CMD) -U flash:v:$^:i
clean:
$(RM_RF) $(DIRS_TARGET)

BIN
code/dac/saw_fifo/bin/mc.elf Executable file

Binary file not shown.

View File

@ -0,0 +1,30 @@
:100000000C9472000C948D000C948D000C948D0057
:100010000C948D000C948D000C948D000C948D002C
:100020000C948D000C948D000C948D000C948D001C
:100030000C948D000C948D000C948D000C948D000C
:100040000C948D000C948D000C948D000C948D00FC
:100050000C948D000C948D000C948D000C948D00EC
:100060000C948D000C948D000C948D000C948D00DC
:100070000C948D000C948D000C948D000C948D00CC
:100080000C948D000C948D000C948D000C948D00BC
:100090000C948D000C948D000C948D000C948D00AC
:1000A0000C948D000C948D000C948D000C948D009C
:1000B0000C948D000C948D000C948D000C948D008C
:1000C0000C948D000C948D000C948D000C948D007C
:1000D0000C948D000C948D000C948D000C948D006C
:1000E0000C948D0011241FBECFEFD1E2DEBFCDBF37
:1000F00000E00CBF84B78093000214BE0FB6F894E2
:10010000A8958091600088618093600010926000E3
:100110000FBE0E94AA000C94E3000C94000090E033
:1001200080E081BB209108012E7F2093080120915F
:1001300008012160209308010196811521E09207B2
:1001400081F78FE39CE90197F1F700C0000090E090
:1001500080E00895F8948FEF80BB80910701816063
:10016000809307018091070182608093070111BA93
:10017000809108018160809308018091080182606C
:1001800080930801809108018D7F8093080185E3A9
:100190008A95F1F700008091080182608093080140
:1001A00085E38A95F1F70000789488E19EE00FB628
:1001B000F894A895809360000FBE90936000A89576
:0A01C0000E948F00FCCFF894FFCFDF
:00000001FF

Binary file not shown.

View File

@ -0,0 +1,83 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#define F_CPU 16000000UL
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <avr/wdt.h>
#include <util/delay.h>
#include <avr/interrupt.h>
uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
void get_mcusr(void) \
__attribute__((naked)) \
__attribute__((section(".init3")));
void get_mcusr(void)
{
mcusr_mirror = MCUSR;
MCUSR = 0;
wdt_disable();
}
int routine();
int main(){
/* Disable interrupts during initialisation phase */
cli();
DDRF = 0xFF;
DDRK |= (0x01<<0);
DDRK |= (0x01<<1);
PORTF = 0x00;
PORTK |= (0x01<<0);
PORTK |= (0x01<<1);
PORTK &= ~(0x01<<1);
_delay_us(10);
PORTK |= (0x01<<1);
_delay_us(10);
sei();
/* Enable the hardware watchdog. In case the microcontroller fails to
* finish it's task within the specified time, the watchdog will reset
* the atmel cookie.
*/
wdt_enable(WDTO_1S);
while(1){
wdt_reset();
if(routine() < 0){
}
}
return 0;
}
int routine(){
for(size_t i = 0; i < 256; i++){
//PORTF = (0xFF & ((uint8_t)(sinf(i*3.141592654/255)/3.141592654*255)));
PORTF = (0xFF & i);
PORTK &= ~(0x01<<0);
PORTK |= (0x01<<0);
}
_delay_ms(10);
return 0;
}

View File

@ -0,0 +1,70 @@
MKDIR_P := mkdir -p
CP := cp
MV := mv
CC := avr-gcc
CCC := avr-g++
RM_RF = rm -rf
OCPY := avr-objcopy
AVRDUDE := avrdude
PORT := /dev/ttyACM0
#PORT := usb
#BOARD := atmega328p
BOARD := atmega2560
#PROGRAMMER := arduino
PROGRAMMER := usbasp
#PROGBOARD := m328p
PROGBOARD := m2560
BAUD_RATE_PROG := 115200
FLASH_CMD := $(AVRDUDE) -b $(BAUD_RATE_PROG) -p $(PROGBOARD) -D -P $(PORT) -c $(PROGRAMMER)
AVRSIZE := avr-size
AVRSIZE_FLAGS := -C --mcu=$(PROGBOARD)
# directories
CWD := $(realpath .)
BINDIR := $(CWD)/bin
BUILDDIR := $(CWD)/build
SRCDIR := $(CWD)/src
INCLUDEDIR := $(CWD)/include
# flas
CFLAGS := -mmcu=$(BOARD) -Os -I$(INCLUDEDIR) -Wall -Wextra
LDFLAGS := -mmcu=$(BOARD)
# target files
DIRS_TARGET := $(BINDIR) $(BUILDDIR)
TARGET := $(BINDIR)/mc.hex
TARGET_ELF := $(BINDIR)/mc.elf
SRCFILES := $(wildcard $(SRCDIR)/*.c)
OBJFILES := $(patsubst $(SRCDIR)/%.c,$(BUILDDIR)/%.o,$(SRCFILES))
# fancy targets
all: directories $(TARGET)
directories: $(DIRS_TARGET)
# less fancy targets
$(DIRS_TARGET):
$(MKDIR_P) $@
$(TARGET) : $(TARGET_ELF)
$(OCPY) -O ihex -j .text -j .data $^ $@
$(TARGET_ELF): $(OBJFILES)
$(CC) $(LDFLAGS) -o $@ $^
$(AVRSIZE) $(AVRSIZE_FLAGS) $@
$(BUILDDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c -o $@ $<
flash: $(TARGET)
# For atmega 2560
$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U lfuse:w:0xDF:m -U efuse:w:0xFF:m -U flash:w:$^:i -U efuse:w:0xfa:m
# For atmega 328p:
#$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U efuse:w:0xFF:m -U lfuse:w:0xDF:m -U flash:w:$^:i -U efuse:w:0xfd:m
# If unknown or no fuse bits available over programmer
#$(FLASH_CMD) -U flash:w:$^:i
$(FLASH_CMD) -U flash:v:$^:i
clean:
$(RM_RF) $(DIRS_TARGET)

Binary file not shown.

View File

@ -0,0 +1,140 @@
:100000000C9481000C94A4000C94A4000C94A40003
:100010000C94A4000C94A4000C94A4000C94A400D0
:100020000C94A4000C94A4000C94A4000C94A400C0
:100030000C94A4000C94A4000C94A4000C94A400B0
:100040000C94A4000C94A4000C94A4000C94A400A0
:100050000C94A4000C94A4000C94A4000C94A40090
:100060000C94A4000C94A4000C94A4000C94A40080
:100070000C94A4000C94A4000C94A4000C94A40070
:100080000C94A4000C94A4000C94A4000C94A40060
:100090000C94A4000C94A4000C94A4000C94A40050
:1000A0000C94A4000C94A4000C94A4000C94A40040
:1000B0000C94A4000C94A4000C94A4000C94A40030
:1000C0000C94A4000C94A4000C94A4000C94A40020
:1000D0000C94A4000C94A4000C94A4000C94A40010
:1000E0000C94A40005A84CCDB2D44EB93836A90260
:1000F0000C50B9918688083CA6AAAA2ABE00000026
:10010000803F11241FBECFEFD1E2DEBFCDBF00E0A4
:100110000CBF84B78093000314BE0FB6F894A89563
:1001200080916000886180936000109260000FBE33
:1001300023E0A0E0B2E001C01D92A030B207E1F7D9
:100140000E9409010C9450040C9400008093080153
:100150000895A8E0B1E08C938FEF80BBEBE0F1E075
:1001600080818D7F808361BB80818F7E808385E0ED
:100170008A95F1F700008081806180831C928081E4
:100180008260808311BA0895A8E0B1E08C9310BA20
:1001900011BAEBE0F1E080818B7F808380818F7EDC
:1001A000808385E08A95F1F700008FB1908190619E
:1001B00090831C929081946090839FEF90BB11BAC2
:1001C00095E09A95F1F7000008950F931F93CF9350
:1001D00000E012E0C0E0F80161918F018C2F817086
:1001E0000E94A900CF5FCF3FB1F760E080E00E949E
:1001F000A90060E081E00E94A9008FE39CE90197DB
:10020000F1F700C0000090E080E0CF911F910F91C6
:10021000089500D000D0CDB7DEB7F8948FEF80BB43
:100220008093070180930A0111BA1092080110927D
:100230000B0180910B01826080930B0180910B0177
:10024000846080930B0180910B01806180930B018E
:1002500080910B01816080930B018FE891E0019701
:10026000F1F700C0000080910B018E7F80930B019D
:1002700000E012E01E821D82AD81BE81CD01B0E0A2
:10028000A0E089839A83AB83BC83BC01CD010E942B
:10029000C50220E030E04FE753E469837A838B8323
:1002A0009C8369817A818B819C810E941D0228ED4B
:1002B0003FE049EC50E469837A838B839C836981B6
:1002C0007A818B819C810E94530369837A838B831B
:1002D0009C8369817A818B819C810E94C00320E08C
:1002E00030E04FEF52E469837A838B839C8369818A
:1002F0007A818B819C810E94530320E030E04FEF94
:1003000052E469837A838B839C8369817A818B81B0
:100310009C810E94B10169837A838B839C8369816C
:100320007A818B819C810E948F02F80161938F01F9
:100330008D819E8101969E838D838115914009F068
:100340009BCF789488E19EE00FB6F894A8958093AF
:1003500060000FBE90936000A8950E94E500FCCF5E
:100360005058BB27AA270E94C8010C9419030E9469
:100370000B0338F00E94120320F039F49F3F19F468
:1003800026F40C9408030EF4E095E7FB0C940203AA
:10039000E92F0E942A0358F3BA17620773078407EC
:1003A000950720F079F4A6F50C944C030EF4E09533
:1003B0000B2EBA2FA02D0B01B90190010C01CA011F
:1003C000A0011124FF27591B99F0593F50F4503ECA
:1003D00068F11A16F040A22F232F342F4427585FBC
:1003E000F3CF469537952795A795F0405395C9F7D4
:1003F0007EF41F16BA0B620B730B840BBAF091508C
:10040000A1F0FF0FBB1F661F771F881FC2F70EC02A
:10041000BA0F621F731F841F48F4879577956795FD
:10042000B795F7959E3F08F0B0CF9395880F08F0E9
:100430009927EE0F9795879508950E9431020C94A5
:1004400019030E94120358F00E940B0340F029F494
:100450005F3F29F00C94020351110C944D030C944E
:1004600008030E942A0368F39923B1F3552391F3FB
:10047000951B550BBB27AA2762177307840738F013
:100480009F5F5F4F220F331F441FAA1FA9F335D070
:100490000E2E3AF0E0E832D091505040E695001C24
:1004A000CAF72BD0FE2F29D0660F771F881FBB1FDE
:1004B000261737074807AB07B0E809F0BB0B802DBC
:1004C000BF01FF2793585F4F3AF09E3F510578F0E8
:1004D0000C9402030C944D035F3FE4F3983ED4F375
:1004E000869577956795B795F7959F5FC9F7880FBC
:1004F000911D9695879597F90895E1E0660F771F0E
:10050000881FBB1F621773078407BA0720F0621B9E
:10051000730B840BBA0BEE1F88F7E09508950E94C9
:1005200096026894B1110C944D0308950E94320311
:1005300088F09F5798F0B92F9927B751B0F0E1F0A4
:10054000660F771F881F991F1AF0BA95C9F714C054
:10055000B13091F00E944C03B1E008950C944C032B
:10056000672F782F8827B85F39F0B93FCCF386958D
:1005700077956795B395D9F73EF4909580957095EA
:1005800061957F4F8F4F9F4F0895E89409C097FB67
:100590003EF490958095709561957F4F8F4F9F4F5A
:1005A0009923A9F0F92F96E9BB279395F69587959E
:1005B00077956795B795F111F8CFFAF4BB0F11F461
:1005C00060FF1BC06F5F7F4F8F4F9F4F16C0882308
:1005D00011F096E911C0772321F09EE8872F762F3E
:1005E00005C0662371F096E8862F70E060E02AF07F
:1005F0009A95660F771F881FDAF7880F969587956B
:1006000097F9089597F99F6780E870E060E0089592
:100610009FEF80EC089500240A941616170618061A
:100620000906089500240A941216130614060506F6
:100630000895092E0394000C11F4882352F0BB0F87
:1006400040F4BF2B11F460FF04C06F5F7F4F8F4FEA
:100650009F4F089557FD9058440F551F59F05F3F25
:1006600071F04795880F97FB991F61F09F3F79F0D4
:1006700087950895121613061406551FF2CF469556
:10068000F1DF08C0161617061806991FF1CF8695D8
:100690007105610508940895E894BB2766277727BC
:1006A000CB0197F908950E9466030C9419030E94E8
:1006B0000B0338F00E94120320F0952311F00C94E4
:1006C00002030C94080311240C944D030E942A0386
:1006D00070F3959FC1F3950F50E0551F629FF00195
:1006E000729FBB27F00DB11D639FAA27F00DB11DAE
:1006F000AA1F649F6627B00DA11D661F829F222737
:10070000B00DA11D621F739FB00DA11D621F839FBD
:10071000A00D611D221F749F3327A00D611D231F93
:10072000849F600D211D822F762F6A2F11249F57E1
:1007300050409AF0F1F088234AF0EE0FFF1FBB1FE4
:10074000661F771F881F91505040A9F79E3F5105A3
:1007500080F00C9402030C944D035F3FE4F3983E49
:10076000D4F3869577956795B795F795E7959F5F4D
:10077000C1F7FE2B880F911D9695879597F90895DF
:100780009F930E94CA030F9007FCEE5F0C94F30343
:100790000C9408030E943203D8F3E894E0E0BB27EE
:1007A0009F57F0F02AED3FE049EC06C0EE0FBB0F7B
:1007B000661F771F881F28F0B23A62077307840705
:1007C00028F0B25A620B730B840BE3959A9572F77B
:1007D000803830F49A95BB0F661F771F881FD2F7B9
:1007E00090480C940904EF93E0FF07C0A2EA2AEDB9
:1007F0003FE049EC5FEB0E94C8010E9419030F9093
:10080000039401FC9058E4EEF0E00C9415049F3F33
:1008100031F0915020F4879577956795B795880FBB
:10082000911D9695879597F908959F938F937F9340
:100830006F93FF93EF939B01AC010E945303EF91E1
:10084000FF910E9429042F913F914F915F910C9449
:100850005303DF93CF931F930F93FF92EF92DF9297
:100860007B018C01689406C0DA2EEF010E946603BA
:10087000FE01E894A5912591359145915591A6F3F6
:10088000EF010E94C801FE019701A801DA9469F7FF
:10089000DF90EF90FF900F911F91CF91DF9108951E
:0408A000F894FFCFFA
:00000001FF

Binary file not shown.

View File

@ -0,0 +1,151 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#define F_CPU 16000000UL
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <avr/wdt.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define BUS_HOLD_US 1
/* Shift values inside the PORTK Register */
#define WR_SHIFT 1
#define RD_SHIFT 2
#define MR_SHIFT 0
#define CS_SHIFT 4
uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
void get_mcusr(void) \
__attribute__((naked)) \
__attribute__((section(".init3")));
void get_mcusr(void)
{
mcusr_mirror = MCUSR;
MCUSR = 0;
wdt_disable();
}
void set_addr(uint8_t addr){
PORTK = addr;
return;
}
uint8_t sine_table[256];
void write_to_dac(uint8_t addr, uint8_t data){
set_addr(addr);
DDRF = 0xFF;
PORTL &= ~(1<<WR_SHIFT);
PORTF = data;
PORTL &= ~(1<<CS_SHIFT);
_delay_us(BUS_HOLD_US); /*Wait for the data and signal lanes to become stable*/
PORTL |= 1<<CS_SHIFT;
set_addr(0x00);
PORTL |= 1<<WR_SHIFT;
PORTF = 0x00;
return;
}
uint8_t read_from_dac(uint8_t addr){
uint8_t data = 0x00;
set_addr(addr);
DDRF = 0x00;
PORTF = 0x00;
PORTL &= ~(1<<RD_SHIFT);
PORTL &= ~(1<<CS_SHIFT);
_delay_us(BUS_HOLD_US); /* Wait for the data and signal lanes to become stable*/
data = PINF;
PORTL |= 1<<CS_SHIFT;
set_addr(0x00);
PORTL |= 1<<RD_SHIFT;
DDRF = 0xFF;
PORTF = 0x00;
_delay_us(BUS_HOLD_US); /*Wait for the data and signal lanes to become stable*/
return data;
}
int routine();
int main(){
/* Disable interrupts during initialisation phase */
cli();
/* Setup Data Direction Registers and populate with sane default
values */
DDRF = 0xFF; /* Data Bus */
DDRK = 0xFF; /* Address Bus */
DDRL = 0xFF; /* Control Bus */
PORTF = 0x00;
PORTK = 0x00;
PORTL = 0x00;
/* Cleanly reset the dac uart */
PORTL |= (1<<WR_SHIFT);
PORTL |= (1<<RD_SHIFT);
PORTL |= (1<<CS_SHIFT);
PORTL |= (1<<MR_SHIFT);
_delay_us(100);
PORTL &= ~(1<<MR_SHIFT);
/* Generate sine table */
for(size_t i = 0; i < 256; i++){
sine_table[i] = 0xFF&((int)((sin(i/((double)255)*(3.141592*2))*127.5+127.5)));
}
sei();
/* Enable the hardware watchdog. In case the microcontroller fails to
* finish it's task within the specified time, the watchdog will reset
* the atmel cookie.
*/
wdt_enable(WDTO_1S);
while(1){
wdt_reset();
if(routine() < 0){
}
}
return 0;
}
int routine(){
for(uint8_t i = 0; i < 0xFF; i++){
write_to_dac(i%2, sine_table[i]);
}
write_to_dac(0x00, 0x00);
write_to_dac(0x01, 0x00);
_delay_ms(10);
return 0;
}

70
code/textadv/Makefile Normal file
View File

@ -0,0 +1,70 @@
MKDIR_P := mkdir -p
CP := cp
MV := mv
CC := avr-gcc
CCC := avr-g++
RM_RF = rm -rf
OCPY := avr-objcopy
AVRDUDE := avrdude
PORT := /dev/ttyACM0
#PORT := usb
#BOARD := atmega328p
BOARD := atmega2560
#PROGRAMMER := arduino
PROGRAMMER := usbasp
#PROGBOARD := m328p
PROGBOARD := m2560
BAUD_RATE_PROG := 115200
FLASH_CMD := $(AVRDUDE) -b $(BAUD_RATE_PROG) -p $(PROGBOARD) -D -P $(PORT) -c $(PROGRAMMER)
AVRSIZE := avr-size
AVRSIZE_FLAGS := -C --mcu=$(PROGBOARD)
# directories
CWD := $(realpath .)
BINDIR := $(CWD)/bin
BUILDDIR := $(CWD)/build
SRCDIR := $(CWD)/src
INCLUDEDIR := $(CWD)/include
# flas
CFLAGS := -mmcu=$(BOARD) -Os -I$(INCLUDEDIR) -Wall -Wextra
LDFLAGS := -mmcu=$(BOARD)
# target files
DIRS_TARGET := $(BINDIR) $(BUILDDIR)
TARGET := $(BINDIR)/mc.hex
TARGET_ELF := $(BINDIR)/mc.elf
SRCFILES := $(wildcard $(SRCDIR)/*.c)
OBJFILES := $(patsubst $(SRCDIR)/%.c,$(BUILDDIR)/%.o,$(SRCFILES))
# fancy targets
all: directories $(TARGET)
directories: $(DIRS_TARGET)
# less fancy targets
$(DIRS_TARGET):
$(MKDIR_P) $@
$(TARGET) : $(TARGET_ELF)
$(OCPY) -O ihex -j .text -j .data $^ $@
$(TARGET_ELF): $(OBJFILES)
$(CC) $(LDFLAGS) -o $@ $^
$(AVRSIZE) $(AVRSIZE_FLAGS) $@
$(BUILDDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c -o $@ $<
flash: $(TARGET)
# For atmega 2560
$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U lfuse:w:0xDF:m -U efuse:w:0xFF:m -U flash:w:$^:i -U efuse:w:0xfa:m
# For atmega 328p:
#$(FLASH_CMD) -e -U hfuse:w:0xD9:m -U efuse:w:0xFF:m -U lfuse:w:0xDF:m -U flash:w:$^:i -U efuse:w:0xfd:m
# If unknown or no fuse bits available over programmer
#$(FLASH_CMD) -U flash:w:$^:i
$(FLASH_CMD) -U flash:v:$^:i
clean:
$(RM_RF) $(DIRS_TARGET)

BIN
code/textadv/bin/mc.elf Executable file

Binary file not shown.

231
code/textadv/bin/mc.hex Normal file
View File

@ -0,0 +1,231 @@
:100000000C94F4020C9424030C9424030C94240305
:100010000C9424030C9424030C9424030C942403C4
:100020000C9424030C9424030C9424030C942403B4
:100030000C9424030C9424030C9424030C942403A4
:100040000C9424030C9424030C9424030C94240394
:100050000C9424030C94FE040C9424030C942403A9
:100060000C9424030C9424030C9424030C94240374
:100070000C9424030C9424030C9424030C94240364
:100080000C9424030C9424030C9424030C94240354
:100090000C9424030C9424030C9424030C94240344
:1000A0000C9424030C9424030C9424030C94240334
:1000B0000C9424030C9424030C9424030C94240324
:1000C0000C9424030C9424030C9424030C94240314
:1000D0000C9424030C9424030C9424030C94240304
:1000E0000C9424030C944D03300C03DF31FA2B786D
:1000F000D5D86C2945A1026969918D6571B843DE37
:10010000F2F6786E1DBF344ECB382EFD325975078E
:1001100032E231778433E1EDC56E523627961519F8
:100120008D8D88AB4DBCF918F5271627818C2FB41F
:100130006E602BF2940CE0597B338FA3C9A4BD579A
:100140003245027F02FB98F723AE1EA53A4D59A90E
:10015000AE849B42917C9B0CB02BB07ACF6DD102C8
:10016000B2D381B4CE19ACF2C7CB970218F0ABC7AB
:1001700074470906C4A51374D0C3EEA030BFA2E231
:10018000922497613D4453050FEA0728DAB3EF4FF5
:10019000FAF955BE9F68336F2B21105CE0B23F73B4
:1001A000D6D7D4141B271A2A122153ECD5423CCFA0
:1001B0003C918EDBFAC24B26E35B82C40EC137E56D
:1001C000980BFAB43314DE453631320B746EDBB162
:1001D000006A8CFA2CD7210F33A3D342650A27FE7D
:1001E0001621B24935918E6BC3C077382E52E92F54
:1001F000BC7629E84D4BF781EFCBC354D5EB53ECDC
:100200000D06354398C3AF5B842694B3787DE23501
:10021000F30C1D415715C346E0879BB672EEA37FD2
:10022000F5D8C28D9C72E920987DD311FBB546EFBD
:10023000C164311979F45F5A7BFA11EEE9B46EDECC
:100240008C316C29A355493BD31C4DCED293BE941F
:10025000F7EFAD71E40DCC6008DD4EF192BCD01F1C
:10026000ED3C48909291CC65AE193481ADF215A564
:10027000E2C317C6D0E327D8C175CA53329B721F99
:10028000D8BBB06A4D7DD0FB97047D45F793EAD982
:100290005601A027E4C700A53DCBF96F666C8F3FE0
:1002A0002740A974BE7A70557FEE9A76818550D723
:1002B00087F1FF6BB9FF11F7CA0B673177F7709FB2
:1002C000371A14F694854B1373E68AF46CDBCBF380
:1002D000CCCB5F86CA717D957CE4C6F4DC36931383
:1002E00050A70AE52D55F9A03C8394A95F609C2B8B
:1002F0002BFCB2F66D308BE91451DEF0887104D816
:10030000190EBE4664B7E6A13B7B4A9ADBE7C607F7
:10031000E378FD51A8883BBDDA19AE628AB33AA4EE
:10032000C2F9EB26B0D2C8EC4D138629FA4D30DE67
:10033000C62E2F6FB66A2D9083DBF20E8F2DB35130
:10034000279E78D87140C4BE544BE84E98182D5F54
:10035000465DCEFDC7FB8E4BD7815A66AF0EB7D632
:10036000AC2FAE1D7072DCC4BDC41356DD40B62484
:100370009D84216580B0B157310BBDE01975B6C6BB
:10038000A564E415D7C1DA9585EDEC632EA287CC80
:1003900026A932A659E3FD8AEFBB6B093021CFD5E0
:1003A00086B4EB5D75C5F3FBB3DF5EE281E6AFA714
:1003B0008FE14EE8C54C73B407DFBE38018E0D8760
:1003C00042F8E5B8BED8B472B7125439F904E088DF
:1003D000E62F71AB7BE56083C41EBBC5ACC94DEF96
:1003E000C233A7800C5BF3C36E48FC674CDDF03270
:1003F0000D61DD88473E0B0B5CC7D109901EF8529A
:10040000529FD25EFBC622690E1FD15AFDC28C0AD2
:10041000236A926AA99E760565470EF5660647B976
:10042000A61A17A2E0390CEE59DD49569FD660C3D3
:1004300041F32EEA91A4F0F7ECFEEC5305340CAC3A
:100440004F244E2F5D5A1EB738670DD83E6D9C7FE6
:1004500061CA69F26F59E95C58D6B05E0BBC0A5AA2
:10046000E0598A3EB4A8F5EC1003C54E7161CED2B6
:100470002C37C49C91AEF8EA85A848906552EB46AB
:10048000AC7584601E7A4D2F7D137DEE744CC0A137
:1004900083853D153436FFBADF474B449A368A4789
:1004A000AC0FA7CA89F5F9070877F57DC3B61F47D2
:1004B0003C5C5C71935C2B72A376B73EAC41855873
:1004C000512D23DB221CE22B93D8A8578FC79ECB3C
:1004D00024FB3CB757682AFBDEE1398B23BFE47469
:1004E000EC074F0F24323AB87F8285888C8F929523
:1004F000989B9EA1A4A7AAADB0B3B6B9BBBEC1C319
:10050000C6C9CBCED0D3D5D7D9DCDEE0E2E4E6E86D
:10051000E9EBEDEEF0F1F2F4F5F6F7F8F9FAFBFCA1
:10052000FCFDFDFEFEFEFEFEFEFEFEFEFEFDFDFCF3
:10053000FCFBFAFAF9F8F7F6F4F3F2F0EFEDECEA77
:10054000E8E7E5E3E1DFDDDBD8D6D4D1CFCCCAC71D
:10055000C5C2BFBDBAB7B4B1AFACA9A6A3A09D9A9E
:100560009693908D8A8784817D7A7774716E6B689B
:1005700064615E5B5855524F4D4A4744413F3C3998
:100580003734322F2D2A282623211F1D1B19171619
:100590001412110F0E0C0B0A0807060504040302BF
:1005A0000201010000000000000000000001010243
:1005B00002030405060708090A0C0D0E1011131595
:1005C00016181A1C1E20222527292B2E30333538C9
:1005D0003B3D404345484B4E5154575A5D6063661E
:1005E000696C6F7276797C7F11241FBECFEFD1E2E8
:1005F000DEBFCDBF00E00CBF84B78093E10214BE24
:100600000FB6F894A895809160008861809360008F
:10061000109260000FBE12E0A0E0B2E0E4E8FDE05E
:1006200000E00BBF02C007900D92AC3CB107D9F7B8
:1006300022E0ACECB2E001C01D92A13EB207E1F7AE
:100640000E94A0050C94C0060C940000CF93C62F06
:100650000E9426058FEF80BBC1BBEBE0F1E08081FB
:10066000857F808385E08A95F1F7000080818A602C
:100670008083CF9108950E94260510BA11BAEBE04D
:10068000F1E08081837F808385E08A95F1F7000027
:100690008FB190819C6090830895CF92DF92EF920A
:1006A000FF92CF93C82F80E4C82E82E4D82E8FE02B
:1006B000E82EF12C85E00E943B0385FD06C081E019
:1006C000C81AD108E108F108A9F76C2F80E00E9450
:1006D000260390E080E0CF91FF90EF90DF90CF90E5
:1006E000089563E883E00E94260363E080E00E94AF
:1006F000260360E081E00E94260363E083E00E941D
:10070000260380E092E09093DE028093DD028EE289
:1007100092E00C949406CF93C62F0E9426058FEF8B
:1007200080BBC1BBEBE0F1E080818D7E808385E002
:100730008A95F1F7000080818061808380818260EA
:100740008083CF9108950E94260510BA11BAEBE07C
:10075000F1E080818B7E808385E08A95F1F700004F
:100760008FB190819461908308950F931F93CF93DD
:10077000DF9380910F02833009F4B3C0A8F4813075
:1007800009F444C0CFE7823009F476C0C0E060E0ED
:100790008C2F81700E948B03CF5FCF3FC1F7DF9119
:1007A000CF911F910F910895843009F4C8C01FE7BD
:1007B000CFEFD0E00FEF853049F76091D2028FEF95
:1007C000860F8E3F28F080910E02819580930E0255
:1007D00080E00E948B036091D20281E00E948B0333
:1007E0004091CC025091CD0257FDDFC08091D002E4
:1007F0009091D1020196841795070CF0CAC090938E
:10080000D1028093D0021150C1F6C9CFCFE7E09159
:10081000D202F0E0E851FB4F649181E00E948B032B
:10082000E091D202F0E0E851FB4F649180E00E9439
:100830008B032091CC023091CD0237FD19C08091FD
:10084000D0029091D1020196821793073CF49093C5
:10085000D1028093D002C150D1F6A1CF1092D10223
:100860001092D0028091D2028F5F8093D202F3CF98
:100870008091D202821BF9CF8091D20287FF1DC0E6
:100880006FEF80E00E948B036FEF81E00E948B038B
:100890002091CC023091CD0237FD1FC08091D00253
:1008A0009091D1020196821793076CF49093D10234
:1008B0008093D002C15001F772CF60E080E00E94C7
:1008C0008B0360E0E2CF1092D1021092D0028091AF
:1008D000D2028F5F8093D202EDCF8091D202821B31
:1008E000F9CFCFE76091D20280E00E948B03609144
:1008F000D20281E00E948B032091CC023091CD0284
:1009000037FD19C08091D0029091D10201968217D3
:1009100093073CF49093D1028093D002C15011F719
:100920003ECF1092D1021092D0028091D2028F5FFE
:100930008093D202F3CF8091D202821BF9CFCFE70E
:10094000E091CE02F091CF02E851FF4F649181E037
:100950000E948B03E091CE02F091CF02E851FF4F4D
:10096000649180E00E948B038091CE029091CF022F
:100970000196811524E0920738F49093CF0280937A
:10098000CE02C150E9F60BCF1092CF021092CE02E8
:10099000F8CF1092D1021092D0028091D2029091A1
:1009A0000E02890F8093D2022ECF20910E022403D3
:1009B000B001259F700D11248091D202FE01E81B29
:1009C000F109E617F7071CF40093D2021CCF249F0D
:1009D000202D11242093D20216CF80E00E94A30381
:1009E00080FF0C94B503089582E884BD84E085BD42
:1009F00080E487BD82E080936E0008951F920F927D
:100A00000FB60F9211240BB60F922F933F934F9373
:100A10005F936F937F938F939F93AF93BF93EF9366
:100A2000FF930E945305FF91EF91BF91AF919F916A
:100A30008F917F916F915F914F913F912F910F9087
:100A40000BBE0F900FBE0F901F901895809308015A
:100A500008958FEF80BB8093070180930A01109265
:100A6000080111BAEBE0F1E0108280818F61808390
:100A70008FE891E00197F1F700C0000080818E7F40
:100A80008083089585E00E943B0380FF07C080E0DB
:100A90000E943B03682F80E00E9426030E94ED0421
:100AA00090E080E00895AF92BF92CF92DF92EF92F4
:100AB000FF920F931F932091D3023091D402409163
:100AC000D5025091D6026091D7027091D8028091E0
:100AD000D9029091DA02A1E00E946D062093D30220
:100AE0003093D4024093D5025093D6026093D7023C
:100AF0007093D8028093D9029093DA02E0EDAE2E83
:100B0000F7E0BF2EC12CD12CE12CF12C00E010E03D
:100B10000E940E06A0E00E94790639F480910F022F
:100B20008F5F853058F480930F021F910F91FF90D3
:100B3000EF90DF90CF90BF90AF90089581E0F3CF1A
:100B4000F8940E9429050E9471030E94F40478948D
:100B500088E19EE00FB6F894A895809360000FBEE0
:100B600090936000A8950E944205FCCFDF93CF933D
:100B70001F930F939A9DF02D219FF00D8B9DF00DEB
:100B80008A9DE02DF10D039FF00D029FE00DF11DF8
:100B90004E9DE00DF11D5E9DF00D4F9DF00D7F937C
:100BA0006F93BF92AF925F934F93D5010E948506DA
:100BB0008B01AC01D7010E948506EB01E80FF91FFC
:100BC000D6010E9405062F913F91D6010E9485060D
:100BD000C60FD71FE81FF91FAF91BF910E940506EE
:100BE0002F913F910E948506C60FD71FE81FF91F5E
:100BF000D6010E948506E60FF71F9801BE01CF01BE
:100C00000F911F91CF91DF9108950E948506460FA5
:100C1000571FC81FD91F08F431960895689401C062
:100C2000E8948F929F92CF93DF930E941C06DF91EE
:100C3000CF919F908F90089588249924F401E40126
:100C4000B0E49F93AA279A158B049C04ED05FE053A
:100C5000CF05D007A10798F4AD2FDC2FCF2FFE2FA3
:100C6000E92D982C892E982F872F762F652F542FBA
:100C7000432F322F2227B85031F7BF9127C01B2EA8
:100C8000BF91BB27220F331F441F551F661F771FBD
:100C9000881F991F881C991CEE1FFF1FCC1FDD1F8A
:100CA000AA1FBB1F8A149B04EC05FD05CE05DF05BA
:100CB000A007B10748F08A189B08EC09FD09CE0986
:100CC000DF09A00BB10B21601A94E1F62EF4940118
:100CD000AF01BE01CD01000C08950024A7FD0094D2
:100CE0002A0F301D401D501D601D701D801D901D60
:100CF00008950024A7FD00942A17300540055005EB
:100D000060057005800590050895A29FB001B39F0E
:100D1000C001A39F700D811D1124911DB29F700D04
:100D2000811D1124911D08950F931F93CF93DF937D
:100D3000E091DD02F091DE02238110E000E021FD70
:100D40000EC00FEF1FEFC801DF91CF911F910F91E0
:100D500008951995892B11F00FEF1FEFCE01EC01CB
:100D600089916091DD027091DE02DB011896ED91B0
:100D7000FC918111EECF8AE01995892B21F3E1CF07
:040D8000F894FFCF15
:100D840000000002000000004D030000000001010B
:100D940034023A023E02430249025C0270028A02B1
:100DA400910297029D02A202A702B802C002494E14
:100DB40049540D0073686F6F7400757365006A752C
:100DC4006D70004552524F5200596F752063616E29
:100DD400277420646F20746861742100596F752032
:100DE40063616E27742075736520746861742100D3
:100DF400576861742061726520796F7520676F6927
:100E04006E6720746F20646F3F00676F696E6720A0
:100E1400004E4F52544800534F55544800454153D7
:100E240054005745535400594F55204D41592041C2
:100E34004354204E4F57210069742064696564004F
:0C0E44006974207375727669766564002D
:00000001FF

BIN
code/textadv/build/16550.o Normal file

Binary file not shown.

BIN
code/textadv/build/dac.o Normal file

Binary file not shown.

Binary file not shown.

BIN
code/textadv/build/main.o Normal file

Binary file not shown.

BIN
code/textadv/build/sound.o Normal file

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,44 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _16550_H
#define _16550_H
#include <stdint.h>
#include <stdio.h>
/* Registers in the 16550 UART */
#define UART_REG_DLLS 0
#define UART_REG_DLMS 1
#define UART_REG_TXRX 0
#define UART_REG_IER 1
#define UART_REG_IIR 2
#define UART_REG_LCR 3
#define UART_REG_MCR 4
#define UART_REG_LSR 5
#define UART_REG_MSR 6
#define UART_REG_SCR 7
void init_16550();
void write_to_uart(uint8_t addr, uint8_t data);
uint8_t read_from_uart(uint8_t addr);
void init_uart();
int putchar_16550(char var, FILE *stream);
#endif

View File

@ -0,0 +1,49 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _AVR_H_TEXT
#define _AVR_H_TEXT
#define F_CPU 16000000UL
#include <avr/io.h>
/* Shift values for the peripherials on the control bus PORTL */
#define MR_SHIFT 0
#define WR_SHIFT 1
#define RD_SHIFT 2
#define CS_UART_SHIFT 3
#define CS_DAC_SHIFT 4
#define ADDR_REG PORTK
#define DATA_REG PORTF
#define CTRL_REG PORTL
#define ADDR_DDR_REG DDRK
#define DATA_DDR_REG DDRF
#define CTRL_DDR_REG DDRL
/* Included here to prevent accidental redefinition of F_CPU */
#include <util/delay.h>
/* Time it takes for the bus lanes to become stable for read and write access */
#define BUS_HOLD_US 1
void set_addr(uint8_t addr);
#endif

View File

@ -0,0 +1,45 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _DAC_H
#define _DAC_H
#include <stdint.h>
void write_to_dac(uint8_t addr, uint8_t data);
uint8_t read_from_dac(uint8_t addr);
/* The operation modes of the dac used for generation of different tones */
#define DAC_MODE_SILENT 0
#define DAC_MODE_SINE 1
#define DAC_MODE_SQUARE 2
#define DAC_MODE_SAW 3
#define DAC_MODE_NOISE 4
#define DAC_MODE_TRIANGLE 5
extern uint8_t dac_mode;
/* This variable is used to deviate the frequency from the baseline frequency
* of around 1kHz. If this integer is positive it makes the produced waveform
* longer, if it is negative the produced waveform becomes less sharp, but the
* frequency goes up. 0 is the baseline */
extern int16_t dac_frequency_deviation;
void feed_dac();
void routine_dac();
void update_sound();
#endif

View File

@ -0,0 +1,22 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _INTERRUPT_H
#define _INTERRUPT_H
void init_interrupts();
#endif

View File

@ -0,0 +1,30 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _SOUND_H
#define _SOUND_H
#include <stdint.h>
struct tone_t {
uint8_t waveform;
int16_t frequency_deviation;
uint16_t length;
};
void update_sound();
#endif

View File

@ -0,0 +1,27 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _STRUCTURES_H
#define _STRUCTURES_H
#include <stdint.h>
#include <avr/pgmspace.h>
extern const uint8_t sine_table[256] PROGMEM;
extern const uint8_t noise_table[1024] PROGMEM;
extern const char* text_table[];
#endif

79
code/textadv/src/16550.c Normal file
View File

@ -0,0 +1,79 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "avr.h"
#include "16550.h"
#include "structures.h"
#include <stdio.h>
static FILE stdout_16550 = FDEV_SETUP_STREAM(putchar_16550, NULL,
_FDEV_SETUP_WRITE);
void write_to_uart(uint8_t addr, uint8_t data){
set_addr(addr);
DATA_DDR_REG = 0xFF;
DATA_REG = data;
CTRL_REG &= ~(1<<WR_SHIFT) & ~(1<<CS_UART_SHIFT);
_delay_us(BUS_HOLD_US); /*Wait for the data and signal lanes to become stable*/
CTRL_REG |= 1<<CS_UART_SHIFT | 1<<WR_SHIFT;
return;
}
uint8_t read_from_uart(uint8_t addr){
uint8_t data = 0x00;
set_addr(addr);
DATA_DDR_REG = 0x00;
/* Sometimes the avr "forgets" to alter the port register for one cycle
* which usually isn't a problem but has lead to instability. Worthy
* one clock cycle */
DATA_REG = 0x00;
CTRL_REG &= ~(1<<RD_SHIFT) & ~(1<<CS_UART_SHIFT);
_delay_us(BUS_HOLD_US); /* Wait for the data and signal lanes to become
* stable*/
data = PINF;
CTRL_REG |= 1<<CS_UART_SHIFT | 1<<RD_SHIFT;
return data;
}
void init_uart(){
write_to_uart(UART_REG_LCR,0x83);
write_to_uart(UART_REG_DLLS,0x03);
write_to_uart(UART_REG_DLMS,0x00);
write_to_uart(UART_REG_LCR,0x03);
stdout = &stdout_16550;
printf("INIT\r\n");
return;
}
int putchar_16550(char var, FILE *stream __attribute__((unused))){
for(uint32_t i = 0; i < 1000000; i++ ){
uint8_t received = read_from_uart(UART_REG_LSR);
if((received & (1<<5))){
break;
}
}
write_to_uart(UART_REG_TXRX,var);
return 0;
}

204
code/textadv/src/dac.c Normal file
View File

@ -0,0 +1,204 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "avr.h"
#include "dac.h"
#include "structures.h"
#include <stdbool.h>
uint8_t dac_mode = DAC_MODE_SINE;
int16_t dac_frequency_deviation = 0;
void write_to_dac(uint8_t addr, uint8_t data){
set_addr(addr);
DATA_DDR_REG = 0xFF;
DATA_REG = data;
CTRL_REG &= ~(1<<WR_SHIFT) & ~(1<<CS_DAC_SHIFT);
_delay_us(BUS_HOLD_US); /*Wait for the data and signal lanes to become stable*/
CTRL_REG |= 1<<CS_DAC_SHIFT;
CTRL_REG |= 1<<WR_SHIFT;
return;
}
uint8_t read_from_dac(uint8_t addr){
uint8_t data = 0x00;
set_addr(addr);
DATA_DDR_REG = 0x00;
/* Sometimes the avr "forgets" to alter the port register for one cycle
* which usually isn't a problem but has lead to instability. Worthy
* one clock cycle */
DATA_REG = 0x00;
CTRL_REG &= ~(1<<RD_SHIFT) & ~(1<<CS_DAC_SHIFT);
_delay_us(BUS_HOLD_US); /* Wait for the data and signal lanes to become
* stable*/
data = PINF;
CTRL_REG |= 1<<CS_DAC_SHIFT | 1<<RD_SHIFT;
return data;
}
void feed_dac(){
/* Internal counter for positioning inside the array */
static uint8_t threash = 0x00;
static int16_t freq_delay_cnt = 0x00;
switch(dac_mode){
default:
case DAC_MODE_SILENT:
for(uint8_t i = 0; i < 0xFF; i++){
write_to_dac(i%2, 0);
}
break;
case DAC_MODE_SINE:
/* Generates a sine from a predetermined sine table in program
* space
*/
for(uint8_t i = 0; i < (0xFF/2); i++){
write_to_dac(1,
pgm_read_byte(&sine_table[threash]));
write_to_dac(0,
pgm_read_byte(&sine_table[threash]));
if(dac_frequency_deviation >=0){
freq_delay_cnt++;
if(freq_delay_cnt >=
dac_frequency_deviation){
freq_delay_cnt = 0;
threash++;
}
}else{
threash -= dac_frequency_deviation;
}
}
break;
case DAC_MODE_SQUARE:
/* Generates a square wave tone */
for(uint8_t i = 0; i < (0xFF/2); i++){
if(threash > (0xFF/2)){
write_to_dac(0, 0xFF);
write_to_dac(1, 0xFF);
}else{
write_to_dac(0, 0);
write_to_dac(1, 0);
}
if(dac_frequency_deviation >=0){
freq_delay_cnt++;
if(freq_delay_cnt >=
dac_frequency_deviation){
freq_delay_cnt = 0;
threash++;
}
}else{
threash -= dac_frequency_deviation;
}
}
break;
case DAC_MODE_SAW:
/* Generates a saw wave tone */
for(uint8_t i = 0; i < (0xFF/2); i++){
write_to_dac(0, threash);
write_to_dac(1, threash);
if(dac_frequency_deviation >=0){
freq_delay_cnt++;
if(freq_delay_cnt >=
dac_frequency_deviation){
freq_delay_cnt = 0;
threash++;
}
}else{
threash -= dac_frequency_deviation;
}
}
break;
case DAC_MODE_NOISE:
/* Generates white noise from a predetermined LUT
*/
for(uint8_t i = 0; i < (0xFF/2); i++){
static uint16_t noise_cnt = 0;
write_to_dac(1,
pgm_read_byte(&noise_table[noise_cnt]));
write_to_dac(0,
pgm_read_byte(&noise_table[noise_cnt]));
noise_cnt++; /* Doesn't have frequency diversion
*/
if(noise_cnt >= 1024){
noise_cnt = 0;
}
}
break;
case DAC_MODE_TRIANGLE:
/* Generates a triangle wave tone */
for(uint8_t i = 0; i < (0xFF/2); i++){
static int8_t direction = 1;
if((threash == 0xFF) | !threash){
direction = -direction;
}
write_to_dac(0, threash);
write_to_dac(1, threash);
if(dac_frequency_deviation >=0){
freq_delay_cnt++;
if(freq_delay_cnt >=
dac_frequency_deviation){
freq_delay_cnt = 0;
threash += direction;
}
}else{
if((dac_frequency_deviation *
direction) >
(0xFF - threash)){
threash = 0xFF;
continue;
}
threash = (dac_frequency_deviation *
direction);
}
}
break;
}
return;
}
void routine_dac(){
uint8_t received = read_from_dac(0x00);
if(!(received & (0x01<<0))){
feed_dac();
}
return;
}

View File

@ -0,0 +1,36 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "interrupt.h"
#include "dac.h"
#include <avr/interrupt.h>
void init_interrupts(){
/* Initialize the timer interrupt */
TCCR0A = (1 << COM0A1) | (1 << WGM11);
TCCR0B = (1 << CS02);
OCR0A = 64; /* Interrupt fires every Millisecond */
TIMSK0 = (1 << OCIE0A);
}
ISR(TIMER0_COMPA_vect)
{
update_sound();
}

108
code/textadv/src/main.c Normal file
View File

@ -0,0 +1,108 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "avr.h"
#include "structures.h"
#include "16550.h"
#include "dac.h"
#include "interrupt.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
/* Included early on the prevent the watchdog from killing the already killed
* microcontroller because of init delay
*/
uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
void get_mcusr(void) \
__attribute__((naked)) \
__attribute__((section(".init3")));
void get_mcusr(void)
{
mcusr_mirror = MCUSR;
MCUSR = 0;
wdt_disable();
}
/* Function used to be more complicated, still remains for readability reasons
*/
void set_addr(uint8_t addr){
ADDR_REG = addr;
return;
}
void reset_modules(){
/* Setup Data Direction Registers and populate with sane default
values */
DATA_DDR_REG = 0xFF; /* Data Bus */
ADDR_DDR_REG = 0xFF; /* Address Bus */
CTRL_DDR_REG= 0xFF; /* Control Bus */
ADDR_REG = 0x00;
DATA_REG = 0x00;
CTRL_REG = 0x00;
/* Cleanly reset the dac uart */
CTRL_REG |= (1<<WR_SHIFT) | (1<<RD_SHIFT) | (1<<CS_DAC_SHIFT) |
(1<<MR_SHIFT) | (1<<CS_UART_SHIFT);
_delay_us(100);
CTRL_REG &= ~(1<<MR_SHIFT);
return;
}
int routine();
int main(){
/* Disable interrupts during initialisation phase */
cli();
reset_modules();
init_uart();
init_interrupts();
sei();
/* Enable the hardware watchdog. In case the microcontroller fails to
* finish it's task within the specified time, the watchdog will reset
* the atmel cookie.
*/
wdt_enable(WDTO_1S);
while(1){
wdt_reset();
routine();
}
return 0;
}
int routine(){
uint8_t received = read_from_uart(UART_REG_LSR);
if(received & 0x01){
received = read_from_uart(UART_REG_TXRX);
write_to_uart(UART_REG_TXRX,received);
}
routine_dac();
return 0;
}

33
code/textadv/src/sound.c Normal file
View File

@ -0,0 +1,33 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "sound.h"
#include "dac.h"
void update_sound(){
static unsigned long long audio_time = 0;
audio_time++;
if(!(audio_time%2000)){
dac_mode++;
if(dac_mode > DAC_MODE_NOISE){
dac_mode = 1;
}
}
return;
}

View File

@ -0,0 +1,365 @@
/* Copyright © 2020 tyrolyean
*
* This program is free software: you can redistribute it and/or modify
* it 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 program 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 program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "structures.h"
const uint8_t sine_table[256] PROGMEM = {
0x7f,0x82,0x85,0x88,
0x8c,0x8f,0x92,0x95,
0x98,0x9b,0x9e,0xa1,
0xa4,0xa7,0xaa,0xad,
0xb0,0xb3,0xb6,0xb9,
0xbb,0xbe,0xc1,0xc3,
0xc6,0xc9,0xcb,0xce,
0xd0,0xd3,0xd5,0xd7,
0xd9,0xdc,0xde,0xe0,
0xe2,0xe4,0xe6,0xe8,
0xe9,0xeb,0xed,0xee,
0xf0,0xf1,0xf2,0xf4,
0xf5,0xf6,0xf7,0xf8,
0xf9,0xfa,0xfb,0xfc,
0xfc,0xfd,0xfd,0xfe,
0xfe,0xfe,0xfe,0xfe,
0xfe,0xfe,0xfe,0xfe,
0xfe,0xfd,0xfd,0xfc,
0xfc,0xfb,0xfa,0xfa,
0xf9,0xf8,0xf7,0xf6,
0xf4,0xf3,0xf2,0xf0,
0xef,0xed,0xec,0xea,
0xe8,0xe7,0xe5,0xe3,
0xe1,0xdf,0xdd,0xdb,
0xd8,0xd6,0xd4,0xd1,
0xcf,0xcc,0xca,0xc7,
0xc5,0xc2,0xbf,0xbd,
0xba,0xb7,0xb4,0xb1,
0xaf,0xac,0xa9,0xa6,
0xa3,0xa0,0x9d,0x9a,
0x96,0x93,0x90,0x8d,
0x8a,0x87,0x84,0x81,
0x7d,0x7a,0x77,0x74,
0x71,0x6e,0x6b,0x68,
0x64,0x61,0x5e,0x5b,
0x58,0x55,0x52,0x4f,
0x4d,0x4a,0x47,0x44,
0x41,0x3f,0x3c,0x39,
0x37,0x34,0x32,0x2f,
0x2d,0x2a,0x28,0x26,
0x23,0x21,0x1f,0x1d,
0x1b,0x19,0x17,0x16,
0x14,0x12,0x11,0xf,
0xe,0xc,0xb,0xa,
0x8,0x7,0x6,0x5,
0x4,0x4,0x3,0x2,
0x2,0x1,0x1,0x0,
0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,
0x0,0x1,0x1,0x2,
0x2,0x3,0x4,0x5,
0x6,0x7,0x8,0x9,
0xa,0xc,0xd,0xe,
0x10,0x11,0x13,0x15,
0x16,0x18,0x1a,0x1c,
0x1e,0x20,0x22,0x25,
0x27,0x29,0x2b,0x2e,
0x30,0x33,0x35,0x38,
0x3b,0x3d,0x40,0x43,
0x45,0x48,0x4b,0x4e,
0x51,0x54,0x57,0x5a,
0x5d,0x60,0x63,0x66,
0x69,0x6c,0x6f,0x72,
0x76,0x79,0x7c,0x7f,
};
const uint8_t noise_table[1024] PROGMEM = {
0x30, 0xc, 0x3, 0xdf,
0x31, 0xfa, 0x2b, 0x78,
0xd5, 0xd8, 0x6c, 0x29,
0x45, 0xa1, 0x2, 0x69,
0x69, 0x91, 0x8d, 0x65,
0x71, 0xb8, 0x43, 0xde,
0xf2, 0xf6, 0x78, 0x6e,
0x1d, 0xbf, 0x34, 0x4e,
0xcb, 0x38, 0x2e, 0xfd,
0x32, 0x59, 0x75, 0x7,
0x32, 0xe2, 0x31, 0x77,
0x84, 0x33, 0xe1, 0xed,
0xc5, 0x6e, 0x52, 0x36,
0x27, 0x96, 0x15, 0x19,
0x8d, 0x8d, 0x88, 0xab,
0x4d, 0xbc, 0xf9, 0x18,
0xf5, 0x27, 0x16, 0x27,
0x81, 0x8c, 0x2f, 0xb4,
0x6e, 0x60, 0x2b, 0xf2,
0x94, 0xc, 0xe0, 0x59,
0x7b, 0x33, 0x8f, 0xa3,
0xc9, 0xa4, 0xbd, 0x57,
0x32, 0x45, 0x2, 0x7f,
0x2, 0xfb, 0x98, 0xf7,
0x23, 0xae, 0x1e, 0xa5,
0x3a, 0x4d, 0x59, 0xa9,
0xae, 0x84, 0x9b, 0x42,
0x91, 0x7c, 0x9b, 0xc,
0xb0, 0x2b, 0xb0, 0x7a,
0xcf, 0x6d, 0xd1, 0x2,
0xb2, 0xd3, 0x81, 0xb4,
0xce, 0x19, 0xac, 0xf2,
0xc7, 0xcb, 0x97, 0x2,
0x18, 0xf0, 0xab, 0xc7,
0x74, 0x47, 0x9, 0x6,
0xc4, 0xa5, 0x13, 0x74,
0xd0, 0xc3, 0xee, 0xa0,
0x30, 0xbf, 0xa2, 0xe2,
0x92, 0x24, 0x97, 0x61,
0x3d, 0x44, 0x53, 0x5,
0xf, 0xea, 0x7, 0x28,
0xda, 0xb3, 0xef, 0x4f,
0xfa, 0xf9, 0x55, 0xbe,
0x9f, 0x68, 0x33, 0x6f,
0x2b, 0x21, 0x10, 0x5c,
0xe0, 0xb2, 0x3f, 0x73,
0xd6, 0xd7, 0xd4, 0x14,
0x1b, 0x27, 0x1a, 0x2a,
0x12, 0x21, 0x53, 0xec,
0xd5, 0x42, 0x3c, 0xcf,
0x3c, 0x91, 0x8e, 0xdb,
0xfa, 0xc2, 0x4b, 0x26,
0xe3, 0x5b, 0x82, 0xc4,
0xe, 0xc1, 0x37, 0xe5,
0x98, 0xb, 0xfa, 0xb4,
0x33, 0x14, 0xde, 0x45,
0x36, 0x31, 0x32, 0xb,
0x74, 0x6e, 0xdb, 0xb1,
0x0, 0x6a, 0x8c, 0xfa,
0x2c, 0xd7, 0x21, 0xf,
0x33, 0xa3, 0xd3, 0x42,
0x65, 0xa, 0x27, 0xfe,
0x16, 0x21, 0xb2, 0x49,
0x35, 0x91, 0x8e, 0x6b,
0xc3, 0xc0, 0x77, 0x38,
0x2e, 0x52, 0xe9, 0x2f,
0xbc, 0x76, 0x29, 0xe8,
0x4d, 0x4b, 0xf7, 0x81,
0xef, 0xcb, 0xc3, 0x54,
0xd5, 0xeb, 0x53, 0xec,
0xd, 0x6, 0x35, 0x43,
0x98, 0xc3, 0xaf, 0x5b,
0x84, 0x26, 0x94, 0xb3,
0x78, 0x7d, 0xe2, 0x35,
0xf3, 0xc, 0x1d, 0x41,
0x57, 0x15, 0xc3, 0x46,
0xe0, 0x87, 0x9b, 0xb6,
0x72, 0xee, 0xa3, 0x7f,
0xf5, 0xd8, 0xc2, 0x8d,
0x9c, 0x72, 0xe9, 0x20,
0x98, 0x7d, 0xd3, 0x11,
0xfb, 0xb5, 0x46, 0xef,
0xc1, 0x64, 0x31, 0x19,
0x79, 0xf4, 0x5f, 0x5a,
0x7b, 0xfa, 0x11, 0xee,
0xe9, 0xb4, 0x6e, 0xde,
0x8c, 0x31, 0x6c, 0x29,
0xa3, 0x55, 0x49, 0x3b,
0xd3, 0x1c, 0x4d, 0xce,
0xd2, 0x93, 0xbe, 0x94,
0xf7, 0xef, 0xad, 0x71,
0xe4, 0xd, 0xcc, 0x60,
0x8, 0xdd, 0x4e, 0xf1,
0x92, 0xbc, 0xd0, 0x1f,
0xed, 0x3c, 0x48, 0x90,
0x92, 0x91, 0xcc, 0x65,
0xae, 0x19, 0x34, 0x81,
0xad, 0xf2, 0x15, 0xa5,
0xe2, 0xc3, 0x17, 0xc6,
0xd0, 0xe3, 0x27, 0xd8,
0xc1, 0x75, 0xca, 0x53,
0x32, 0x9b, 0x72, 0x1f,
0xd8, 0xbb, 0xb0, 0x6a,
0x4d, 0x7d, 0xd0, 0xfb,
0x97, 0x4, 0x7d, 0x45,
0xf7, 0x93, 0xea, 0xd9,
0x56, 0x1, 0xa0, 0x27,
0xe4, 0xc7, 0x0, 0xa5,
0x3d, 0xcb, 0xf9, 0x6f,
0x66, 0x6c, 0x8f, 0x3f,
0x27, 0x40, 0xa9, 0x74,
0xbe, 0x7a, 0x70, 0x55,
0x7f, 0xee, 0x9a, 0x76,
0x81, 0x85, 0x50, 0xd7,
0x87, 0xf1, 0xff, 0x6b,
0xb9, 0xff, 0x11, 0xf7,
0xca, 0xb, 0x67, 0x31,
0x77, 0xf7, 0x70, 0x9f,
0x37, 0x1a, 0x14, 0xf6,
0x94, 0x85, 0x4b, 0x13,
0x73, 0xe6, 0x8a, 0xf4,
0x6c, 0xdb, 0xcb, 0xf3,
0xcc, 0xcb, 0x5f, 0x86,
0xca, 0x71, 0x7d, 0x95,
0x7c, 0xe4, 0xc6, 0xf4,
0xdc, 0x36, 0x93, 0x13,
0x50, 0xa7, 0xa, 0xe5,
0x2d, 0x55, 0xf9, 0xa0,
0x3c, 0x83, 0x94, 0xa9,
0x5f, 0x60, 0x9c, 0x2b,
0x2b, 0xfc, 0xb2, 0xf6,
0x6d, 0x30, 0x8b, 0xe9,
0x14, 0x51, 0xde, 0xf0,
0x88, 0x71, 0x4, 0xd8,
0x19, 0xe, 0xbe, 0x46,
0x64, 0xb7, 0xe6, 0xa1,
0x3b, 0x7b, 0x4a, 0x9a,
0xdb, 0xe7, 0xc6, 0x7,
0xe3, 0x78, 0xfd, 0x51,
0xa8, 0x88, 0x3b, 0xbd,
0xda, 0x19, 0xae, 0x62,
0x8a, 0xb3, 0x3a, 0xa4,
0xc2, 0xf9, 0xeb, 0x26,
0xb0, 0xd2, 0xc8, 0xec,
0x4d, 0x13, 0x86, 0x29,
0xfa, 0x4d, 0x30, 0xde,
0xc6, 0x2e, 0x2f, 0x6f,
0xb6, 0x6a, 0x2d, 0x90,
0x83, 0xdb, 0xf2, 0xe,
0x8f, 0x2d, 0xb3, 0x51,
0x27, 0x9e, 0x78, 0xd8,
0x71, 0x40, 0xc4, 0xbe,
0x54, 0x4b, 0xe8, 0x4e,
0x98, 0x18, 0x2d, 0x5f,
0x46, 0x5d, 0xce, 0xfd,
0xc7, 0xfb, 0x8e, 0x4b,
0xd7, 0x81, 0x5a, 0x66,
0xaf, 0xe, 0xb7, 0xd6,
0xac, 0x2f, 0xae, 0x1d,
0x70, 0x72, 0xdc, 0xc4,
0xbd, 0xc4, 0x13, 0x56,
0xdd, 0x40, 0xb6, 0x24,
0x9d, 0x84, 0x21, 0x65,
0x80, 0xb0, 0xb1, 0x57,
0x31, 0xb, 0xbd, 0xe0,
0x19, 0x75, 0xb6, 0xc6,
0xa5, 0x64, 0xe4, 0x15,
0xd7, 0xc1, 0xda, 0x95,
0x85, 0xed, 0xec, 0x63,
0x2e, 0xa2, 0x87, 0xcc,
0x26, 0xa9, 0x32, 0xa6,
0x59, 0xe3, 0xfd, 0x8a,
0xef, 0xbb, 0x6b, 0x9,
0x30, 0x21, 0xcf, 0xd5,
0x86, 0xb4, 0xeb, 0x5d,
0x75, 0xc5, 0xf3, 0xfb,
0xb3, 0xdf, 0x5e, 0xe2,
0x81, 0xe6, 0xaf, 0xa7,
0x8f, 0xe1, 0x4e, 0xe8,
0xc5, 0x4c, 0x73, 0xb4,
0x7, 0xdf, 0xbe, 0x38,
0x1, 0x8e, 0xd, 0x87,
0x42, 0xf8, 0xe5, 0xb8,
0xbe, 0xd8, 0xb4, 0x72,
0xb7, 0x12, 0x54, 0x39,
0xf9, 0x4, 0xe0, 0x88,
0xe6, 0x2f, 0x71, 0xab,
0x7b, 0xe5, 0x60, 0x83,
0xc4, 0x1e, 0xbb, 0xc5,
0xac, 0xc9, 0x4d, 0xef,
0xc2, 0x33, 0xa7, 0x80,
0xc, 0x5b, 0xf3, 0xc3,
0x6e, 0x48, 0xfc, 0x67,
0x4c, 0xdd, 0xf0, 0x32,
0xd, 0x61, 0xdd, 0x88,
0x47, 0x3e, 0xb, 0xb,
0x5c, 0xc7, 0xd1, 0x9,
0x90, 0x1e, 0xf8, 0x52,
0x52, 0x9f, 0xd2, 0x5e,
0xfb, 0xc6, 0x22, 0x69,
0xe, 0x1f, 0xd1, 0x5a,
0xfd, 0xc2, 0x8c, 0xa,
0x23, 0x6a, 0x92, 0x6a,
0xa9, 0x9e, 0x76, 0x5,
0x65, 0x47, 0xe, 0xf5,
0x66, 0x6, 0x47, 0xb9,
0xa6, 0x1a, 0x17, 0xa2,
0xe0, 0x39, 0xc, 0xee,
0x59, 0xdd, 0x49, 0x56,
0x9f, 0xd6, 0x60, 0xc3,
0x41, 0xf3, 0x2e, 0xea,
0x91, 0xa4, 0xf0, 0xf7,
0xec, 0xfe, 0xec, 0x53,
0x5, 0x34, 0xc, 0xac,
0x4f, 0x24, 0x4e, 0x2f,
0x5d, 0x5a, 0x1e, 0xb7,
0x38, 0x67, 0xd, 0xd8,
0x3e, 0x6d, 0x9c, 0x7f,
0x61, 0xca, 0x69, 0xf2,
0x6f, 0x59, 0xe9, 0x5c,
0x58, 0xd6, 0xb0, 0x5e,
0xb, 0xbc, 0xa, 0x5a,
0xe0, 0x59, 0x8a, 0x3e,
0xb4, 0xa8, 0xf5, 0xec,
0x10, 0x3, 0xc5, 0x4e,
0x71, 0x61, 0xce, 0xd2,
0x2c, 0x37, 0xc4, 0x9c,
0x91, 0xae, 0xf8, 0xea,
0x85, 0xa8, 0x48, 0x90,
0x65, 0x52, 0xeb, 0x46,
0xac, 0x75, 0x84, 0x60,
0x1e, 0x7a, 0x4d, 0x2f,
0x7d, 0x13, 0x7d, 0xee,
0x74, 0x4c, 0xc0, 0xa1,
0x83, 0x85, 0x3d, 0x15,
0x34, 0x36, 0xff, 0xba,
0xdf, 0x47, 0x4b, 0x44,
0x9a, 0x36, 0x8a, 0x47,
0xac, 0xf, 0xa7, 0xca,
0x89, 0xf5, 0xf9, 0x7,
0x8, 0x77, 0xf5, 0x7d,
0xc3, 0xb6, 0x1f, 0x47,
0x3c, 0x5c, 0x5c, 0x71,
0x93, 0x5c, 0x2b, 0x72,
0xa3, 0x76, 0xb7, 0x3e,
0xac, 0x41, 0x85, 0x58,
0x51, 0x2d, 0x23, 0xdb,
0x22, 0x1c, 0xe2, 0x2b,
0x93, 0xd8, 0xa8, 0x57,
0x8f, 0xc7, 0x9e, 0xcb,
0x24, 0xfb, 0x3c, 0xb7,
0x57, 0x68, 0x2a, 0xfb,
0xde, 0xe1, 0x39, 0x8b,
0x23, 0xbf, 0xe4, 0x74,
0xec, 0x7, 0x4f, 0xf,
0x24, 0x32, 0x3a, 0xb8
};
const char* info_table[] = {
"ERROR",
"You can't do that!",
"You can't use that!",
"What are you going to do?",
"going ",
"NORTH",
"SOUTH",
"EAST",
"WEST",
"YOU MAY ACT NOW!",
"it died",
"it survived"
};
const char* action_table[] = {
"shoot",
"use",
"jump"
};

BIN
documents/mst1/BC546.pdf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
documents/mst1/ad2_rm.pdf Normal file

Binary file not shown.

Binary file not shown.

BIN
documents/mst1/lm3587.pdf Normal file

Binary file not shown.

716
documents/mst1/logfile Normal file
View File

@ -0,0 +1,716 @@
########################################
Title: 101 101A 101AL 102A 306 Specifications and Interface Information
Keywords: Compiled 10/12/2015 chiclassiccomp.org
Author: Centronics
Creator: Adobe Acrobat 11.0.10
Producer: Adobe Acrobat Pro 11.0.10 Paper Capture Plug-in
CreationDate: Tue Oct 13 03:27:21 2015 CEST
ModDate: Tue Oct 13 04:25:11 2015 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 11
Encrypted: no
Page size: 1205 x 1574 pts
Page rot: 0
File size: 4409096 bytes
Optimized: yes
PDF version: 1.6
########################################
Producer: Adobe Acrobat 8.31 Paper Capture Plug-in
CreationDate: Fri Oct 28 06:57:41 2005 CEST
ModDate: Sun Jan 20 22:10:37 2013 CET
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 19
Encrypted: no
Page size: 476 x 622 pts
Page rot: 0
File size: 1745486 bytes
Optimized: no
PDF version: 1.4
########################################
Title: AC '97 2.3
Author: Brent Chartrand
Creator: Microsoft Word 10.0
Producer: Acrobat Distiller 4.05 for Windows
CreationDate: Wed Jul 3 10:24:52 2002 CEST
ModDate: Mon Jul 8 17:23:58 2002 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 108
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 1220473 bytes
Optimized: yes
PDF version: 1.3
########################################
########################################
Title: Framebuffer HOWTO
Creator: Modular DocBook HTML Stylesheet Version 1.7
Producer: htmldoc 1.8.27 Copyright 1997-2006 Easy Software Products, All Rights Reserved.
CreationDate: Mon Aug 9 07:28:24 2010 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 39
Encrypted: no
Page size: 595 x 792 pts
Page rot: 0
File size: 376800 bytes
Optimized: no
PDF version: 1.3
########################################
Producer: Aladdin Ghostscript 5.10
CreationDate: Mon Nov 29 12:44:45 1999 CET
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 29
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 383431 bytes
Optimized: no
PDF version: 1.2
########################################
Title: IEEE standard signaling method for a bidirectional parallel peripheral interface for personal comput - IEEE Std 1284-2000
Subject:
Keywords:
Author: IEEE
Creator: IEEE Copyright
Producer: Acrobat Distiller 4.0 for Macintosh
CreationDate: Thu Oct 26 12:49:30 2000 CEST
ModDate: Thu Oct 26 12:49:33 2000 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 106
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 2654351 bytes
Optimized: yes
PDF version: 1.3
########################################
Title: IEEE 1284 parallel ports
Subject: IEEE 1284 parallel ports
Keywords: IEEE 1284 parallel ports modes resources cables connectors pinouts SPP EPP ECP
Author: Ron Jenkins
Creator: FrameMaker 5.5.3L15a
Producer: Acrobat Distiller 5.0.5 (Windows)
CreationDate: Wed May 29 17:40:52 2002 CEST
ModDate: Wed Oct 16 16:55:58 2002 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 22
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 496748 bytes
Optimized: no
PDF version: 1.4
########################################
Title: DATASHEET SEARCH SITE | WWW.ALLDATASHEET.COM
Subject: DATASHEET SEARCH, DATABOOK, COMPONENT, FREE DOWNLOAD SITE
Keywords: PDF, DATASHEET, PDF DATASHEET, IC, CHIP, SEMICONDUCTOR, TRANSISTOR, ELECTRONIC COMPONENT, ISO COMPONENT, ALLDATASHEET, DATABOOK, CATALOG, ARCHIVE
Author: Provided By ALLDATASHEET.COM(FREE DATASHEET DOWNLOAD SITE)
Producer: Acrobat Distiller 2.1 for Macintosh
CreationDate: Thu Jan 22 15:32:14 1998 CET
ModDate: Wed May 24 07:07:35 2006 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 13
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 149228 bytes
Optimized: no
PDF version: 1.5
########################################
Title: PANIMALAR ENGINEERING COLLEGE
Author: staff
Creator: Writer
Producer: LibreOffice 6.3
CreationDate: Mon Oct 21 00:33:21 2019 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 375
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 4710352 bytes
Optimized: no
PDF version: 1.5
########################################
Title: A High Resolution and High Accuracy R-2R DAC Based on Ordered Element Matching
Subject: B8P-N2
Keywords: High resolution, high accuracy, R-2R DAC
Author: Li, Zeng, Chen
Creator: 'Certified by IEEE PDFeXpress at 01/23/2013 3:58:30 PM'
Producer: Acrobat Distiller 8.1.0 (Windows)
CreationDate: Thu Jan 24 00:58:23 2013 CET
ModDate: Tue Jul 30 20:17:34 2013 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 5
Encrypted: no
Page size: 594.96 x 840.96 pts (A4)
Page rot: 0
File size: 688020 bytes
Optimized: no
PDF version: 1.5
########################################
Title: MAX232x Dual EIA-232 Drivers/Receivers datasheet (Rev. M)
Subject: Data Sheet
Keywords: , SLLS047,SLLS047M
Author: Texas Instruments, Incorporated [SLLS047,M
]
Creator: TopLeaf 9.0.005
Producer: iText 2.1.7 by 1T3XT
CreationDate: Thu Jul 11 07:38:59 2019 CEST
ModDate: Thu Jul 11 07:38:59 2019 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 26
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 1714943 bytes
Optimized: no
PDF version: 1.4
########################################
Producer: Acrobat Distiller Command 2.1 for SunOS/Solaris (SPARC)
CreationDate: Wed May 6 16:17:57 1998 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 9
Encrypted: no
Page size: 649 x 829 pts
Page rot: 0
File size: 76304 bytes
Optimized: no
PDF version: 1.1
########################################
Title: PC16550D Universal Asynchronous Receiver/Transmitter With FIFOs datasheet (Rev. C)
Subject: Data Sheet
Keywords: , SNLS378,SNLS378C
Author: Texas Instruments, Incorporated [SNLS378,C
]
Creator: TopLeaf 8.0.006
Producer: iText 2.1.7 by 1T3XT
CreationDate: Fri May 10 07:42:43 2019 CEST
ModDate: Fri May 10 07:42:43 2019 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 35
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 1068345 bytes
Optimized: no
PDF version: 1.4
########################################
Title: PDF32000.book
Author: Jim King
Creator: FrameMaker 8.0
Producer: Acrobat Distiller 8.1.0 (Windows)
CreationDate: Thu Sep 18 13:19:51 2008 CEST
ModDate: Mon Sep 29 19:18:41 2008 CEST
Tagged: yes
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 756
Encrypted: yes (print:yes copy:no change:no addNotes:yes algorithm:RC4)
Page size: 595 x 842 pts (A4)
Page rot: 0
File size: 22491828 bytes
Optimized: no
PDF version: 1.6
########################################
Author: Parithy
Creator: Acrobat PDFMaker 10.1 for Word
Producer: Adobe PDF Library 10.0
CreationDate: Wed Aug 20 13:09:28 2014 CEST
ModDate: Wed Aug 20 13:09:43 2014 CEST
Tagged: yes
UserProperties: no
Suspects: no
Form: AcroForm
JavaScript: no
Pages: 3
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 58743 bytes
Optimized: no
PDF version: 1.5
########################################
Producer: iTextSharp 4.1.6 by 1T3XT
CreationDate: Sun Jan 2 15:43:38 2011 CET
ModDate: Sun Jan 2 15:43:38 2011 CET
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 47
Encrypted: no
Page size: 1198 x 1684 pts
Page rot: 0
File size: 19407681 bytes
Optimized: no
PDF version: 1.4
########################################
Title: Interface Circuits for TIA/EIA-232-F (Rev. A)
Subject: Application Reports
Keywords: slla037a,slla037
Author: Texas Instruments, Incorporated
Producer: Etymon PJ 1.10, Copyright (C) 1998-2000 Etymon Systems, Inc. <http://www.etymon.com/>.
CreationDate: Tue Sep 24 16:10:41 2002 CEST
ModDate: Tue Sep 24 16:11:36 2002 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 22
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 130898 bytes
Optimized: yes
PDF version: 1.2
########################################
Title: CCITT TSB REC. V.24
Subject: CLASSEUR 64
Keywords: folios: 1 - 19 (MONO)
Author: Seetong XUTO
Creator: International Telecommunication Union
Producer: ITU PDF Server - Electronic Publishing Service
CreationDate: Tue May 15 10:45:46 2007 CEST
ModDate: Tue May 15 16:30:46 2007 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 26
Encrypted: no
Page size: 595 x 842 pts (A4)
Page rot: 0
File size: 263718 bytes
Optimized: no
PDF version: 1.4
########################################
Creator: Google
CreationDate: Sat Nov 24 23:17:40 2018 CET
ModDate: Sat Nov 24 23:17:40 2018 CET
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 37
Encrypted: no
Page size: 720 x 405 pts
Page rot: 0
File size: 1587400 bytes
Optimized: yes
PDF version: 1.4
########################################
Title: 101 101A 101AL 102A 306 Specifications and Interface Information
Keywords: Compiled 10/12/2015 chiclassiccomp.org
Author: Centronics
Creator: Adobe Acrobat 11.0.10
Producer: Adobe Acrobat Pro 11.0.10 Paper Capture Plug-in
CreationDate: Tue Oct 13 03:27:21 2015 CEST
ModDate: Tue Oct 13 04:25:11 2015 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 11
Encrypted: no
Page size: 1205 x 1574 pts
Page rot: 0
File size: 4409096 bytes
Optimized: yes
PDF version: 1.6
########################################
Producer: Adobe Acrobat 8.31 Paper Capture Plug-in
CreationDate: Fri Oct 28 06:57:41 2005 CEST
ModDate: Sun Jan 20 22:10:37 2013 CET
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 19
Encrypted: no
Page size: 476 x 622 pts
Page rot: 0
File size: 1745486 bytes
Optimized: no
PDF version: 1.4
########################################
Title: AC '97 2.3
Author: Brent Chartrand
Creator: Microsoft Word 10.0
Producer: Acrobat Distiller 4.05 for Windows
CreationDate: Wed Jul 3 10:24:52 2002 CEST
ModDate: Mon Jul 8 17:23:58 2002 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 108
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 1220473 bytes
Optimized: yes
PDF version: 1.3
########################################
########################################
Title: Framebuffer HOWTO
Creator: Modular DocBook HTML Stylesheet Version 1.7
Producer: htmldoc 1.8.27 Copyright 1997-2006 Easy Software Products, All Rights Reserved.
CreationDate: Mon Aug 9 07:28:24 2010 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 39
Encrypted: no
Page size: 595 x 792 pts
Page rot: 0
File size: 376800 bytes
Optimized: no
PDF version: 1.3
########################################
Producer: Aladdin Ghostscript 5.10
CreationDate: Mon Nov 29 12:44:45 1999 CET
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 29
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 383431 bytes
Optimized: no
PDF version: 1.2
########################################
Title: IEEE standard signaling method for a bidirectional parallel peripheral interface for personal comput - IEEE Std 1284-2000
Subject:
Keywords:
Author: IEEE
Creator: IEEE Copyright
Producer: Acrobat Distiller 4.0 for Macintosh
CreationDate: Thu Oct 26 12:49:30 2000 CEST
ModDate: Thu Oct 26 12:49:33 2000 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 106
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 2654351 bytes
Optimized: yes
PDF version: 1.3
########################################
Title: IEEE 1284 parallel ports
Subject: IEEE 1284 parallel ports
Keywords: IEEE 1284 parallel ports modes resources cables connectors pinouts SPP EPP ECP
Author: Ron Jenkins
Creator: FrameMaker 5.5.3L15a
Producer: Acrobat Distiller 5.0.5 (Windows)
CreationDate: Wed May 29 17:40:52 2002 CEST
ModDate: Wed Oct 16 16:55:58 2002 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 22
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 496748 bytes
Optimized: no
PDF version: 1.4
########################################
Title: DATASHEET SEARCH SITE | WWW.ALLDATASHEET.COM
Subject: DATASHEET SEARCH, DATABOOK, COMPONENT, FREE DOWNLOAD SITE
Keywords: PDF, DATASHEET, PDF DATASHEET, IC, CHIP, SEMICONDUCTOR, TRANSISTOR, ELECTRONIC COMPONENT, ISO COMPONENT, ALLDATASHEET, DATABOOK, CATALOG, ARCHIVE
Author: Provided By ALLDATASHEET.COM(FREE DATASHEET DOWNLOAD SITE)
Producer: Acrobat Distiller 2.1 for Macintosh
CreationDate: Thu Jan 22 15:32:14 1998 CET
ModDate: Wed May 24 07:07:35 2006 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 13
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 149228 bytes
Optimized: no
PDF version: 1.5
########################################
Title: PANIMALAR ENGINEERING COLLEGE
Author: staff
Creator: Writer
Producer: LibreOffice 6.3
CreationDate: Mon Oct 21 00:33:21 2019 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 375
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 4710352 bytes
Optimized: no
PDF version: 1.5
########################################
Title: A High Resolution and High Accuracy R-2R DAC Based on Ordered Element Matching
Subject: B8P-N2
Keywords: High resolution, high accuracy, R-2R DAC
Author: Li, Zeng, Chen
Creator: 'Certified by IEEE PDFeXpress at 01/23/2013 3:58:30 PM'
Producer: Acrobat Distiller 8.1.0 (Windows)
CreationDate: Thu Jan 24 00:58:23 2013 CET
ModDate: Tue Jul 30 20:17:34 2013 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 5
Encrypted: no
Page size: 594.96 x 840.96 pts (A4)
Page rot: 0
File size: 688020 bytes
Optimized: no
PDF version: 1.5
########################################
Title: MAX232x Dual EIA-232 Drivers/Receivers datasheet (Rev. M)
Subject: Data Sheet
Keywords: , SLLS047,SLLS047M
Author: Texas Instruments, Incorporated [SLLS047,M
]
Creator: TopLeaf 9.0.005
Producer: iText 2.1.7 by 1T3XT
CreationDate: Thu Jul 11 07:38:59 2019 CEST
ModDate: Thu Jul 11 07:38:59 2019 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 26
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 1714943 bytes
Optimized: no
PDF version: 1.4
########################################
Producer: Acrobat Distiller Command 2.1 for SunOS/Solaris (SPARC)
CreationDate: Wed May 6 16:17:57 1998 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 9
Encrypted: no
Page size: 649 x 829 pts
Page rot: 0
File size: 76304 bytes
Optimized: no
PDF version: 1.1
########################################
Title: PC16550D Universal Asynchronous Receiver/Transmitter With FIFOs datasheet (Rev. C)
Subject: Data Sheet
Keywords: , SNLS378,SNLS378C
Author: Texas Instruments, Incorporated [SNLS378,C
]
Creator: TopLeaf 8.0.006
Producer: iText 2.1.7 by 1T3XT
CreationDate: Fri May 10 07:42:43 2019 CEST
ModDate: Fri May 10 07:42:43 2019 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 35
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 1068345 bytes
Optimized: no
PDF version: 1.4
########################################
Title: PDF32000.book
Author: Jim King
Creator: FrameMaker 8.0
Producer: Acrobat Distiller 8.1.0 (Windows)
CreationDate: Thu Sep 18 13:19:51 2008 CEST
ModDate: Mon Sep 29 19:18:41 2008 CEST
Tagged: yes
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 756
Encrypted: yes (print:yes copy:no change:no addNotes:yes algorithm:RC4)
Page size: 595 x 842 pts (A4)
Page rot: 0
File size: 22491828 bytes
Optimized: no
PDF version: 1.6
########################################
Author: Parithy
Creator: Acrobat PDFMaker 10.1 for Word
Producer: Adobe PDF Library 10.0
CreationDate: Wed Aug 20 13:09:28 2014 CEST
ModDate: Wed Aug 20 13:09:43 2014 CEST
Tagged: yes
UserProperties: no
Suspects: no
Form: AcroForm
JavaScript: no
Pages: 3
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 58743 bytes
Optimized: no
PDF version: 1.5
########################################
Producer: iTextSharp 4.1.6 by 1T3XT
CreationDate: Sun Jan 2 15:43:38 2011 CET
ModDate: Sun Jan 2 15:43:38 2011 CET
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 47
Encrypted: no
Page size: 1198 x 1684 pts
Page rot: 0
File size: 19407681 bytes
Optimized: no
PDF version: 1.4
########################################
Title: Interface Circuits for TIA/EIA-232-F (Rev. A)
Subject: Application Reports
Keywords: slla037a,slla037
Author: Texas Instruments, Incorporated
Producer: Etymon PJ 1.10, Copyright (C) 1998-2000 Etymon Systems, Inc. <http://www.etymon.com/>.
CreationDate: Tue Sep 24 16:10:41 2002 CEST
ModDate: Tue Sep 24 16:11:36 2002 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 22
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 130898 bytes
Optimized: yes
PDF version: 1.2
########################################
Title: CCITT TSB REC. V.24
Subject: CLASSEUR 64
Keywords: folios: 1 - 19 (MONO)
Author: Seetong XUTO
Creator: International Telecommunication Union
Producer: ITU PDF Server - Electronic Publishing Service
CreationDate: Tue May 15 10:45:46 2007 CEST
ModDate: Tue May 15 16:30:46 2007 CEST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 26
Encrypted: no
Page size: 595 x 842 pts (A4)
Page rot: 0
File size: 263718 bytes
Optimized: no
PDF version: 1.4
########################################
Creator: Google
CreationDate: Sat Nov 24 23:17:40 2018 CET
ModDate: Sat Nov 24 23:17:40 2018 CET
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 37
Encrypted: no
Page size: 720 x 405 pts
Page rot: 0
File size: 1587400 bytes
Optimized: yes
PDF version: 1.4

BIN
documents/mst1/max232.pdf Normal file

Binary file not shown.

BIN
documents/mst1/schs183c.pdf Normal file

Binary file not shown.

BIN
documents/mst1/slas062e.pdf Normal file

Binary file not shown.

BIN
documents/mst1/sn74hc00.pdf Normal file

Binary file not shown.

BIN
documents/mst1/sn74hc04.pdf Normal file

Binary file not shown.

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/sh
for f in *.pdf; do
echo "########################################"

40
main.aux Normal file
View File

@ -0,0 +1,40 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\zref@newlabel[2]{}
\bbl@beforestart
\catcode `"\active
\abx@aux@refcontext{nty/global//global/global}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand*\HyPL@Entry[1]{}
\HyPL@Entry{0<</S/D>>}
\@writefile{toc}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
\@writefile{lof}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
\@writefile{lot}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
\babel@aux{english}{}
\babel@aux{ngerman}{}
\HyPL@Entry{1<</S/r>>}
\@writefile{toc}{\contentsline {section}{Gendererklärung}{i}{Doc-Start}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{Kurzfassung/Abstract}{ii}{Doc-Start}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{Projektergebnis}{iii}{Doc-Start}\protected@file@percent }
\HyPL@Entry{4<</S/D>>}
\@writefile{toc}{\contentsline {section}{\numberline {1}Aufgabenstellung}{1}{section.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Daniel Plank}{1}{subsection.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2}Erkl"arung der Eigenst"andigkeit der Arbeit}{2}{section.2}\protected@file@percent }
\HyPL@Entry{6<</S/R>>}
\@writefile{toc}{\contentsline {section}{\numberline {I\tmspace +\thickmuskip {.2777em}}Abbildungsverzeichnis}{I}{section.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {II\tmspace +\thickmuskip {.2777em}}Tabellenverzeichnis}{I}{section.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {III\tmspace +\thickmuskip {.2777em}}Listings}{I}{section.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{Anhang}{II}{section.3}\protected@file@percent }

2170
main.bcf Normal file

File diff suppressed because it is too large Load Diff

0
main.idx Normal file
View File

3
main.lof Normal file
View File

@ -0,0 +1,3 @@
\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax
\babel@toc {english}{}
\babel@toc {ngerman}{}

2994
main.log Normal file

File diff suppressed because it is too large Load Diff

2
main.lol Normal file
View File

@ -0,0 +1,2 @@
\babel@toc {english}{}
\babel@toc {ngerman}{}

3
main.lot Normal file
View File

@ -0,0 +1,3 @@
\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax
\babel@toc {english}{}
\babel@toc {ngerman}{}

10
main.out Normal file
View File

@ -0,0 +1,10 @@
\BOOKMARK [1][-]{Doc-Start}{\376\377\000G\000e\000n\000d\000e\000r\000e\000r\000k\000l\000\344\000r\000u\000n\000g}{}% 1
\BOOKMARK [1][-]{Doc-Start}{\376\377\000K\000u\000r\000z\000f\000a\000s\000s\000u\000n\000g\000/\000A\000b\000s\000t\000r\000a\000c\000t}{}% 2
\BOOKMARK [1][-]{Doc-Start}{\376\377\000P\000r\000o\000j\000e\000k\000t\000e\000r\000g\000e\000b\000n\000i\000s}{}% 3
\BOOKMARK [1][-]{section.1}{\376\377\000A\000u\000f\000g\000a\000b\000e\000n\000s\000t\000e\000l\000l\000u\000n\000g}{}% 4
\BOOKMARK [2][-]{subsection.1.1}{\376\377\000D\000a\000n\000i\000e\000l\000\040\000P\000l\000a\000n\000k}{section.1}% 5
\BOOKMARK [1][-]{section.2}{\376\377\000E\000r\000k\000l\000\344\000r\000u\000n\000g\000\040\000d\000e\000r\000\040\000E\000i\000g\000e\000n\000s\000t\000\344\000n\000d\000i\000g\000k\000e\000i\000t\000\040\000d\000e\000r\000\040\000A\000r\000b\000e\000i\000t}{}% 6
\BOOKMARK [1][-]{section.1}{\376\377\000A\000b\000b\000i\000l\000d\000u\000n\000g\000s\000v\000e\000r\000z\000e\000i\000c\000h\000n\000i\000s}{}% 7
\BOOKMARK [1][-]{section.2}{\376\377\000T\000a\000b\000e\000l\000l\000e\000n\000v\000e\000r\000z\000e\000i\000c\000h\000n\000i\000s}{}% 8
\BOOKMARK [1][-]{section.3}{\376\377\000L\000i\000s\000t\000i\000n\000g\000s}{}% 9
\BOOKMARK [1][-]{section.3}{\376\377\000A\000n\000h\000a\000n\000g}{}% 10

BIN
main.pdf Normal file

Binary file not shown.

86
main.run.xml Normal file
View File

@ -0,0 +1,86 @@
<?xml version="1.0" standalone="yes"?>
<!-- logreq request file -->
<!-- logreq version 1.0 / dtd version 1.0 -->
<!-- Do not edit this file! -->
<!DOCTYPE requests [
<!ELEMENT requests (internal | external)*>
<!ELEMENT internal (generic, (provides | requires)*)>
<!ELEMENT external (generic, cmdline?, input?, output?, (provides | requires)*)>
<!ELEMENT cmdline (binary, (option | infile | outfile)*)>
<!ELEMENT input (file)+>
<!ELEMENT output (file)+>
<!ELEMENT provides (file)+>
<!ELEMENT requires (file)+>
<!ELEMENT generic (#PCDATA)>
<!ELEMENT binary (#PCDATA)>
<!ELEMENT option (#PCDATA)>
<!ELEMENT infile (#PCDATA)>
<!ELEMENT outfile (#PCDATA)>
<!ELEMENT file (#PCDATA)>
<!ATTLIST requests
version CDATA #REQUIRED
>
<!ATTLIST internal
package CDATA #REQUIRED
priority (9) #REQUIRED
active (0 | 1) #REQUIRED
>
<!ATTLIST external
package CDATA #REQUIRED
priority (1 | 2 | 3 | 4 | 5 | 6 | 7 | 8) #REQUIRED
active (0 | 1) #REQUIRED
>
<!ATTLIST provides
type (static | dynamic | editable) #REQUIRED
>
<!ATTLIST requires
type (static | dynamic | editable) #REQUIRED
>
<!ATTLIST file
type CDATA #IMPLIED
>
]>
<requests version="1.0">
<internal package="biblatex" priority="9" active="0">
<generic>latex</generic>
<provides type="dynamic">
<file>main.bcf</file>
</provides>
<requires type="dynamic">
<file>main.bbl</file>
</requires>
<requires type="static">
<file>blx-dm.def</file>
<file>blx-unicode.def</file>
<file>blx-compat.def</file>
<file>biblatex.def</file>
<file>standard.bbx</file>
<file>authortitle.bbx</file>
<file>verbose.bbx</file>
<file>authoryear-ibid.cbx</file>
<file>biblatex.cfg</file>
<file>english.lbx</file>
<file>german.lbx</file>
<file>ngerman.lbx</file>
</requires>
</internal>
<external package="biblatex" priority="5" active="0">
<generic>biber</generic>
<cmdline>
<binary>biber</binary>
<infile>main</infile>
</cmdline>
<input>
<file>main.bcf</file>
</input>
<output>
<file>main.bbl</file>
</output>
<provides type="dynamic">
<file>main.bbl</file>
</provides>
<requires type="dynamic">
<file>main.bcf</file>
</requires>
</external>
</requests>

View File

@ -47,7 +47,7 @@
}
\\[12mm]{Projektpartner: IT-Syndikat, Verein zur Förderung des freien
Zugangs zu technischer Fort- und Weiterbildung jeglicher Art, Hackerspace Innsbruck}
\\[12mm]{Ansprechpartner: Herr David Oberhollenzer}
\\[12mm]{Ansprechpartner: Ing. David Oberhollenzer B.Sc.}
\\[14mm]{Innsbruck, am \today}
\\[16mm]\rule{150mm}{0.5pt}
\\[ 8mm]
@ -88,7 +88,7 @@ geschlechtsunabh"angig verstanden werden soll.
%====================================================================================
\subsection*{Kurzfassung/Abstract\markboth{}{Kurzfassung/Abstract}}
\addcontentsline{toc}{section}{Kurzfassung/Abstract}
%\input{sections/abstract.tex} TODO
\input{sections/abstract.tex}
\newpage
\subsection*{Projektergebnis\markboth{}{Projektergebnis}}
@ -112,8 +112,8 @@ geschlechtsunabh"angig verstanden werden soll.
\section{Aufgabenstellung}
\DP\input{planung/DP/aufgabenstellung.tex}
\section{Planung}
\DP\input{planung/DP/planung.tex}
%\section{Planung}
%\DP\input{planung/DP/planung.tex}
\clearpage
% \MR\input{sections/Kapitel/MR/planungAufgabengenerator.tex}
@ -126,6 +126,7 @@ geschlechtsunabh"angig verstanden werden soll.
%====================================================================================
\allAuth
\clearpage\vfill\newpage{}
%====================================================================================
\section{Erkl"arung der Eigenst"andigkeit der Arbeit}
@ -166,23 +167,20 @@ geschlechtsunabh"angig verstanden werden soll.
\lstlistoflistings\thispagestyle{fancy}
\printbibliography[title={Literaturverzeichnis},heading=bibnumbered]
%====================================================================================
\clearpage\vfill\newpage{}
%====================================================================================
%\noindent\\[-2mm]
%\hspace*{3mm}{\sc\textbf{\Large Anhang}}
%\noindent\\[-5mm]
\noindent\\[-2mm]
\hspace*{3mm}{\sc\textbf{\Large Anhang}}
\noindent\\[-5mm]
%
%
%\cfoot{Anhang}
%\addcontentsline{toc}{section}{Anhang}
%\appendix
%\renewcommand{\thesection}{\Alph{section}}
%\setcounter{section}{1}
%\setcounter{subsection}{0}
\cfoot{Anhang}
\addcontentsline{toc}{section}{Anhang}
\appendix
\renewcommand{\thesection}{\Alph{section}}
\setcounter{section}{1}
\setcounter{subsection}{0}
%\subsection{Pflichtenheft}
%\input{sections/Anhang/Pflichtenheft/pflichtenheftMR.tex}

13
main.toc Normal file
View File

@ -0,0 +1,13 @@
\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax
\babel@toc {english}{}
\babel@toc {ngerman}{}
\contentsline {section}{Gendererklärung}{i}{Doc-Start}%
\contentsline {section}{Kurzfassung/Abstract}{ii}{Doc-Start}%
\contentsline {section}{Projektergebnis}{iii}{Doc-Start}%
\contentsline {section}{\numberline {1}Aufgabenstellung}{1}{section.1}%
\contentsline {subsection}{\numberline {1.1}Daniel Plank}{1}{subsection.1.1}%
\contentsline {section}{\numberline {2}Erkl"arung der Eigenst"andigkeit der Arbeit}{2}{section.2}%
\contentsline {section}{\numberline {I\tmspace +\thickmuskip {.2777em}}Abbildungsverzeichnis}{I}{section.1}%
\contentsline {section}{\numberline {II\tmspace +\thickmuskip {.2777em}}Tabellenverzeichnis}{I}{section.2}%
\contentsline {section}{\numberline {III\tmspace +\thickmuskip {.2777em}}Listings}{I}{section.3}%
\contentsline {section}{Anhang}{II}{section.3}%

8193
meas/20200207quartz.csv Normal file

File diff suppressed because it is too large Load Diff

8193
meas/20200210_saw_nonlin.csv Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

8193
meas/20200218echo.csv Normal file

File diff suppressed because it is too large Load Diff

BIN
meas/20200218echo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

8193
meas/20200218ttluart.csv Normal file

File diff suppressed because it is too large Load Diff

BIN
meas/20200218ttluart.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

8193
meas/20200301shift3v35v.csv Normal file

File diff suppressed because it is too large Load Diff

BIN
meas/20200301shift3v35v.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

8193
meas/20200301shift5v3v3.csv Normal file

File diff suppressed because it is too large Load Diff

BIN
meas/20200301shift5v3v3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

4097
meas/20200308diode_or.csv Normal file

File diff suppressed because it is too large Load Diff

BIN
meas/20200308diode_or.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

4097
meas/20200310sine_dac.csv Normal file

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More