ATxmega Core
Loading...
Searching...
No Matches
cpu.h File Reference
#include <avr/io.h>
#include <avr/interrupt.h>
Include dependency graph for cpu.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define bool   uint8_t
 
#define true   1
 
#define false   0
 
#define INT_LEVEL_OFF   0
 
#define INT_LEVEL_LOW   1
 
#define INT_LEVEL_MED   2
 
#define INT_LEVEL_HIGH   3
 
#define PRESCALER_CPU_1   CLK_PSADIV_1_gc
 
#define PRESCALER_CPU_2   CLK_PSADIV_2_gc
 
#define PRESCALER_CPU_4   CLK_PSADIV_4_gc
 
#define PRESCALER_CPU_8   CLK_PSADIV_8_gc
 
#define PRESCALER_CPU_16   CLK_PSADIV_16_gc
 
#define PRESCALER_CPU_32   CLK_PSADIV_32_gc
 
#define PRESCALER_CPU_64   CLK_PSADIV_64_gc
 
#define PRESCALER_CPU_128   CLK_PSADIV_128_gc
 
#define PRESCALER_CPU_256   CLK_PSADIV_256_gc
 
#define PRESCALER_CPU_512   CLK_PSADIV_512_gc
 
#define OUT_PORT_CLK_PORTC   0
 
#define OUT_PORT_CLK_PORTD   1
 
#define PER_WDT_8ms   WDT_PER_8CLK_gc
 
#define PER_WDT_16ms   WDT_PER_16CLK_gc
 
#define PER_WDT_32ms   WDT_PER_32CLK_gc
 
#define PER_WDT_64ms   WDT_PER_64CLK_gc
 
#define PER_WDT_125ms   WDT_PER_125CLK_gc
 
#define PER_WDT_250ms   WDT_PER_250CLK_gc
 
#define PER_WDT_500ms   WDT_PER_500CLK_gc
 
#define PER_WDT_1s   WDT_PER_1KCLK_gc
 
#define PER_WDT_2s   WDT_PER_2KCLK_gc
 
#define PER_WDT_4s   WDT_PER_4KCLK_gc
 
#define PER_WDT_8s   WDT_PER_8KCLK_gc
 
#define PULL_IO_TRISTATE   (0x0 << 3)
 
#define PULL_IO_BUSHOLDER   (0x1 << 3)
 
#define PULL_IO_DOWN   (0x2 << 3)
 
#define PULL_IO_UP   (0x3 << 3)
 
#define SENSE_IO_EDGES_BOTH   0
 
#define SENSE_IO_EDGE_RISING   1
 
#define SENSE_IO_EDGE_FALLING   2
 
#define SENSE_IO_LOW_LEVEL   3
 
#define SENSE_IO_NO_INT_USED   0
 
#define OUT_IO_DIGITAL   (0x0 << 3)
 
#define OUT_IO_WIREDOR   (0x4 << 3)
 
#define OUT_IO_WIREDAND   (0x5 << 3)
 
#define OUT_IO_WIREDORPULL   (0x6 << 3)
 
#define OUT_IO_WIREDANDPULL   (0x7 << 3)
 
#define IN_EN_IO_EN   1
 
#define IN_EN_IO_DIS   0
 
#define set_io(port, pin)
 
#define clear_io(port, pin)
 
#define toggle_io(port, pin)
 
#define read_io(port, pin)
 
#define set_io_mask(port, mask)
 
#define clear_io_mask(port, mask)
 
#define toggle_io_mask(port, mask)
 
#define TIMER_PRESCALER_DIV1   1
 
#define TIMER_PRESCALER_DIV2   2
 
#define TIMER_PRESCALER_DIV4   3
 
#define TIMER_PRESCALER_DIV8   4
 
#define TIMER_PRESCALER_DIV64   5
 
#define TIMER_PRESCALER_DIV256   6
 
#define TIMER_PRESCALER_DIV1024   7
 
#define RES_ADC_8BITS   ADC_RESOLUTION_8BIT_gc
 
#define RES_ADC_12BITS   ADC_RESOLUTION_12BIT_gc
 
#define REF_ADC_1V   ADC_REFSEL_INT1V_gc | ADC_BANDGAP_bm
 
#define REF_ADC_VCC   ADC_REFSEL_INTVCC_gc
 
#define REF_ADC_PORTA   ADC_REFSEL_AREFA_gc
 
