Forum: Mikrocontroller und Digitale Elektronik Schaltung funktioniert nicht, Code geht aber.


von Oldie (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe einen Schaltkreis gebastelt.
Leider leuchten die LEDs nur beim Entladen für wenige MilliSekunden 
(Netzteil aus Steckdose 5V). Ich habe alles gecheckt, Schaltplan seht 
ihr ja  da.
Hier ist der Code:
1
#define F_CPU 1000000UL     /* 1MHz */
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4
5
// Defines:
6
#define LED1    (1<<PD5)
7
#define LED2    (1<<PD6)
8
9
//Variablen für die Zeit
10
volatile unsigned int millisekunden;
11
volatile unsigned int sekunde;
12
volatile unsigned int minute;
13
volatile unsigned int stunde;
14
15
int main(void)
16
{
17
18
  // LED-Pins als Ausgang definieren
19
  DDRD |= LED1 | LED2;
20
  
21
  // LED1 einschalten
22
  PORTD |= LED1;
23
  
24
  
25
   // Timer 1 konfigurieren
26
   TCCR1B = (1<<WGM12);  // CTC Modus
27
  TCCR1B |= (1<<CS11); // Prescaler 8
28
   // ((1000000/8)/1000) = 125
29
   OCR1A = 125-1;
30
  
31
  // Compare Interrupt erlauben
32
 // Compare Interrupt erlauben
33
 TIMSK = (1<<OCIE1A);
34
  
35
  // Global Interrupts aktivieren
36
  sei();
37
  
38
  while(1)
39
  {
40
    if  (minute == 1 )
41
    {
42
      PORTD |= LED2;
43
      
44
    }
45
    if  (minute == 2)
46
    {
47
      PORTD &= LED1;
48
    }
49
    
50
    if  (minute == 3)
51
    {
52
      PORTD |= LED2;
53
    }
54
    
55
    if  (minute == 4)
56
    {
57
      PORTD &= LED1;
58
    }
59
60
  }
61
}
62
63
/*
64
Der Compare Interrupt Handler
65
wird aufgerufen, wenn
66
TCNT0 = OCR0A = 125-1
67
ist (125 Schritte), d.h. genau alle 1 ms
68
*/
69
ISR(TIMER1_COMPA_vect)
70
{
71
  millisekunden++;
72
  if(millisekunden == 1000)
73
  {
74
    sekunde++;
75
    millisekunden = 0;
76
    if(sekunde == 60)
77
    {
78
      minute++;
79
      sekunde = 0;
80
    }
81
    if(minute == 60)
82
    {
83
      stunde++;
84
      minute = 0;
85
    }
86
    if(stunde == 24)
87
    {
88
      stunde = 0;
89
    }
90
  }
91
}

von Oldie (Gast)


Lesenswert?

Zur Info:
Kondensator: 100nF
Widerstände: zuerst mit 10k probiert, weil NICHTS funktioniert hat, 
einfach 500 Ohm parallel geshaltet, geht immer noch nix.

von J. T. (chaoskind)


Lesenswert?

Hmm, so wie du das gezeichnet ist, sollte deine erste LED nach einer 
Minute angehen. Du hast sie von von Vcc zum Pin geschaltet, also geht 
sie an, wenn der Pin auf null und nicht auf eins ist. Aber eigl sollte 
LED2 leuchten, da du den Pin ja auf null lässt.

Und dein Vorwiderstand ist überbrückt...

MfG Chaos

von Karl H. (kbuchegg)


Lesenswert?

10k Vorwiderstand?

Was sind das für Wunderleds, die mit dem bischen Strom noch leuchten?

von Klaus (Gast)


Lesenswert?

Probier das hier mal aus.


#define F_CPU 1000000UL     /* 1MHz */
#include <avr/io.h>
#include <avr/interrupt.h>

// Defines:
#define LED1    (1<<PD5)
#define LED2    (1<<PD6)

//Variablen für die Zeit
volatile unsigned int millisekunden;
volatile unsigned int sekunde;
volatile unsigned int minute;
volatile unsigned int stunde;

int main(void)
{

  // LED-Pins als Ausgang definieren
  DDRD |= LED1 | LED2;

  // LED1 einschalten
  PORTD &= ~LED1;


   // Timer 1 konfigurieren
   TCCR1B = (1<<WGM12);  // CTC Modus
  TCCR1B |= (1<<CS11); // Prescaler 8
   // ((1000000/8)/1000) = 125
   OCR1A = 125-1;

  // Compare Interrupt erlauben
 // Compare Interrupt erlauben
 TIMSK = (1<<OCIE1A);

  // Global Interrupts aktivieren
  sei();

  while(1)
  {
    if  (minute == 1 )
    {
      PORTD &= ~LED2;

    }
    if  (minute == 2)
    {
      PORTD &= ~LED1;
    }

    if  (minute == 3)
    {
      PORTD &= ~LED2;
    }

    if  (minute == 4)
    {
      PORTD &= ~LED1;
    }

  }
}

/*
Der Compare Interrupt Handler
wird aufgerufen, wenn
TCNT0 = OCR0A = 125-1
ist (125 Schritte), d.h. genau alle 1 ms
*/
ISR(TIMER1_COMPA_vect)
{
  millisekunden++;
  if(millisekunden == 1000)
  {
    sekunde++;
    millisekunden = 0;
    if(sekunde == 60)
    {
      minute++;
      sekunde = 0;
    }
    if(minute == 60)
    {
      stunde++;
      minute = 0;
    }
    if(stunde == 24)
    {
      stunde = 0;
    }
  }
}

von Oldie (Gast)


Lesenswert?

j. t. schrieb:
> Du hast sie von von Vcc zum Pin geschaltet, also geht
> sie an, wenn der Pin auf null und nicht auf eins ist. Aber eigl sollte
> LED2 leuchten, da du den Pin ja auf null lässt.

Wie muss ich das verändern? bzw. was muss ich verändern?


> Und dein Vorwiderstand ist überbrückt...

Wie? Was bedeutet das genau?


> 10k Vorwiderstand?
Erschien mir auch ein bisschen viel, wie viel ist gut?

von Karl H. (kbuchegg)


Lesenswert?

mach das Programm mal einfacher
1
#include <avr/io.h>
2
3
// Defines:
4
#define LED1    (1<<PD5)
5
#define LED2    (1<<PD6)
6
7
int main(void)
8
{
9
  DDRD |= LED1 | LED2;
10
  
11
  PORTD |= LED1;
12
  PORTD &= ~LED2;
13
14
  while( 1 )
15
    ;
16
}

die eine LED sollte leuchten. die andere nicht.
Wenn sich nichts tut, dann kontrollier mal mit dem voltmeter die 
Spannung an den Pins PD5 bzw. PD6. Einer muss auf 5V sein, der andere 
auf 0V.

Wenn die Spamnungen nicht stimmen, dann läuft auch der µC nicht.

von Karl H. (kbuchegg)


Lesenswert?

Oldie schrieb:

>> 10k Vorwiderstand?
> Erschien mir auch ein bisschen viel, wie viel ist gut?

bischen rechnen?

eine rote LED können wir mit 1.7V annehmen.
D.h. über dem Widerstand müssen 5V-1.7V abfallen. Über dem Widerstand 
bleiben daher 3.3V stehen.
Jetzt wollen wir 10mA durch die LED schicken (ist ein üblicher Wert für 
08/15 LED). DIe 10mA müssen auch durch den Widerstand. D.h. für den 
Widerstand gilt
U gleich 3.3V
I gleich 0.01A

und der Herr Ohm sagt uns  R = U / I

also 3.3 / 0.01 = 330 Ohm

von Hubert G. (hubertg)


Lesenswert?

Dein Code funktioniert, naja.
Das hier ist falsch: PORTD &= LED1;  PORTD &=~ LED1;
DDRD |= LED1 | LED2;  DDRD |= (1<<DDD5)|(1<<DDD6);
Led2 geht an, bleibt an.
Led1 geht aus, bleibt aus.
Wenn du die Leds gegen + geschaltet hast ist es umgekehrt.

von Achim K. (aks)


Lesenswert?

"Code geht aber"

Könntest Du erklären, was der Code macht?

"PORTD |= LED2;" sollte das die LED2 einschalten? Dann sollte der 
Widerstand aber pull down nicht up sein.

Oder sollte "PORTD &= LED1;" die LED1 einschalten? Macht es aber nicht, 
es schaltet alle andere LEDs an PORTD ein (bei pull up).
(Oder meintest Du "PORTD &= ~LED1;"?)

Mit einem Multi-Meter könntest Du übrigens prüfen, ob die PINS die 
erwartete Spannung haben.

Wenn ich mal beschreiben sollte, was das Programm macht:

Start: LED1 aus, LED2 an
1. Minute: LED2 ausschalten => LED1 aus, LED2 aus
2. Minute: alle außer LED1 einschalten => LED1 aus, LED2 an
3. Minute: LED2 ausschalten => LED1 aus, LED2 aus
4. Minute: alle außer LED1 einschalten => LED1 aus, LED2 an

Das Programm schaltet also nur LED2. Ist es das, was es tun soll?

(P.S.: Du greifst auf "volatile unsigned int minute" sowohl im Interrupt 
als auch im main zu. U.U. solltest Du Dich da nochmal einarbeiten. Zum 
Glück ändern sich bei den Minuten nur das unter Byte, das kann also auch 
"ausnahmsweise" so tun :-) . )

