www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STK500 LED-Ansteuerung negiert


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
DDRB = 0xff;    
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.


Autor: Thilo M. (Gast)
Datum:

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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt schon so, ne LEDs sind auf dem STK gegen +Vcc geschaltet...

Autor: Thomas (Gast)
Datum:

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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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:
>
>
> DDRB = 0xff;
> 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.

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.

...

Autor: Thilo M. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein Auszug aus der Hilfe. ;)

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, dass sieht ja gut aus und wird gleich mal benutzt :-)

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>sie also zu dunkel werden würden

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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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

...

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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


Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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,
...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.