User Tools

Site Tools


info:avr32_gpio_writing

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
info:avr32_gpio_writing [2009/04/28 08:49] tomgeeinfo:avr32_gpio_writing [2009/04/29 09:59] (current) tomgee
Line 48: Line 48:
 If you want a pure output you should also clear the ODMER otherwise you have an open drain driver if the device is populated with it.\\ If you want a pure output you should also clear the ODMER otherwise you have an open drain driver if the device is populated with it.\\
 And last but not least you should also clear the PUER to keep your power consumption low.  And last but not least you should also clear the PUER to keep your power consumption low. 
 +
 +===== Setting Clock =====
 +
 +    pm_freq_param_t osc;
 +    osc.cpu_f = 66000000;
 +    osc.osc0_f = FOSC0;
 +    osc.osc0_startup = FOSC0_STARTUP;
 +    osc.pba_f = 33000000;
 +    pm_configure_clocks(&osc); 
 + 
 +
 +You can set and reset the port pins directly. Here is an example for PORTB:
 +Code:
 +volatile avr32_gpio_port_t *gpio_port_b = ( volatile avr32_gpio_port_t * ) &gpio_base->port[1];
 +   
 +gpio_port_b->ovrc = 0x00000001; // Clear PORTB0
 +gpio_port_b->ovrs = 0x00000001; // Set PORTB0
 +
 +
 +===== Setting PIO Faster =====
 +
 +This is faster, because you don't have to call a function (saving and restoring of all registers => stack).
 +
 +If you want to set or reset a pin of PORTA:
 +
 +    volatile avr32_gpio_port_t *gpio_port_a = ( volatile avr32_gpio_port_t * ) &gpio_base->port[0];
 +   
 +    gpio_port_a->ovrc = 0x00000001; // Clear PORTA0
 +    gpio_port_a->ovrs = 0x00000001; // Set PORTA0
 +
 +
 +You can also set or reset more than one pin at the same time. 
info/avr32_gpio_writing.1240922954.txt.gz · Last modified: 2009/04/28 08:49 by tomgee