#define REF_ADC_PORTB   ADC_REFSEL_AREFB_gc
 
#define REF_ADC_VCCDIV2   ADC_REFSEL_INTVCC2_gc
 
#define PRESCALER_ADC_DIV4   ADC_PRESCALER_DIV4_gc
 
#define PRESCALER_ADC_DIV8   ADC_PRESCALER_DIV8_gc
 
#define PRESCALER_ADC_DIV16   ADC_PRESCALER_DIV16_gc
 
#define PRESCALER_ADC_DIV32   ADC_PRESCALER_DIV32_gc
 
#define PRESCALER_ADC_DIV64   ADC_PRESCALER_DIV64_gc
 
#define PRESCALER_ADC_DIV128   ADC_PRESCALER_DIV128_gc
 
#define PRESCALER_ADC_DIV256   ADC_PRESCALER_DIV256_gc
 
#define PRESCALER_ADC_DIV512   ADC_PRESCALER_DIV512_gc
 

Functions

bool cpu_config_clock (uint32_t cpu_freq, bool lock_clock, bool external_clock)
 
void cpu_config_clock_32Khz (uint8_t prescaler, bool lock_clock)
 
bool cpu_change_clock (uint32_t cpu_freq, bool lock_clock)
 
void cpu_clk_output (bool stay_on_loop, bool pin4_instead_of_7, uint8_t out_port)
 
void cpu_enable_int_level (uint8_t int_level)
 
void cpu_disable_int_level (uint8_t int_level)
 
void wdt_enable (uint8_t per)
 
void wdt_disable (void)
 
void wdt_reset_device (void)
 
void io_pin2in (PORT_t *port, uint8_t pin, uint8_t pull, uint8_t sense)
 
void io_pin2out (PORT_t *port, uint8_t pin, uint8_t out, bool input_en)
 
void io_pin2out_with_interrupt (PORT_t *port, uint8_t pin, uint8_t out, uint8_t sense)
 
void io_set_int (PORT_t *port, uint8_t int_level, uint8_t int_n, uint8_t mask, bool reset_mask)
 
void timer_type0_enable (TC0_t *timer, uint8_t prescaler, uint16_t target_count, uint8_t int_level)
 
void timer_type0_pwm (TC0_t *timer, uint8_t prescaler, uint16_t target_count, uint16_t duty_cycle_count, uint8_t int_level_ovf, uint8_t int_level_cca)
 
void timer_type0_set_target (TC0_t *timer, uint16_t target_count)
 
bool timer_type0_get_flag (TC0_t *timer)
 
void timer_type0_reset_flag (TC0_t *timer)
 
void timer_type0_stop (TC0_t *timer)
 
void timer_type0_set_counter (TC0_t *timer, uint16_t counter)
 
void timer_type0_wait (TC0_t *timer, uint8_t prescaler, uint16_t target_count)
 
bool calculate_timer_16bits (uint32_t f_cpu, float freq, uint8_t *timer_prescaler, uint16_t *timer_target_count)
 
void timer_type1_enable (TC1_t *timer, uint8_t prescaler, uint16_t target_count, uint8_t int_level)
 
void timer_type1_set_target (TC1_t *timer, uint16_t target_count)
 
bool timer_type1_get_flag (TC1_t *timer)
 
void timer_type1_reset_flag (TC1_t *timer)
 
void timer_type1_stop (TC1_t *timer)
 
void timer_type1_set_counter (TC1_t *timer, uint16_t counter)
 
void timer_type1_wait (TC1_t *timer, uint8_t prescaler, uint16_t target_count)
 
bool eeprom_is_busy (void)
 
uint8_t eeprom_rd_byte (uint16_t addr)
 
void eeprom_wr_byte (uint16_t addr, uint8_t byte)
 
void eeprom_wr_i16 (uint16_t addr, int16_t _16b)
 
void eeprom_wr_i32 (uint16_t addr, int32_t _32b)
 
int16_t eeprom_rd_i16 (uint16_t addr)
 
int32_t eeprom_rd_i32 (uint16_t addr)
 
void adc_A_initialize_single_ended (uint8_t analog_reference)
 
int16_t adc_A_read_channel (uint8_t index)
 
void adc_A_calibrate_offset (uint8_t index)
 
uint16_t adcA_unsigned_single_ended (ADC_t *adc, uint8_t res, uint8_t ref, uint8_t prescaler, uint8_t adc_pin, TC0_t *timer)
 

