Forum: Mikrocontroller und Digitale Elektronik STK500 LED-Ansteuerung negiert


von Thomas (Gast)


Lesenswert?

Hallo,
ich habe seit ein paar Tagen ein STK500 und bin beim Programmieren auf 
ein Problem gestoßen, denn schon die kleinen Programme aus dem Tutorium 
funktionieren nicht so, wie sie sollten:
1
DDRB = 0xff;    
2
PORTB = 0x03;

Da sollten ja nun die ersten beiden LED's auf dem Board leuchten, aber 
im Moment leuchten gerade die ersten beiden nicht und dafür aber alle 
anderen.
Das merkwürdige dabei ist, dass die Spannung an Pin1 und Pin2 des 
ATMega16 wirklich auf high ist, so wie sie es sein sollte. Die 
Spannungen der restlichen Pins sind auf low.

Da die LED's über Transitoren an den Pins hängen, könnte es doch 
höchstens sein, dass sie nicht richtig bestückt sind? Oder habe ich eine 
Einstellung übersehen?

Vielen Dank für hilfreiche Antworten im Voraus!

Thomas.


von Thilo M. (Gast)


Lesenswert?

Ein Blick in dei Hilfe vom AVR-Studio hilft, da sind die Schaltpläne vom 
STK500 drin.
Das ist schon korrekt so!

von Stefan (Gast)


Lesenswert?

Stimmt schon so, ne LEDs sind auf dem STK gegen +Vcc geschaltet...

von Thomas (Gast)


Lesenswert?

Ist also pure Absicht!? Ich muss mich also dran gewöhnen und kann es 
nicht einfach an irgend einer Stelle umschalten?

von Hannes L. (hannes)


Lesenswert?

Thomas wrote:
> Hallo,
> ich habe seit ein paar Tagen ein STK500 und bin beim Programmieren auf
> ein Problem gestoßen, denn schon die kleinen Programme aus dem Tutorium
> funktionieren nicht so, wie sie sollten:
>
>
1
> DDRB = 0xff;
2
> PORTB = 0x03;
3
>
>
> Da sollten ja nun die ersten beiden LED's auf dem Board leuchten, aber
> im Moment leuchten gerade die ersten beiden nicht und dafür aber alle
> anderen.
> Das merkwürdige dabei ist, dass die Spannung an Pin1 und Pin2 des
> ATMega16 wirklich auf high ist, so wie sie es sein sollte. Die
> Spannungen der restlichen Pins sind auf low.

Das ist korrekt.

>
> Da die LED's über Transitoren an den Pins hängen, könnte es doch
> höchstens sein, dass sie nicht richtig bestückt sind? Oder habe ich eine
> Einstellung übersehen?

Nein, die LEDs sind (aus gutem Grund) Low-aktiv. Das hättest Du aber 
auch selbst feststellen können, dann das Schaltbild der LEDs und ihrer 
Transistoren ist unübersehbar im mitgelieferten Handbuch abgebildet.


>
> Vielen Dank für hilfreiche Antworten im Voraus!

Nix zu danken...

>
> Thomas.

...

von Thilo M. (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein Auszug aus der Hilfe. ;)

von Thomas (Gast)


Lesenswert?

Ok, ihr habt recht ... das muss dann wohl sein.
Danke für die Antworten.
Kann mir vielleicht noch jemand kurz erklären, was der "gute Grund" 
dafür ist, das sie low active sind?

von Thilo M. (Gast)


Lesenswert?

Low-active hat zwei Gründe:
1. kommt noch aus vergangenen Zeiten (74er Logik), da war 'high' ein 
unbeschalteter Eingang.
1a. Die Logik (und Prozessoren) arbeiteten mit 
'open-Collector'-Schaltungen, zogen somit die 'high'-Eingänge auf Masse.
2. Low-active ist Störunanfälliger, da ein Peak (High-Impuls) von außen 
die Schaltung eher stören kann als das Signal auf Masse gezogen wird.

von Mike (Gast)


Lesenswert?

Ich hab Dir mal ne STK500_PinDef.h gebastelt.
Binde die in Dein Projekt ein und dann kannst Du wieder "richtig" herum 
schalten.


