mikrocontroller.net

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


Autor: hol (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
#include "sam.h"


int main(void)
{
    /* Initialize the SAM system */
    SystemInit();
  
  //Enable PIO control
  REG_PIOD_PER |= (1<<13);
  //Disable PD13
  REG_PIOD_ODR |= (1<<13);
  

    /* Replace with your application code */
    while (1) 
    {
    
    
    }
}

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

Bewertung
0 lesenswert
nicht 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
Autor: hol (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
Autor: lololo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: lololo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zum ausschalten:

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

Autor: Kaj (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst den Watchdog ausschalten.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.