u8glib ohne blockierung?

Gast #4449099
Lesenswert?
• ▲
▼
Hallo,

gibt es eine Möglichkeit, die u8glib so nutzen, dass diese nicht den 
Ablauf blockiert? Problem ist, ich rufe alle 5ms eine Funktion auf, die 
wird durch das Display sehr start ausgebremmst. Schön wäre es, wenn ich 
einmalig den Speicher beschreibe, und das ganze dann dargestellt wird, 
ohne das ich da selber erneut die Funktion aufrufen muss. Sowas wie eine 
ISR, die alle x ms den nächsten Befehl schickt.
1
void draw(uint8_t *data)
2
{
3
  u8g_FirstPage(&u8g);
4
  do
5
  {
6
    u8g_SetFont(&u8g, u8g_font_6x10);
7
    u8g_DrawStr(&u8g, 4, 63, "0");
8
    u8g_DrawStr(&u8g, 20, 63, "1");
9
    u8g_DrawStr(&u8g, 36, 63, "2");
10
    u8g_DrawStr(&u8g, 52, 63, "3");
11
    u8g_DrawStr(&u8g, 68, 63, "4");
12
    u8g_DrawStr(&u8g, 84, 63, "5");
13
    u8g_DrawStr(&u8g, 100, 63, "6");
14
    u8g_DrawStr(&u8g, 116, 63, "7");
15
    
16
    for(uint8_t i = 0; i < 8; i++)
17
    {
18
      uint8_t y = ((data[i])/8)+1;
19
      for(uint8_t j = 63; j > 63 - y ; j--)
20
      u8g_DrawHLine(&u8g, 2+(i*16)-1, j-12, 12);
21
    }
22
  }
23
}
#4449112
Lesenswert?
• ▲
▼
@ Sascha (Gast)

>gibt es eine Möglichkeit, die u8glib so nutzen, dass diese nicht den
>Ablauf blockiert?

Welche Funktion der Lib blockiert denn deinen Ablauf?

> Problem ist, ich rufe alle 5ms eine Funktion auf, die
>wird durch das Display sehr start ausgebremmst.

Wieso? Wenn dein 5ms Funktion in einer Timer-ISR steckt, kann deine Lib 
gar nicht bremsen.

> Schön wäre es, wenn ich
>einmalig den Speicher beschreibe, und das ganze dann dargestellt wird,
>ohne das ich da selber erneut die Funktion aufrufen muss.

Muss du bei der Lib sicher auch nicht.

> Sowas wie eine
>ISR, die alle x ms den nächsten Befehl schickt.

>void draw(uint8_t *data)

Was ist mit dieser Funktion?
Gast #4449121
Lesenswert?
• ▲
▼
arg, oben der Code war nicht vollständig
1
void draw(uint8_t *data)
2
{
3
  u8g_FirstPage(&u8g);
4
  do
5
  {
6
    u8g_SetFont(&u8g, u8g_font_6x10);
7
    u8g_DrawStr(&u8g, 4, 63, "0");
8
    u8g_DrawStr(&u8g, 20, 63, "1");
9
    u8g_DrawStr(&u8g, 36, 63, "2");
10
    u8g_DrawStr(&u8g, 52, 63, "3");
11
    u8g_DrawStr(&u8g, 68, 63, "4");
12
    u8g_DrawStr(&u8g, 84, 63, "5");
13
    u8g_DrawStr(&u8g, 100, 63, "6");
14
    u8g_DrawStr(&u8g, 116, 63, "7");
15
    
16
    for(uint8_t i = 0; i < 8; i++)
17
    {
18
      uint8_t y = ((data[i])/8)+1;
19
      for(uint8_t j = 63; j > 63 - y ; j--)
20
      u8g_DrawHLine(&u8g, 2+(i*16)-1, j-12, 12);
21
    }
22
  }while(u8g_NextPage(&u8g));
23
}
Problem ist, dass die Schleife solange abgearbeitet wird, biw 
u8g_Nextpage erkannt wird. Das rausschicken dauert scheinbar seine Zeit. 
Zeitmessung kann ich gleich raussuchen.
#4449128
Lesenswert?
• ▲
▼
@Sascha (Gast)

>arg, oben der Code war nicht vollständig

Warum? Hast du ihn abgetippt? NEIN!

https://www.mikrocontroller.net/articles/Netiquette#.C3.84u.C3.9Fere_Form

"Quelltext nie abtippen, sonder immer das direkt kopierte Original 
posten, anderenfalls schleichen sich neue Fehler ein oder die 
existierenden werden nicht abgeschrieben."

>Problem ist, dass die Schleife solange abgearbeitet wird, biw
>u8g_Nextpage erkannt wird.

Logisch.

> Das rausschicken dauert scheinbar seine Zeit.

Auch klar.

>Zeitmessung kann ich gleich raussuchen.

Nebensächlich. Wo ist denn deine 5ms Funktion? Wo wird die aufgerufen?

Netiquette!

Antwort schreiben

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.

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.