- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 11 bis 20 von 32

Thema: SMT32 - Ports konfigurieren, Frage zur C-Syntax

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Zitat Zitat von Unregistriert Beitrag anzeigen
    Es funktioniert endlich. Die Taktversorgung gehört an den Anfang. Anscheinend werden die Befehle, mit denen die GPIO-Register beschrieben werden, ohne Taktversorgung nicht ausgeführt.
    Sinn des Ganzen ist die Stromersparnis. Bei CMOS setzt sich der Stromverbrauch aus den Leckströmen und einem Strom, welcher direkt proportional zur Taktfrequenz ist, zusammen. Bei Batteriebetrieb zählt da jedes mA! Teilweise wird aber nicht nur der Takt, sondern auch die Betriebsspannung ganzer Schaltungsteile abgeschaltet, das reduziert dann auch noch die Leckströme.

    Zitat Zitat von Unregistriert Beitrag anzeigen
    Habe aber noch einen kleinen Fehler gemacht (der sich hier nicht auswirkt aufgrund der internen Logik des Controllers, aber nichtsdestotrotz sollte man das anders machen...):
    Das BSRR-Register ist ein Write-Only-Register. Daher muss die Anweisung wie folgt lauten - auch wenn es jetzt so klappt:

    Code:
    GPIOA->BSRR = GPIO_BSRR_BS_5;
    Also keinen Oder-Operator benutzen.
    Es ist egal welche Variante du nimmst.
    Write-Only-Register lesen sich, in diesem Fall, immer als 0, egal auf welche Werte das Register gesetzt ist.

    Wenn du jetzt mehrere Bist verwalten willst, musst du ein Schatten-Register führen.
    Also eine statische Variable, welch du wie das Register behandelst. Da kannst du dann einzelne Bis setzen oder löschen.
    Wenn du mit dem Modifizieren der Bits fertig bist, schreibst du den Wert der Variablen ins Register.

    WO-Register verwendet der Hersteller für Register welche in typischen Anwendungen nur bei der Initialisierung der Anwendung beschrieben werden müssen. Das spart Einiges an Transistoren und Platz auf dem Chip. Bei untypischen Anwendungen muss man sich dann halt mit dem Schattenregister behelfen.

    Das ist auch der Grund für die HAL-Bibliotheken. Da werden, wo nötig, Schattenregister geführt und der Programmierer muss keine Ahnung von dieser Hardware-Eigenschaft haben. Über den HAL sind alle Register auch lesbar.
    Allerdings kostet dies Programmspeicher und Laufzeit. Bei zeitkritischen Aufgaben, weiss man aber nie, was der HAL so alles macht und ganz lustig kann es werden, wenn der HAL ein Update erfahren hat.

    MfG Peter(TOO)
    Geändert von Peter(TOO) (18.06.2016 um 18:47 Uhr)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

Ähnliche Themen

  1. Syntax-Frage -> writeString(char *string)
    Von Furzgas im Forum Robby RP6
    Antworten: 13
    Letzter Beitrag: 31.12.2009, 08:06
  2. Frage zum Ansteuern von Ports/Programmierfrage
    Von Geimel im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 26.01.2007, 22:29
  3. Kurze Syntax Frage
    Von Brantiko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 18.01.2007, 18:58
  4. Frage zum Programmieren der Ports
    Von Geimel im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 07.08.2006, 19:29
  5. kleine Frage zur Syntax
    Von freddy0815 im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 07.02.2005, 14:19

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test