Fehler bei Umwandlung mit atoi?

Gast #234025
Lesenswert?
• ▲
▼
Hallo!

Ich habe hier ein (mir unverständliches) Problem mit der
atoi-Anweisung. Ich möchte auf einem LCD eine Uhr anzeigen. Dazu werden
per Interrups (jede sekunde) 3 globale Variablen wie folgt hochgezählt:
1
/* Globale Variablen definieren */
2

3
volatile uint8_t ValueS;
4
volatile uint8_t ValueM;
5
volatile uint8_t ValueH;
6
volatile uint8_t TimeChanged;
7

8
/* ISR für den Compare Match 1A Interrupt*/
9
SIGNAL(SIG_OUTPUT_COMPARE1A)
10
{
11
  /* Uhrzeit weiterzählen */
12
  if (++ValueS == 60)
13
  {
14
    ValueS = 0;
15
    if (++ValueM == 60)
16
    {
17
      ValueM = 0;
18
      if (++ValueH == 24)
19
        ValueH = 0;
20
    }
21
  }
22

23
  /* Als Sekundenanzeige die LED's blinken lassen */
24
  PORTB = ~PORTB;
25

26
  /* Änderungsmarker für Zeitanzeige hochzählen */
27
  TimeChanged++;
28
}

Im Hauptprogramm wird das Änderungsflag überprüft (TimeChanged > 0) und
dann die aktuelle Uhrzeit angezeigt:
1
int main(void)
2
{
3
  char buffer[15];        /* Puffer für Stringumwandlung */
4
    
5
  init_io();              /* IO's initialisieren */
6
  init_timer();           /* Timer initialisieren */
7
  lcd_init(LCD_DISP_ON);  /* LCD-Display initialsieren */
8

9
  /* Grundbild auf LCD ausgeben */
10
  lcd_puts("  Thorstens BasUhr");
11
  lcd_gotoxy(6,2);
12
  lcd_puts("00:00:00");
13

14
  /* Endlose Hauptschleife */
15
  for (;;)
16
    if( TimeChanged > 0 )
17
    {
18
      lcd_gotoxy(6,2);
19
      itoa(ValueH, buffer, 2);
20
      lcd_puts(buffer);
21
      lcd_gotoxy(9,2);
22
      itoa(ValueM, buffer, 2);
23
      lcd_puts(buffer);
24
      lcd_gotoxy(12,2);
25
      itoa(ValueS, buffer, 2);
26
      lcd_puts(buffer);
27
      TimeChanged = 0;
28
    }
29
}

Auf dem Display erscheint aber statt meiner Uhrzeit z.B. bei den
Sekunden nicht etwa 1, 2, 3, 4, 5, 6, 7, usw., sondern
0, 1, 10, 11, 100, 101, 110, 111, 1000, usw.

Was mach ich da denn falsch? Wieso wandelt mit itoa das so merkwürdig
um?

Hat da einer eine Idee zu?

Vielen Dank

MfG Thorsten
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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.