LED blinken lassen unter Atmel Studio Fontgröße
ADMIN schreibt um 15:15:26 am 14.02.2015 PM | antworten
Hier ist das Programm, das 3 LEDs auf dem Arduino Board blinken lässt. Statt timer werden schnelle Warteschleifen verwendet, um die Komplexität zu verringern. 
Verbindet man sich über ein Terminal Programm mit dem Due-Port, dann erhält man einige Ausgaben angezeigt.
Achtung: Solange das Terminal Programm mit dem Due verbunden ist, kann nicht geflasht werden. 
Die Pinbelegung sieht man unter http://www.robgray.com/temp/Due-pinout.pdf

#include <asf.h>

#include "arduino_due_x.h"

#define STRING_EOL    "\r"
#define STRING_HEADER "-- DUE Programm --\r\n" \
"-- "BOARD_NAME" --\r\n" \
"-- Compiled: "__DATE__" "__TIME__" --"STRING_EOL

#define LED_RED PIO_PB27
#define LED_TX PIO_PA21
#define LED_RX PIO_PC30

static void configure_console(void)
{
const usart_serial_options_t uart_serial_options = {
.baudrate = CONF_UART_BAUDRATE,
#ifdef CONF_UART_CHAR_LENGTH
.charlength = CONF_UART_CHAR_LENGTH,
#endif
.paritytype = CONF_UART_PARITY,
#ifdef CONF_UART_STOP_BITS
.stopbits = CONF_UART_STOP_BITS,
#endif
};

/* Configure console UART. */
sysclk_enable_peripheral_clock(CONSOLE_UART_ID);
stdio_serial_init((Usart *)CONF_UART, &uart_serial_options);
}
int main (void)
{
sysclk_init();
board_init();
ioport_init();
configure_console();
puts(STRING_HEADER);
pio_set_output(PIOB, LED_RED, LOW, DISABLE, ENABLE);
pio_set_output(PIOA, LED_TX, LOW, DISABLE, ENABLE);
pio_set_output(PIOC, LED_RX, LOW, DISABLE, ENABLE);
int i;
while (1) {

for(i = 0; i<1000000; i++){}
//1. Art, einen Port zu setzen und zu löschen
PIOB->PIO_SODR = LED_RED;
puts("RED on");
for(i = 0; i<1000000; i++){}
PIOB->PIO_CODR = LED_RED;
puts("RED off");
for(i = 0; i<1000000; i++){}
//2. Art, einen Port zu setzen und zu löschen
pio_set(PIOA, LED_TX);
for(i = 0; i<1000000; i++){}
pio_clear(PIOA, LED_TX);
for(i = 0; i<1000000; i++){}
//Man muss aufpassen, dass man PIOC wählt, wenn die LED mit PIO_PC30 verbunden ist
PIOC->PIO_SODR = LED_RX;
for(i = 0; i<1000000; i++){}
PIOC->PIO_CODR = LED_RX;
}
}





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]