von J. T. (chaoskind)


Lesenswert?

Vor allem sollte man die LED´s nicht an Vcc und die 10KOhm hängen... 
dann kann man sich die Widerstände auch gleich sparen. Das bedeutet 
genau folgendes:
 Du gehst von + an Pin 7, laut deinem Schaltplan. Dann gehst du von + 
nochmal nach Pin 7, über deinen 10KOhm-Widerling. Und dann nochmal mit 
10KOhm von + nach Pin 7.
Mit der Verbindung von + nach Pin7 "überbrückst" du die Widerstände, der 
Strom geht doch immer den Weg des geringsten Widerstandes. Wenn du ihn 
vor die Wahl Blanker Draht/10Kohm stellst, rennt der halt durch den 
Draht.

Trenne die Verbindung von Pin7 zu den LEDs, trenne die Verbindung der 
LED´s zwischen den Vorwiderständen (sonst hast du nämlich nur 5KOhm(was 
immer noch n bischn viel ist, wie Karl-Heinz dir vorrechnete, aber 2 
parallel geschaletet gleiche Widerstände ergeben nunmal einen halbso 
großen))

Es sollt eher etwa so aussehen

+----[==330==]----LED>--Pin13

+----[==330==]----LED>--Pin14

+-------Pin7


P.S.

Vergiss alles, was ich gesagt hab, ich seh grad die Kreuze, von denen 
ich mich fragte, was die da sollen, aber das sind dann wohl die 
getrennten Verbindungen ~an die Stirn klatsch

: Bearbeitet durch User
von Oldie (Gast)


Lesenswert?

Ich bin verwirrt... Zum Code: Ich möchte, dass die LED1 konstant 
ununterbrochen leutet. LED2 soll sich nach 1 Minute einschalten, nach 2 
Minuten abschalten, nach 3 Minuten einschalten und dann nach 4 Minuten 
wieder abschalten... Was soll ich dafür nun dort verändern?
Und zur Schaltung: Also einfach die Widerstände in 330Ohms tauschen oder 
noch irgendwas?

von Markus (Gast)


Lesenswert?

Oldie schrieb:
> Und zur Schaltung: Also einfach die Widerstände in 330Ohms tauschen oder
> noch irgendwas?

Je nach LED, wurde hier schon geschrieben: 
Beitrag "Re: Schaltung funktioniert nicht, Code geht aber."

http://www.led-rechner.de/

von Karl H. (kbuchegg)


Lesenswert?

Oldie schrieb:
> Ich bin verwirrt... Zum Code: Ich möchte, dass die LED1 konstant
> ununterbrochen leutet. LED2 soll sich nach 1 Minute einschalten, nach 2
> Minuten abschalten, nach 3 Minuten einschalten und dann nach 4 Minuten
> wieder abschalten... Was soll ich dafür nun dort verändern?

du sollst genau diese Operationen auch hinschreiben.

Aber:
Du sollst sie KORREKT hinschreiben!


Wenn dir das Kopfzerbrechen macht, dann solltest du vielleicht doch erst 
mal die allerersten Übungen machen, wie man an einem Ausgang etwas ein 
bzw. ausschaltet und wie das davon abhängt, wie genau dieses Etwas 
angeschlossen ist.

Eine LED leuchtet wenn die Anode auf positivem Potential ist und die 
Kathode am negativen. Darum hat die auch im Schaltbild so eine 
(angenäherte) Dreiecksform. In dieser Richtung muss der Strom von + nach 
- durchlaufen, damit die LED leuchtet.
Deine LED sind so angeschlossen, dass die Anode (wenn auch über den 
Widerstand) an +5V liegt. Also muss das andere Ende an welchem Potential 
liegen, damit die LED leuchtet?

