Forum: Mikrocontroller und Digitale Elektronik Codeschloss Atmega32 Fehler im Code


von Florian (Gast)


Lesenswert?

Hi

Ich versuche ein Codeschloss zu bauen welches 2 Taster einliest. Wenn es 
die richtigen waren soll die Led an PA0 eingeschaltet werden.
Ich verstehe allerdings nicht wieso es nicht funktioniert.
1
#define F_CPU 8000000
2
3
#include <avr/io.h>
4
#include <util/delay.h>
5
6
int main(void)
7
{
8
  uint8_t z1;
9
  uint8_t z2;
10
  z1 = 0;
11
  z2 = 2;
12
  DDRA |= (1 << 0);
13
    while(1)
14
    {
15
    while(z1 < 1) {
16
         if(PINA & (1 << 1)) {
17
      _delay_ms(100);
18
      z1 = 1;
19
     }
20
     if(PINA & (1 << 2)) {
21
       _delay_ms(100);
22
       z1 = 2;
23
     }
24
    }
25
    while(z2 < 1) {
26
      if(PINA & (1 << 1)) {
27
        _delay_ms(100);
28
        z2 = 1;
29
      }
30
      if(PINA & (1 << 2)) {
31
        _delay_ms(100);
32
        z2 = 2;
33
      }
34
    }
35
  if (z1 == 1 && z2 == 1) {
36
    PORTA |= (1 << 0);
37
   }
38
    }
39
}

lgf

von Mike (Gast)


Lesenswert?

Florian schrieb:
> Ich verstehe allerdings nicht wieso es nicht funktioniert.

Hast du den Ablauf im Simulator laufen lassen und dir angesehen, was 
anders läuft, als du es geplant hast?

von Nobby Nic (Gast)


Lesenswert?

1
/* Ein Vorteil von Kommentaren im Source-Code ist, dass man nicht nur selbst den Code versteht sondern auch Dritte eine Möglichkeit haben, die Gedankengänge des Programmierers nachvollziehen zu können. */

von Mike (Gast)


Lesenswert?

Nobby Nic schrieb:
> /* Ein Vorteil von Kommentaren im Source-Code ist, ...

Guter Code ist selbsterklärend. Da muss man nichts weiter zu sagen ;-)

von Marco (Gast)


Lesenswert?

uint8_t z1;
  uint8_t z2;
  z1 = 0;
  z2 = 2;

in

  uint8_t z1;
  uint8_t z2;
  z1 = 0;
  z2 = 0;

ändern....

von Florian (Gast)


Lesenswert?

Hab den Fehler gefunden:

> z2 = 2;

es muss
1
z2 = 0;
heissen.

Nobby Nic schrieb:
> /* Ein Vorteil von Kommentaren im Source-Code ist, dass man nicht nur
> selbst den Code versteht sondern auch Dritte eine Möglichkeit haben, die
> Gedankengänge des Programmierers nachvollziehen zu können. */

Den Code finde ich selbsterklärend

von Kollege (Gast)


Lesenswert?

Mike schrieb:
> Nobby Nic schrieb:
> /* Ein Vorteil von Kommentaren im Source-Code ist, ...
>
> Guter Code ist selbsterklärend. Da muss man nichts weiter zu sagen ;-)

Nicht alle sprachen sind dafür ausdrucksstatk genug.

zB. sind Inline Kommentare bei Java Code ein "Smell", d.h. ein Anzeichen 
für schlechten Code.

Ob das in C auch so ist?

Kurze Methoden sollten aber auch in C möglich sein, dann nimmt man 
sprechende Namen für die Methoden.

von Nobby Nic (Gast)


Lesenswert?

Florian schrieb:
> Den Code finde ich selbsterklärend

Wenn das so wäre, hättest du den Fehler viel eher entdeckt ;-)

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Florian schrieb:
> Den Code finde ich selbsterklärend

dassteht aber in Widerspruch zu

Florian schrieb:
> Ich verstehe allerdings nicht wieso es nicht funktioniert.

von Kevin Lüttler (Gast)


Lesenswert?

Kollege schrieb:
> zB. sind Inline Kommentare bei Java Code ein "Smell", d.h. ein Anzeichen
> für schlechten Code.
> Ob das in C auch so ist?

Empfiehlt sich zumindest wenn man Hardwareregister mit irgendwelchen 
Werten beschreibt. XYZSTAT |= (1<<ABC) | (1<<IRGENDWAS) ist nur mit 
danebenliegendem Datenblatt selbsterklärend.

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.