//Taster an Port A

#define PortA_Output DDRA = 0xff;
#define PortA_Input DDRA = 0x00;

/*---------------------------------------*/

#define key0_pushed (~PINA & (1<<PA0))
#define key1_pushed (~PINA & (1<<PA1))
#define key2_pushed (~PINA & (1<<PA2))
#define key3_pushed (~PINA & (1<<PA3))
#define key4_pushed (~PINA & (1<<PA4))
#define key5_pushed (~PINA & (1<<PA5))
#define key6_pushed (~PINA & (1<<PA6))
#define key7_pushed (~PINA & (1<<PA7))


//LEDs an Port C

#define PortC_Output DDRC = 0xff;
#define PortC_Input DDRC = 0x00;

#define PortC_Pullup_on PORTC = 0xff;

/*---------------------------------------*/

#define LED0_on PORTC &= ~(1 << PC0);
#define LED0_off PORTC |= (1 << PC0);

#define LED1_on PORTC &= ~(1 << PC1);
#define LED1_off PORTC |= (1 << PC1);

#define LED2_on PORTC &= ~(1 << PC2);
#define LED2_off PORTC |= (1 << PC2);

#define LED3_on PORTC &= ~(1 << PC3);
#define LED3_off PORTC |= (1 << PC3);

#define LED4_on PORTC &= ~(1 << PC4);
#define LED4_off PORTC |= (1 << PC4);

#define LED5_on PORTC &= ~(1 << PC5);
#define LED5_off PORTC |= (1 << PC5);

#define LED6_on PORTC &= ~(1 << PC6);
#define LED6_off PORTC |= (1 << PC6);

#define LED7_on PORTC &= ~(1 << PC7);
#define LED7_off PORTC |= (1 << PC7);

von Thomas (Gast)


Lesenswert?

Danke, dass sieht ja gut aus und wird gleich mal benutzt :-)

von Hannes L. (hannes)


Lesenswert?

Thomas wrote:
> Kann mir vielleicht noch jemand kurz erklären, was der "gute Grund"
> dafür ist, das sie low active sind?

Neben den bisher genannten "guten Gründen" kommt speziell beim STK500 
noch dazu, dass das STK500 auch Target-Spannungen unterstützt, bei denen 
es etwas eng für die LEDs wird, sie also zu dunkel werden würden. Um 
dies zu vermeiden, werden die LEDs über Transistoren in Basis-Schaltung 
angesteuert, wodurch sie auch dann mit voller Betriebsspannung (5V) 
betrieben werden, wenn der Target-AVR mit kleinerer Betriebsspannung 
läuft. Etwas tricky, aber sehr wirkungsvoll.

...

von Thilo M. (Gast)


Lesenswert?

>sie also zu dunkel werden würden

Bei meinem Board brennen die sich regelrecht in die Netzhaut ein! :D

von Hannes L. (hannes)


Lesenswert?

Thilo M. wrote:
>>sie also zu dunkel werden würden
>
> Bei meinem Board brennen die sich regelrecht in die Netzhaut ein! :D

Sie sollen halt auch auf hell beleuchteten Arbeitsplätzen gut sichtbar 
sein... 8-D

...

von Michael U. (Gast)


Lesenswert?

Hallo,

@Hannes Lux:
mein Problem ist ja eher, daß ich die Arbeitsplatzbeleuchtung nicht mehr 
erkennen kann, wenn das STK500 leuchtet... ;)

Gruß aus berlin
Michael


von Hannes L. (hannes)


Lesenswert?

Michael U. wrote:
> Hallo,
>
> @Hannes Lux:
> mein Problem ist ja eher, daß ich die Arbeitsplatzbeleuchtung nicht mehr
> erkennen kann, wenn das STK500 leuchtet... ;)

Dann kleb' doch 'n Papierstreifen drüber. 8-P
Oder milchige Folie oder so.

>
> Gruß aus berlin
> Michael

Achja, Berlin wird vorne mit "B" geschrieben und hinten mit "h"...

Duck&wech...

Gruß von der Elbe,
...

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.