AVR Studio 6 Simulation zeigt nicht alles

#3604855
Lesenswert?

Hallo Leute,
ich wollte ein bischen mit C Code rum spielen und schauen wann was 
passiert. Wenn ich mit der Maus über eine Char Vareable blendet sich ein 
kleines Fenster auf wo ich alles über diese Verable sehen kann. Wie auf 
dem Bild zu sehen. Wenn ich jetzt das selbe mir der uint8_t Vareable 
zahl machen will klappt das nicht warum?
Wie auf dem Bild müsste jetzt bei zahl 1 stehen. Da kommt aber nichts. 
Gehe ich einen Schritt weiter Wird die Rechnung Zahl + 10 gemacht was 11 
ergibt. und aufeinmal kann ich 11 sehen. Die double Vareable wird 
pufferd wird nie angezeigt.

Muss ich noch irgenwas einstellen damit mir mehr angezeigt wird?

Hie nochmal den vollständigen Code:
1
#include <avr/io.h>
2
#include <stdlib.h>
3

4
int main(void)
5
{
6
  // Port als Ausgang definieren
7
  DDRB = 0xff;
8
  // Pullups für die Eingänge aktivieren
9
  // PC6 ist Reset, PC7 Gibs bei ATMega8 nicht
10
  PORTC = ((1 << PC0) | (1 << PC1) | (1 << PC2) | (1 << PC3) | (1 << PC4) | (1 << PC5));
11
  PORTD = ((1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4) | (1 << PD5) | (1 << PD6) | (1 << PD7));
12
    
13
  // Vareablen deklarieren
14
  char pufferc[] = {"123"};
15
  char pufferc2[21];
16
  double pufferd;
17
  uint8_t zahl;
18
  
19
  while(1)
20
    {
21
    // Einfach mal zum Spaß einen Eingang abfragen - Frage ist eh wahr
22
    if (!(PIND & (1 << PD0)))
23
    {
24
      // Zahl aus String holen
25
      pufferd = atol(&pufferc[0]);
26
      // Zahl wieder in String umwandeln (neue Formatierung)
27
      dtostre(pufferd,pufferc2,20,0);
28
      // versuchen eine einzelne Zahl aus dem String zu holen
29
      zahl = (int)pufferc2[0] - 48;
30
      // Zahl einfach mal bearbeiten
31
      zahl = zahl + 10;
32
      // Zahl ausgeben damit sie vom compiler nicht weg optimiert wird
33
      PORTB = zahl;
34
    }
35
    }
36
}
Angehängte Dateien:
#3605655
Lesenswert?

Es können nur die Werte dargestellt werden, denen eindeutig ein 
Speicherort zugeordnet werden kann. Wird eine Variable, z.B., nur in 
einem Register gehalten und dieses Register wird später|vorher auch noch 
für was anderes verwendet, dann wird's schwierig...
Wenn's unbedingt sein muss: Variable zum Test 'volatile' deklarieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren