RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBO 2 NIBO2 LIB 2.11 Update?

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7426 private projects
  • 385 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: NIBO2 LIB 2.11 Update?

NIBO2 LIB 2.11 Update? 12 Jahre 1 Woche her #1127

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
Hallo workwind,
warum sind die Variablen pwm_timer_ms und pwm_timer_s nicht als volatile deklariert?
Ich benötige für mein Programmkonzept - ich mag keine delay() - eine feste Zykluszeit, und habe es so probiert:
int main {
while(1==1){
// Mainloop soll alle 10ms einmal durchlaufen werden
uint16t zyklus = pwm_timer_ms + ZYKLUSZEIT;
input_update();
     ::
Display_Fun();
while(zyklus < pwm_timer_ms) {}
}
return 0;
}
Und das untere while funzt nicht, weil das pwm_timer_ms einmal in ein Register geladen wird, und immer wieder nur der Registerinhalt ohne Aktualisierung verglichen wird.
Meine einzig bekannte Lösung ist, das pwm_timer_ms als volatile zu deklarieren, aber dann würde mein Code nicht mehr hier in roboter.cc funktionieren.
Ich denke mal, das trifft auch für alle anderen Variablen zu, die über Interrupt verändert werden.

Und dann frage ich mich, warum sind die Variablen vom CoPro public. Fast alle anderen sind nur über Methoden änder- und abfragbar (gfx_draw_mode()..).
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: NIBO2 LIB 2.11 Update? 11 Jahre 11 Monate her #1190

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
In einem Thread wurde ja schon berichtet, dass die NiboLib Funktionen enthält, die nicht in der Doku auftauchen "leds_set_status_intensity()"..
Ich bin jetzt über eine dokumentierte Funktion gestolpert, die aber nicht in der Lib implementiert ist "gfx_term_print_P(PGM_P text)" :whistle:
// Diese Funktion wurde in der gfx Bibliothek vergessen,
// obwohl sie in der gfx.h. deklariert ist...
static uint8_t gfx_term_col=0, gfx_term_row=0;
 
void gfx_term_print_P(PGM_P text) {
  gfx_set_proportional(0);
  uint8_t c;
  while ((c = pgm_read_byte(text++))) {
    if (c==10) {
      gfx_term_col = 0;
      gfx_term_row++;
      if (gfx_term_row==8) {
        gfx_term_scroll(1);
      }
    } else if (c==13) {
 
    } else {
      if (gfx_term_col>=21) {
        gfx_term_col = 0;
        gfx_term_row++;
        if (gfx_term_row==8) {
          gfx_term_scroll(1);
        }
      }
      gfx_move(gfx_term_col*6, gfx_term_row*8);
      gfx_print_char(c);
      gfx_term_col++;
    }
  }
}
Die beiden Variablen gfx_term_col und gfx_term_row wurden hier notgedrungen eingefügt, weil sie nicht in der gfx.h "publiziert" werden.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
  • Seite:
  • 1
Ladezeit der Seite: 0.088 Sekunden

Werbung