Logic AND Gate Code Example
#include <avr/io.h>
void PORT0_init (void);
void CCL0_init(void);
void PORT0_init (void)
{
PORTC.DIR &= ~PIN0_bm;
PORTC.DIR &= ~PIN1_bm;
PORTC.DIR &= ~PIN2_bm;
PORTC.DIR |= PIN3_bm;
}
void CCL0_init(void)
{
CCL.LUT1CTRLB = CCL_INSEL0_IO_gc
| CCL_INSEL1_IO_gc;
CCL.LUT1CTRLC = CCL_INSEL2_IO_gc;
CCL.TRUTH1 = 0x80;
CCL.LUT1CTRLA = CCL_OUTEN_bm;
CCL.LUT1CTRLA |= CCL_ENABLE_bm;
CCL.CTRLA = CCL_ENABLE_bm;
}
int main(void)
{
PORT0_init();
CCL0_init();
while (1)
{
;
}
}
State Decoder Code Example
#include <avr/io.h>
void PORT0_init (void);
void CCL0_init(void);
void PORT0_init (void)
{
PORTA.DIR &= ~PIN0_bm;
PORTA.DIR &= ~PIN1_bm;
PORTC.DIR &= ~PIN0_bm;
PORTC.DIR &= ~PIN1_bm;
PORTC.DIR &= ~PIN2_bm;
PORTA.DIR |= PIN3_bm;
}
void CCL0_init(void)
{
CCL.LUT0CTRLB = CCL_INSEL0_IO_gc
| CCL_INSEL1_IO_gc;
CCL.LUT0CTRLC = CCL_INSEL2_LINK_gc;
CCL.LUT1CTRLB = CCL_INSEL0_IO_gc
| CCL_INSEL1_IO_gc;
CCL.LUT1CTRLC = CCL_INSEL2_IO_gc;
CCL.TRUTH0 = 0x40;
CCL.TRUTH1 = 0x20;
CCL.LUT0CTRLA = CCL_OUTEN_bm;
CCL.LUT0CTRLA |= CCL_ENABLE_bm;
CCL.LUT1CTRLA = CCL_ENABLE_bm;
CCL.CTRLA = CCL_ENABLE_bm;
}
int main(void)
{
PORT0_init();
CCL0_init();
while (1)
{
;
}
}
SR Latch Code Example
#include <avr/io.h>
void PORT0_init (void);
void CCL0_init(void);
void PORT0_init (void)
{
PORTA.DIR &= ~PIN1_bm;
PORTC.DIR &= ~PIN1_bm;
PORTA.DIR |= PIN3_bm;
}
void CCL0_init(void)
{
CCL.LUT0CTRLB = CCL_INSEL0_MASK_gc
| CCL_INSEL1_IO_gc;
CCL.LUT0CTRLC = CCL_INSEL2_MASK_gc;
CCL.LUT1CTRLB = CCL_INSEL0_MASK_gc
| CCL_INSEL1_IO_gc;
CCL.LUT1CTRLC = CCL_INSEL2_MASK_gc;
CCL.TRUTH0 = 0x00;
CCL.TRUTH1 = 0x00;
CCL.LUT0CTRLA = CCL_FILTSEL_FILTER_gc;
CCL.LUT1CTRLA = CCL_FILTSEL_FILTER_gc;
CCL.SEQCTRL0 = CCL_SEQSEL0_RS_gc;
CCL.LUT0CTRLA |= CCL_OUTEN_bm;
CCL.LUT0CTRLA |= CCL_ENABLE_bm;
CCL.LUT1CTRLA |= CCL_ENABLE_bm;
CCL.CTRLA = CCL_ENABLE_bm;
}
int main(void)
{
PORT0_init();
CCL0_init();
while (1)
{
;
}
}
Manchester Encoder Code
Example
#include <avr/io.h>
void PORT0_init (void);
void CCL0_init(void);
void SPI0_init(void);
void slaveSelect(void);
void slaveDeselect(void);
uint8_t SPI0_exchangeData(uint8_t data);
void SPI0_init(void)
{
SPI0.CTRLA = SPI_CLK2X_bm
| SPI_DORD_bm
| SPI_ENABLE_bm
| SPI_MASTER_bm
| SPI_PRESC_DIV16_gc;
}
uint8_t SPI0_exchangeData(uint8_t data)
{
SPI0.DATA = data;
while (!(SPI0.INTFLAGS & SPI_IF_bm))
{
;
}
return SPI0.DATA;
}
void PORT0_init (void)
{
PORTA.DIR |= PIN4_bm;
PORTA.DIR &= ~PIN5_bm;
PORTA.DIR |= PIN6_bm;
PORTA.DIR |= PIN3_bm;
}
void CCL0_init(void)
{
CCL.LUT0CTRLB = CCL_INSEL0_MASK_gc
| CCL_INSEL1_SPI0_gc;
CCL.LUT0CTRLC = CCL_INSEL2_SPI0_gc;
CCL.TRUTH0 = 0x14;
CCL.LUT0CTRLA = CCL_OUTEN_bm;
CCL.LUT0CTRLA |= CCL_ENABLE_bm;
CCL.CTRLA = CCL_ENABLE_bm;
}
int main(void)
{
PORT0_init();
SPI0_init();
CCL0_init();
while (1)
{
SPI0_exchangeData(0xA5);
}
}