00001
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 #ifndef _PDCA_H_
00050 #define _PDCA_H_
00051
00052 #include <avr32/io.h>
00053
00054
00056 #define PDCA_TRANSFER_SIZE_BYTE AVR32_PDCA_BYTE
00057
00059 #define PDCA_TRANSFER_SIZE_HALF_WORD AVR32_PDCA_HALF_WORD
00060
00062 #define PDCA_TRANSFER_SIZE_WORD AVR32_PDCA_WORD
00063
00066
00067 #define PDCA_SUCCESS 0
00068 #define PDCA_INVALID_ARGUMENT -1
00070
00071
00073
00074 #define PDCA_TRANSFER_ERROR AVR32_PDCA_TERR_MASK
00075 #define PDCA_TRANSFER_COMPLETE AVR32_PDCA_TRC_MASK
00076 #define PDCA_TRANSFER_COUNTER_RELOAD_IS_ZERO AVR32_PDCA_RCZ_MASK
00078
00079
00081 typedef struct
00082 {
00084 volatile void *addr ;
00086 unsigned int size ;
00088 volatile void *r_addr ;
00090 unsigned int r_size ;
00092 unsigned int pid ;
00094 unsigned int transfer_size ;
00095 #if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED )
00096
00098 unsigned char etrig ;
00099 #endif // #ifdef AVR32_PDCA_120_H_INCLUDED
00100 } pdca_channel_options_t;
00101
00102
00109 extern volatile avr32_pdca_channel_t *pdca_get_handler(unsigned int pdca_ch_number);
00110
00116 extern int pdca_init_channel(unsigned int pdca_ch_number, const pdca_channel_options_t *opt);
00117
00124 extern unsigned int pdca_get_channel_status(unsigned int pdca_ch_number);
00125
00130 extern void pdca_disable(unsigned int pdca_ch_number);
00131
00136 extern void pdca_enable(unsigned int pdca_ch_number);
00137
00144 extern unsigned int pdca_get_load_size(unsigned int pdca_ch_number);
00145
00152 extern void pdca_load_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size);
00153
00160 extern unsigned int pdca_get_reload_size(unsigned int pdca_ch_number);
00161
00168 extern void pdca_reload_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size);
00169
00175 extern void pdca_set_peripheral_select(unsigned int pdca_ch_number, unsigned int pid);
00176
00182 extern void pdca_set_transfer_size(unsigned int pdca_ch_number, unsigned int transfer_size);
00183
00184 #if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED )
00185
00186
00191 extern void pdca_disable_event_trigger(unsigned int pdca_ch_number);
00192
00197 extern void pdca_enable_event_trigger(unsigned int pdca_ch_number);
00198
00199 #endif // #ifdef AVR32_PDCA_120_H_INCLUDED
00200
00205 extern void pdca_disable_interrupt_transfer_error(unsigned int pdca_ch_number);
00206
00211 extern void pdca_enable_interrupt_transfer_error(unsigned int pdca_ch_number);
00212
00217 extern void pdca_disable_interrupt_transfer_complete(unsigned int pdca_ch_number);
00218
00223 extern void pdca_enable_interrupt_transfer_complete(unsigned int pdca_ch_number);
00224
00229 extern void pdca_disable_interrupt_reload_counter_zero(unsigned int pdca_ch_number);
00230
00235 extern void pdca_enable_interrupt_reload_counter_zero(unsigned int pdca_ch_number);
00236
00246 extern unsigned long pdca_get_transfer_status(unsigned int pdca_ch_number);
00247
00248
00249 #endif // _PDCA_H_