Porting von IAR zu GCC

Gast #5001214
Ich habe vor einiger Zeit AVR449 auf C++ portiert.

  typedef struct PMSMflags {
//*************************************************
    uint8_t motorStopped     : 1;                //
    uint8_t motorSynchronized: 1;                //
    uint8_t actualDirection  : 2;                //
    uint8_t desiredDirection : 1;                //
    uint8_t driveWaveform    : 2;                //
    uint8_t unused           : 1;                //
//*************************************************
 } PMSMflags_t;

// GPIOR0 BitFlag
//*************************************************
// iotn861a.h
//*************************************************
//#define GPIOR0 _SFR_IO8(0x0A)
//*************************************************
  #define fastFlags (*(PMSMflags_t*) &GPIOR0)    //

//         (*(volatile PMSMflags_t*) &GPIOR0)    // !! IS NoGo with C++
(Firma: matzetronics) #5002037
Johann L. schrieb:
> Ist aber nur ne Frage der Zeit bis das Probleme bereitet, und dann
> suchst du dir nen Wolf.

Ich habe das auch nur mit wenigen ausgesuchten Registern gemacht (R9, 
R2,R4 und R8, wimre). Im Grunde ist selbst das bei AVR447 unnötig, da 
der MC auch mit normalen Variablen für den Algorithmus schnell genug 
ist.
Hast du denn einen Lösung für den TE? Es geht um die Benutzung von 
GPIOR0-GPIOR2 als bitadressierbaren schnellen Speicher.
Für einfache uint8_t Variablen geht ja sowas hier
1
#define amplitude GPIOR1
2
#define sineTableNextSectorStart GPIOR2
Aber eben nicht für diese struct:
1
typedef struct PMSMflags
2
{
3
  uint8_t motorStopped : 1;     //! Is motor stopped?
4
  uint8_t motorSynchronized: 1; //! Is motor synchronized? Does not have any meaning when motorStopped is TRUE.
5
  uint8_t actualDirection : 2;  //! The actual direction of rotation.
6
  uint8_t desiredDirection : 1; //! The desired direction of rotation.
7
  uint8_t driveWaveform : 2;    //! The current waveform that should be produced.
8
} PMSMflags_t;

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.