Forum: Mikrocontroller und Digitale Elektronik Wie kann ich mir Variablen anzeigen lassen?


von Bastelmaus (Gast)


Lesenswert?

Hallo,
ich benutze AVR Studio4 und habe ein kleines C Programm geschrieben.
1
#include <avr/io.h>
2
#define Led_gelb_toggle PINB = (1 << PIN4);
3
//***********************************************
4
// don't expect this to make any sense :-)
5
//***********************************************
6
int main(void)
7
{
8
unsigned long int z = 12345678;
9
volatile unsigned char n;
10
n = sizeof(z);
11
DDRB = 16;  // PB4 als Output der  Led_gelb
12
13
  while(1)
14
  {
15
    z += 1234;
16
    if(z >= 16000)
17
    {
18
      z = 0;
19
      Led_gelb_toggle
20
    }
21
  }
22
}
23
//***********************************************
Ich mache:
Programm compilieren
und dann im Menüpunkt "Debug" im Simulator das Programm simuliert
starten.

Ist sehr schön, aber wie kann ich mir im Step-Betrieb den Wert der 
variablen z und n anzeigen lassen?

von Todi (Gast)


Lesenswert?

Hi,

falls Du AVR-Studio nutzt mußt Du mit dem Zeiger über die Variable 
fahren.

Gruß

von Hannes H. (mui)


Lesenswert?

oder mit "add watch" bei rechtsklick auf die variable?!

von Skua (Gast)


Lesenswert?

Dein Toggle scheint mir aber nicht zu Togglen

von Düsendieb (Gast)


Lesenswert?

Bastelmaus schrieb:
> Ist sehr schön, aber wie kann ich mir im Step-Betrieb den Wert der
>
> variablen z und n anzeigen lassen?

Ich muss auch die Variablen global definieren.


unsigned long int z = 12345678;
volatile unsigned char n;

int main(void)
{
.
.
.

von Bastelmaus (Gast)


Lesenswert?

Vielen Dank an Todi (Gast) und Hannes H. (mui)

Hat mir sehr geholfen.
Warum bin ich da nicht selber drauf gekommen, bzw.
wo steht sowas geschrieben.
Ich wage gar nicht dran zu denken, was sich da noch alles verborgen 
hält, von dem ich überhaupt keine Ahnung habe...

von Gregor B. (gregor54321)


Lesenswert?

Mit PINn kannst du nur abfragen. Gesetzt wird der Pin mit "PORTn = xyz"

die Variablen musst Du in diesem Beispiel gar nicht global deklarieren. 
Nur wenn die in anderen Funktionen genutzt werden / sichtbar sein 
sollen.
1
#include <avr/io.h>
2
#define Led_gelb_toggle PORTB ^= (1 << PB4);  // XOR mit Bit 4
3
4
int main(void)
5
{
6
unsigned long int z = 12345678;
7
8
DDRB = (1<<PB4);  // PB4 als Output der  Led_gelb
9
                  // (1<<PB4) schiebt die "1" um "PB4"-Stellen nach links
10
11
  while(1)
12
  {
13
    z += 1234;
14
    if(z >= 16000)
15
    {
16
      z = 0;
17
      Led_gelb_toggle
18
    }
19
  }
20
}

1
void main(void) {
2
  DDRB= ~(1<<PB4);  // 0b11110111 nach DDRB schreiben (PB4 als Eingang)
3
  while (true) {
4
    if (PINB && (1<<PB4) { // vergleicht (AND) 0b....1... mit 0b00001000
5
      TOGGLE_LED;
6
    }
7
  }
8
}

von Bastelmaus (Gast)


Lesenswert?

Gregor B. schrieb:
> Mit PINn kannst du nur abfragen. Gesetzt wird der Pin mit "PORTn = xyz"

Nö, das mit
1
#define Led_gelb_toggle PINB = (1 << PIN4);
funktioniert wirklich beim ATtiny25. Ist äh war bis jetzt eben ;-)
ein Geheimtip   ;-)

Aber das soll auch nicht das Thema dieses Thread's werden, sondern wie 
man AVR's mit AVR-Studio4 besser simulieren kann...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.