Genau!

Und jetzt: in der Praxis ausprobieren! Ohne Timer. Einfach nur die Pins 
auf die richtigen Pegel bringen und nachsehen ob das auch wirklich so 
ist.


> Und zur Schaltung: Also einfach die Widerstände in 330Ohms tauschen oder
> noch irgendwas?

330 sind ok. Hab ich dir doch vorgerechnet.

Aber was anderes. Hast du eigentlich die LED richtig rum eingelötet? 
Kontrolliert wirst du das wohl nicht haben. Denn mit 10k Vorwiderstand 
leuchtet keine LED.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Ich rate mal, 28 Pin, könnte der ATmega328P sein.

Der hat aber zusammen 4 GND,[A]VCC Anschlüsse und die muß man zuerst mal 
alle anschließen, ehe was gehen soll!

von Hubert G. (hubertg)


Lesenswert?

1
#define F_CPU 1000000UL     /* 1MHz */
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4
5
// Defines:
6
#define LED1    (1<<PD5)
7
#define LED2    (1<<PD6)
8
9
//Variablen für die Zeit
10
volatile unsigned int millisekunden;
11
volatile unsigned char sekunde;
12
volatile unsigned char minute;
13
volatile unsigned char stunde;
14
15
int main(void)
16
{
17
18
  // LED-Pins als Ausgang definieren
19
  DDRD |= LED1 | LED2;
20
  
21
  // LED1 einschalten
22
  PORTD &= ~LED1;
23
   PORTD |= LED2;
24
  
25
   // Timer 1 konfigurieren
26
   TCCR1B = (1<<WGM12);  // CTC Modus
27
  TCCR1B |= (1<<CS11); // Prescaler 8
28
   // ((1000000/8)/1000) = 125
29
   OCR1A = 125-1;
30
  
31
  // Compare Interrupt erlauben
32
 // Compare Interrupt erlauben
33
 TIMSK = (1<<OCIE1A);
34
  
35
  // Global Interrupts aktivieren
36
  sei();
37
  
38
  while(1)
39
  {
40
    if  (minute == 1 )
41
    {
42
      PORTD &=~ LED2;
43
      
44
    }
45
    if  (minute == 2)
46
    {
47
      PORTD |= LED2;
48
    }
49
    
50
    if  (minute == 3)
51
    {
52
      PORTD &=~ LED2;
53
    }
54
    
55
    if  (minute == 4)
56
    {
57
      PORTD |= LED2;
58
    }
59
60
  }
61
}
62
63
/*
64
Der Compare Interrupt Handler
65
wird aufgerufen, wenn
66
TCNT0 = OCR0A = 125-1
67
ist (125 Schritte), d.h. genau alle 1 ms
68
*/
69
ISR(TIMER1_COMPA_vect)
70
{
71
  millisekunden++;
72
  if(millisekunden == 1000)
73
  {
74
    sekunde++;
75
    millisekunden = 0;
76
    if(sekunde == 60)
77
    {
78
      minute++;
79
      sekunde = 0;
80
    }
81
    if(minute == 60)
82
    {
83
      stunde++;
84
      minute = 0;
85
    }
86
    if(stunde == 24)
87
    {
88
      stunde = 0;
89
    }
90
  }
91
}
ICh glaube zwar nicht das es ziel führend ist den Code vorzukauen, aber 
naja.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Hubert G. schrieb:

> ICh glaube zwar nicht das es ziel führend ist den Code vorzukauen, aber
> naja.

Lass uns erst mal rausfinden, was der alte Schlamperdatsch an seiner 
Hardware alles verbockt hat.
Dann ein paar LED einfach so leuchten lassen.
Und erst dann die Timer-Sache

Du kannst bei ihm nämlich von nichts als gesichert ausgehen.


Ich denke er hat mittlerweile selbst auch schon eingesehen, dass sein 
ursprünglicher Ansatz "Ich bau mir da mal ganz schnelle eine 
Zeitschaltuhr" dann doch nicht so einfach ist, wie ursprünglich gedacht. 
Selbst wenn die Aufgabenstellung sich trivial anhört, und man in jedem 
Baumarkt eine Zeitschaltuhr für 5€ kaufen kann. ok nicht gerade diese, 
aber immerhin. Nur weil man etwas im Handel billig kaufen kann, bedeutet 
das noch lange nicht, dass man zur Herstellung davon nichts wissen und 
können muss und das jeder so etwas an 2 Stunden am Samstag Nachmittag 
selbst herstellen kann.