Macro Definition Documentation

◆ bool

#define bool   uint8_t

◆ clear_io

#define clear_io ( port,
pin )
Value:
port.OUTCLR = 1 << pin

◆ clear_io_mask

#define clear_io_mask ( port,
mask )
Value:
port.OUTCLR = mask

◆ false

#define false   0

◆ IN_EN_IO_DIS

#define IN_EN_IO_DIS   0

◆ IN_EN_IO_EN

#define IN_EN_IO_EN   1

◆ INT_LEVEL_HIGH

#define INT_LEVEL_HIGH   3

◆ INT_LEVEL_LOW

#define INT_LEVEL_LOW   1

◆ INT_LEVEL_MED

#define INT_LEVEL_MED   2

◆ INT_LEVEL_OFF

#define INT_LEVEL_OFF   0

◆ OUT_IO_DIGITAL

#define OUT_IO_DIGITAL   (0x0 << 3)

◆ OUT_IO_WIREDAND

#define OUT_IO_WIREDAND   (0x5 << 3)

◆ OUT_IO_WIREDANDPULL

#define OUT_IO_WIREDANDPULL   (0x7 << 3)

◆ OUT_IO_WIREDOR

#define OUT_IO_WIREDOR   (0x4 << 3)

◆ OUT_IO_WIREDORPULL

#define OUT_IO_WIREDORPULL   (0x6 << 3)

◆ OUT_PORT_CLK_PORTC

#define OUT_PORT_CLK_PORTC   0

◆ OUT_PORT_CLK_PORTD

#define OUT_PORT_CLK_PORTD   1

◆ PER_WDT_125ms

#define PER_WDT_125ms   WDT_PER_125CLK_gc

◆ PER_WDT_16ms

#define PER_WDT_16ms   WDT_PER_16CLK_gc

◆ PER_WDT_1s

#define PER_WDT_1s   WDT_PER_1KCLK_gc

◆ PER_WDT_250ms

#define PER_WDT_250ms   WDT_PER_250CLK_gc

◆ PER_WDT_2s

#define PER_WDT_2s   WDT_PER_2KCLK_gc

◆ PER_WDT_32ms

#define PER_WDT_32ms   WDT_PER_32CLK_gc

◆ PER_WDT_4s

#define PER_WDT_4s   WDT_PER_4KCLK_gc

◆ PER_WDT_500ms

#define PER_WDT_500ms   WDT_PER_500CLK_gc

◆ PER_WDT_64ms

#define PER_WDT_64ms   WDT_PER_64CLK_gc

◆ PER_WDT_8ms

#define PER_WDT_8ms   WDT_PER_8CLK_gc

◆ PER_WDT_8s

#define PER_WDT_8s   WDT_PER_8KCLK_gc

◆ PRESCALER_ADC_DIV128

#define PRESCALER_ADC_DIV128   ADC_PRESCALER_DIV128_gc

◆ PRESCALER_ADC_DIV16

#define PRESCALER_ADC_DIV16   ADC_PRESCALER_DIV16_gc

◆ PRESCALER_ADC_DIV256

#define PRESCALER_ADC_DIV256   ADC_PRESCALER_DIV256_gc

◆ PRESCALER_ADC_DIV32

#define PRESCALER_ADC_DIV32   ADC_PRESCALER_DIV32_gc

◆ PRESCALER_ADC_DIV4

#define PRESCALER_ADC_DIV4   ADC_PRESCALER_DIV4_gc

◆ PRESCALER_ADC_DIV512

#define PRESCALER_ADC_DIV512   ADC_PRESCALER_DIV512_gc

◆ PRESCALER_ADC_DIV64

#define PRESCALER_ADC_DIV64   ADC_PRESCALER_DIV64_gc

◆ PRESCALER_ADC_DIV8

#define PRESCALER_ADC_DIV8   ADC_PRESCALER_DIV8_gc

◆ PRESCALER_CPU_1

#define PRESCALER_CPU_1   CLK_PSADIV_1_gc

◆ PRESCALER_CPU_128

#define PRESCALER_CPU_128   CLK_PSADIV_128_gc

◆ PRESCALER_CPU_16

#define PRESCALER_CPU_16   CLK_PSADIV_16_gc

◆ PRESCALER_CPU_2

#define PRESCALER_CPU_2   CLK_PSADIV_2_gc

