00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef _AVR_POWER_H_
00032 #define _AVR_POWER_H_ 1
00033
00034 #include <avr/io.h>
00035 #include <stdint.h>
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344 #if defined(__AVR_ATxmega16A4__) \
00345 || defined(__AVR_ATxmega16D4__) \
00346 || defined(__AVR_ATxmega32A4__) \
00347 || defined(__AVR_ATxmega32D4__) \
00348 || defined(__AVR_ATxmega64A1__) \
00349 || defined(__AVR_ATxmega64A1U__) \
00350 || defined(__AVR_ATxmega64A3__) \
00351 || defined(__AVR_ATxmega64D3__) \
00352 || defined(__AVR_ATxmega128A1__) \
00353 || defined(__AVR_ATxmega128A1U__) \
00354 || defined(__AVR_ATxmega128A3__) \
00355 || defined(__AVR_ATxmega128D3__) \
00356 || defined(__AVR_ATxmega192A3__) \
00357 || defined(__AVR_ATxmega192D3__) \
00358 || defined(__AVR_ATxmega256D3__) \
00359 || defined(__AVR_ATxmega256A3__) \
00360 || defined(__AVR_ATxmega256A3B__)
00361
00362
00363
00364
00365
00366
00367 #define power_ebi_enable() (PR_PR &= (uint8_t)~(PR_EBI_bm))
00368 #define power_ebi_disable() (PR_PR |= (uint8_t)PR_EBI_bm)
00369
00370 #define power_rtc_enable() (PR_PR &= (uint8_t)~(PR_RTC_bm))
00371 #define power_rtc_disable() (PR_PR |= (uint8_t)PR_RTC_bm)
00372
00373 #define power_evsys_enable() (PR_PR &= (uint8_t)~(PR_EVSYS_bm))
00374 #define power_evsys_disable() (PR_PR |= (uint8_t)PR_EVSYS_bm)
00375
00376 #define power_dma_enable() (PR_PR &= (uint8_t)~(PR_DMA_bm))
00377 #define power_dma_disable() (PR_PR |= (uint8_t)PR_DMA_bm)
00378
00379 #define power_daca_enable() (PR_PRPA &= (uint8_t)~(PR_DAC_bm))
00380 #define power_daca_disable() (PR_PRPA |= (uint8_t)PR_DAC_bm)
00381 #define power_dacb_enable() (PR_PRPB &= (uint8_t)~(PR_DAC_bm))
00382 #define power_dacb_disable() (PR_PRPB |= (uint8_t)PR_DAC_bm)
00383
00384 #define power_adca_enable() (PR_PRPA &= (uint8_t)~(PR_ADC_bm))
00385 #define power_adca_disable() (PR_PRPA |= (uint8_t)PR_ADC_bm)
00386 #define power_adcb_enable() (PR_PRPB &= (uint8_t)~(PR_ADC_bm))
00387 #define power_adcb_disable() (PR_PRPB |= (uint8_t)PR_ADC_bm)
00388
00389 #define power_aca_enable() (PR_PRPA &= (uint8_t)~(PR_AC_bm))
00390 #define power_aca_disable() (PR_PRPA |= (uint8_t)PR_AC_bm)
00391 #define power_acb_enable() (PR_PRPB &= (uint8_t)~(PR_AC_bm))
00392 #define power_acb_disable() (PR_PRPB |= (uint8_t)PR_AC_bm)
00393
00394 #define power_twic_enable() (PR_PRPC &= (uint8_t)~(PR_TWI_bm))
00395 #define power_twic_disable() (PR_PRPC |= (uint8_t)PR_TWI_bm)
00396 #define power_twid_enable() (PR_PRPD &= (uint8_t)~(PR_TWI_bm))
00397 #define power_twid_disable() (PR_PRPD |= (uint8_t)PR_TWI_bm)
00398 #define power_twie_enable() (PR_PRPE &= (uint8_t)~(PR_TWI_bm))
00399 #define power_twie_disable() (PR_PRPE |= (uint8_t)PR_TWI_bm)
00400 #define power_twif_enable() (PR_PRPF &= (uint8_t)~(PR_TWI_bm))
00401 #define power_twif_disable() (PR_PRPF |= (uint8_t)PR_TWI_bm)
00402
00403 #define power_usartc1_enable() (PR_PRPC &= (uint8_t)~(PR_USART1_bm))
00404 #define power_usartc1_disable() (PR_PRPC |= (uint8_t)PR_USART1_bm)
00405 #define power_usartd1_enable() (PR_PRPD &= (uint8_t)~(PR_USART1_bm))
00406 #define power_usartd1_disable() (PR_PRPD |= (uint8_t)PR_USART1_bm)
00407 #define power_usarte1_enable() (PR_PRPE &= (uint8_t)~(PR_USART1_bm))
00408 #define power_usarte1_disable() (PR_PRPE |= (uint8_t)PR_USART1_bm)
00409 #define power_usartf1_enable() (PR_PRPF &= (uint8_t)~(PR_USART1_bm))
00410 #define power_usartf1_disable() (PR_PRPF |= (uint8_t)PR_USART1_bm)
00411
00412 #define power_usartc0_enable() (PR_PRPC &= (uint8_t)~(PR_USART0_bm))
00413 #define power_usartc0_disable() (PR_PRPC |= (uint8_t)PR_USART0_bm)
00414 #define power_usartd0_enable() (PR_PRPD &= (uint8_t)~(PR_USART0_bm))
00415 #define power_usartd0_disable() (PR_PRPD |= (uint8_t)PR_USART0_bm)
00416 #define power_usarte0_enable() (PR_PRPE &= (uint8_t)~(PR_USART0_bm))
00417 #define power_usarte0_disable() (PR_PRPE |= (uint8_t)PR_USART0_bm)
00418 #define power_usartf0_enable() (PR_PRPF &= (uint8_t)~(PR_USART0_bm))
00419 #define power_usartf0_disable() (PR_PRPF |= (uint8_t)PR_USART0_bm)
00420
00421 #define power_spic_enable() (PR_PRPC &= (uint8_t)~(PR_SPI_bm))
00422 #define power_spic_disable() (PR_PRPC |= (uint8_t)PR_SPI_bm)
00423 #define power_spid_enable() (PR_PRPD &= (uint8_t)~(PR_SPI_bm))
00424 #define power_spid_disable() (PR_PRPD |= (uint8_t)PR_SPI_bm)
00425 #define power_spie_enable() (PR_PRPE &= (uint8_t)~(PR_SPI_bm))
00426 #define power_spie_disable() (PR_PRPE |= (uint8_t)PR_SPI_bm)
00427 #define power_spif_enable() (PR_PRPF &= (uint8_t)~(PR_SPI_bm))
00428 #define power_spif_disable() (PR_PRPF |= (uint8_t)PR_SPI_bm)
00429
00430 #define power_hiresc_enable() (PR_PRPC &= (uint8_t)~(PR_HIRES_bm))
00431 #define power_hiresc_disable() (PR_PRPC |= (uint8_t)PR_HIRES_bm)
00432 #define power_hiresd_enable() (PR_PRPD &= (uint8_t)~(PR_HIRES_bm))
00433 #define power_hiresd_disable() (PR_PRPD |= (uint8_t)PR_HIRES_bm)
00434 #define power_hirese_enable() (PR_PRPE &= (uint8_t)~(PR_HIRES_bm))
00435 #define power_hirese_disable() (PR_PRPE |= (uint8_t)PR_HIRES_bm)
00436 #define power_hiresf_enable() (PR_PRPF &= (uint8_t)~(PR_HIRES_bm))
00437 #define power_hiresf_disable() (PR_PRPF |= (uint8_t)PR_HIRES_bm)
00438
00439 #define power_tc1c_enable() (PR_PRPC &= (uint8_t)~(PR_TC1_bm))
00440 #define power_tc1c_disable() (PR_PRPC |= (uint8_t)PR_TC1_bm)
00441 #define power_tc1d_enable() (PR_PRPD &= (uint8_t)~(PR_TC1_bm))
00442 #define power_tc1d_disable() (PR_PRPD |= (uint8_t)PR_TC1_bm)
00443 #define power_tc1e_enable() (PR_PRPE &= (uint8_t)~(PR_TC1_bm))
00444 #define power_tc1e_disable() (PR_PRPE |= (uint8_t)PR_TC1_bm)
00445 #define power_tc1f_enable() (PR_PRPF &= (uint8_t)~(PR_TC1_bm))
00446 #define power_tc1f_disable() (PR_PRPF |= (uint8_t)PR_TC1_bm)
00447
00448 #define power_tc0c_enable() (PR_PRPC &= (uint8_t)~(PR_TC0_bm))
00449 #define power_tc0c_disable() (PR_PRPC |= (uint8_t)PR_TC0_bm)
00450 #define power_tc0d_enable() (PR_PRPD &= (uint8_t)~(PR_TC0_bm))
00451 #define power_tc0d_disable() (PR_PRPD |= (uint8_t)PR_TC0_bm)
00452 #define power_tc0e_enable() (PR_PRPE &= (uint8_t)~(PR_TC0_bm))
00453 #define power_tc0e_disable() (PR_PRPE |= (uint8_t)PR_TC0_bm)
00454 #define power_tc0f_enable() (PR_PRPF &= (uint8_t)~(PR_TC0_bm))
00455 #define power_tc0f_disable() (PR_PRPF |= (uint8_t)PR_TC0_bm)
00456
00457 #define power_all_enable() \
00458 do { \
00459 \
00460 PR_PR &= (uint8_t)~(PR_EBI_bm|PR_RTC_bm|PR_EVSYS_bm|PR_DMA_bm); \
00461 PR_PRPA &= (uint8_t)~(PR_DAC_bm|PR_ADC_bm|PR_AC_bm); \
00462 PR_PRPB &= (uint8_t)~(PR_DAC_bm|PR_ADC_bm|PR_AC_bm); \
00463 PR_PRPC &= (uint8_t)~(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \
00464 PR_PRPD &= (uint8_t)~(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \
00465 PR_PRPE &= (uint8_t)~(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \
00466 PR_PRPF &= (uint8_t)~(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \
00467 } while(0)
00468
00469
00470 #define power_all_disable() \
00471 do { \
00472 \
00473 PR_PR |= (uint8_t)(PR_EBI_bm|PR_RTC_bm|PR_EVSYS_bm|PR_DMA_bm); \
00474 PR_PRPA |= (uint8_t)(PR_DAC_bm|PR_ADC_bm|PR_AC_bm); \
00475 PR_PRPB |= (uint8_t)(PR_DAC_bm|PR_ADC_bm|PR_AC_bm); \
00476 PR_PRPC |= (uint8_t)(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \
00477 PR_PRPD |= (uint8_t)(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \
00478 PR_PRPE |= (uint8_t)(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \
00479 PR_PRPF |= (uint8_t)(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \
00480 } while(0)
00481
00482
00483 #elif defined(__AVR_ATmega640__) \
00484 || defined(__AVR_ATmega1280__) \
00485 || defined(__AVR_ATmega1281__) \
00486 || defined(__AVR_ATmega2560__) \
00487 || defined(__AVR_ATmega2561__)
00488
00489 #define power_adc_enable() (PRR0 &= (uint8_t)~(1 << PRADC))
00490 #define power_adc_disable() (PRR0 |= (uint8_t)(1 << PRADC))
00491
00492 #define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI))
00493 #define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI))
00494
00495 #define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI))
00496 #define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI))
00497
00498 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
00499 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
00500
00501 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
00502 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
00503
00504 #define power_timer2_enable() (PRR0 &= (uint8_t)~(1 << PRTIM2))
00505 #define power_timer2_disable() (PRR0 |= (uint8_t)(1 << PRTIM2))
00506
00507 #define power_timer3_enable() (PRR1 &= (uint8_t)~(1 << PRTIM3))
00508 #define power_timer3_disable() (PRR1 |= (uint8_t)(1 << PRTIM3))
00509
00510 #define power_timer4_enable() (PRR1 &= (uint8_t)~(1 << PRTIM4))
00511 #define power_timer4_disable() (PRR1 |= (uint8_t)(1 << PRTIM4))
00512
00513 #define power_timer5_enable() (PRR1 &= (uint8_t)~(1 << PRTIM5))
00514 #define power_timer5_disable() (PRR1 |= (uint8_t)(1 << PRTIM5))
00515
00516 #define power_usart0_enable() (PRR0 &= (uint8_t)~(1 << PRUSART0))
00517 #define power_usart0_disable() (PRR0 |= (uint8_t)(1 << PRUSART0))
00518
00519 #define power_usart1_enable() (PRR1 &= (uint8_t)~(1 << PRUSART1))
00520 #define power_usart1_disable() (PRR1 |= (uint8_t)(1 << PRUSART1))
00521
00522 #define power_usart2_enable() (PRR1 &= (uint8_t)~(1 << PRUSART2))
00523 #define power_usart2_disable() (PRR1 |= (uint8_t)(1 << PRUSART2))
00524
00525 #define power_usart3_enable() (PRR1 &= (uint8_t)~(1 << PRUSART3))
00526 #define power_usart3_disable() (PRR1 |= (uint8_t)(1 << PRUSART3))
00527
00528 #define power_all_enable() \
00529 do{ \
00530 PRR0 &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)|(1<<PRUSART0)); \
00531 PRR1 &= (uint8_t)~((1<<PRTIM3)|(1<<PRTIM4)|(1<<PRTIM5)|(1<<PRTIM5)|(1<<PRUSART1)|(1<<PRUSART2)|(1<<PRUSART3)); \
00532 }while(0)
00533
00534 #define power_all_disable() \
00535 do{ \
00536 PRR0 |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)|(1<<PRUSART0)); \
00537 PRR1 |= (uint8_t)((1<<PRTIM3)|(1<<PRTIM4)|(1<<PRTIM5)|(1<<PRTIM5)|(1<<PRUSART1)|(1<<PRUSART2)|(1<<PRUSART3)); \
00538 }while(0)
00539
00540
00541 #elif defined(__AVR_ATmega128RFA1__)
00542
00543 #define power_adc_enable() (PRR0 &= (uint8_t)~(1 << PRADC))
00544 #define power_adc_disable() (PRR0 |= (uint8_t)(1 << PRADC))
00545
00546 #define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI))
00547 #define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI))
00548
00549 #define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI))
00550 #define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI))
00551
00552 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
00553 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
00554
00555 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
00556 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
00557
00558 #define power_timer2_enable() (PRR0 &= (uint8_t)~(1 << PRTIM2))
00559 #define power_timer2_disable() (PRR0 |= (uint8_t)(1 << PRTIM2))
00560
00561 #define power_timer3_enable() (PRR1 &= (uint8_t)~(1 << PRTIM3))
00562 #define power_timer3_disable() (PRR1 |= (uint8_t)(1 << PRTIM3))
00563
00564 #define power_timer4_enable() (PRR1 &= (uint8_t)~(1 << PRTIM4))
00565 #define power_timer4_disable() (PRR1 |= (uint8_t)(1 << PRTIM4))
00566
00567 #define power_timer5_enable() (PRR1 &= (uint8_t)~(1 << PRTIM5))
00568 #define power_timer5_disable() (PRR1 |= (uint8_t)(1 << PRTIM5))
00569
00570 #define power_usart0_enable() (PRR0 &= (uint8_t)~(1 << PRUSART0))
00571 #define power_usart0_disable() (PRR0 |= (uint8_t)(1 << PRUSART0))
00572
00573 #define power_usart1_enable() (PRR1 &= (uint8_t)~(1 << PRUSART1))
00574 #define power_usart1_disable() (PRR1 |= (uint8_t)(1 << PRUSART1))
00575
00576 #define power_all_enable() \
00577 do{ \
00578 PRR0 &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)|(1<<PRUSART0)); \
00579 PRR1 &= (uint8_t)~((1<<PRTIM3)|(1<<PRTIM4)|(1<<PRTIM5)|(1<<PRTIM5)|(1<<PRUSART1)); \
00580 }while(0)
00581
00582 #define power_all_disable() \
00583 do{ \
00584 PRR0 |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)|(1<<PRUSART0)); \
00585 PRR1 |= (uint8_t)((1<<PRTIM3)|(1<<PRTIM4)|(1<<PRTIM5)|(1<<PRTIM5)|(1<<PRUSART1)); \
00586 }while(0)
00587
00588
00589 #elif defined(__AVR_AT90USB646__) \
00590 || defined(__AVR_AT90USB647__) \
00591 || defined(__AVR_AT90USB1286__) \
00592 || defined(__AVR_AT90USB1287__)
00593
00594 #define power_adc_enable() (PRR0 &= (uint8_t)~(1 << PRADC))
00595 #define power_adc_disable() (PRR0 |= (uint8_t)(1 << PRADC))
00596
00597 #define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI))
00598 #define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI))
00599
00600 #define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI))
00601 #define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI))
00602
00603 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
00604 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
00605
00606 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
00607 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
00608
00609 #define power_timer2_enable() (PRR0 &= (uint8_t)~(1 << PRTIM2))
00610 #define power_timer2_disable() (PRR0 |= (uint8_t)(1 << PRTIM2))
00611
00612 #define power_timer3_enable() (PRR1 &= (uint8_t)~(1 << PRTIM3))
00613 #define power_timer3_disable() (PRR1 |= (uint8_t)(1 << PRTIM3))
00614
00615 #define power_usart1_enable() (PRR1 &= (uint8_t)~(1 << PRUSART1))
00616 #define power_usart1_disable() (PRR1 |= (uint8_t)(1 << PRUSART1))
00617
00618 #define power_usb_enable() (PRR1 &= (uint8_t)~(1 << PRUSB))
00619 #define power_usb_disable() (PRR1 |= (uint8_t)(1 << PRUSB))
00620
00621 #define power_all_enable() \
00622 do{ \
00623 PRR0 &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)); \
00624 PRR1 &= (uint8_t)~((1<<PRTIM3)|(1<<PRUSART1)|(1<<PRUSB)); \
00625 }while(0)
00626
00627 #define power_all_disable() \
00628 do{ \
00629 PRR0 |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)); \
00630 PRR1 |= (uint8_t)((1<<PRTIM3)|(1<<PRUSART1)|(1<<PRUSB)); \
00631 }while(0)
00632
00633
00634 #elif defined(__AVR_ATmega32U4__) \
00635 || defined(__AVR_ATmega16U4__)
00636
00637
00638 #define power_adc_enable() (PRR0 &= (uint8_t)~(1 << PRADC))
00639 #define power_adc_disable() (PRR0 |= (uint8_t)(1 << PRADC))
00640
00641 #define power_usart0_enable() (PRR0 &= (uint8_t)~(1 << PRUSART0))
00642 #define power_usart0_disable() (PRR0 |= (uint8_t)(1 << PRUSART0))
00643
00644 #define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI))
00645 #define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI))
00646
00647 #define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI))
00648 #define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI))
00649
00650 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
00651 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
00652
00653 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
00654 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
00655
00656 #define power_timer2_enable() (PRR0 &= (uint8_t)~(1 << PRTIM2))
00657 #define power_timer2_disable() (PRR0 |= (uint8_t)(1 << PRTIM2))
00658
00659 #define power_timer3_enable() (PRR1 &= (uint8_t)~(1 << PRTIM3))
00660 #define power_timer3_disable() (PRR1 |= (uint8_t)(1 << PRTIM3))
00661
00662 #define power_usart1_enable() (PRR1 &= (uint8_t)~(1 << PRUSART1))
00663 #define power_usart1_disable() (PRR1 |= (uint8_t)(1 << PRUSART1))
00664
00665 #define power_usb_enable() (PRR1 &= (uint8_t)~(1 << PRUSB))
00666 #define power_usb_disable() (PRR1 |= (uint8_t)(1 << PRUSB))
00667
00668 #define power_all_enable() \
00669 do{ \
00670 PRR0 &= (uint8_t)~((1<<PRADC)|(1<<PRUSART0)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)); \
00671 PRR1 &= (uint8_t)~((1<<PRTIM3)|(1<<PRUSART1)|(1<<PRUSB)); \
00672 }while(0)
00673
00674 #define power_all_disable() \
00675 do{ \
00676 PRR0 |= (uint8_t)((1<<PRADC)|(1<<PRUSART0)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)); \
00677 PRR1 |= (uint8_t)((1<<PRTIM3)|(1<<PRUSART1)|(1<<PRUSB)); \
00678 }while(0)
00679
00680
00681 #elif defined(__AVR_ATmega32U6__)
00682
00683
00684 #define power_adc_enable() (PRR0 &= (uint8_t)~(1 << PRADC))
00685 #define power_adc_disable() (PRR0 |= (uint8_t)(1 << PRADC))
00686
00687 #define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI))
00688 #define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI))
00689
00690 #define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI))
00691 #define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI))
00692
00693 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
00694 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
00695
00696 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
00697 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
00698
00699 #define power_timer2_enable() (PRR0 &= (uint8_t)~(1 << PRTIM2))
00700 #define power_timer2_disable() (PRR0 |= (uint8_t)(1 << PRTIM2))
00701
00702 #define power_timer3_enable() (PRR1 &= (uint8_t)~(1 << PRTIM3))
00703 #define power_timer3_disable() (PRR1 |= (uint8_t)(1 << PRTIM3))
00704
00705 #define power_usart1_enable() (PRR1 &= (uint8_t)~(1 << PRUSART1))
00706 #define power_usart1_disable() (PRR1 |= (uint8_t)(1 << PRUSART1))
00707
00708 #define power_usb_enable() (PRR1 &= (uint8_t)~(1 << PRUSB))
00709 #define power_usb_disable() (PRR1 |= (uint8_t)(1 << PRUSB))
00710
00711 #define power_all_enable() \
00712 do{ \
00713 PRR0 &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)); \
00714 PRR1 &= (uint8_t)~((1<<PRTIM3)|(1<<PRUSART1)|(1<<PRUSB)); \
00715 }while(0)
00716
00717 #define power_all_disable() \
00718 do{ \
00719 PRR0 |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)); \
00720 PRR1 |= (uint8_t)((1<<PRTIM3)|(1<<PRUSART1)|(1<<PRUSB)); \
00721 }while(0)
00722
00723
00724 #elif defined(__AVR_AT90PWM1__)
00725
00726 #define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
00727 #define power_adc_disable() (PRR |= (uint8_t)(1 << PRADC))
00728
00729 #define power_spi_enable() (PRR &= (uint8_t)~(1 << PRSPI))
00730 #define power_spi_disable() (PRR |= (uint8_t)(1 << PRSPI))
00731
00732 #define power_timer0_enable() (PRR &= (uint8_t)~(1 << PRTIM0))
00733 #define power_timer0_disable() (PRR |= (uint8_t)(1 << PRTIM0))
00734
00735 #define power_timer1_enable() (PRR &= (uint8_t)~(1 << PRTIM1))
00736 #define power_timer1_disable() (PRR |= (uint8_t)(1 << PRTIM1))
00737
00738
00739 #define power_psc0_enable() (PRR &= (uint8_t)~(1 << PRPSC0))
00740 #define power_psc0_disable() (PRR |= (uint8_t)(1 << PRPSC0))
00741
00742
00743 #define power_psc1_enable() (PRR &= (uint8_t)~(1 << PRPSC1))
00744 #define power_psc1_disable() (PRR |= (uint8_t)(1 << PRPSC1))
00745
00746
00747 #define power_psc2_enable() (PRR &= (uint8_t)~(1 << PRPSC2))
00748 #define power_psc2_disable() (PRR |= (uint8_t)(1 << PRPSC2))
00749
00750 #define power_all_enable() (PRR &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRPSC0)|(1<<PRPSC1)|(1<<PRPSC2)))
00751 #define power_all_disable() (PRR |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRPSC0)|(1<<PRPSC1)|(1<<PRPSC2)))
00752
00753
00754 #elif defined(__AVR_AT90PWM2__) \
00755 || defined(__AVR_AT90PWM2B__) \
00756 || defined(__AVR_AT90PWM3__) \
00757 || defined(__AVR_AT90PWM3B__) \
00758 || defined(__AVR_AT90PWM216__) \
00759 || defined(__AVR_AT90PWM316__)
00760
00761 #define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
00762 #define power_adc_disable() (PRR |= (uint8_t)(1 << PRADC))
00763
00764 #define power_spi_enable() (PRR &= (uint8_t)~(1 << PRSPI))
00765 #define power_spi_disable() (PRR |= (uint8_t)(1 << PRSPI))
00766
00767 #define power_usart_enable() (PRR &= (uint8_t)~(1 << PRUSART))
00768 #define power_usart_disable() (PRR |= (uint8_t)(1 << PRUSART))
00769
00770 #define power_timer0_enable() (PRR &= (uint8_t)~(1 << PRTIM0))
00771 #define power_timer0_disable() (PRR |= (uint8_t)(1 << PRTIM0))
00772
00773 #define power_timer1_enable() (PRR &= (uint8_t)~(1 << PRTIM1))
00774 #define power_timer1_disable() (PRR |= (uint8_t)(1 << PRTIM1))
00775
00776
00777 #define power_psc0_enable() (PRR &= (uint8_t)~(1 << PRPSC0))
00778 #define power_psc0_disable() (PRR |= (uint8_t)(1 << PRPSC0))
00779
00780
00781 #define power_psc1_enable() (PRR &= (uint8_t)~(1 << PRPSC1))
00782 #define power_psc1_disable() (PRR |= (uint8_t)(1 << PRPSC1))
00783
00784
00785 #define power_psc2_enable() (PRR &= (uint8_t)~(1 << PRPSC2))
00786 #define power_psc2_disable() (PRR |= (uint8_t)(1 << PRPSC2))
00787
00788 #define power_all_enable() (PRR &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRPSC0)|(1<<PRPSC1)|(1<<PRPSC2)))
00789 #define power_all_disable() (PRR |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRPSC0)|(1<<PRPSC1)|(1<<PRPSC2)))
00790
00791
00792 #elif defined(__AVR_AT90PWM81__)
00793
00794 #define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
00795 #define power_adc_disable() (PRR |= (uint8_t)(1 << PRADC))
00796
00797 #define power_spi_enable() (PRR &= (uint8_t)~(1 << PRSPI))
00798 #define power_spi_disable() (PRR |= (uint8_t)(1 << PRSPI))
00799
00800 #define power_timer1_enable() (PRR &= (uint8_t)~(1 << PRTIM1))
00801 #define power_timer1_disable() (PRR |= (uint8_t)(1 << PRTIM1))
00802
00803
00804 #define power_psc0_enable() (PRR &= (uint8_t)~(1 << PRPSC0))
00805 #define power_psc0_disable() (PRR |= (uint8_t)(1 << PRPSC0))
00806
00807
00808 #define power_psc2_enable() (PRR &= (uint8_t)~(1 << PRPSC2))
00809 #define power_psc2_disable() (PRR |= (uint8_t)(1 << PRPSC2))
00810
00811 #define power_all_enable() (PRR &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRTIM1)|(1<<PRPSC0)|(1<<PRPSC2)))
00812 #define power_all_disable() (PRR |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRTIM1)|(1<<PRPSC0)|(1<<PRPSC2)))
00813
00814
00815 #elif defined(__AVR_ATmega165__) \
00816 || defined(__AVR_ATmega165A__) \
00817 || defined(__AVR_ATmega165P__) \
00818 || defined(__AVR_ATmega325__) \
00819 || defined(__AVR_ATmega325A__) \
00820 || defined(__AVR_ATmega3250__) \
00821 || defined(__AVR_ATmega3250A__) \
00822 || defined(__AVR_ATmega645__) \
00823 || defined(__AVR_ATmega645A__) \
00824 || defined(__AVR_ATmega645P__) \
00825 || defined(__AVR_ATmega6450__) \
00826 || defined(__AVR_ATmega6450A__) \
00827 || defined(__AVR_ATmega6450P__)
00828
00829 #define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
00830 #define power_adc_disable() (PRR |= (uint8_t)(1 << PRADC))
00831
00832 #define power_spi_enable() (PRR &= (uint8_t)~(1 << PRSPI))
00833 #define power_spi_disable() (PRR |= (uint8_t)(1 << PRSPI))
00834
00835 #define power_usart0_enable() (PRR &= (uint8_t)~(1 << PRUSART0))
00836 #define power_usart0_disable() (PRR |= (uint8_t)(1 << PRUSART0))
00837
00838 #define power_timer1_enable() (PRR &= (uint8_t)~(1 << PRTIM1))
00839 #define power_timer1_disable() (PRR |= (uint8_t)(1 << PRTIM1))
00840
00841 #define power_all_enable() (PRR &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRTIM1)))
00842 #define power_all_disable() (PRR |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRTIM1)))
00843
00844
00845 #elif defined(__AVR_ATmega169__) \
00846 || defined(__AVR_ATmega169A__) \
00847 || defined(__AVR_ATmega169P__) \
00848 || defined(__AVR_ATmega169PA__) \
00849 || defined(__AVR_ATmega329__) \
00850 || defined(__AVR_ATmega329A__) \
00851 || defined(__AVR_ATmega329P__) \
00852 || defined(__AVR_ATmega329PA__) \
00853 || defined(__AVR_ATmega3290__) \
00854 || defined(__AVR_ATmega3290A__) \
00855 || defined(__AVR_ATmega3290P__) \
00856 || defined(__AVR_ATmega649__) \
00857 || defined(__AVR_ATmega649A__) \
00858 || defined(__AVR_ATmega649P__) \
00859 || defined(__AVR_ATmega6490__) \
00860 || defined(__AVR_ATmega6490A__) \
00861 || defined(__AVR_ATmega6490P__)
00862
00863 #define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
00864 #define power_adc_disable() (PRR |= (uint8_t)(1 << PRADC))
00865
00866 #define power_spi_enable() (PRR &= (uint8_t)~(1 << PRSPI))
00867 #define power_spi_disable() (PRR |= (uint8_t)(1 << PRSPI))
00868
00869 #define power_usart0_enable() (PRR &= (uint8_t)~(1 << PRUSART0))
00870 #define power_usart0_disable() (PRR |= (uint8_t)(1 << PRUSART0))
00871
00872 #define power_timer1_enable() (PRR &= (uint8_t)~(1 << PRTIM1))
00873 #define power_timer1_disable() (PRR |= (uint8_t)(1 << PRTIM1))
00874
00875 #define power_lcd_enable() (PRR &= (uint8_t)~(1 << PRLCD))
00876 #define power_lcd_disable() (PRR |= (uint8_t)(1 << PRLCD))
00877
00878 #define power_all_enable() (PRR &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRTIM1)|(1<<PRLCD)))
00879 #define power_all_disable() (PRR |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRTIM1)|(1<<PRLCD)))
00880
00881
00882 #elif defined(__AVR_ATmega164A__) \
00883 || defined(__AVR_ATmega164P__) \
00884 || defined(__AVR_ATmega324A__) \
00885 || defined(__AVR_ATmega324P__) \
00886 || defined(__AVR_ATmega324PA__) \
00887 || defined(__AVR_ATmega644P__) \
00888 || defined(__AVR_ATmega644A__) \
00889 || defined(__AVR_ATmega644PA__)
00890
00891 #define power_adc_enable() (PRR0 &= (uint8_t)~(1 << PRADC))
00892 #define power_adc_disable() (PRR0 |= (uint8_t)(1 << PRADC))
00893
00894 #define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI))
00895 #define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI))
00896
00897 #define power_usart0_enable() (PRR0 &= (uint8_t)~(1 << PRUSART0))
00898 #define power_usart0_disable() (PRR0 |= (uint8_t)(1 << PRUSART0))
00899
00900 #define power_usart1_enable() (PRR0 &= (uint8_t)~(1 << PRUSART1))
00901 #define power_usart1_disable() (PRR0 |= (uint8_t)(1 << PRUSART1))
00902
00903 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
00904 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
00905
00906 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
00907 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
00908
00909 #define power_timer2_enable() (PRR0 &= (uint8_t)~(1 << PRTIM2))
00910 #define power_timer2_disable() (PRR0 |= (uint8_t)(1 << PRTIM2))
00911
00912 #define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI))
00913 #define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI))
00914
00915 #define power_all_enable() (PRR0 &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRUSART1)|(1<<PRTIM0)|(1<<PRTIM2)|(1<<PRTWI)))
00916 #define power_all_disable() (PRR0 |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRUSART1)|(1<<PRTIM0)|(1<<PRTIM2)|(1<<PRTWI)))
00917
00918
00919 #elif defined(__AVR_ATmega644__)
00920
00921 #define power_adc_enable() (PRR0 &= (uint8_t)~(1 << PRADC))
00922 #define power_adc_disable() (PRR0 |= (uint8_t)(1 << PRADC))
00923
00924 #define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI))
00925 #define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI))
00926
00927 #define power_usart0_enable() (PRR0 &= (uint8_t)~(1 << PRUSART0))
00928 #define power_usart0_disable() (PRR0 |= (uint8_t)(1 << PRUSART0))
00929
00930 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
00931 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
00932
00933 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
00934 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
00935
00936 #define power_timer2_enable() (PRR0 &= (uint8_t)~(1 << PRTIM2))
00937 #define power_timer2_disable() (PRR0 |= (uint8_t)(1 << PRTIM2))
00938
00939 #define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI))
00940 #define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI))
00941
00942 #define power_all_enable() (PRR0 &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)|(1<<PRTWI)))
00943 #define power_all_disable() (PRR0 |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)|(1<<PRTWI)))
00944
00945
00946 #elif defined(__AVR_ATmega406__)
00947
00948 #define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI))
00949 #define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI))
00950
00951 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
00952 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
00953
00954 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
00955 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
00956
00957
00958 #define power_vadc_enable() (PRR0 &= (uint8_t)~(1 << PRVADC))
00959 #define power_vadc_disable() (PRR0 |= (uint8_t)(1 << PRVADC))
00960
00961 #define power_all_enable() (PRR0 &= (uint8_t)~((1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRVADC)))
00962 #define power_all_disable() (PRR0 |= (uint8_t)((1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRVADC)))
00963
00964
00965 #elif defined(__AVR_ATmega48__) \
00966 || defined(__AVR_ATmega48A__) \
00967 || defined(__AVR_ATmega48P__) \
00968 || defined(__AVR_ATmega88__) \
00969 || defined(__AVR_ATmega88A__) \
00970 || defined(__AVR_ATmega88P__) \
00971 || defined(__AVR_ATmega88PA__) \
00972 || defined(__AVR_ATmega168__) \
00973 || defined(__AVR_ATmega168A__) \
00974 || defined(__AVR_ATmega168P__) \
00975 || defined(__AVR_ATmega328__) \
00976 || defined(__AVR_ATmega328P__) \
00977 || defined(__AVR_ATtiny48__) \
00978 || defined(__AVR_ATtiny88__)
00979
00980 #define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
00981 #define power_adc_disable() (PRR |= (uint8_t)(1 << PRADC))
00982
00983 #define power_spi_enable() (PRR &= (uint8_t)~(1 << PRSPI))
00984 #define power_spi_disable() (PRR |= (uint8_t)(1 << PRSPI))
00985
00986 #define power_usart0_enable() (PRR &= (uint8_t)~(1 << PRUSART0))
00987 #define power_usart0_disable() (PRR |= (uint8_t)(1 << PRUSART0))
00988
00989 #define power_timer0_enable() (PRR &= (uint8_t)~(1 << PRTIM0))
00990 #define power_timer0_disable() (PRR |= (uint8_t)(1 << PRTIM0))
00991
00992 #define power_timer1_enable() (PRR &= (uint8_t)~(1 << PRTIM1))
00993 #define power_timer1_disable() (PRR |= (uint8_t)(1 << PRTIM1))
00994
00995 #define power_timer2_enable() (PRR &= (uint8_t)~(1 << PRTIM2))
00996 #define power_timer2_disable() (PRR |= (uint8_t)(1 << PRTIM2))
00997
00998 #define power_twi_enable() (PRR &= (uint8_t)~(1 << PRTWI))
00999 #define power_twi_disable() (PRR |= (uint8_t)(1 << PRTWI))
01000
01001 #define power_all_enable() (PRR &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)|(1<<PRTWI)))
01002 #define power_all_disable() (PRR |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRUSART0)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)|(1<<PRTWI)))
01003
01004
01005 #elif defined(__AVR_ATtiny24__) \
01006 || defined(__AVR_ATtiny24A__) \
01007 || defined(__AVR_ATtiny44__) \
01008 || defined(__AVR_ATtiny44A__) \
01009 || defined(__AVR_ATtiny84__) \
01010 || defined(__AVR_ATtiny84A__) \
01011 || defined(__AVR_ATtiny25__) \
01012 || defined(__AVR_ATtiny45__) \
01013 || defined(__AVR_ATtiny85__) \
01014 || defined(__AVR_ATtiny261__) \
01015 || defined(__AVR_ATtiny261A__) \
01016 || defined(__AVR_ATtiny461__) \
01017 || defined(__AVR_ATtiny461A__) \
01018 || defined(__AVR_ATtiny861__) \
01019 || defined(__AVR_ATtiny861A__) \
01020 || defined(__AVR_ATtiny43U__)
01021
01022 #define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
01023 #define power_adc_disable() (PRR |= (uint8_t)(1 << PRADC))
01024
01025 #define power_timer0_enable() (PRR &= (uint8_t)~(1 << PRTIM0))
01026 #define power_timer0_disable() (PRR |= (uint8_t)(1 << PRTIM0))
01027
01028 #define power_timer1_enable() (PRR &= (uint8_t)~(1 << PRTIM1))
01029 #define power_timer1_disable() (PRR |= (uint8_t)(1 << PRTIM1))
01030
01031
01032 #define power_usi_enable() (PRR &= (uint8_t)~(1 << PRUSI))
01033 #define power_usi_disable() (PRR |= (uint8_t)(1 << PRUSI))
01034
01035 #define power_all_enable() (PRR &= (uint8_t)~((1<<PRADC)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRUSI)))
01036 #define power_all_disable() (PRR |= (uint8_t)((1<<PRADC)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRUSI)))
01037
01038
01039 #elif defined(__AVR_ATmega1284P__)
01040
01041
01042 #define power_adc_enable() (PRR0 &= (uint8_t)~(1 << PRADC))
01043 #define power_adc_disable() (PRR0 |= (uint8_t)(1 << PRADC))
01044
01045 #define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI))
01046 #define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI))
01047
01048 #define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI))
01049 #define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI))
01050
01051 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
01052 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
01053
01054 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
01055 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
01056
01057 #define power_timer2_enable() (PRR0 &= (uint8_t)~(1 << PRTIM2))
01058 #define power_timer2_disable() (PRR0 |= (uint8_t)(1 << PRTIM2))
01059
01060 #define power_timer3_enable() (PRR1 &= (uint8_t)~(1 << PRTIM3))
01061 #define power_timer3_disable() (PRR1 |= (uint8_t)(1 << PRTIM3))
01062
01063 #define power_usart0_enable() (PRR0 &= (uint8_t)~(1 << PRUSART0))
01064 #define power_usart0_disable() (PRR0 |= (uint8_t)(1 << PRUSART0))
01065
01066 #define power_usart1_enable() (PRR0 &= (uint8_t)~(1 << PRUSART1))
01067 #define power_usart1_disable() (PRR0 |= (uint8_t)(1 << PRUSART1))
01068
01069 #define power_all_enable() \
01070 do{ \
01071 PRR0 &= (uint8_t)~((1<<PRADC)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)|(1<<PRUSART0)|(1<<PRUSART1)); \
01072 PRR1 &= (uint8_t)~(1<<PRTIM3); \
01073 }while(0)
01074
01075 #define power_all_disable() \
01076 do{ \
01077 PRR0 |= (uint8_t)((1<<PRADC)|(1<<PRSPI)|(1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRTIM2)|(1<<PRUSART0)|(1<<PRUSART1)); \
01078 PRR1 |= (uint8_t)(1<<PRTIM3); \
01079 }while(0)
01080
01081
01082 #elif defined(__AVR_ATmega32HVB__)
01083
01084
01085 #define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI))
01086 #define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI))
01087
01088 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
01089 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
01090
01091 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
01092 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
01093
01094
01095 #define power_vadc_enable() (PRR0 &= (uint8_t)~(1 << PRVADC))
01096 #define power_vadc_disable() (PRR0 |= (uint8_t)(1 << PRVADC))
01097
01098 #define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI))
01099 #define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI))
01100
01101 #define power_vrm_enable() (PRR0 &= (uint8_t)~(1 << PRVRM))
01102 #define power_vrm_disable() (PRR0 |= (uint8_t)(1 << PRVRM))
01103
01104 #define power_all_enable() (PRR0 &= (uint8_t)~((1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRVADC)|(1<<PRSPI)|(1<<PRVRM)))
01105 #define power_all_disable() (PRR0 |= (uint8_t)((1<<PRTWI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRVADC)|(1<<PRSPI)|(1<<PRVRM)))
01106
01107
01108 #elif defined(__AVR_ATmega16M1__) \
01109 || defined(__AVR_ATmega32C1__) \
01110 || defined(__AVR_ATmega32M1__) \
01111 || defined(__AVR_ATmega64C1__) \
01112 || defined(__AVR_ATmega64M1__)
01113
01114 #define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
01115 #define power_adc_disable() (PRR |= (uint8_t)(1 << PRADC))
01116
01117 #define power_lin_enable() (PRR &= (uint8_t)~(1 << PRLIN))
01118 #define power_lin_disable() (PRR |= (uint8_t)(1 << PRLIN))
01119
01120 #define power_spi_enable() (PRR &= (uint8_t)~(1 << PRSPI))
01121 #define power_spi_disable() (PRR |= (uint8_t)(1 << PRSPI))
01122
01123 #define power_timer0_enable() (PRR &= (uint8_t)~(1 << PRTIM0))
01124 #define power_timer0_disable() (PRR |= (uint8_t)(1 << PRTIM0))
01125
01126 #define power_timer1_enable() (PRR &= (uint8_t)~(1 << PRTIM1))
01127 #define power_timer1_disable() (PRR |= (uint8_t)(1 << PRTIM1))
01128
01129 #define power_psc_enable() (PRR &= (uint8_t)~(1 << PRPSC))
01130 #define power_psc_disable() (PRR |= (uint8_t)(1 << PRPSC))
01131
01132 #define power_can_enable() (PRR &= (uint8_t)~(1 << PRCAN))
01133 #define power_can_disable() (PRR |= (uint8_t)(1 << PRCAN))
01134
01135 #define power_all_enable() (PRR &= (uint8_t)~((1<<PRADC)|(1<<PRLIN)|(1<<PRSPI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRPSC)|(1<<PRCAN)))
01136 #define power_all_disable() (PRR |= (uint8_t)((1<<PRADC)|(1<<PRLIN)|(1<<PRSPI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRPSC)|(1<<PRCAN)))
01137
01138
01139 #elif defined(__AVR_ATtiny167__) \
01140 || defined(__AVR_ATtiny87__)
01141
01142
01143 #define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
01144 #define power_adc_disable() (PRR |= (uint8_t)(1 << PRADC))
01145
01146 #define power_usi_enable() (PRR &= (uint8_t)~(1 << PRUSI))
01147 #define power_usi_disable() (PRR |= (uint8_t)(1 << PRUSI))
01148
01149 #define power_timer0_enable() (PRR &= (uint8_t)~(1 << PRTIM0))
01150 #define power_timer0_disable() (PRR |= (uint8_t)(1 << PRTIM0))
01151
01152 #define power_timer1_enable() (PRR &= (uint8_t)~(1 << PRTIM1))
01153 #define power_timer1_disable() (PRR |= (uint8_t)(1 << PRTIM1))
01154
01155 #define power_spi_enable() (PRR &= (uint8_t)~(1 << PRSPI))
01156 #define power_spi_disable() (PRR |= (uint8_t)(1 << PRSPI))
01157
01158 #define power_lin_enable() (PRR &= (uint8_t)~(1 << PRLIN))
01159 #define power_lin_disable() (PRR |= (uint8_t)(1 << PRLIN))
01160
01161 #define power_all_enable() (PRR &= (uint8_t)~((1<<PRADC)|(1<<PRUSI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRSPI)|(1<<PRLIN)))
01162 #define power_all_disable() (PRR |= (uint8_t)((1<<PRADC)|(1<<PRUSI)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRSPI)|(1<<PRLIN)))
01163
01164
01165 #elif defined(__AVR_AT90USB82__) \
01166 || defined(__AVR_AT90USB162__) \
01167 || defined(__AVR_ATmega8U2__) \
01168 || defined(__AVR_ATmega16U2__) \
01169 || defined(__AVR_ATmega32U2__)
01170
01171 #define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI))
01172 #define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI))
01173
01174 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
01175 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
01176
01177 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
01178 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
01179
01180 #define power_usb_enable() (PRR1 &= (uint8_t)~(1 << PRUSB))
01181 #define power_usb_disable() (PRR1 |= (uint8_t)(1 << PRUSB))
01182
01183 #define power_usart1_enable() (PRR1 &= (uint8_t)~(1 << PRUSART1))
01184 #define power_usart1_disable() (PRR1 |= (uint8_t)(1 << PRUSART1))
01185
01186 #define power_all_enable() \
01187 do{ \
01188 PRR0 &= (uint8_t)~((1<<PRSPI)|(1<<PRTIM0)|(1<<PRTIM1)); \
01189 PRR1 &= (uint8_t)~((1<<PRUSB)|(1<<PRUSART1)); \
01190 }while(0)
01191
01192 #define power_all_disable() \
01193 do{ \
01194 PRR0 |= (uint8_t)((1<<PRSPI)|(1<<PRTIM0)|(1<<PRTIM1)); \
01195 PRR1 |= (uint8_t)((1<<PRUSB)|(1<<PRUSART1)); \
01196 }while(0)
01197
01198
01199 #elif defined(__AVR_AT90SCR100__)
01200
01201 #define power_usart0_enable() (PRR0 &= (uint8_t)~(1 << PRUSART0))
01202 #define power_usart0_disable() (PRR0 |= (uint8_t)(1 << PRUSART0))
01203
01204 #define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI))
01205 #define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI))
01206
01207 #define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1))
01208 #define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1))
01209
01210 #define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0))
01211 #define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0))
01212
01213 #define power_timer2_enable() (PRR0 &= (uint8_t)~(1 << PRTIM2))
01214 #define power_timer2_disable() (PRR0 |= (uint8_t)(1 << PRTIM2))
01215
01216 #define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI))
01217 #define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI))
01218
01219 #define power_usbh_enable() (PRR1 &= (uint8_t)~(1 << PRUSBH))
01220 #define power_usbh_disable() (PRR1 |= (uint8_t)(1 << PRUSBH))
01221
01222 #define power_usb_enable() (PRR1 &= (uint8_t)~(1 << PRUSB))
01223 #define power_usb_disable() (PRR1 |= (uint8_t)(1 << PRUSB))
01224
01225 #define power_hsspi_enable() (PRR1 &= (uint8_t)~(1 << PRHSSPI))
01226 #define power_hsspi_disable() (PRR1 |= (uint8_t)(1 << PRHSSPI))
01227
01228 #define power_sci_enable() (PRR1 &= (uint8_t)~(1 << PRSCI))
01229 #define power_sci_disable() (PRR1 |= (uint8_t)(1 << PRSCI))
01230
01231 #define power_aes_enable() (PRR1 &= (uint8_t)~(1 << PRAES))
01232 #define power_aes_disable() (PRR1 |= (uint8_t)(1 << PRAES))
01233
01234 #define power_kb_enable() (PRR1 &= (uint8_t)~(1 << PRKB))
01235 #define power_kb_disable() (PRR1 |= (uint8_t)(1 << PRKB))
01236
01237 #define power_all_enable() \
01238 do{ \
01239 PRR0 &= (uint8_t)~((1<<PRUSART0)|(1<<PRSPI)|(1<<PRTIM1)|(1<<PRTIM0)|(1<<PRTIM2)|(1<<PRTWI)); \
01240 PRR1 &= (uint8_t)~((1<<PRUSBH)|(1<<PRUSB)|(1<<PRHSSPI)|(1<<PRSCI)|(1<<PRAES)|(1<<PRKB)); \
01241 }while(0)
01242
01243 #define power_all_disable() \
01244 do{ \
01245 PRR0 |= (uint8_t)((1<<PRUSART0)|(1<<PRSPI)|(1<<PRTIM1)|(1<<PRTIM0)|(1<<PRTIM2)|(1<<PRTWI)); \
01246 PRR1 |= (uint8_t)((1<<PRUSBH)|(1<<PRUSB)|(1<<PRHSSPI)|(1<<PRSCI)|(1<<PRAES)|(1<<PRKB)); \
01247 }while(0)
01248
01249
01250 #elif defined(__AVR_ATtiny4__) \
01251 || defined(__AVR_ATtiny5__) \
01252 || defined(__AVR_ATtiny9__) \
01253 || defined(__AVR_ATtiny10__) \
01254 || defined(__AVR_ATtiny13A__) \
01255
01256 #define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
01257 #define power_adc_disable() (PRR |= (uint8_t)(1 << PRADC))
01258
01259 #define power_timer0_enable() (PRR &= (uint8_t)~(1 << PRTIM0))
01260 #define power_timer0_disable() (PRR |= (uint8_t)(1 << PRTIM0))
01261
01262 #define power_all_enable() (PRR &= (uint8_t)~((1<<PRADC)|(1<<PRTIM0)))
01263 #define power_all_disable() (PRR |= (uint8_t)((1<<PRADC)|(1<<PRTIM0)))
01264
01265
01266 #elif defined(__AVR_ATtiny20__) \
01267 || defined(__AVR_ATtiny40__)
01268
01269 #define power_adc_enable() (PRR &= (uint8_t)~(1 << PRADC))
01270 #define power_adc_disable() (PRR |= (uint8_t)(1 << PRADC))
01271
01272 #define power_timer0_enable() (PRR &= (uint8_t)~(1 << PRTIM0))
01273 #define power_timer0_disable() (PRR |= (uint8_t)(1 << PRTIM0))
01274
01275 #define power_timer1_enable() (PRR &= (uint8_t)~(1 << PRTIM1))
01276 #define power_timer1_disable() (PRR |= (uint8_t)(1 << PRTIM1))
01277
01278 #define power_spi_enable() (PRR &= (uint8_t)~(1 << PRSPI))
01279 #define power_spi_disable() (PRR |= (uint8_t)(1 << PRSPI))
01280
01281 #define power_twi_enable() (PRR &= (uint8_t)~(1 << PRTWI))
01282 #define power_twi_disable() (PRR |= (uint8_t)(1 << PRTWI))
01283
01284 #define power_all_enable() (PRR &= (uint8_t)~((1<<PRADC)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRSPI)|(1<<PRTWI)))
01285 #define power_all_disable() (PRR |= (uint8_t)((1<<PRADC)|(1<<PRTIM0)|(1<<PRTIM1)|(1<<PRSPI)|(1<<PRTWI)))
01286
01287 #endif
01288
01289
01290 #if defined(__AVR_AT90CAN32__) \
01291 || defined(__AVR_AT90CAN64__) \
01292 || defined(__AVR_AT90CAN128__) \
01293 || defined(__AVR_AT90PWM1__) \
01294 || defined(__AVR_AT90PWM2__) \
01295 || defined(__AVR_AT90PWM2B__) \
01296 || defined(__AVR_AT90PWM3__) \
01297 || defined(__AVR_AT90PWM3B__) \
01298 || defined(__AVR_AT90PWM216__) \
01299 || defined(__AVR_AT90PWM316__) \
01300 || defined(__AVR_AT90SCR100__) \
01301 || defined(__AVR_AT90USB646__) \
01302 || defined(__AVR_AT90USB647__) \
01303 || defined(__AVR_AT90USB82__) \
01304 || defined(__AVR_AT90USB1286__) \
01305 || defined(__AVR_AT90USB1287__) \
01306 || defined(__AVR_AT90USB162__) \
01307 || defined(__AVR_ATmega1280__) \
01308 || defined(__AVR_ATmega1281__) \
01309 || defined(__AVR_ATmega128RFA1__) \
01310 || defined(__AVR_ATmega1284P__) \
01311 || defined(__AVR_ATmega162__) \
01312 || defined(__AVR_ATmega164A__) \
01313 || defined(__AVR_ATmega164P__) \
01314 || defined(__AVR_ATmega165__) \
01315 || defined(__AVR_ATmega165A__) \
01316 || defined(__AVR_ATmega165P__) \
01317 || defined(__AVR_ATmega168__) \
01318 || defined(__AVR_ATmega168P__) \
01319 || defined(__AVR_ATmega169__) \
01320 || defined(__AVR_ATmega169A__) \
01321 || defined(__AVR_ATmega169P__) \
01322 || defined(__AVR_ATmega169PA__) \
01323 || defined(__AVR_ATmega16U4__) \
01324 || defined(__AVR_ATmega2560__) \
01325 || defined(__AVR_ATmega2561__) \
01326 || defined(__AVR_ATmega324A__) \
01327 || defined(__AVR_ATmega324P__) \
01328 || defined(__AVR_ATmega325__) \
01329 || defined(__AVR_ATmega325A__) \
01330 || defined(__AVR_ATmega3250__) \
01331 || defined(__AVR_ATmega3250A__) \
01332 || defined(__AVR_ATmega328P__) \
01333 || defined(__AVR_ATmega329__) \
01334 || defined(__AVR_ATmega329A__) \
01335 || defined(__AVR_ATmega329P__) \
01336 || defined(__AVR_ATmega329PA__) \
01337 || defined(__AVR_ATmega3290__) \
01338 || defined(__AVR_ATmega3290A__) \
01339 || defined(__AVR_ATmega32C1__) \
01340 || defined(__AVR_ATmega32HVB__) \
01341 || defined(__AVR_ATmega32M1__) \
01342 || defined(__AVR_ATmega32U2__) \
01343 || defined(__AVR_ATmega32U4__) \
01344 || defined(__AVR_ATmega32U6__) \
01345 || defined(__AVR_ATmega48__) \
01346 || defined(__AVR_ATmega48P__) \
01347 || defined(__AVR_ATmega640__) \
01348 || defined(__AVR_ATmega649P__) \
01349 || defined(__AVR_ATmega644__) \
01350 || defined(__AVR_ATmega644A__) \
01351 || defined(__AVR_ATmega644P__) \
01352 || defined(__AVR_ATmega644PA__) \
01353 || defined(__AVR_ATmega645__) \
01354 || defined(__AVR_ATmega645A__) \
01355 || defined(__AVR_ATmega645P__) \
01356 || defined(__AVR_ATmega6450__) \
01357 || defined(__AVR_ATmega6450A__) \
01358 || defined(__AVR_ATmega6450P__) \
01359 || defined(__AVR_ATmega649__) \
01360 || defined(__AVR_ATmega649A__) \
01361 || defined(__AVR_ATmega6490__) \
01362 || defined(__AVR_ATmega6490A__) \
01363 || defined(__AVR_ATmega6490P__) \
01364 || defined(__AVR_ATmega88__) \
01365 || defined(__AVR_ATmega88P__) \
01366 || defined(__AVR_ATtiny48__) \
01367 || defined(__AVR_ATtiny167__) \
01368 || defined(__DOXYGEN__)
01369
01370
01371
01372
01373
01374
01375
01376
01377
01378
01379
01380
01381
01382
01383
01384
01385
01386
01387
01388
01389
01390
01391
01392
01393
01394
01395
01396
01397
01398
01399
01400
01401
01402 typedef enum
01403 {
01404 clock_div_1 = 0,
01405 clock_div_2 = 1,
01406 clock_div_4 = 2,
01407 clock_div_8 = 3,
01408 clock_div_16 = 4,
01409 clock_div_32 = 5,
01410 clock_div_64 = 6,
01411 clock_div_128 = 7,
01412 clock_div_256 = 8,
01413 #if defined(__AVR_ATmega128RFA1__)
01414 clock_div_1_rc = 15,
01415 #endif
01416 } clock_div_t;
01417
01418
01419 static __inline__ void clock_prescale_set(clock_div_t) __attribute__((__always_inline__));
01420
01421
01422
01423
01424
01425
01426
01427
01428
01429
01430 void clock_prescale_set(clock_div_t __x)
01431 {
01432 uint8_t __tmp = _BV(CLKPCE);
01433 __asm__ __volatile__ (
01434 "in __tmp_reg__,__SREG__" "\n\t"
01435 "cli" "\n\t"
01436 "sts %1, %0" "\n\t"
01437 "sts %1, %2" "\n\t"
01438 "out __SREG__, __tmp_reg__"
01439 :
01440 : "d" (__tmp),
01441 "M" (_SFR_MEM_ADDR(CLKPR)),
01442 "d" (__x)
01443 : "r0");
01444 }
01445
01446
01447
01448
01449
01450
01451 #define clock_prescale_get() (clock_div_t)(CLKPR & (uint8_t)((1<<CLKPS0)|(1<<CLKPS1)|(1<<CLKPS2)|(1<<CLKPS3)))
01452
01453
01454 #elif defined(__AVR_ATtiny24__) \
01455 || defined(__AVR_ATtiny24A__) \
01456 || defined(__AVR_ATtiny44__) \
01457 || defined(__AVR_ATtiny44A__) \
01458 || defined(__AVR_ATtiny84__) \
01459 || defined(__AVR_ATtiny84A__) \
01460 || defined(__AVR_ATtiny25__) \
01461 || defined(__AVR_ATtiny45__) \
01462 || defined(__AVR_ATtiny85__) \
01463 || defined(__AVR_ATtiny261A__) \
01464 || defined(__AVR_ATtiny261__) \
01465 || defined(__AVR_ATtiny461__) \
01466 || defined(__AVR_ATtiny461A__) \
01467 || defined(__AVR_ATtiny861__) \
01468 || defined(__AVR_ATtiny861A__) \
01469 || defined(__AVR_ATtiny2313__) \
01470 || defined(__AVR_ATtiny2313A__) \
01471 || defined(__AVR_ATtiny4313__) \
01472 || defined(__AVR_ATtiny13__) \
01473 || defined(__AVR_ATtiny13A__) \
01474 || defined(__AVR_ATtiny43U__) \
01475
01476 typedef enum
01477 {
01478 clock_div_1 = 0,
01479 clock_div_2 = 1,
01480 clock_div_4 = 2,
01481 clock_div_8 = 3,
01482 clock_div_16 = 4,
01483 clock_div_32 = 5,
01484 clock_div_64 = 6,
01485 clock_div_128 = 7,
01486 clock_div_256 = 8
01487 } clock_div_t;
01488
01489
01490 void clock_prescale_set(clock_div_t __x)
01491 {
01492 uint8_t __tmp = _BV(CLKPCE);
01493 __asm__ __volatile__ (
01494 "in __tmp_reg__,__SREG__" "\n\t"
01495 "cli" "\n\t"
01496 "out %1, %0" "\n\t"
01497 "out %1, %2" "\n\t"
01498 "out __SREG__, __tmp_reg__"
01499 :
01500 : "d" (__tmp),
01501 "I" (_SFR_IO_ADDR(CLKPR)),
01502 "d" (__x)
01503 : "r0");
01504 }
01505
01506
01507 #define clock_prescale_get() (clock_div_t)(CLKPR & (uint8_t)((1<<CLKPS0)|(1<<CLKPS1)|(1<<CLKPS2)|(1<<CLKPS3)))
01508
01509
01510 #endif
01511
01512
01513
01514
01515 #endif