- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 20

Thema: MAL Wieder "C" Frust

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #19
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo CEOS,
    für mein count Problem habe ich jetzt auch einen anderen Weg genommen,
    scheinbar ähnlich deiner Beschreibung.
    Ich habe jetzt getrennte Einlese und Auslesezeiger.
    Der Empfangs RX-Interrupt benutzt nur "seinen" Einlesezeiger.
    Das Hauptprogramm seinen "Auslesezeiger"
    Hier kann man nun, um die Anzahl Bytes im RX Puffer zu ermitteln,
    ohne Probleme beide Werte voneinander abziehen.
    Es spielt nun auch keine Rolle mehr ob es indexe in das Array sind
    oder direkt Zeiger auf die entsprechende Pufferpositionen.

    rx_count = abs(inPtr-outPtr) // oder auch umgekehrt.

    Ein Problem könnte aber immer noch auftauchen,
    bei 8 Bit Controllern, wenn er Low und High Byte bei Zugriffen separat tätigt.
    also:

    inc(LowByte); wenn LowByte = 0 dann inc(HighByte)

    Microchip PIC-Code:
    incfz rx_count+0 // increment low byte of count, scip next Line if Zeroflag is set
    incf rx_count+1 // else increment also the High Byte of count

    Eine wasserdichte Software zu schreiben ist eine echte Herausforderung.....
    Interrupts sperren mag ich eigentlich überhaupt nicht, ist aber manchmal unumgänglich.
    -----
    Zu deinem Konstrukt:
    Ui, da muss ich erstmal durchblicken....ich analysiere aber noch.
    Im Prinzip habe ich es, glaube ich zumindest, verstanden um was es geht.
    Bei Dir bildet sich die case Schleife selbständig indem Du die obige Struktur erweiterst.

    Etwas ähnliches (ist aber doch um einiges anders) habe ich in meinem Setupmenü gemacht.

    Code:
    /* every menu point has the following structure */
    typedef struct
    {
      U16 menu_no;             /* displayed menu no */
      U8  flags;               /* 3 flags for User, Service, Internal Setupmode */
      S16 min;                 /* min value of parameter for range check */
      S16 max;                 /* max value of parameter for range check */
      U8  led_code[3];         /* 3 Digit LED Information Text, only 2 digits used */
      U8  lcd_code[20];        /* 20 Digit LCD Information Text, not used at time */
      void (*MenuFunc)();      /* call this function if menu point want to change */
      void (*OnChangeFunc)();  /* maybe call a special function if param changed */
      } TMenuPoint;
    
    /* here is the complete initialized Setup Menu */
    const TMenuPoint menu[]={
    { 1,   /* Key Beep Volume Frontpanel Buttons */
      F_USER + F_SERVICE + F_INTERNAL,
      BEEP_MIN_VOL,BEEP_MAX_VOL,
      {SEG_CODE_b,SEG_CODE_0,0},       /* displaycode "b0" */
      "Key Beep            ",
      Setup_VolumeKeyBeep,
      OnChangeBeeper
      },
      
      { 2,   /* Overpressure Beep Volume */
      F_USER + F_SERVICE + F_INTERNAL,
      BEEP_MIN_VOL,BEEP_MAX_VOL,
      {SEG_CODE_b,SEG_CODE_1,0},        /* displaycode "b1" */
      "Overpressure Beep   ",
      Setup_VolumeOverpressureBeep,
      OnChangeBeeper
      },
      
    .......
    Mein Code ist doch was ganz anderes, stelle ich grad fest, ist auch kaum statisch zu analysieren denke ich...

    Ich habe mit Macros noch nicht viel gemacht in "C" hier kann man sich doch Einiges vereinfachen wie ich deinem Code entnehme.
    Im PIC Assembler habe ich aber derart viele Macros geschrieben, das es später schon fast wie ein Hochsprache aussah.

    Mit Code coverage usw. habe ich auch noch nichts zu tun gehabt. Machst Du solche Tests mit "Tessy" ? oder welche Tools benutzt Du dafür ?



    Siro
    Geändert von Siro (26.11.2018 um 13:39 Uhr)

Ähnliche Themen

  1. " DiBaDu und Dein Verein" für Hackerspace Bremen 2017 - wieder dabei !
    Von Andree-HB im Forum Offtopic und Community Tratsch
    Antworten: 67
    Letzter Beitrag: 08.11.2017, 06:46
  2. [ERLEDIGT] Mal wieder eine "fast" funktionierende Stoppuhr
    Von Unregistriert im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 09.08.2016, 08:53
  3. Genfer Autosalon 2016 - "Knutschkugel" Isetta kommt wieder - als Elektroauto
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 02.03.2016, 12:30
  4. Versteckte Ordner wieder "unversteckt" machen
    Von Sebas im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 2
    Letzter Beitrag: 20.09.2011, 15:19
  5. "Make all" schon wieder Probleme
    Von Spongebob85 im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 08.08.2007, 20:06

Berechtigungen

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

Labornetzteil AliExpress