: Bearbeitet durch User
von Oldie (Gast)


Lesenswert?

Läuft der Controller auch bei 4,5 V?

von Oldie (Gast)


Angehängte Dateien:

Lesenswert?

Peter Dannegger schrieb:
> Ich rate mal, 28 Pin, könnte der ATmega328P sein.
>
> Der hat aber zusammen 4 GND,[A]VCC Anschlüsse und die muß man zuerst mal
> alle anschließen, ehe was gehen soll!

Atmega8, also muss ich alle so anschließen oder wie?

von Oldie (Gast)


Lesenswert?

Oldie schrieb:
>> Der hat aber zusammen 4 GND,[A]VCC Anschlüsse und die muß man zuerst mal
>> alle anschließen, ehe was gehen soll!
>
> Atmega8, also muss ich alle so anschließen oder wie?

Oder anstatt der rechten Seite nur noch RESET?

von Hubert G. (hubertg)


Lesenswert?

RESET mit 10k an Plus.
Der Controller geht auch mit 4,5V,
100n von VCC nach GND, nahe am Controller.

: Bearbeitet durch User
von Oldie (Gast)


Lesenswert?

Hubert G. schrieb:
> RESET mit 10k an Plus.
> Der Controller geht auch mit 4,5V,
> 100n von VCC nach GND, nahe am Controller.

Danke, wie siehts aus mit den anderen AVCC und GND? Müssen die auch 
angeschlossen sein?

von spess53 (Gast)


Lesenswert?

Hi

>Danke, wie siehts aus mit den anderen AVCC und GND? Müssen die auch
>angeschlossen sein?

Ja. Stromversorgungsanschlüsse sind nicht zur Verzierung da.

MfG Spess

von Glückauf (Gast)


Lesenswert?

Oldie schrieb:
> Hubert G. schrieb:
>> RESET mit 10k an Plus.
>> Der Controller geht auch mit 4,5V,
>> 100n von VCC nach GND, nahe am Controller.
>
> Danke, wie siehts aus mit den anderen AVCC und GND? Müssen die auch
> angeschlossen sein?

Ja, natürlich! Hier ist eine Standardbeschaltung:
http://www.mikrocontroller.net/articles/Absolute_Beginner-AVR_Steckbrettprojekte#LED_einschalten

von Oldie (Gast)


Lesenswert?

Was hat es mit dem Herrn "AREF" auf sich? muss man den beschalten?

von Glückauf (Gast)


Lesenswert?

Oldie schrieb:
> Was hat es mit dem Herrn "AREF" auf sich? muss man den beschalten?

Ja.

von Walter (Gast)


Lesenswert?

Glückauf schrieb:
> Oldie schrieb:
>> Was hat es mit dem Herrn "AREF" auf sich? muss man den beschalten?
>
> Ja.

aber nur wenn man den AD-Wandler braucht

von Hilfe ist unterwegs (Gast)


Lesenswert?

> Was hat es mit dem Herrn "AREF" auf sich? muss man den beschalten?

Mal das Datenblatt zu Hlfe nehmen und vielleicht sogar daraus etwas 
lernen ist für dich kein gangbarer Weg?

von Glückauf (Gast)


Lesenswert?

Walter schrieb:
> Glückauf schrieb:
>> Oldie schrieb:
>>> Was hat es mit dem Herrn "AREF" auf sich? muss man den beschalten?
>>
>> Ja.
>
> aber nur wenn man den AD-Wandler braucht

Ich sparte mir die Erklärung. Hat wohl wenig Aussicht auf Erfolg.

Wenn er es beschaltet wie in der Standardbeschaltung, macht er erstmal 
nichts verkehrt.

von spess53 (Gast)


Lesenswert?


von Hubert G. (hubertg)


Lesenswert?

Oldie schrieb:
> Was hat es mit dem Herrn "AREF" auf sich? muss man den beschalten?

Laut Datenblatt 100n nach GND.

von Streifenraster (Gast)


Lesenswert?

Nur mal eine Frage nebenbei, wenn du eine Streifenrasterplatine benutzen 
solltest.
Die Leiterbahnen unter dem Atmega8 hast du schon getrennt ?
Das heißt du hast keine Verbindung von Pin1 auf Pin28, Pin2 auf Pin27 
usw. ?

von Oldie (Gast)


Angehängte Dateien:

Lesenswert?

