mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CMSIS => Werden keine Bitnamen benutzt?


Autor: Gastel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich suche mir gerade etwas über CMSIS-Zeugs zusammen. Sehe ich das 
richtig, daß es dort keine Bitnamen gibt, sondern nur magic numbers 
verwendet werden? So wie
LPC_RTC -> CIIR |= 0x02;
oder
LPC_RTC -> ILR = (1<<1);
statt
LPC_RTC -> CIIR |= (1<<IMMIN);
Das wäre ja äußerst unschön; gerade hatte ich mich an sprechende 
Bitnamen gewöhnt (und diese auch schätzen gelernt).

Btw: Kann man bei der RTC des LPC17xx tatsächlich nur auswerten, daß ein 
Increment-Interrupt da war, aber nicht welcher? Wäre auch schlecht, denn 
wenn ich Interrupts bei Increment Minute (Temperaturmessung) und 
Increment Stunde (Übertrage die letzten Meßwerte und prüfe dabei 
Verbindung) aktiviere, kann ich die Interrupts ja gar nicht 
unterscheiden und indivuduell handlen (und bitte nicht den Tip mit 
Variable bis 60 zählen und dann ..)

Autor: Oliver B. (irq)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gastel,

die Bitnamen gibt es so in dieser Form nicht. Allerdings gibt es z.B. in 
der STMStdPeripherial Library Bitmasken für das setzen bestimmter 
Optionen, was eigentlich noch viel praktischer ist (ok, Ansichtssache).

Z.B. hier in der stm32f10x_adc.h:
/** @defgroup ADC_mode 
  * @{
  */

#define ADC_Mode_Independent                       ((uint32_t)0x00000000)
#define ADC_Mode_RegInjecSimult                    ((uint32_t)0x00010000)
#define ADC_Mode_RegSimult_AlterTrig               ((uint32_t)0x00020000)
#define ADC_Mode_InjecSimult_FastInterl            ((uint32_t)0x00030000)
#define ADC_Mode_InjecSimult_SlowInterl            ((uint32_t)0x00040000)
#define ADC_Mode_InjecSimult                       ((uint32_t)0x00050000)
#define ADC_Mode_RegSimult                         ((uint32_t)0x00060000)
#define ADC_Mode_FastInterl                        ((uint32_t)0x00070000)
#define ADC_Mode_SlowInterl                        ((uint32_t)0x00080000)
#define ADC_Mode_AlterTrig                         ((uint32_t)0x00090000)

Die kann man dann zur Initialisierung mit den Init-Structs verwenden.

Autor: Gastel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Oliver,

aber das scheint dann ja STM-spezifisch zu sein (und nicht einheitlich 
durch/in CMSIS geregelt). Ich hatte CMSIS, zumindest überwiegend, als 
Grundlage verstanden; die Gruppe "RTC" für die Real Time Clock z.B. wird 
in CMSIS einheitlich so genannt. Wenn ein Hersteller das bei sich intern 
"Suppenverbieger_td3" nennt darf er das ruhig, er muß nur eine (seine 
spezifische) .h-Datei nach dem Motto
#define RTC Suppenverbieger_td3
liefern, welche diese kranke Bezeichnung vor dem Programmierer verbirgt 
(klar sind da dann konkrete Register in einer Registergruppe).

Leider habe ich wohl bisher zu oberflächlich geschaut. Andererseits 
meine ich genau so eine Aussage z.B. von Herrn Keil gelesen zu haben. 
Weil wenn dem nicht so ist, ist das mit der Vereinheitlichung auch nur 
"halber Kram".

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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