[En-Nut-Discussion] Do we need something like sbv/sbi to complement	sbi/cbi?
    Uwe Bonnes 
    bon at elektron.ikp.physik.tu-darmstadt.de
       
    Thu Dec 29 17:11:00 CET 2011
    
    
  
Hello,
in Ulrich's devnut_m3n, some function used
  sbi( ) and cbi()
Obvious, the stm libraries define register bits with their bit value
#define  TIM_SR_UIF                          ((uint16_t)0x0001)
and not bit positions like
#define  TIM_SR_UIF_BIT                         0
The s/cbi macro expands in devnut_m3n expands like
#define cbi(_reg, _bit)         outr(_reg, inr(_reg) & ~_BV(_bit)) 
and was used like
  cbi( &TIM->SR, TIM_SR_UIF );
and so things got wrong.
The coding style rules say  that direct register access like 
TIM2->SR |=  TIM_SR_UIF 
is deprecated. So either explicit writing
outr(_reg, inr(_reg) & _mask)
is needed, or some macros to do so. In my tree I added
#define sbv(_reg, _mask)         outr(_reg, inr(_reg) | _mask)
#define cbv(_reg, _mask)         outr(_reg, inr(_reg) & ~_mask)
#define bv_is_set(_reg, _mask)  ((inr(_reg) & _mask)) != 0)
Are these macros the right thing?
Bye
-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de
Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
    
    
More information about the En-Nut-Discussion
mailing list