Performance GPIO SAM3X8E Fontgröße
ADMIN schreibt um 14:07:51 am 15.02.2015 PM | antworten
Es gibt verschiedene Möglichkeiten, einen Port ein- und auszuschalten. Ich habe mal untersucht, welche Art die Schnellste ist.

1. Art: 
//siehe http://asf.atmel.com/docs/latest/sam3x/html/ioport_quickstart.html
#define PIN11 IOPORT_CREATE_PIN(PIOD, 7) // So wird Pin 11 adressiert, siehe Port Layout.
ioport_init();
ioport_set_pin_dir(PIN11, IOPORT_DIR_OUTPUT); 
while(1)
{
ioport_set_pin_level(PIN11, HIGH); 
ioport_set_pin_level(PIN11, LOW);
}
//Es ergibt sich an PIN 11 ein Rechteck mit 16,7 MHz

2. Art: 
#define LED_RED PIO_PB27  //So wird Pin 13 mit der LED adressiert
ioport_init();
pio_set_output(PIOB, LED_RED, LOW, DISABLE, ENABLE);
while(1)
{
PIOB->PIO_SODR = LED_RED;  
PIOB->PIO_CODR = LED_RED;
}
Diese Art ist genauso schnell wie die 1.

3. Art:
#define LED_RED PIO_PB27  //So wird Pin 13 mit der LED adressiert
ioport_init();
pio_set_output(PIOB, LED_RED, LOW, DISABLE, ENABLE);
while(1)
{
pio_set(PIOB, LED_RED);// 1,8 MHz
pio_clear(PIOB, LED_RED);
}
Diese Art ist mit 1.8 MHz fast 10 mal so langsam, wie die beiden anderen. So intuitiv diese Schreibweise ist, so langsam ist sie.




Beitrag kommentieren
markierte Stelle 'fett' schreiben markierte Stelle 'kursiv' schreiben markierte Stelle unterstreichen markierte Stelle als Böbbel-Liste formatieren markierte Stelle als numerierte Liste formatieren markierte Stelle herausrücken markierte Stelle einrücken Link einfügen Bild einfügen Undo Redo Bilder hochladen  Einloggen  Ausloggen  Registrieren
   
Seite bookmarken bei:
del.icio.us Mister Wong Folkd OneView Linkarena Google Yahoo MyWeb BlinkList Furl YiGG
 
[Impressum | Datenschutzerklärung]