[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-libc-commit] [2396] Pitchumani Sivanupandi:
From: |
Joerg Wunsch |
Subject: |
[avr-libc-commit] [2396] Pitchumani Sivanupandi: |
Date: |
Wed, 08 May 2013 11:20:56 +0000 |
Revision: 2396
http://svn.sv.gnu.org/viewvc/?view=rev&root=avr-libc&revision=2396
Author: joerg_wunsch
Date: 2013-05-08 11:20:55 +0000 (Wed, 08 May 2013)
Log Message:
-----------
Pitchumani Sivanupandi:
Specialize clock_prescale_set/get for mega hvb devices
Modified Paths:
--------------
trunk/avr-libc/ChangeLog
trunk/avr-libc/NEWS
trunk/avr-libc/include/avr/power.h
Modified: trunk/avr-libc/ChangeLog
===================================================================
--- trunk/avr-libc/ChangeLog 2013-05-04 11:26:23 UTC (rev 2395)
+++ trunk/avr-libc/ChangeLog 2013-05-08 11:20:55 UTC (rev 2396)
@@ -1,3 +1,8 @@
+2013-01-15 Pitchumani Sivanupandi <address@hidden>
+
+ * include/avr/power.h: Specialize clock_prescale_set/get
+ for mega hvb devices
+4
2013-05-03 Mike Rice <address@hidden>
* Deleted function iso_weeknum(), replaced with iso_week_date()
Modified: trunk/avr-libc/NEWS
===================================================================
--- trunk/avr-libc/NEWS 2013-05-04 11:26:23 UTC (rev 2395)
+++ trunk/avr-libc/NEWS 2013-05-08 11:20:55 UTC (rev 2396)
@@ -12,6 +12,7 @@
[#37778] _MemoryBarrier() in cpufunc.h error on compile
[#38135] Install a dummy stdfix-avrlibc.h
[no-id] XXX_vect_num not consistent io90pwmx.h, iousbxx6_7.h
+ [no-id] Specialize clock_prescale_set/get for mega hvb devices
* New devices supported:
Modified: trunk/avr-libc/include/avr/power.h
===================================================================
--- trunk/avr-libc/include/avr/power.h 2013-05-04 11:26:23 UTC (rev 2395)
+++ trunk/avr-libc/include/avr/power.h 2013-05-08 11:20:55 UTC (rev 2396)
@@ -1537,10 +1537,6 @@
|| defined(__AVR_ATmega3290__) \
|| defined(__AVR_ATmega3290A__) \
|| defined(__AVR_ATmega32C1__) \
-|| defined(__AVR_ATmega32HVB__) \
-|| defined(__AVR_ATmega32HVBREVB__) \
-|| defined(__AVR_ATmega16HVB__) \
-|| defined(__AVR_ATmega16HVBREVB__) \
|| defined(__AVR_ATmega32M1__) \
|| defined(__AVR_ATmega32U2__) \
|| defined(__AVR_ATmega32U4__) \
@@ -1693,7 +1689,39 @@
*/
#define clock_prescale_get() (clock_div_t)(CLKPR &
(uint8_t)((1<<CLKPS0)|(1<<CLKPS1)|(1<<CLKPS2)|(1<<CLKPS3)))
+#elif defined(__AVR_ATmega16HVB__) \
+|| defined(__AVR_ATmega16HVBREVB__) \
+|| defined(__AVR_ATmega32HVB__) \
+|| defined(__AVR_ATmega32HVBREVB__)
+typedef enum
+{
+ clock_div_1 = 0,
+ clock_div_2 = 1,
+ clock_div_4 = 2,
+ clock_div_8 = 3
+} clock_div_t;
+
+static __inline__ void clock_prescale_set(clock_div_t)
__attribute__((__always_inline__));
+
+void clock_prescale_set(clock_div_t __x)
+{
+ uint8_t __tmp = _BV(CLKPCE);
+ __asm__ __volatile__ (
+ "in __tmp_reg__,__SREG__" "\n\t"
+ "cli" "\n\t"
+ "sts %1, %0" "\n\t"
+ "sts %1, %2" "\n\t"
+ "out __SREG__, __tmp_reg__"
+ : /* no outputs */
+ : "d" (__tmp),
+ "M" (_SFR_MEM_ADDR(CLKPR)),
+ "d" (__x)
+ : "r0");
+}
+
+#define clock_prescale_get() (clock_div_t)(CLKPR &
(uint8_t)((1<<CLKPS0)|(1<<CLKPS1)))
+
#elif defined(__AVR_ATtiny24__) \
|| defined(__AVR_ATtiny24A__) \
|| defined(__AVR_ATtiny44__) \
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [avr-libc-commit] [2396] Pitchumani Sivanupandi:,
Joerg Wunsch <=