Hallo,
ich würde gerne wissen wie ich in C prüfe ob ein Flag Bit gesetzt ist. Genau geht es um das OCF0A: Timer/Counter 0 Output Compare A Match Flag.
BG
|
Anzeige
|
ATmega Flags checkenHallo, ich würde gerne wissen wie ich in C prüfe ob ein Flag Bit gesetzt ist. Genau geht es um das OCF0A: Timer/Counter 0 Output Compare A Match Flag. BG So wie du jedes andere Bit in jedem anderen Register auch prüfst?
Siehe Bitmanipulation. Also so?
Nein. OCF0A ist schlicht 1, folglich würde auf TOV0 abgefragt (wieder Ihren ATmega328P vorausgesetzt). Also so: '(TIFR0 & (1<<OCF0A))'.
Nein, denn bei den gängigen Compilern enthalten die #defines der Bits die Bitnummer, nicht das Bitmuster. https://www.mikrocontroller.net/articles/Bitmanipulation#Bitmanipulation_beim_MSP430
Gast
#7437254
Nur so nebenbei bemerkt, bei ARM Controllern wäre das der richtige Ansatz.
So Pauschal natürlich Unsinn. Es kommt darauf an ob die Symbole in der verwendeten Headerdatei Bitmasken oder Bitnummern sind. Das hat mit der Architektur gar nichts zu tun.
Gast
#7437269
Die Struktur der Header Dateien (CMSIS Core) ist von ARM vorgegeben.
Nein es werden die CMSIS Header von ARM bereitgestellt. Was niemand dazu verpflichtet diese zu benutzen und keine Anderen. Also wäre deine Aussage korrekt wenn du schreiben würdest dass dies bei CMSIS Nutzung die korrekte Vorgehensweise wäre. Abgesehen davon sind die Peripherieregister gar nicht Teil der CMSIS sondern Herstellerabhängig. Und z.B. STM kann hier bei StdPeriphLib oder HAL machen was sie wollen. Teilweise werden Masken und Nummern parallel angeboten.
Nein. Und das haben die anderen ja schon zur Genüge geschrieben. Das Traurige dabei ist, dass es überhaupt möglich ist, so einen Mist erfolgreich zu compilieren: TIFR0 ist von DT volatile uint8_t und OCF0A ist schlicht ein int-Literal. Dabei ist prinzipiell einfach das zu verhindern!
Na dann mal los, schreib komplett neue Header und die ganze Definitionen für die IO-Register.
Das kann man aus den XML-Files der Hersteller generieren. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|