Added stuff from corona start
Signed-off-by: Tyrolyean <tyrolyean@tyrolyean.net>
36
code/16550/README
Normal 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
|
@ -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
26
code/16550/count/bin/mc.hex
Normal 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
|
BIN
code/16550/count/build/main.o
Normal file
86
code/16550/count/src/main.c
Normal 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
|
@ -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
47
code/16550/echo/bin/mc.hex
Normal 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
|
BIN
code/16550/echo/build/main.o
Normal file
175
code/16550/echo/src/main.c
Normal 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;
|
||||
}
|
||||
|
70
code/16550/transmit/Makefile
Normal 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
40
code/16550/transmit/bin/mc.hex
Normal 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
|
BIN
code/16550/transmit/build/main.o
Normal file
142
code/16550/transmit/src/main.c
Normal 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
|
@ -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
25
code/dac/saw/bin/mc.hex
Normal 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
81
code/dac/saw/src/main.c
Normal 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;
|
||||
}
|
||||
|
70
code/dac/saw_fifo/Makefile
Normal 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
30
code/dac/saw_fifo/bin/mc.hex
Normal 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
|
BIN
code/dac/saw_fifo/build/main.o
Normal file
83
code/dac/saw_fifo/src/main.c
Normal 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;
|
||||
}
|
||||
|
70
code/dac/saw_fifo_backplane/Makefile
Normal 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_backplane/bin/mc.elf
Executable file
140
code/dac/saw_fifo_backplane/bin/mc.hex
Normal 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
|
BIN
code/dac/saw_fifo_backplane/build/main.o
Normal file
151
code/dac/saw_fifo_backplane/src/main.c
Normal 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
|
@ -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
231
code/textadv/bin/mc.hex
Normal 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
BIN
code/textadv/build/dac.o
Normal file
BIN
code/textadv/build/interrupt.o
Normal file
BIN
code/textadv/build/main.o
Normal file
BIN
code/textadv/build/sound.o
Normal file
BIN
code/textadv/build/structures.o
Normal file
44
code/textadv/include/16550.h
Normal 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
|
49
code/textadv/include/avr.h
Normal 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
|
45
code/textadv/include/dac.h
Normal 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
|
22
code/textadv/include/interrupt.h
Normal 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
|
30
code/textadv/include/sound.h
Normal 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
|
27
code/textadv/include/structures.h
Normal 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
|
@ -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
|
@ -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;
|
||||
}
|
36
code/textadv/src/interrupt.c
Normal 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
|
@ -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
|
@ -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;
|
||||
}
|
365
code/textadv/src/structures.c
Normal 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
BIN
documents/mst1/DB3S406F0L_E.pdf
Normal file
BIN
documents/mst1/IDT_7200-7202_DST_20171127.pdf
Normal file
BIN
documents/mst1/ad2_rm.pdf
Normal file
BIN
documents/mst1/bc559-320188.pdf
Normal file
BIN
documents/mst1/lm3587.pdf
Normal file
716
documents/mst1/logfile
Normal 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
BIN
documents/mst1/schs183c.pdf
Normal file
BIN
documents/mst1/slas062e.pdf
Normal file
BIN
documents/mst1/sn74hc00.pdf
Normal file
BIN
documents/mst1/sn74hc04.pdf
Normal file
|
@ -1,4 +1,4 @@
|
|||
#!/bin/bash
|
||||
#!/bin/sh
|
||||
|
||||
for f in *.pdf; do
|
||||
echo "########################################"
|
||||
|
|
40
main.aux
Normal 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 }
|
0
main.idx
Normal file
3
main.lof
Normal file
|
@ -0,0 +1,3 @@
|
|||
\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax
|
||||
\babel@toc {english}{}
|
||||
\babel@toc {ngerman}{}
|
2
main.lol
Normal file
|
@ -0,0 +1,2 @@
|
|||
\babel@toc {english}{}
|
||||
\babel@toc {ngerman}{}
|
3
main.lot
Normal 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
|
@ -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
86
main.run.xml
Normal 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>
|
30
main.tex
|
@ -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
|
@ -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
8193
meas/20200210_saw_nonlin.csv
Normal file
BIN
meas/20200210_saw_nonlin.png
Normal file
After Width: | Height: | Size: 113 KiB |
4097
meas/20200211_first_trans.csv
Normal file
BIN
meas/20200211_first_trans.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
meas/20200211_first_trans_lochr.png
Normal file
After Width: | Height: | Size: 94 KiB |
8193
meas/20200218echo.csv
Normal file
BIN
meas/20200218echo.png
Normal file
After Width: | Height: | Size: 92 KiB |
8193
meas/20200218ttluart.csv
Normal file
BIN
meas/20200218ttluart.png
Normal file
After Width: | Height: | Size: 97 KiB |
8193
meas/20200301shift3v35v.csv
Normal file
BIN
meas/20200301shift3v35v.png
Normal file
After Width: | Height: | Size: 102 KiB |
8193
meas/20200301shift5v3v3.csv
Normal file
BIN
meas/20200301shift5v3v3.png
Normal file
After Width: | Height: | Size: 102 KiB |
4097
meas/20200308diode_or.csv
Normal file
BIN
meas/20200308diode_or.png
Normal file
After Width: | Height: | Size: 64 KiB |
4097
meas/20200308fifo_44_1_cnt.csv
Normal file
BIN
meas/20200308fifo_44_1_cnt.png
Normal file
After Width: | Height: | Size: 89 KiB |
4097
meas/20200308fifo_44_1_saw.csv
Normal file
BIN
meas/20200308fifo_44_1_saw.png
Normal file
After Width: | Height: | Size: 84 KiB |
8193
meas/20200308fifo_44_1_saw_withfifoempty.csv
Normal file
BIN
meas/20200308fifo_44_1_saw_withfifoempty.png
Normal file
After Width: | Height: | Size: 89 KiB |