Streifenraster schrieb:
> Die Leiterbahnen unter dem Atmega8 hast du schon getrennt

Natürlich, ich will mich ja nicht selber umbringen.

geht das dann so?
Widerstände sind jetzt 501 Ohm

von Hubert G. (hubertg)


Lesenswert?

Und, funktioniert es soweit?

von Markus (Gast)


Lesenswert?

Oldie schrieb:
> geht das dann so?
Ja, nach der Skizze schon.

> Widerstände sind jetzt 501 Ohm
das glaube ich jedoch nicht.

von Oldie (Gast)


Lesenswert?

Also ich habe die LEDS nun so gepolt, dass sie an den PINS (PD5,PD6) 
positiv anliegen. Problem ist allerdings, dass die LEDS trotz des Codes 
BEIDE ununterbrochen leuchten, nach 1 Minute auch BEIDE ausgehen und so 
weiter... Woran kann das liegen?

von Markus (Gast)


Lesenswert?

Oldie schrieb:
> Woran kann das liegen?

Am Code?

von Oldie (Gast)


Lesenswert?

1
#define F_CPU 1000000UL     /* 1MHz */
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4
5
// Defines:
6
#define LED1    (1<<PD5)
7
#define LED2    (1<<PD6)
8
9
//Variablen für die Zeit
10
volatile unsigned int millisekunden;
11
volatile unsigned char sekunde;
12
volatile unsigned char minute;
13
volatile unsigned char stunde;
14
15
int main(void)
16
{
17
18
  // LED-Pins als Ausgang definieren
19
  DDRD |= LED1 | LED2;
20
  
21
  // LED1 einschalten
22
  PORTD &= ~LED1;
23
   PORTD |= LED2;
24
  
25
   // Timer 1 konfigurieren
26
   TCCR1B = (1<<WGM12);  // CTC Modus
27
  TCCR1B |= (1<<CS11); // Prescaler 8
28
   // ((1000000/8)/1000) = 125
29
   OCR1A = 125-1;
30
  
31
  // Compare Interrupt erlauben
32
 // Compare Interrupt erlauben
33
 TIMSK = (1<<OCIE1A);
34
  
35
  // Global Interrupts aktivieren
36
  sei();
37
  
38
  while(1)
39
  {
40
    if  (minute == 1 )
41
    {
42
      PORTD &=~ LED2;
43
      
44
    }
45
    if  (minute == 2)
46
    {
47
      PORTD |= LED2;
48
    }
49
    
50
    if  (minute == 3)
51
    {
52
      PORTD &=~ LED2;
53
    }
54
    
55
    if  (minute == 4)
56
    {
57
      PORTD |= LED2;
58
    }
59
60
  }
61
}
62
63
/*
64
Der Compare Interrupt Handler
65
wird aufgerufen, wenn
66
TCNT0 = OCR0A = 125-1
67
ist (125 Schritte), d.h. genau alle 1 ms
68
*/
69
ISR(TIMER1_COMPA_vect)
70
{
71
  millisekunden++;
72
  if(millisekunden == 1000)
73
  {
74
    sekunde++;
75
    millisekunden = 0;
76
    if(sekunde == 60)
77
    {
78
      minute++;
79
      sekunde = 0;
80
    }
81
    if(minute == 60)
82
    {
83
      stunde++;
84
      minute = 0;
85
    }
86
    if(stunde == 24)
87
    {
88
      stunde = 0;
89
    }
90
  }
91
}

Also für mich ist das eindeutig, dass die eine LED nicht angeschaltet 
ist im Ausgangsstatus...

von Markus (Gast)


Lesenswert?

Dann werden die beiden Ausgänge wohl kurzgeschlossen sein. Z.B. 
Lötbrücke, nicht unterbrochene Bahnen (ich hasse Lochstreifenplatten).

Zeichne doch einen klaren Schaltplan auf (das hilft auch dir selber bei 
der Fehlersuche) und ein Foto von Vorder- und Rückseite.
Ansonsten ist das doch nur Kaffeesatzlesen.

von Hubert G. (hubertg)


Lesenswert?

Wenn du die Leds so angeschaltet hast wie auf dem letzten Bild, dann 
leuchtet Led1 sofort:
1
  // LED1 einschalten
2
  PORTD &= ~LED1;

Led2 wird nach Zeit hier eingeschaltet:
1
    if  (minute == 1 )
2
    {
3
      PORTD &=~ LED2;

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.