◆ PRESCALER_CPU_256

#define PRESCALER_CPU_256   CLK_PSADIV_256_gc

◆ PRESCALER_CPU_32

#define PRESCALER_CPU_32   CLK_PSADIV_32_gc

◆ PRESCALER_CPU_4

#define PRESCALER_CPU_4   CLK_PSADIV_4_gc

◆ PRESCALER_CPU_512

#define PRESCALER_CPU_512   CLK_PSADIV_512_gc

◆ PRESCALER_CPU_64

#define PRESCALER_CPU_64   CLK_PSADIV_64_gc

◆ PRESCALER_CPU_8

#define PRESCALER_CPU_8   CLK_PSADIV_8_gc

◆ PULL_IO_BUSHOLDER

#define PULL_IO_BUSHOLDER   (0x1 << 3)

◆ PULL_IO_DOWN

#define PULL_IO_DOWN   (0x2 << 3)

◆ PULL_IO_TRISTATE

#define PULL_IO_TRISTATE   (0x0 << 3)

◆ PULL_IO_UP

#define PULL_IO_UP   (0x3 << 3)

◆ read_io

#define read_io ( port,
pin )
Value:
(*(&port.IN) & (1 << pin))

◆ REF_ADC_1V

#define REF_ADC_1V   ADC_REFSEL_INT1V_gc | ADC_BANDGAP_bm

◆ REF_ADC_PORTA

#define REF_ADC_PORTA   ADC_REFSEL_AREFA_gc

◆ REF_ADC_PORTB

#define REF_ADC_PORTB   ADC_REFSEL_AREFB_gc

◆ REF_ADC_VCC

#define REF_ADC_VCC   ADC_REFSEL_INTVCC_gc

◆ REF_ADC_VCCDIV2

#define REF_ADC_VCCDIV2   ADC_REFSEL_INTVCC2_gc

◆ RES_ADC_12BITS

#define RES_ADC_12BITS   ADC_RESOLUTION_12BIT_gc

◆ RES_ADC_8BITS

#define RES_ADC_8BITS   ADC_RESOLUTION_8BIT_gc

◆ SENSE_IO_EDGE_FALLING

#define SENSE_IO_EDGE_FALLING   2

◆ SENSE_IO_EDGE_RISING

#define SENSE_IO_EDGE_RISING   1

◆ SENSE_IO_EDGES_BOTH

#define SENSE_IO_EDGES_BOTH   0

◆ SENSE_IO_LOW_LEVEL

#define SENSE_IO_LOW_LEVEL   3

◆ SENSE_IO_NO_INT_USED

#define SENSE_IO_NO_INT_USED   0

◆ set_io

#define set_io ( port,
pin )
Value:
port.OUTSET = 1 << pin

◆ set_io_mask

#define set_io_mask ( port,
mask )
Value:
port.OUTSET = mask

◆ TIMER_PRESCALER_DIV1

#define TIMER_PRESCALER_DIV1   1

◆ TIMER_PRESCALER_DIV1024

#define TIMER_PRESCALER_DIV1024   7

◆ TIMER_PRESCALER_DIV2

#define TIMER_PRESCALER_DIV2   2

◆ TIMER_PRESCALER_DIV256

#define TIMER_PRESCALER_DIV256   6

◆ TIMER_PRESCALER_DIV4

#define TIMER_PRESCALER_DIV4   3

◆ TIMER_PRESCALER_DIV64

#define TIMER_PRESCALER_DIV64   5

◆ TIMER_PRESCALER_DIV8

#define TIMER_PRESCALER_DIV8   4

◆ toggle_io

#define toggle_io ( port,
pin )
Value:
port.OUTTGL = 1 << pin

◆ toggle_io_mask

#define toggle_io_mask ( port,
mask )
Value:
port.OUTTGL = mask

◆ true

#define true   1

Function Documentation

◆ adc_A_calibrate_offset()

void adc_A_calibrate_offset ( uint8_t index)

◆ adc_A_initialize_single_ended()

void adc_A_initialize_single_ended ( uint8_t analog_reference)

◆ adc_A_read_channel()

int16_t adc_A_read_channel ( uint8_t index)

◆ adcA_unsigned_single_ended()

uint16_t adcA_unsigned_single_ended ( ADC_t * adc,
uint8_t res,
uint8_t ref,
uint8_t prescaler,
uint8_t adc_pin,
TC0_t * timer )

