Set up project structure + began work
This commit is contained in:
parent
0e5306387e
commit
fa8cc80206
15
final_project/312_final.code-workspace
Normal file
15
final_project/312_final.code-workspace
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "sd_reader"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "lcd_disp"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"files.associations": {
|
||||||
|
"io.h": "c"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
35
final_project/comms/comms.c
Normal file
35
final_project/comms/comms.c
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#include "comms.h"
|
||||||
|
|
||||||
|
inline void comms_send_command(comms_cmd_t cmd) {
|
||||||
|
while (! (UCSRA & (1 << UDRE)));
|
||||||
|
UDR = cmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void comms_add_file(uint8_t id, char* filename) {
|
||||||
|
uint8_t len = strlen(filename);
|
||||||
|
|
||||||
|
comms_send_command(COMMS_CMD_ADD_FILE);
|
||||||
|
comms_send_command((comms_cmd_t) id);
|
||||||
|
|
||||||
|
uint8_t i = 0;
|
||||||
|
while (i < len) {
|
||||||
|
comms_send_command((comms_cmd_t) filename[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void comms_select_file(uint8_t id) {
|
||||||
|
comms_send_command(COMMS_CMD_SELECT_FILE);
|
||||||
|
comms_send_command((comms_cmd_t) id);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void comms_clear() {
|
||||||
|
comms_send_command(COMMS_CMD_CLR);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void comms_play() {
|
||||||
|
comms_send_command(COMMS_CMD_PLAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void comms_pause() {
|
||||||
|
comms_send_command(COMMS_CMD_PLAY);
|
||||||
|
}
|
46
final_project/comms/comms.h
Normal file
46
final_project/comms/comms.h
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#ifndef COMMS_H_
|
||||||
|
#define COMMS_H_
|
||||||
|
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Our format goes like this:
|
||||||
|
*
|
||||||
|
* 1 byte command, with data after
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
COMMS_CMD_CLR = 0U, //! Clears LCD and all file names
|
||||||
|
COMMS_CMD_ADD_FILE, //! Adds a file to the list of files to display, data is 1 byte for ID, 1 byte for strlen, n bytes for string
|
||||||
|
COMMS_CMD_SELECT_FILE, //! selects a file from the given list to play, data is 1 byte for id
|
||||||
|
COMMS_CMD_PLAY, //! Starts playing file
|
||||||
|
COMMS_CMD_PAUSE //! pauses playing file
|
||||||
|
} comms_cmd_t;
|
||||||
|
|
||||||
|
/** @brief Inline function to send commands and values.
|
||||||
|
*/
|
||||||
|
inline void comms_send_command(comms_cmd_t cmd);
|
||||||
|
|
||||||
|
/** @brief Adds a file to the list on the LCD side.
|
||||||
|
*/
|
||||||
|
inline void comms_add_file(uint8_t id, char* filename);
|
||||||
|
|
||||||
|
/** @brief Selects a file from the list on the DAC side.
|
||||||
|
*/
|
||||||
|
inline void comms_select_file(uint8_t id);
|
||||||
|
|
||||||
|
/** @brief Clears the LCD list of files.
|
||||||
|
*/
|
||||||
|
inline void comms_clear();
|
||||||
|
|
||||||
|
/** @brief Starts playing song.
|
||||||
|
*/
|
||||||
|
inline void comms_play();
|
||||||
|
|
||||||
|
/** @brief Pauses playing song.
|
||||||
|
*/
|
||||||
|
inline void comms_pause();
|
||||||
|
|
||||||
|
#endif
|
18
final_project/lcd_disp/.vscode/c_cpp_properties.json
vendored
Normal file
18
final_project/lcd_disp/.vscode/c_cpp_properties.json
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Linux",
|
||||||
|
"intelliSenseMode": "gcc-x64",
|
||||||
|
"compilerPath": "/usr/lib/ccache/avr-gcc",
|
||||||
|
"cStandard": "c99",
|
||||||
|
"cppStandard": "c++17",
|
||||||
|
"compilerArgs": [
|
||||||
|
"-Wall", "-pedantic", "-mmcu=attiy2313a"
|
||||||
|
],
|
||||||
|
"defines": [
|
||||||
|
"F_CPU=16000000"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 4
|
||||||
|
}
|
19
final_project/lcd_disp/.vscode/tasks.json
vendored
Normal file
19
final_project/lcd_disp/.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||||
|
// for the documentation about the tasks.json format
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "make",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "make",
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": true
|
||||||
|
},
|
||||||
|
"problemMatcher": [
|
||||||
|
"$gcc"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
52
final_project/lcd_disp/Makefile
Normal file
52
final_project/lcd_disp/Makefile
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
NAME := sd-reader
|
||||||
|
HEX := $(NAME).hex
|
||||||
|
OUT := $(NAME).out
|
||||||
|
MAP := $(NAME).map
|
||||||
|
SOURCES := $(wildcard *.c)
|
||||||
|
HEADERS := $(wildcard *.h)
|
||||||
|
OBJECTS := $(patsubst %.c,%.o,$(SOURCES))
|
||||||
|
|
||||||
|
MCU := attiny2313a
|
||||||
|
MCU_AVRDUDE := t2313
|
||||||
|
MCU_FREQ := 8000000UL
|
||||||
|
|
||||||
|
CC := avr-gcc
|
||||||
|
OBJCOPY := avr-objcopy
|
||||||
|
SIZE := avr-size -A
|
||||||
|
DOXYGEN := doxygen
|
||||||
|
|
||||||
|
CFLAGS := -Wall -pedantic -mmcu=$(MCU) -std=c99 -g -Os -DF_CPU=$(MCU_FREQ)
|
||||||
|
|
||||||
|
all: $(HEX)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(HEX) $(OUT) $(MAP) $(OBJECTS)
|
||||||
|
rm -rf doc/html
|
||||||
|
|
||||||
|
flash: $(HEX)
|
||||||
|
avrdude -y -c avr910 -p $(MCU_AVRDUDE) -U flash:w:$(HEX)
|
||||||
|
|
||||||
|
$(HEX): $(OUT)
|
||||||
|
$(OBJCOPY) -R .eeprom -O ihex $< $@
|
||||||
|
|
||||||
|
$(OUT): $(OBJECTS)
|
||||||
|
$(CC) $(CFLAGS) -o $@ -Wl,-Map,$(MAP) $^
|
||||||
|
@echo
|
||||||
|
@$(SIZE) $@
|
||||||
|
@echo
|
||||||
|
|
||||||
|
%.o: %.c $(HEADERS)
|
||||||
|
$(CC) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
|
%.pp: %.c
|
||||||
|
$(CC) $(CFLAGS) -E -o $@ $<
|
||||||
|
|
||||||
|
%.ppo: %.c
|
||||||
|
$(CC) $(CFLAGS) -E $<
|
||||||
|
|
||||||
|
doc: $(HEADERS) $(SOURCES) Doxyfile
|
||||||
|
$(DOXYGEN) Doxyfile
|
||||||
|
|
||||||
|
.PHONY: all clean flash doc
|
||||||
|
|
1
final_project/lcd_disp/comms.c
Symbolic link
1
final_project/lcd_disp/comms.c
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../comms/comms.c
|
1
final_project/lcd_disp/comms.h
Symbolic link
1
final_project/lcd_disp/comms.h
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../comms/comms.h
|
@ -128,7 +128,7 @@
|
|||||||
#if LCD_IO_MODE
|
#if LCD_IO_MODE
|
||||||
|
|
||||||
#ifndef LCD_PORT
|
#ifndef LCD_PORT
|
||||||
#define LCD_PORT PORTC /**< port for the LCD lines */
|
#define LCD_PORT PORTB /**< port for the LCD lines */
|
||||||
#endif
|
#endif
|
||||||
#ifndef LCD_DATA0_PORT
|
#ifndef LCD_DATA0_PORT
|
||||||
#define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */
|
#define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */
|
31
final_project/lcd_disp/main.c
Normal file
31
final_project/lcd_disp/main.c
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#include <avr/io.h>
|
||||||
|
#include "lcd.h"
|
||||||
|
|
||||||
|
#define USART_BAUDRATE 9600 //! USART baudrate, change this to set it.
|
||||||
|
#define UBRR_VALUE (((F_CPU/(USART_BAUDRATE*16UL)))-1)
|
||||||
|
|
||||||
|
/** @brief Sets up USART for TX and RX with a baud rate of USART_BAUDRATE
|
||||||
|
*/
|
||||||
|
void usart_init() {
|
||||||
|
// initialize USART
|
||||||
|
UBRRL = UBRR_VALUE & 255;
|
||||||
|
UBRRH = UBRR_VALUE >> 8;
|
||||||
|
UCSRB = (1 << TXEN) | (1 << RXEN); // fire-up USART
|
||||||
|
UCSRC = (1 << UCSZ1) | (1 << UCSZ0); // fire-up USART
|
||||||
|
|
||||||
|
|
||||||
|
UCSRB |= (1 << RXCIE);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
usart_init();
|
||||||
|
|
||||||
|
lcd_clrscr();
|
||||||
|
lcd_gotoxy(0,0);
|
||||||
|
|
||||||
|
// Main loop
|
||||||
|
while (1) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
421
final_project/lcd_disp/sd-reader.map
Normal file
421
final_project/lcd_disp/sd-reader.map
Normal file
@ -0,0 +1,421 @@
|
|||||||
|
Archive member included to satisfy reference by file (symbol)
|
||||||
|
|
||||||
|
/usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o (exit)
|
||||||
|
|
||||||
|
Memory Configuration
|
||||||
|
|
||||||
|
Name Origin Length Attributes
|
||||||
|
text 0x0000000000000000 0x0000000000002000 xr
|
||||||
|
data 0x0000000000800060 0x000000000000ffa0 rw !x
|
||||||
|
eeprom 0x0000000000810000 0x0000000000010000 rw !x
|
||||||
|
fuse 0x0000000000820000 0x0000000000000003 rw !x
|
||||||
|
lock 0x0000000000830000 0x0000000000000400 rw !x
|
||||||
|
signature 0x0000000000840000 0x0000000000000400 rw !x
|
||||||
|
user_signatures 0x0000000000850000 0x0000000000000400 rw !x
|
||||||
|
*default* 0x0000000000000000 0xffffffffffffffff
|
||||||
|
|
||||||
|
Linker script and memory map
|
||||||
|
|
||||||
|
LOAD /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
LOAD lcd.o
|
||||||
|
LOAD comms.o
|
||||||
|
LOAD main.o
|
||||||
|
START GROUP
|
||||||
|
LOAD /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a
|
||||||
|
LOAD /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libm.a
|
||||||
|
LOAD /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libc.a
|
||||||
|
LOAD /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libattiny2313a.a
|
||||||
|
END GROUP
|
||||||
|
0x0000000000002000 __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x2000
|
||||||
|
0x000000000000ffa0 __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0
|
||||||
|
0x0000000000010000 __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000
|
||||||
|
[0x0000000000000003] __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400
|
||||||
|
0x0000000000000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400
|
||||||
|
0x0000000000000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400
|
||||||
|
0x0000000000000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400
|
||||||
|
|
||||||
|
.hash
|
||||||
|
*(.hash)
|
||||||
|
|
||||||
|
.dynsym
|
||||||
|
*(.dynsym)
|
||||||
|
|
||||||
|
.dynstr
|
||||||
|
*(.dynstr)
|
||||||
|
|
||||||
|
.gnu.version
|
||||||
|
*(.gnu.version)
|
||||||
|
|
||||||
|
.gnu.version_d
|
||||||
|
*(.gnu.version_d)
|
||||||
|
|
||||||
|
.gnu.version_r
|
||||||
|
*(.gnu.version_r)
|
||||||
|
|
||||||
|
.rel.init
|
||||||
|
*(.rel.init)
|
||||||
|
|
||||||
|
.rela.init
|
||||||
|
*(.rela.init)
|
||||||
|
|
||||||
|
.rel.text
|
||||||
|
*(.rel.text)
|
||||||
|
*(.rel.text.*)
|
||||||
|
*(.rel.gnu.linkonce.t*)
|
||||||
|
|
||||||
|
.rela.text
|
||||||
|
*(.rela.text)
|
||||||
|
*(.rela.text.*)
|
||||||
|
*(.rela.gnu.linkonce.t*)
|
||||||
|
|
||||||
|
.rel.fini
|
||||||
|
*(.rel.fini)
|
||||||
|
|
||||||
|
.rela.fini
|
||||||
|
*(.rela.fini)
|
||||||
|
|
||||||
|
.rel.rodata
|
||||||
|
*(.rel.rodata)
|
||||||
|
*(.rel.rodata.*)
|
||||||
|
*(.rel.gnu.linkonce.r*)
|
||||||
|
|
||||||
|
.rela.rodata
|
||||||
|
*(.rela.rodata)
|
||||||
|
*(.rela.rodata.*)
|
||||||
|
*(.rela.gnu.linkonce.r*)
|
||||||
|
|
||||||
|
.rel.data
|
||||||
|
*(.rel.data)
|
||||||
|
*(.rel.data.*)
|
||||||
|
*(.rel.gnu.linkonce.d*)
|
||||||
|
|
||||||
|
.rela.data
|
||||||
|
*(.rela.data)
|
||||||
|
*(.rela.data.*)
|
||||||
|
*(.rela.gnu.linkonce.d*)
|
||||||
|
|
||||||
|
.rel.ctors
|
||||||
|
*(.rel.ctors)
|
||||||
|
|
||||||
|
.rela.ctors
|
||||||
|
*(.rela.ctors)
|
||||||
|
|
||||||
|
.rel.dtors
|
||||||
|
*(.rel.dtors)
|
||||||
|
|
||||||
|
.rela.dtors
|
||||||
|
*(.rela.dtors)
|
||||||
|
|
||||||
|
.rel.got
|
||||||
|
*(.rel.got)
|
||||||
|
|
||||||
|
.rela.got
|
||||||
|
*(.rela.got)
|
||||||
|
|
||||||
|
.rel.bss
|
||||||
|
*(.rel.bss)
|
||||||
|
|
||||||
|
.rela.bss
|
||||||
|
*(.rela.bss)
|
||||||
|
|
||||||
|
.rel.plt
|
||||||
|
*(.rel.plt)
|
||||||
|
|
||||||
|
.rela.plt
|
||||||
|
*(.rela.plt)
|
||||||
|
|
||||||
|
.text 0x0000000000000000 0x1fa
|
||||||
|
*(.vectors)
|
||||||
|
.vectors 0x0000000000000000 0x2a /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
0x0000000000000000 __vectors
|
||||||
|
0x0000000000000000 __vector_default
|
||||||
|
*(.vectors)
|
||||||
|
*(.progmem.gcc*)
|
||||||
|
0x000000000000002a . = ALIGN (0x2)
|
||||||
|
0x000000000000002a __trampolines_start = .
|
||||||
|
*(.trampolines)
|
||||||
|
.trampolines 0x000000000000002a 0x0 linker stubs
|
||||||
|
*(.trampolines*)
|
||||||
|
0x000000000000002a __trampolines_end = .
|
||||||
|
*libprintf_flt.a:*(.progmem.data)
|
||||||
|
*libc.a:*(.progmem.data)
|
||||||
|
*(.progmem*)
|
||||||
|
0x000000000000002a . = ALIGN (0x2)
|
||||||
|
*(.jumptables)
|
||||||
|
*(.jumptables*)
|
||||||
|
*(.lowtext)
|
||||||
|
*(.lowtext*)
|
||||||
|
0x000000000000002a __ctors_start = .
|
||||||
|
*(.ctors)
|
||||||
|
0x000000000000002a __ctors_end = .
|
||||||
|
0x000000000000002a __dtors_start = .
|
||||||
|
*(.dtors)
|
||||||
|
0x000000000000002a __dtors_end = .
|
||||||
|
SORT(*)(.ctors)
|
||||||
|
SORT(*)(.dtors)
|
||||||
|
*(.init0)
|
||||||
|
.init0 0x000000000000002a 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
0x000000000000002a __init
|
||||||
|
*(.init0)
|
||||||
|
*(.init1)
|
||||||
|
*(.init1)
|
||||||
|
*(.init2)
|
||||||
|
.init2 0x000000000000002a 0x8 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
*(.init2)
|
||||||
|
*(.init3)
|
||||||
|
*(.init3)
|
||||||
|
*(.init4)
|
||||||
|
*(.init4)
|
||||||
|
*(.init5)
|
||||||
|
*(.init5)
|
||||||
|
*(.init6)
|
||||||
|
*(.init6)
|
||||||
|
*(.init7)
|
||||||
|
*(.init7)
|
||||||
|
*(.init8)
|
||||||
|
*(.init8)
|
||||||
|
*(.init9)
|
||||||
|
.init9 0x0000000000000032 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
*(.init9)
|
||||||
|
*(.text)
|
||||||
|
.text 0x0000000000000036 0x2 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
0x0000000000000036 __vector_1
|
||||||
|
0x0000000000000036 __vector_12
|
||||||
|
0x0000000000000036 __bad_interrupt
|
||||||
|
0x0000000000000036 __vector_6
|
||||||
|
0x0000000000000036 __vector_3
|
||||||
|
0x0000000000000036 __vector_11
|
||||||
|
0x0000000000000036 __vector_13
|
||||||
|
0x0000000000000036 __vector_17
|
||||||
|
0x0000000000000036 __vector_19
|
||||||
|
0x0000000000000036 __vector_7
|
||||||
|
0x0000000000000036 __vector_5
|
||||||
|
0x0000000000000036 __vector_4
|
||||||
|
0x0000000000000036 __vector_9
|
||||||
|
0x0000000000000036 __vector_2
|
||||||
|
0x0000000000000036 __vector_15
|
||||||
|
0x0000000000000036 __vector_8
|
||||||
|
0x0000000000000036 __vector_14
|
||||||
|
0x0000000000000036 __vector_10
|
||||||
|
0x0000000000000036 __vector_16
|
||||||
|
0x0000000000000036 __vector_18
|
||||||
|
0x0000000000000036 __vector_20
|
||||||
|
.text 0x0000000000000038 0x1b8 lcd.o
|
||||||
|
0x0000000000000102 lcd_command
|
||||||
|
0x0000000000000110 lcd_data
|
||||||
|
0x000000000000011e lcd_gotoxy
|
||||||
|
0x000000000000012a lcd_getxy
|
||||||
|
0x0000000000000130 lcd_clrscr
|
||||||
|
0x0000000000000134 lcd_home
|
||||||
|
0x0000000000000138 lcd_putc
|
||||||
|
0x000000000000015a lcd_puts
|
||||||
|
0x0000000000000170 lcd_puts_p
|
||||||
|
0x000000000000018c lcd_init
|
||||||
|
.text 0x00000000000001f0 0x0 comms.o
|
||||||
|
.text 0x00000000000001f0 0x0 main.o
|
||||||
|
.text 0x00000000000001f0 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
0x00000000000001f0 . = ALIGN (0x2)
|
||||||
|
*(.text.*)
|
||||||
|
.text.startup 0x00000000000001f0 0x6 main.o
|
||||||
|
0x00000000000001f0 main
|
||||||
|
.text.libgcc.mul
|
||||||
|
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
.text.libgcc.div
|
||||||
|
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
.text.libgcc 0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
.text.libgcc.prologue
|
||||||
|
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
.text.libgcc.builtins
|
||||||
|
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
.text.libgcc.fmul
|
||||||
|
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
.text.libgcc.fixed
|
||||||
|
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
0x00000000000001f6 . = ALIGN (0x2)
|
||||||
|
*(.fini9)
|
||||||
|
.fini9 0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
0x00000000000001f6 exit
|
||||||
|
0x00000000000001f6 _exit
|
||||||
|
*(.fini9)
|
||||||
|
*(.fini8)
|
||||||
|
*(.fini8)
|
||||||
|
*(.fini7)
|
||||||
|
*(.fini7)
|
||||||
|
*(.fini6)
|
||||||
|
*(.fini6)
|
||||||
|
*(.fini5)
|
||||||
|
*(.fini5)
|
||||||
|
*(.fini4)
|
||||||
|
*(.fini4)
|
||||||
|
*(.fini3)
|
||||||
|
*(.fini3)
|
||||||
|
*(.fini2)
|
||||||
|
*(.fini2)
|
||||||
|
*(.fini1)
|
||||||
|
*(.fini1)
|
||||||
|
*(.fini0)
|
||||||
|
.fini0 0x00000000000001f6 0x4 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
*(.fini0)
|
||||||
|
0x00000000000001fa _etext = .
|
||||||
|
|
||||||
|
.data 0x0000000000800060 0x0 load address 0x00000000000001fa
|
||||||
|
[!provide] PROVIDE (__data_start, .)
|
||||||
|
*(.data)
|
||||||
|
.data 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
.data 0x0000000000800060 0x0 lcd.o
|
||||||
|
.data 0x0000000000800060 0x0 comms.o
|
||||||
|
.data 0x0000000000800060 0x0 main.o
|
||||||
|
.data 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
*(.data*)
|
||||||
|
*(.rodata)
|
||||||
|
*(.rodata*)
|
||||||
|
*(.gnu.linkonce.d*)
|
||||||
|
0x0000000000800060 . = ALIGN (0x2)
|
||||||
|
0x0000000000800060 _edata = .
|
||||||
|
[!provide] PROVIDE (__data_end, .)
|
||||||
|
|
||||||
|
.bss 0x0000000000800060 0x0
|
||||||
|
[!provide] PROVIDE (__bss_start, .)
|
||||||
|
*(.bss)
|
||||||
|
.bss 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
.bss 0x0000000000800060 0x0 lcd.o
|
||||||
|
.bss 0x0000000000800060 0x0 comms.o
|
||||||
|
.bss 0x0000000000800060 0x0 main.o
|
||||||
|
.bss 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
|
*(.bss*)
|
||||||
|
*(COMMON)
|
||||||
|
[!provide] PROVIDE (__bss_end, .)
|
||||||
|
0x00000000000001fa __data_load_start = LOADADDR (.data)
|
||||||
|
0x00000000000001fa __data_load_end = (__data_load_start + SIZEOF (.data))
|
||||||
|
|
||||||
|
.noinit 0x0000000000800060 0x0
|
||||||
|
[!provide] PROVIDE (__noinit_start, .)
|
||||||
|
*(.noinit*)
|
||||||
|
[!provide] PROVIDE (__noinit_end, .)
|
||||||
|
0x0000000000800060 _end = .
|
||||||
|
[!provide] PROVIDE (__heap_start, .)
|
||||||
|
|
||||||
|
.eeprom 0x0000000000810000 0x0
|
||||||
|
*(.eeprom*)
|
||||||
|
0x0000000000810000 __eeprom_end = .
|
||||||
|
|
||||||
|
.fuse
|
||||||
|
*(.fuse)
|
||||||
|
*(.lfuse)
|
||||||
|
*(.hfuse)
|
||||||
|
*(.efuse)
|
||||||
|
|
||||||
|
.lock
|
||||||
|
*(.lock*)
|
||||||
|
|
||||||
|
.signature
|
||||||
|
*(.signature*)
|
||||||
|
|
||||||
|
.user_signatures
|
||||||
|
*(.user_signatures*)
|
||||||
|
|
||||||
|
.stab 0x0000000000000000 0x1638
|
||||||
|
*(.stab)
|
||||||
|
.stab 0x0000000000000000 0x1008 lcd.o
|
||||||
|
.stab 0x0000000000001008 0x30c comms.o
|
||||||
|
0x4e0 (size before relaxing)
|
||||||
|
.stab 0x0000000000001314 0x324 main.o
|
||||||
|
0x510 (size before relaxing)
|
||||||
|
|
||||||
|
.stabstr 0x0000000000000000 0xf6f
|
||||||
|
*(.stabstr)
|
||||||
|
.stabstr 0x0000000000000000 0xf6f lcd.o
|
||||||
|
|
||||||
|
.stab.excl
|
||||||
|
*(.stab.excl)
|
||||||
|
|
||||||
|
.stab.exclstr
|
||||||
|
*(.stab.exclstr)
|
||||||
|
|
||||||
|
.stab.index
|
||||||
|
*(.stab.index)
|
||||||
|
|
||||||
|
.stab.indexstr
|
||||||
|
*(.stab.indexstr)
|
||||||
|
|
||||||
|
.comment 0x0000000000000000 0x11
|
||||||
|
*(.comment)
|
||||||
|
.comment 0x0000000000000000 0x11 lcd.o
|
||||||
|
0x12 (size before relaxing)
|
||||||
|
.comment 0x0000000000000011 0x12 comms.o
|
||||||
|
.comment 0x0000000000000011 0x12 main.o
|
||||||
|
|
||||||
|
.note.gnu.avr.deviceinfo
|
||||||
|
0x0000000000000000 0x40
|
||||||
|
.note.gnu.avr.deviceinfo
|
||||||
|
0x0000000000000000 0x40 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
|
||||||
|
.note.gnu.build-id
|
||||||
|
*(.note.gnu.build-id)
|
||||||
|
|
||||||
|
.debug
|
||||||
|
*(.debug)
|
||||||
|
|
||||||
|
.line
|
||||||
|
*(.line)
|
||||||
|
|
||||||
|
.debug_srcinfo
|
||||||
|
*(.debug_srcinfo)
|
||||||
|
|
||||||
|
.debug_sfnames
|
||||||
|
*(.debug_sfnames)
|
||||||
|
|
||||||
|
.debug_aranges
|
||||||
|
*(.debug_aranges)
|
||||||
|
|
||||||
|
.debug_pubnames
|
||||||
|
*(.debug_pubnames)
|
||||||
|
|
||||||
|
.debug_info 0x0000000000000000 0x456
|
||||||
|
*(.debug_info .gnu.linkonce.wi.*)
|
||||||
|
.debug_info 0x0000000000000000 0x456 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
|
||||||
|
.debug_abbrev 0x0000000000000000 0x41b
|
||||||
|
*(.debug_abbrev)
|
||||||
|
.debug_abbrev 0x0000000000000000 0x41b /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
|
||||||
|
.debug_line 0x0000000000000000 0x1a
|
||||||
|
*(.debug_line .debug_line.* .debug_line_end)
|
||||||
|
.debug_line 0x0000000000000000 0x1a /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
|
||||||
|
.debug_frame
|
||||||
|
*(.debug_frame)
|
||||||
|
|
||||||
|
.debug_str 0x0000000000000000 0x17b
|
||||||
|
*(.debug_str)
|
||||||
|
.debug_str 0x0000000000000000 0x17b /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
|
|
||||||
|
.debug_loc
|
||||||
|
*(.debug_loc)
|
||||||
|
|
||||||
|
.debug_macinfo
|
||||||
|
*(.debug_macinfo)
|
||||||
|
|
||||||
|
.debug_weaknames
|
||||||
|
*(.debug_weaknames)
|
||||||
|
|
||||||
|
.debug_funcnames
|
||||||
|
*(.debug_funcnames)
|
||||||
|
|
||||||
|
.debug_typenames
|
||||||
|
*(.debug_typenames)
|
||||||
|
|
||||||
|
.debug_varnames
|
||||||
|
*(.debug_varnames)
|
||||||
|
|
||||||
|
.debug_pubtypes
|
||||||
|
*(.debug_pubtypes)
|
||||||
|
|
||||||
|
.debug_ranges
|
||||||
|
*(.debug_ranges)
|
||||||
|
|
||||||
|
.debug_macro
|
||||||
|
*(.debug_macro)
|
||||||
|
OUTPUT(sd-reader.out elf32-avr)
|
||||||
|
LOAD linker stubs
|
BIN
final_project/lcd_disp/sd-reader.out
Executable file
BIN
final_project/lcd_disp/sd-reader.out
Executable file
Binary file not shown.
18
final_project/sd_reader/.vscode/c_cpp_properties.json
vendored
Normal file
18
final_project/sd_reader/.vscode/c_cpp_properties.json
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Linux",
|
||||||
|
"intelliSenseMode": "gcc-x64",
|
||||||
|
"compilerPath": "/usr/lib/ccache/avr-gcc",
|
||||||
|
"cStandard": "c99",
|
||||||
|
"cppStandard": "c++17",
|
||||||
|
"compilerArgs": [
|
||||||
|
"-Wall", "-pedantic", "-mmcu=atmega328"
|
||||||
|
],
|
||||||
|
"defines": [
|
||||||
|
"F_CPU=16000000"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 4
|
||||||
|
}
|
@ -7,8 +7,8 @@ SOURCES := $(wildcard *.c)
|
|||||||
HEADERS := $(wildcard *.h)
|
HEADERS := $(wildcard *.h)
|
||||||
OBJECTS := $(patsubst %.c,%.o,$(SOURCES))
|
OBJECTS := $(patsubst %.c,%.o,$(SOURCES))
|
||||||
|
|
||||||
MCU := atmega168
|
MCU := atmega328
|
||||||
MCU_AVRDUDE := m168
|
MCU_AVRDUDE := m328
|
||||||
MCU_FREQ := 16000000UL
|
MCU_FREQ := 16000000UL
|
||||||
|
|
||||||
CC := avr-gcc
|
CC := avr-gcc
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#include "partition.h"
|
#include "partition.h"
|
||||||
#include "sd_raw.h"
|
#include "sd_raw.h"
|
||||||
#include "sd_raw_config.h"
|
#include "sd_raw_config.h"
|
||||||
#include "lcd.h"
|
|
||||||
|
|
||||||
#define DEBUG 1
|
#define DEBUG 1
|
||||||
|
|
||||||
@ -212,7 +211,7 @@ int main()
|
|||||||
lcd_init(LCD_DISP_ON);
|
lcd_init(LCD_DISP_ON);
|
||||||
|
|
||||||
/* we will just use ordinary idle mode */
|
/* we will just use ordinary idle mode */
|
||||||
set_sleep_mode(SLEEP_MODE_IDLE);
|
//set_sleep_mode(SLEEP_MODE_IDLE);
|
||||||
|
|
||||||
/* open first partition */
|
/* open first partition */
|
||||||
struct partition_struct* partition = partition_open(sd_raw_read,
|
struct partition_struct* partition = partition_open(sd_raw_read,
|
||||||
|
43
final_project/sd_reader/wav.h
Normal file
43
final_project/sd_reader/wav.h
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/** @brief Struct to contain chunk header information
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
uint32_t ckID; //! Chunk type
|
||||||
|
uint32_t cksize; //! Size of chunk in bytes
|
||||||
|
} ck_hdr_t;
|
||||||
|
|
||||||
|
/** @brief Struct to contain master WAV chunk info
|
||||||
|
*/
|
||||||
|
struct {
|
||||||
|
char WAVEID[4]; //! WAVE ID
|
||||||
|
} ck_master_t;
|
||||||
|
|
||||||
|
/** @brief Types of extension that a fmt type chunk can have
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
CK_FMT_STD = 0U,
|
||||||
|
CK_FMT_NOEXT,
|
||||||
|
CK_FMT_EXT,
|
||||||
|
} ck_fmt_ext_t;
|
||||||
|
|
||||||
|
/** @brief Struct to hold fmt chunk data
|
||||||
|
*/
|
||||||
|
struct {
|
||||||
|
struct data {
|
||||||
|
uint16_t wFormatTag; //! Type of data format.
|
||||||
|
uint16_t nChannels; //! Number of channels
|
||||||
|
uint32_t nSamplesPerSec; //! Sample rate
|
||||||
|
uint32_t nAvgBytesPerSec; //! Data rate
|
||||||
|
uint16_t nBlockAlign; //! Block size in bytes for data
|
||||||
|
uint16_t wBitsPerSample; //! Bits per sample
|
||||||
|
uint16_t cbSize; //! Size of fmt type extension. Only valid if chunk size is 18 or 40.
|
||||||
|
uint16_t wValidBitsPerSample; //! Number of valid bits per sample. Only valid if chunk size is 40
|
||||||
|
uint32_t dwChannelMask; //! Speaker position mask. Only valid if chunk size is 40
|
||||||
|
uint8_t[16] SubFormat; //! GUID for data format. Only vaid if chunk size is 40
|
||||||
|
};
|
||||||
|
|
||||||
|
ck_fmt_ext_t type;
|
||||||
|
} ck_fmt_t;
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user