Forum: Mikrocontroller und Digitale Elektronik Arduino Due: LED ein- und ausschalten


von hol (Gast)


Lesenswert?

Hallo Leute,

auf dem Arduino Due möchte ich die LED an PD13 ausschalten (Diese 
leuchtet aktuell bei mir. Alle anderen Pins sind auch High).
Ich programmiere mit AtmelStudio und dem ICE-Programmieradapter.
Der unten stehende Code lässt sich zwar flashen, aber die LED bleibt an.

Ich hoff ihr könnt mir weiterhelfen.
1
#include "sam.h"
2
3
4
int main(void)
5
{
6
    /* Initialize the SAM system */
7
    SystemInit();
8
  
9
  //Enable PIO control
10
  REG_PIOD_PER |= (1<<13);
11
  //Disable PD13
12
  REG_PIOD_ODR |= (1<<13);
13
  
14
15
    /* Replace with your application code */
16
    while (1) 
17
    {
18
    
19
    
20
    }
21
}

Beitrag #5614502 wurde vom Autor gelöscht.
von Michael B. (laberkopp)


Lesenswert?

hol schrieb:
> auf dem Arduino Due möchte ich die LED an PD13 ausschalten

Es gibt kein PD13
https://content.arduino.cc/assets/DUE_V02g_sch.pdf

Es gibt nur ein PWM13 auf PB27

Ausserdem ist dein Code kein Arduino-Code,
(digitalWrite...)
sondern nativ Atmel SAM3X8E ARM Cortex-M3.

: Bearbeitet durch User
von hol (Gast)


Lesenswert?

Michael B. schrieb:
> Ausserdem ist dein Code kein Arduino-Code,
> (digitalWrite...)
> sondern nativ Atmel SAM3X8E ARM Cortex-M3.

Das ist doch kein Problem?

Michael B. schrieb:
> Es gibt nur ein PWM13 auf PB27

Ich habe meinen Code auf PB27 angepasst und auch das hat nicht 
funktioniert.

von Stefan F. (Gast)


Lesenswert?

Ich nehme an, dass du die LED so angeschlossen hast, dass sie bei High 
Pegel leuchtet. Durch den Ausdruck "|= (1<<bitNr)" setzt du den Pin auf 
High. Um ihn auf Low zu setzen, musst du "&= ~(1<<bitNr)" schreiben.

Etwas effizienter ist es, einzelne Pins über das _SODR Register auf High 
zu setzen oder über _CODR auf Low zu setzen.

von lololo (Gast)


Lesenswert?

PIOB->PIO_OER = pin_hex_adress;
PIOB->PIO_PUDR = pin_hex_adress;
PIOB->PIO_CODR = pin_hex_adress;

pin_hex_adress ist in dem Fall PB27 0x08000000

von lololo (Gast)


Lesenswert?

zum ausschalten:

PIOB->PIO_OER = pin_hex_adress;
PIOB->PIO_PUDR = pin_hex_adress;
PIOB->PIO_SODR = pin_hex_adress;

von Kaj (Gast)


Lesenswert?

Du musst den Watchdog ausschalten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.