◆ calculate_timer_16bits()

bool calculate_timer_16bits ( uint32_t f_cpu,
float freq,
uint8_t * timer_prescaler,
uint16_t * timer_target_count )

◆ cpu_change_clock()

bool cpu_change_clock ( uint32_t cpu_freq,
bool lock_clock )

◆ cpu_clk_output()

void cpu_clk_output ( bool stay_on_loop,
bool pin4_instead_of_7,
uint8_t out_port )

◆ cpu_config_clock()

bool cpu_config_clock ( uint32_t cpu_freq,
bool lock_clock,
bool external_clock )

◆ cpu_config_clock_32Khz()

void cpu_config_clock_32Khz ( uint8_t prescaler,
bool lock_clock )

◆ cpu_disable_int_level()

void cpu_disable_int_level ( uint8_t int_level)

◆ cpu_enable_int_level()

void cpu_enable_int_level ( uint8_t int_level)

◆ eeprom_is_busy()

bool eeprom_is_busy ( void )

◆ eeprom_rd_byte()

uint8_t eeprom_rd_byte ( uint16_t addr)

◆ eeprom_rd_i16()

int16_t eeprom_rd_i16 ( uint16_t addr)

◆ eeprom_rd_i32()

int32_t eeprom_rd_i32 ( uint16_t addr)

◆ eeprom_wr_byte()

void eeprom_wr_byte ( uint16_t addr,
uint8_t byte )

◆ eeprom_wr_i16()

void eeprom_wr_i16 ( uint16_t addr,
int16_t _16b )

◆ eeprom_wr_i32()

void eeprom_wr_i32 ( uint16_t addr,
int32_t _32b )

◆ io_pin2in()

void io_pin2in ( PORT_t * port,
uint8_t pin,
uint8_t pull,
uint8_t sense )

◆ io_pin2out()

void io_pin2out ( PORT_t * port,
uint8_t pin,
uint8_t out,
bool input_en )

◆ io_pin2out_with_interrupt()

void io_pin2out_with_interrupt ( PORT_t * port,
uint8_t pin,
uint8_t out,
uint8_t sense )

◆ io_set_int()

void io_set_int ( PORT_t * port,
uint8_t int_level,
uint8_t int_n,
uint8_t mask,
bool reset_mask )

◆ timer_type0_enable()

void timer_type0_enable ( TC0_t * timer,
uint8_t prescaler,
uint16_t target_count,
uint8_t int_level )

◆ timer_type0_get_flag()

bool timer_type0_get_flag ( TC0_t * timer)

◆ timer_type0_pwm()

void timer_type0_pwm ( TC0_t * timer,
uint8_t prescaler,
uint16_t target_count,
uint16_t duty_cycle_count,
uint8_t int_level_ovf,
uint8_t int_level_cca )

◆ timer_type0_reset_flag()

void timer_type0_reset_flag ( TC0_t * timer)

◆ timer_type0_set_counter()

void timer_type0_set_counter ( TC0_t * timer,
uint16_t counter )

◆ timer_type0_set_target()

void timer_type0_set_target ( TC0_t * timer,
uint16_t target_count )

◆ timer_type0_stop()

void timer_type0_stop ( TC0_t * timer)

◆ timer_type0_wait()

void timer_type0_wait ( TC0_t * timer,
uint8_t prescaler,
uint16_t target_count )

◆ timer_type1_enable()

void timer_type1_enable ( TC1_t * timer,
uint8_t prescaler,
uint16_t target_count,
uint8_t int_level )

◆ timer_type1_get_flag()

bool timer_type1_get_flag ( TC1_t * timer)

◆ timer_type1_reset_flag()

void timer_type1_reset_flag ( TC1_t * timer)

◆ timer_type1_set_counter()

void timer_type1_set_counter ( TC1_t * timer,
uint16_t counter )

◆ timer_type1_set_target()

void timer_type1_set_target ( TC1_t * timer,
uint16_t target_count )

◆ timer_type1_stop()

void timer_type1_stop ( TC1_t * timer)

◆ timer_type1_wait()

void timer_type1_wait ( TC1_t * timer,
uint8_t prescaler,
uint16_t target_count )

◆ wdt_disable()

void wdt_disable ( void )

◆ wdt_enable()

void wdt_enable ( uint8_t per)

◆ wdt_reset_device()

void wdt_reset_device ( void )