diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e61546eb0fc7649248970a4d669b13e3ad4b0cc0 Binary files /dev/null and b/.DS_Store differ diff --git a/documentation/.gitkeep b/documentation/.gitkeep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/families/.DS_Store b/families/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1a549434637bf7f63f10684fe7bba2d3a1acf05b Binary files /dev/null and b/families/.DS_Store differ diff --git a/documentation/8e5_datasheet.pdf b/families/e5/8e5_datasheet.pdf similarity index 100% rename from documentation/8e5_datasheet.pdf rename to families/e5/8e5_datasheet.pdf diff --git a/families/e5/8e5_hello_world.c b/families/e5/8e5_hello_world.c new file mode 100644 index 0000000000000000000000000000000000000000..781e93d4d0a044081d599277c3d0b9fd084e0538 --- /dev/null +++ b/families/e5/8e5_hello_world.c @@ -0,0 +1,79 @@ +// +// xmega twi for as5510 linear magnetic encoder +// sec, 2016 + +#include "serial.h" +#include <avr/io.h> +#include <util/delay.h> +#include <avr/pgmspace.h> +#include <avr/interrupt.h> + +#define SLAVE_ADDRESS 0x56 +#define CPU_SPEED 32000000 + +USART_data_t USART_data; + +uint32_t value; //magnetic encoder reading +unsigned char Data_LSB, Data_MSB; //high byte and low byte of reading + +int main(void) { + // set up clock + OSC.CTRL = OSC_RC32MEN_bm; // enable 32MHz clock + while (!(OSC.STATUS & OSC_RC32MRDY_bm)); // wait for clock to be ready + CCP = CCP_IOREG_gc; // enable protected register change + CLK.CTRL = CLK_SCLKSEL_RC32M_gc; // switch to 32MHz clock + + //set up usart + PORTD.DIRSET = PIN3_bm; //TXD0 where DIRSET sets a pin as an output + PORTD.DIRCLR = PIN2_bm; //RXD0 where DIRCLR sets a pin as in input + USART_InterruptDriver_Initialize(&USART_data, &USARTD0, USART_DREINTLVL_LO_gc); + USART_Format_Set(USART_data.usart, USART_CHSIZE_8BIT_gc, + USART_PMODE_DISABLED_gc, 0); + USART_RxdInterruptLevel_Set(USART_data.usart, USART_RXCINTLVL_LO_gc); + USART_Baudrate_Set(&USARTD0, 123 , -4); //230400 baud with .08% error + USART_Rx_Enable(USART_data.usart); + USART_Tx_Enable(USART_data.usart); + //enable interrupts + PMIC.CTRL |= PMIC_LOLVLEX_bm; + + //set up LED as output + PORTC.DIRSET = PIN0_bm; + //setting an internal pull up resistor on pin6 for button + PORTC.PIN4CTRL = PORT_OPC_PULLUP_gc; + + sei(); //set global interrupt enable + + + while(1){ + PORTC.OUTSET = PIN0_bm; + _delay_ms(100); + PORTC.OUTCLR = PIN0_bm; + _delay_ms(100); + + if(PORTC.IN & PIN4_bm){ + usart_send_byte(&USART_data,121); + usart_send_byte(&USART_data,101); + usart_send_byte(&USART_data,115); + usart_send_byte(&USART_data,10); + usart_send_byte(&USART_data,10); // translate byte using an ASCII table + } + else{ + usart_send_byte(&USART_data,110); + usart_send_byte(&USART_data,111); + usart_send_byte(&USART_data,10); + usart_send_byte(&USART_data,10); // translate byte using an ASCII table + } + } +} + +ISR(USARTD0_RXC_vect){USART_RXComplete(&USART_data);} +ISR(USARTD0_DRE_vect){USART_DataRegEmpty(&USART_data);} + + + + + + + + + diff --git a/families/e5/8e5_hello_world_layout.png b/families/e5/8e5_hello_world_layout.png new file mode 100644 index 0000000000000000000000000000000000000000..64f66f0c4fd79da1e90d254039022653a58d6698 Binary files /dev/null and b/families/e5/8e5_hello_world_layout.png differ diff --git a/families/e5/8e5_hello_world_outline.png b/families/e5/8e5_hello_world_outline.png new file mode 100644 index 0000000000000000000000000000000000000000..a271a939a2ca963340bc57e7c887404122646ac1 Binary files /dev/null and b/families/e5/8e5_hello_world_outline.png differ diff --git a/families/e5/8e5_hello_world_traces.png b/families/e5/8e5_hello_world_traces.png new file mode 100644 index 0000000000000000000000000000000000000000..2bbc4279a525cfcd97c9e46b53292678c30d3bdc Binary files /dev/null and b/families/e5/8e5_hello_world_traces.png differ diff --git a/documentation/8e5_pinout.jpg b/families/e5/8e5_pinout.jpg similarity index 100% rename from documentation/8e5_pinout.jpg rename to families/e5/8e5_pinout.jpg diff --git a/families/e5/8e5_usart_hello_world.make b/families/e5/8e5_usart_hello_world.make new file mode 100644 index 0000000000000000000000000000000000000000..feb551613e40e39bc468c03d4d44439f9cae8b9f --- /dev/null +++ b/families/e5/8e5_usart_hello_world.make @@ -0,0 +1,19 @@ +PROJECT=8e5_usart +SOURCES=$(PROJECT).c +MMCU=atxmega8e5 +F_CPU = 32000000 +TARGET = x8e5 +PROGRAMMER= atmelice_pdi + +CFLAGS=-mmcu=$(MMCU) -Wall -Os -DF_CPU=$(F_CPU) + +$(PROJECT).hex: $(PROJECT).out + avr-objcopy -O ihex $(PROJECT).out $(PROJECT).c.hex;\ + avr-size --mcu=$(MMCU) --format=avr $(PROJECT).out + +$(PROJECT).out: $(SOURCES) + avr-gcc $(CFLAGS) -I./ -o $(PROJECT).out $(SOURCES) + +program: $(PROJECT).hex + avrdude -p $(TARGET) -c $(PROGRAMMER) -U flash:w:$(PROJECT).c.hex + diff --git a/README.md b/families/e5/README.md similarity index 86% rename from README.md rename to families/e5/README.md index e80b64d3fc81e73cea16e7e26db3cf7dd4798af6..a2b865f39d46bb7c021018a56b91ca4e87835959 100644 --- a/README.md +++ b/families/e5/README.md @@ -6,7 +6,7 @@ [Manual](http://www.atmel.com/images/Atmel-42005-8-and-16-bit-AVR-Microcontrollers-XMEGA-E_Manual.pdf) -[Data sheet](documentation/8e5_datasheet.pdf) +[Data sheet](8e5_datasheet.pdf) Not sure whether this image should be here or in a separate folder. diff --git a/families/e5/serial.h b/families/e5/serial.h new file mode 100644 index 0000000000000000000000000000000000000000..9e81daa62c8cd74b358932aeae3b3308fb3c5727 --- /dev/null +++ b/families/e5/serial.h @@ -0,0 +1,226 @@ +#include <avr/io.h> +#include <util/delay.h> +#include <avr/pgmspace.h> + +#define output(directions,pin) (directions |= pin) // set port direction for output +#define set(port,pin) (port |= pin) // set port pin +#define clear(port,pin) (port &= (~pin)) // clear port pin +#define pin_test(pins,pin) (pins & pin) // test for port pin +#define bit_test(byte,bit) (byte & (1 << bit)) // test for bit set + +/* USART buffer defines. */ +/* \brief Receive buffer size: 2,4,8,16,32,64,128 or 256 bytes. */ +#define USART_RX_BUFFER_SIZE 128 +/* \brief Transmit buffer size: 2,4,8,16,32,64,128 or 256 bytes */ +#define USART_TX_BUFFER_SIZE 128 +/* \brief Receive buffer mask. */ +#define USART_RX_BUFFER_MASK ( USART_RX_BUFFER_SIZE - 1 ) +/* \brief Transmit buffer mask. */ +#define USART_TX_BUFFER_MASK ( USART_TX_BUFFER_SIZE - 1 ) + +#if ( USART_RX_BUFFER_SIZE & USART_RX_BUFFER_MASK ) +#error RX buffer size is not a power of 2 +#endif +#if ( USART_TX_BUFFER_SIZE & USART_TX_BUFFER_MASK ) +#error TX buffer size is not a power of 2 +#endif + +/* \brief USART transmit and receive ring buffer. */ +typedef struct USART_Buffer +{ + /* \brief Receive buffer. */ + volatile uint8_t RX[USART_RX_BUFFER_SIZE]; + /* \brief Transmit buffer. */ + volatile uint8_t TX[USART_TX_BUFFER_SIZE]; + /* \brief Receive buffer head. */ + volatile uint8_t RX_Head; + /* \brief Receive buffer tail. */ + volatile uint8_t RX_Tail; + /* \brief Transmit buffer head. */ + volatile uint8_t TX_Head; + /* \brief Transmit buffer tail. */ + volatile uint8_t TX_Tail; +} USART_Buffer_t; + + +/*! \brief Struct used when interrupt driven driver is used. +* +* Struct containing pointer to a usart, a buffer and a location to store Data +* register interrupt level temporary. +*/ +typedef struct Usart_and_buffer +{ + /* \brief Pointer to USART module to use. */ + USART_t * usart; + /* \brief Data register empty interrupt level. */ + USART_DREINTLVL_t dreIntLevel; + /* \brief Data buffer. */ + USART_Buffer_t buffer; +} USART_data_t; + +#define USART_RxdInterruptLevel_Set(_usart, _rxdIntLevel) \ + ((_usart)->CTRLA = ((_usart)->CTRLA & ~USART_RXCINTLVL_gm) | _rxdIntLevel) +#define USART_Format_Set(_usart, _charSize, _parityMode, _twoStopBits) \ + (_usart)->CTRLC = (uint8_t) _charSize | _parityMode | \ + (_twoStopBits ? USART_SBMODE_bm : 0) +#define USART_Baudrate_Set(_usart, _bselValue, _bScaleFactor) \ + (_usart)->BAUDCTRLA =(uint8_t)_bselValue; \ + (_usart)->BAUDCTRLB =(_bScaleFactor << USART_BSCALE0_bp)|(_bselValue >> 8) +#define USART_Rx_Enable(_usart) ((_usart)->CTRLB |= USART_RXEN_bm) +#define USART_Rx_Disable(_usart) ((_usart)->CTRLB &= ~USART_RXEN_bm) +#define USART_Tx_Enable(_usart) ((_usart)->CTRLB |= USART_TXEN_bm) +#define USART_Tx_Disable(_usart) ((_usart)->CTRLB &= ~USART_TXEN_bm) + + + +_Bool USART_TXBuffer_FreeSpace(USART_data_t * usart_data) +{ + /* Make copies to make sure that volatile access is specified. */ + uint8_t tempHead = (usart_data->buffer.TX_Head + 1) & USART_TX_BUFFER_MASK; + uint8_t tempTail = usart_data->buffer.TX_Tail; + + /* There are data left in the buffer unless Head and Tail are equal. */ + return (tempHead != tempTail); +} +_Bool USART_TXBuffer_PutByte(USART_data_t * usart_data, uint8_t data) +{ + uint8_t tempCTRLA; + uint8_t tempTX_Head; + _Bool TXBuffer_FreeSpace; + USART_Buffer_t * TXbufPtr; + + TXbufPtr = &usart_data->buffer; + TXBuffer_FreeSpace = USART_TXBuffer_FreeSpace(usart_data); + + + if(TXBuffer_FreeSpace) + { + tempTX_Head = TXbufPtr->TX_Head; + TXbufPtr->TX[tempTX_Head]= data; + /* Advance buffer head. */ + TXbufPtr->TX_Head = (tempTX_Head + 1) & USART_TX_BUFFER_MASK; + + /* Enable DRE interrupt. */ + tempCTRLA = usart_data->usart->CTRLA; + tempCTRLA = (tempCTRLA & ~USART_DREINTLVL_gm) | usart_data->dreIntLevel; + usart_data->usart->CTRLA = tempCTRLA; + } + return TXBuffer_FreeSpace; +} +_Bool USART_RXBufferData_Available(USART_data_t * usart_data) +{ + /* Make copies to make sure that volatile access is specified. */ + uint8_t tempHead = usart_data->buffer.RX_Head; + uint8_t tempTail = usart_data->buffer.RX_Tail; + + /* There are data left in the buffer unless Head and Tail are equal. */ + return (tempHead != tempTail); +} +uint8_t USART_RXBuffer_GetByte(USART_data_t * usart_data) +{ + USART_Buffer_t * bufPtr; + uint8_t ans; + bufPtr = &usart_data->buffer; + ans = (bufPtr->RX[bufPtr->RX_Tail]); + + /* Advance buffer tail. */ + bufPtr->RX_Tail = (bufPtr->RX_Tail + 1) & USART_RX_BUFFER_MASK; + return ans; +} +_Bool USART_RXComplete(USART_data_t * usart_data) +{ + USART_Buffer_t * bufPtr; + _Bool ans; + + bufPtr = &usart_data->buffer; + /* Advance buffer head. */ + uint8_t tempRX_Head = (bufPtr->RX_Head + 1) & USART_RX_BUFFER_MASK; + + /* Check for overflow. */ + uint8_t tempRX_Tail = bufPtr->RX_Tail; + uint8_t data = usart_data->usart->DATA; + + if (tempRX_Head == tempRX_Tail) { + ans = 0; + }else{ + ans = 1; + usart_data->buffer.RX[usart_data->buffer.RX_Head] = data; + usart_data->buffer.RX_Head = tempRX_Head; + } + return ans; +} +void USART_DataRegEmpty(USART_data_t * usart_data) +{ + USART_Buffer_t * bufPtr; + bufPtr = &usart_data->buffer; + + /* Check if all data is transmitted. */ + uint8_t tempTX_Tail = usart_data->buffer.TX_Tail; + if (bufPtr->TX_Head == tempTX_Tail){ + /* Disable DRE interrupts. */ + uint8_t tempCTRLA = usart_data->usart->CTRLA; + tempCTRLA = (tempCTRLA & ~USART_DREINTLVL_gm) | USART_DREINTLVL_OFF_gc; + usart_data->usart->CTRLA = tempCTRLA; + + }else{ + /* Start transmitting. */ + uint8_t data = bufPtr->TX[usart_data->buffer.TX_Tail]; + usart_data->usart->DATA = data; + + /* Advance buffer tail. */ + bufPtr->TX_Tail = (bufPtr->TX_Tail + 1) & USART_TX_BUFFER_MASK; + } +} +void USART_InterruptDriver_Initialize(USART_data_t * usart_data, + USART_t * usart, + USART_DREINTLVL_t dreIntLevel) +{ + usart_data->usart = usart; + usart_data->dreIntLevel = dreIntLevel; + + usart_data->buffer.RX_Tail = 0; + usart_data->buffer.RX_Head = 0; + usart_data->buffer.TX_Tail = 0; + usart_data->buffer.TX_Head = 0; +} +void USART_InterruptDriver_DreInterruptLevel_Set(USART_data_t * usart_data, + USART_DREINTLVL_t dreIntLevel) +{ + usart_data->dreIntLevel = dreIntLevel; +} + +void usart_send_byte(USART_data_t * usart_data, char msg){ + while(!USART_TXBuffer_FreeSpace(usart_data)){} + USART_TXBuffer_PutByte(usart_data,msg); +} +void usart_send_uint32(USART_data_t * usart_data, uint32_t n){ + unsigned char * nn = (unsigned char *)&n; + usart_send_byte(usart_data, nn[0] ); + usart_send_byte(usart_data, nn[1] ); + usart_send_byte(usart_data, nn[2] ); + usart_send_byte(usart_data, nn[3] ); +} +void usart_send_int32(USART_data_t * usart_data, int32_t n){ + unsigned char * nn = ( unsigned char *)&n; + usart_send_byte(usart_data, nn[0] ); + usart_send_byte(usart_data, nn[1] ); + usart_send_byte(usart_data, nn[2] ); + usart_send_byte(usart_data, nn[3] ); +} +uint32_t parse_uint32(char* b){return *(uint32_t *) b;} +int32_t parse_int32(char* b){return *(int32_t *) b;} +uint16_t parse_uint16(char* b){return *(uint16_t *) b;} + + +/* +void usart_write_buffer(char* buffer){ + //write \n terminated buffer over usart + int j=0; + do{ + usart_send_byte( buffer[j] ); + j++; + } while( j < PACKET_SIZE); + //} while( buffer[j-1] != 10); +} +*/ + diff --git a/adc/adc.8E5.board.jpg b/functionality/adc/adc.8E5.board.jpg similarity index 100% rename from adc/adc.8E5.board.jpg rename to functionality/adc/adc.8E5.board.jpg diff --git a/adc/adc.8E5.c b/functionality/adc/adc.8E5.c similarity index 100% rename from adc/adc.8E5.c rename to functionality/adc/adc.8E5.c diff --git a/adc/adc.8E5.interior.png b/functionality/adc/adc.8E5.interior.png similarity index 100% rename from adc/adc.8E5.interior.png rename to functionality/adc/adc.8E5.interior.png diff --git a/adc/adc.8E5.layout.png b/functionality/adc/adc.8E5.layout.png similarity index 100% rename from adc/adc.8E5.layout.png rename to functionality/adc/adc.8E5.layout.png diff --git a/adc/adc.8E5.make b/functionality/adc/adc.8E5.make similarity index 100% rename from adc/adc.8E5.make rename to functionality/adc/adc.8E5.make diff --git a/adc/adc.8E5.traces.png b/functionality/adc/adc.8E5.traces.png similarity index 100% rename from adc/adc.8E5.traces.png rename to functionality/adc/adc.8E5.traces.png diff --git a/adc/adc.h b/functionality/adc/adc.h similarity index 100% rename from adc/adc.h rename to functionality/adc/adc.h diff --git a/adc/load-cell-small.mp4 b/functionality/adc/load-cell-small.mp4 similarity index 100% rename from adc/load-cell-small.mp4 rename to functionality/adc/load-cell-small.mp4 diff --git a/adc/serial.h b/functionality/adc/serial.h similarity index 100% rename from adc/serial.h rename to functionality/adc/serial.h diff --git a/dac/hello.8E5.dac.c b/functionality/dac/hello.8E5.dac.c similarity index 100% rename from dac/hello.8E5.dac.c rename to functionality/dac/hello.8E5.dac.c diff --git a/dac/hello.8E5.dac.make b/functionality/dac/hello.8E5.dac.make similarity index 100% rename from dac/hello.8E5.dac.make rename to functionality/dac/hello.8E5.dac.make diff --git a/dac/make_lookup.py b/functionality/dac/make_lookup.py similarity index 100% rename from dac/make_lookup.py rename to functionality/dac/make_lookup.py diff --git a/dac/sine.png b/functionality/dac/sine.png similarity index 100% rename from dac/sine.png rename to functionality/dac/sine.png diff --git a/dac/xmega-8e5-dac-board.jpg b/functionality/dac/xmega-8e5-dac-board.jpg similarity index 100% rename from dac/xmega-8e5-dac-board.jpg rename to functionality/dac/xmega-8e5-dac-board.jpg diff --git a/dac/xmega-8e5-dac-layout.png b/functionality/dac/xmega-8e5-dac-layout.png similarity index 100% rename from dac/xmega-8e5-dac-layout.png rename to functionality/dac/xmega-8e5-dac-layout.png diff --git a/dac/xmega-8e5-dac-outline.png b/functionality/dac/xmega-8e5-dac-outline.png similarity index 100% rename from dac/xmega-8e5-dac-outline.png rename to functionality/dac/xmega-8e5-dac-outline.png diff --git a/dac/xmega-8e5-dac-traces.png b/functionality/dac/xmega-8e5-dac-traces.png similarity index 100% rename from dac/xmega-8e5-dac-traces.png rename to functionality/dac/xmega-8e5-dac-traces.png diff --git a/i2c/hall-encoder-interior.png b/functionality/i2c/hall-encoder-interior.png similarity index 100% rename from i2c/hall-encoder-interior.png rename to functionality/i2c/hall-encoder-interior.png diff --git a/i2c/hall-encoder-layout.png b/functionality/i2c/hall-encoder-layout.png similarity index 100% rename from i2c/hall-encoder-layout.png rename to functionality/i2c/hall-encoder-layout.png diff --git a/i2c/hall-encoder-traces.png b/functionality/i2c/hall-encoder-traces.png similarity index 100% rename from i2c/hall-encoder-traces.png rename to functionality/i2c/hall-encoder-traces.png diff --git a/i2c/hall-encoder-wj.png b/functionality/i2c/hall-encoder-wj.png similarity index 100% rename from i2c/hall-encoder-wj.png rename to functionality/i2c/hall-encoder-wj.png diff --git a/i2c/hall-encoder.c b/functionality/i2c/hall-encoder.c similarity index 100% rename from i2c/hall-encoder.c rename to functionality/i2c/hall-encoder.c diff --git a/i2c/hall-encoder.ko b/functionality/i2c/hall-encoder.ko similarity index 100% rename from i2c/hall-encoder.ko rename to functionality/i2c/hall-encoder.ko diff --git a/i2c/hall-encoder.make b/functionality/i2c/hall-encoder.make similarity index 100% rename from i2c/hall-encoder.make rename to functionality/i2c/hall-encoder.make diff --git a/i2c/load.py b/functionality/i2c/load.py similarity index 100% rename from i2c/load.py rename to functionality/i2c/load.py diff --git a/i2c/loadcell-reading-v-force.png b/functionality/i2c/loadcell-reading-v-force.png similarity index 100% rename from i2c/loadcell-reading-v-force.png rename to functionality/i2c/loadcell-reading-v-force.png diff --git a/i2c/serial.h b/functionality/i2c/serial.h similarity index 100% rename from i2c/serial.h rename to functionality/i2c/serial.h diff --git a/i2c/testing.jpg b/functionality/i2c/testing.jpg similarity index 100% rename from i2c/testing.jpg rename to functionality/i2c/testing.jpg diff --git a/qdec/hello.16a4u.qdec.c b/functionality/qdec/hello.16a4u.qdec.c similarity index 100% rename from qdec/hello.16a4u.qdec.c rename to functionality/qdec/hello.16a4u.qdec.c diff --git a/qdec/hello.16a4u.qdec.make b/functionality/qdec/hello.16a4u.qdec.make similarity index 100% rename from qdec/hello.16a4u.qdec.make rename to functionality/qdec/hello.16a4u.qdec.make diff --git a/qdec/qdec.mp4 b/functionality/qdec/qdec.mp4 similarity index 100% rename from qdec/qdec.mp4 rename to functionality/qdec/qdec.mp4 diff --git a/qdec/serial.h b/functionality/qdec/serial.h similarity index 100% rename from qdec/serial.h rename to functionality/qdec/serial.h diff --git a/qdec/xmega-16a4u-qdec-board.jpg b/functionality/qdec/xmega-16a4u-qdec-board.jpg similarity index 100% rename from qdec/xmega-16a4u-qdec-board.jpg rename to functionality/qdec/xmega-16a4u-qdec-board.jpg diff --git a/qdec/xmega-16a4u-qdec-interior.png b/functionality/qdec/xmega-16a4u-qdec-interior.png similarity index 100% rename from qdec/xmega-16a4u-qdec-interior.png rename to functionality/qdec/xmega-16a4u-qdec-interior.png diff --git a/qdec/xmega-16a4u-qdec-layout.png b/functionality/qdec/xmega-16a4u-qdec-layout.png similarity index 100% rename from qdec/xmega-16a4u-qdec-layout.png rename to functionality/qdec/xmega-16a4u-qdec-layout.png diff --git a/qdec/xmega-16a4u-qdec-traces.png b/functionality/qdec/xmega-16a4u-qdec-traces.png similarity index 100% rename from qdec/xmega-16a4u-qdec-traces.png rename to functionality/qdec/xmega-16a4u-qdec-traces.png diff --git a/usart/README.md b/functionality/usart/README.md similarity index 100% rename from usart/README.md rename to functionality/usart/README.md diff --git a/usart/serial.h b/functionality/usart/serial.h similarity index 100% rename from usart/serial.h rename to functionality/usart/serial.h diff --git a/usart/usart.32a4u.c b/functionality/usart/usart.32a4u.c similarity index 100% rename from usart/usart.32a4u.c rename to functionality/usart/usart.32a4u.c diff --git a/usart/usart.32a4u.interior.png b/functionality/usart/usart.32a4u.interior.png similarity index 100% rename from usart/usart.32a4u.interior.png rename to functionality/usart/usart.32a4u.interior.png diff --git a/usart/usart.32a4u.ko b/functionality/usart/usart.32a4u.ko similarity index 100% rename from usart/usart.32a4u.ko rename to functionality/usart/usart.32a4u.ko diff --git a/usart/usart.32a4u.layout.png b/functionality/usart/usart.32a4u.layout.png similarity index 100% rename from usart/usart.32a4u.layout.png rename to functionality/usart/usart.32a4u.layout.png diff --git a/usart/usart.32a4u.make b/functionality/usart/usart.32a4u.make similarity index 100% rename from usart/usart.32a4u.make rename to functionality/usart/usart.32a4u.make diff --git a/usart/usart.32a4u.traces.png b/functionality/usart/usart.32a4u.traces.png similarity index 100% rename from usart/usart.32a4u.traces.png rename to functionality/usart/usart.32a4u.traces.png diff --git a/usart/xmega_usart_app_note.pdf b/functionality/usart/xmega_usart_app_note.pdf similarity index 100% rename from usart/xmega_usart_app_note.pdf rename to functionality/usart/xmega_usart_app_note.pdf diff --git a/xcl/.png b/functionality/xcl/.png similarity index 100% rename from xcl/.png rename to functionality/xcl/.png diff --git a/xcl/TEK00025.PNG b/functionality/xcl/TEK00025.PNG similarity index 100% rename from xcl/TEK00025.PNG rename to functionality/xcl/TEK00025.PNG diff --git a/xcl/TEK00026.PNG b/functionality/xcl/TEK00026.PNG similarity index 100% rename from xcl/TEK00026.PNG rename to functionality/xcl/TEK00026.PNG diff --git a/xcl/xcl.8E5.c.hex b/functionality/xcl/xcl.8E5.c.hex similarity index 100% rename from xcl/xcl.8E5.c.hex rename to functionality/xcl/xcl.8E5.c.hex diff --git a/xcl/xcl.8e5.c b/functionality/xcl/xcl.8e5.c similarity index 100% rename from xcl/xcl.8e5.c rename to functionality/xcl/xcl.8e5.c diff --git a/xcl/xcl.8e5.interior.png b/functionality/xcl/xcl.8e5.interior.png similarity index 100% rename from xcl/xcl.8e5.interior.png rename to functionality/xcl/xcl.8e5.interior.png diff --git a/xcl/xcl.8e5.ko b/functionality/xcl/xcl.8e5.ko similarity index 100% rename from xcl/xcl.8e5.ko rename to functionality/xcl/xcl.8e5.ko diff --git a/xcl/xcl.8e5.layout.png b/functionality/xcl/xcl.8e5.layout.png similarity index 100% rename from xcl/xcl.8e5.layout.png rename to functionality/xcl/xcl.8e5.layout.png diff --git a/xcl/xcl.8e5.make b/functionality/xcl/xcl.8e5.make similarity index 100% rename from xcl/xcl.8e5.make rename to functionality/xcl/xcl.8e5.make diff --git a/xcl/xcl.8e5.scope.png b/functionality/xcl/xcl.8e5.scope.png similarity index 100% rename from xcl/xcl.8e5.scope.png rename to functionality/xcl/xcl.8e5.scope.png diff --git a/xcl/xcl.8e5.traces.png b/functionality/xcl/xcl.8e5.traces.png similarity index 100% rename from xcl/xcl.8e5.traces.png rename to functionality/xcl/xcl.8e5.traces.png diff --git a/index.html b/index.html index d05ed0b6c94178f2cc98e5cf484e0d7e4cb26473..4483c2a7457bc0399e00a1aa326c87c1be27875e 100644 --- a/index.html +++ b/index.html @@ -1,5 +1,7 @@ <html> -<head></head> +<head> + <link rel="stylesheet" href="https://copplestone.pages.cba.mit.edu/styling/stylesheet.css"> +</head> <body> <h1>XMega Learning</h1> @@ -30,77 +32,77 @@ <h3>DAC</h3> <ul> - <li><a href='dac/sine.png'>Sine Wave</a></li> - <li><a href='dac/hello.8E5.dac.c'>hello.8E5.dac.c</a></li> - <li><a href='dac/hello.8E5.dac.make'>hello.8E5.dac.make</a></li> - <li><a href='dac/make_lookup.py'>make_lookup.py</a></li> - <li><a href='dac/xmega-8e5-dac-layout.png'>Layout</a></li> - <li><a href='dac/xmega-8e5-dac-traces.png'>Traces</a></li> - <li><a href='dac/xmega-8e5-dac-outline.png'>Outline</a></li> - <li><a href='dac/xmega-8e5-dac-board.jpg'>Board</a></li> + <li><a href='functionality/dac/sine.png'>Sine Wave</a></li> + <li><a href='functionality/dac/hello.8E5.dac.c'>hello.8E5.dac.c</a></li> + <li><a href='functionality/dac/hello.8E5.dac.make'>hello.8E5.dac.make</a></li> + <li><a href='functionality/dac/make_lookup.py'>make_lookup.py</a></li> + <li><a href='functionality/dac/xmega-8e5-dac-layout.png'>Layout</a></li> + <li><a href='functionality/dac/xmega-8e5-dac-traces.png'>Traces</a></li> + <li><a href='functionality/dac/xmega-8e5-dac-outline.png'>Outline</a></li> + <li><a href='functionality/dac/xmega-8e5-dac-board.jpg'>Board</a></li> </ul> <h3>Quadrature Decoding with Timer/Counters</h3> <ul> - <li><a href='qdec/qdec.mp4'>Operation</a></li> - <li><a href='qdec/hello.16a4u.qdec.c'>hello.16a4u.qdec.c</a></li> - <li><a href='qdec/hello.16a4u.qdec.make'>hello.16a4u.qdec.make</a></li> - <li><a href='qdec/serial.h'>serial.h</a></li> - <li><a href='qdec/xmega-16a4u-qdec-layout.png'>Layout</a></li> - <li><a href='qdec/xmega-16a4u-qdec-traces.png'>Traces</a></li> - <li><a href='qdec/xmega-16a4u-qdec-interior.png'>Outline</a></li> - <li><a href='qdec/xmega-16a4u-qdec-board.jpg'>Board</a></li> + <li><a href='functionality/qdec/qdec.mp4'>Operation</a></li> + <li><a href='functionality/qdec/hello.16a4u.qdec.c'>hello.16a4u.qdec.c</a></li> + <li><a href='functionality/qdec/hello.16a4u.qdec.make'>hello.16a4u.qdec.make</a></li> + <li><a href='functionality/qdec/serial.h'>serial.h</a></li> + <li><a href='functionality/qdec/xmega-16a4u-qdec-layout.png'>Layout</a></li> + <li><a href='functionality/qdec/xmega-16a4u-qdec-traces.png'>Traces</a></li> + <li><a href='functionality/qdec/xmega-16a4u-qdec-interior.png'>Outline</a></li> + <li><a href='functionality/qdec/xmega-16a4u-qdec-board.jpg'>Board</a></li> </ul> <h3>ADC</h3> <ul> - <li><a href='adc/adc.8E5.c'>adc.8E5.c</a></li> - <li><a href='adc/adc.8E5.make'>adc.8E5.make</a></li> - <li><a href='adc/serial.h'>serial.h</a></li> - <li><a href='adc/adc.h'>adc.h</a></li> - <li><a href='adc/adc.8E5.layout.png'>Layout</a></li> - <li><a href='adc/adc.8E5.traces.png'>Traces</a></li> - <li><a href='adc/adc.8E5.interior.png'>Outline</a></li> - <li><a href='adc/adc.8E5.board.jpg'>Board</a></li> + <li><a href='functionality/adc/adc.8E5.c'>adc.8E5.c</a></li> + <li><a href='functionality/adc/adc.8E5.make'>adc.8E5.make</a></li> + <li><a href='functionality/adc/serial.h'>serial.h</a></li> + <li><a href='functionality/adc/adc.h'>adc.h</a></li> + <li><a href='functionality/adc/adc.8E5.layout.png'>Layout</a></li> + <li><a href='functionality/adc/adc.8E5.traces.png'>Traces</a></li> + <li><a href='functionality/adc/adc.8E5.interior.png'>Outline</a></li> + <li><a href='functionality/adc/adc.8E5.board.jpg'>Board</a></li> <li><a href='http://www.tag-connect.com/'>Tag Connect Programming connector</a></li> - <li><a href='adc/load-cell-small.mp4'>Force measurement using onboard 64x gain.</a></li> + <li><a href='functionality/adc/load-cell-small.mp4'>Force measurement using onboard 64x gain.</a></li> <li><a href='http://www.phidgets.com/products.php?category=34&product_id=3133_0'>$7 load cell</a></li> </ul> <h3>USART</h3> <ul> - <li><a href='usart/usart.32a4u.c'>usart.32a4u.c</a></li> - <li><a href='usart/usart.32a4u.make'>usart.32a4u.make</a></li> - <li><a href='usart/serial.h'>serial.h</a></li> - <li><a href='usart/usart.32a4u.layout.png'>Layout</a></li> - <li><a href='usart/usart.32a4u.traces.png'>Traces</a></li> - <li><a href='usart/usart.32a4u.interior.png'>Outline</a></li> + <li><a href='functionality/usart/usart.32a4u.c'>usart.32a4u.c</a></li> + <li><a href='functionality/usart/usart.32a4u.make'>usart.32a4u.make</a></li> + <li><a href='functionality/usart/serial.h'>serial.h</a></li> + <li><a href='functionality/usart/usart.32a4u.layout.png'>Layout</a></li> + <li><a href='functionality/usart/usart.32a4u.traces.png'>Traces</a></li> + <li><a href='functionality/usart/usart.32a4u.interior.png'>Outline</a></li> <li><a href='http://www.tag-connect.com/'>Tag Connect Programming connector</a></li> </ul> <h3>XCL</h3> <ul> - <li><a href='xcl/xcl.8e5.c'>xcl.8e5.c</a></li> - <li><a href='xcl/xcl.8e5.make'>xcl.8e5.make</a></li> - <li><a href='xcl/xcl.8e5.layout.png'>Layout</a></li> - <li><a href='xcl/xcl.8e5.traces.png'>Traces</a></li> - <li><a href='xcl/xcl.8e5.interior.png'>Outline</a></li> - <li><a href='xcl/xcl.8e5.scope.png'>ANDing square waves (without power supplied to VCC!)</a></li> + <li><a href='functionality/xcl/xcl.8e5.c'>xcl.8e5.c</a></li> + <li><a href='functionality/xcl/xcl.8e5.make'>xcl.8e5.make</a></li> + <li><a href='functionality/xcl/xcl.8e5.layout.png'>Layout</a></li> + <li><a href='functionality/xcl/xcl.8e5.traces.png'>Traces</a></li> + <li><a href='functionality/xcl/xcl.8e5.interior.png'>Outline</a></li> + <li><a href='functionality/xcl/xcl.8e5.scope.png'>ANDing square waves (without power supplied to VCC!)</a></li> </ul> <h3>I2C</h3> <ul> - <li><a href='i2c/hall-encoder.c'>hall-encoder.c</a></li> - <li><a href='i2c/serial.h'>serial.h</a></li> - <li><a href='i2c/hall-encoder.make'>hall-encoder.make</a></li> - <li><a href='i2c/hall-encoder-layout.png'>hall-encoder-layout.png</a></li> - <li><a href='i2c/hall-encoder-traces.png'>hall-encoder-traces.png</a></li> - <li><a href='i2c/hall-encoder-interior.png'>hall-encoder-interior.png</a></li> - <li><a href='i2c/load.py'>load.py</a></li> - <li><a href='i2c/testing.jpg'>Testing</a></li> - <li><a href='i2c/loadcell-reading-v-force.png'>Results</a></li> + <li><a href='functionality/i2c/hall-encoder.c'>hall-encoder.c</a></li> + <li><a href='functionality/i2c/serial.h'>serial.h</a></li> + <li><a href='functionality/i2c/hall-encoder.make'>hall-encoder.make</a></li> + <li><a href='functionality/i2c/hall-encoder-layout.png'>hall-encoder-layout.png</a></li> + <li><a href='functionality/i2c/hall-encoder-traces.png'>hall-encoder-traces.png</a></li> + <li><a href='functionality/i2c/hall-encoder-interior.png'>hall-encoder-interior.png</a></li> + <li><a href='functionality/i2c/load.py'>load.py</a></li> + <li><a href='functionality/i2c/testing.jpg'>Testing</a></li> + <li><a href='functionality/i2c/loadcell-reading-v-force.png'>Results</a></li> </ul>