Forum: Mikrocontroller und Digitale Elektronik LED toggle per Transistor


von Rafi D. (alexanderw)


Lesenswert?

Hab folgende Schaltung:

     |-----|   Transistor
5V --|__R__|--LED--- C   E------ GND
                       B
                       |
                       |
                       µC PinA0

mit diesem Code:

#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
    DDRA = 0xff;

    while(1)
    {
      PORTA ^= (1<<PA0);
      _delay_ms(500);
    }
}

Der Transistor ist ein BCR135. Und die LED ist auch richtig gepolt. 
Anode an R und Kathode an C vom Transi.
Jetzt versteh ich nicht warum die LEd nicht leuchtet?
Hab sie auch schon ausgebaut und schau sie leuchtet also funktioniert 
diese. Den Transi hab ich auch gewechselt, also nehm ich an diese funkt 
auch.
Also kanns doch nur an dem code liegen, aber dieser ist meiner meinung 
nach richtig, oder....?

Gruß Rafi

P.S.: sorry aber anders krieg ich das kunstwerk oben nicht hin, hoffe 
das es trotzdem verständlich ist.

von MaWin (Gast)


Lesenswert?

Woher weiß dein Code _delay_ms(500), wie schnell dr Prozessor ist ?

Der BCR135 ist ein Digitaltransistor mit eingebautem 
Basisvorwiderständen von 10k Ohm. In dieser anwendung (eine 20mA LED, 
IC/IB=20) hätte er aber maximal 3k3 haben sollen.

von Jürgen (Gast)


Lesenswert?

MaWin schrieb:

> In dieser anwendung (eine 20mA LED, IC/IB=20) hätte er aber maximal
> 3k3 haben sollen.

Wo steht das im Datenblatt?

von Rafi D. (alexanderw)


Lesenswert?

Hab #define F_CPU 4000000UL eingefügt.

Hab auch gerade ein Oszi zur Hand. Hab mir mal die Ausgänge angeguckt 
und da wird nix auf high gesetzt.
Habs auch mit anderen Pins versucht, zeigt auch kein Ausgangspegel an.
Iwie steh ich gerade auf dem Schlauch.

von Jürgen (Gast)


Lesenswert?

Rafi Dafi schrieb:
> ... da wird nix auf high gesetzt.

Was zieht den Ausgang auf Low? Klemm' den Transisitor ab und messe noch 
einmal.

von Helmut56 (Gast)


Lesenswert?

Funktioniert

PORTA ^= (1<<PA0); auch?

Ich kenne nur

PORTA |= (1<<PA0);

von Rafi D. (alexanderw)


Lesenswert?

Jetzt hab ich einen ganz komischen Fehler vom AVRStudio

Unexpected signature 0x00000102 (expected 0x001e9801)., ModuleName: TCF 
(TCF command: Device:startSession failed.)

Hab mal Versorgung aus und wieder ein geschaltet und es funkt wieder. 
Weiß jemand was es zu bedeuten hat?

von Jürgen (Gast)


Lesenswert?


von Rafi D. (alexanderw)


Lesenswert?

Helmut56 schrieb:
> Funktioniert
>
> PORTA ^= (1<<PA0); auch?

Ja. Das ist ein EXOR Befehl. Man spart sich damit die Zeile zum wieder 
aussschalten des Pins [PORTA &= ~(1<<PA0)].

von Helmut56 (Gast)


Lesenswert?

Danke!
Man lernt nicht aus. :)

von spess53 (Gast)


Lesenswert?

Hi

>Ja. Das ist ein EXOR Befehl. Man spart sich damit die Zeile zum wieder
>aussschalten des Pins [PORTA &= ~(1<<PA0)].

Und bei neueren AVRs toggled man mit PINA = (1<<PA0).

MfG Spess

von Helmut56 (Gast)


Lesenswert?

Und wenn du PA0 einfach mal auf HIGH setzt, ohne ihn dann in deiner 
Schleife zu verändern?

von Axel S. (a-za-z0-9)


Lesenswert?

Rafi Dafi schrieb:

> Hab folgende Schaltung:

<schnipp>

Wie groß ist R?

Leuchtet die LED wenn du C und E am Transitor kurzschließt? Leuchtet die 
LED, wenn du die Basis des Transistors auf 5V legst? (dazu den 
Controller aus der Fassung ziehen oder anderweitig die Verbindung nach 
PA0 unterbrechen)

> [C Code gesnipt]

Sollte funktionieren. Du hast auch den richtigen Controller eingestellt?

Was ist da noch an deinem Controller angeschlossen? Läuft der überhaupt? 
Taktversorgung? Fehlt vielleicht der 10K Widerstand von Reset nach +5V?


XL

von Rafi D. (alexanderw)


Lesenswert?

Helmut56 schrieb:
> Und wenn du PA0 einfach mal auf HIGH setzt, ohne ihn dann in deiner
> Schleife zu verändern?

Dann passiert auch nichts.
Hat den keienr schon mal diesen Fehler gesehen, ich hab das dumpfe 
Gefühl das es daran liegt.
Unexpected signature 0x00000102 (expected 0x001e9801)., ModuleName: TCF
(TCF command: Device:startSession failed.)

Tauchte bis jetzt auch nur 2 mal auf.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Rafi Dafi schrieb:
> Unexpected signature 0x00000102 (expected 0x001e9801)., ModuleName: TCF
> (TCF command: Device:startSession failed.)

Der Programmer sieht eine µC-Signatur 0x00000102, erwartet aber 
0x001e9801. Letzteres ist ein ATmega2560.

Was für einen ATmega setzt Du denn ein?

von Rafi D. (alexanderw)


Lesenswert?

Ja das ist ja auch ein Atmega 2560, den ich einsetze.
Aber warum taucht der Fehler überhaupt auf? Hatte vorher schon den 2560 
progammiert und dabei ist nie so etwas aufgetretten.

von Helmut56 (Gast)


Lesenswert?

Die Geschwindigkeit vom Programmer mal runter setzen?!

von Rafi D. (alexanderw)


Lesenswert?

Axel Schwenke schrieb:
> Wie groß ist R?

820ohm.

Axel Schwenke schrieb:
> Leuchtet die LED wenn du C und E am Transitor kurzschließt? Leuchtet die
> LED, wenn du die Basis des Transistors auf 5V legst? (dazu den
> Controller aus der Fassung ziehen oder anderweitig die Verbindung nach
> PA0 unterbrechen)
>
>> [C Code gesnipt]
>
> Sollte funktionieren. Du hast auch den richtigen Controller eingestellt?
>
> Was ist da noch an deinem Controller angeschlossen? Läuft der überhaupt?
> Taktversorgung? Fehlt vielleicht der 10K Widerstand von Reset nach +5V?

Ist alles in Ordnung. Bis auf die 10k am Reset.
Hab den Reset Pin vom µC auf einen Max811 mit 4k7 in Reihe ausgeführt. 
Dann hab ich noch einen 1k Widerstand vom ISP Reset Pin an dieselbige 
LEitung gelegt.

Max811--|---|----|--- RST Pin ISP
        |   |_1k_|
        |
        |---|----|--- RST Pin µC
            |_4k7|

Sollte zusätzlich noch ein 10k Pull-up an die REset Leitung?

von Axel S. (a-za-z0-9)


Lesenswert?

Rafi Dafi schrieb:
> Axel Schwenke schrieb:
>> Leuchtet die LED wenn du C und E am Transitor kurzschließt? Leuchtet die
>> LED, wenn du die Basis des Transistors auf 5V legst? (dazu den
>> Controller aus der Fassung ziehen oder anderweitig die Verbindung nach
>> PA0 unterbrechen)

Dazu schreibst du nix?

>> Was ist da noch an deinem Controller angeschlossen? Läuft der überhaupt?
>> Taktversorgung? Fehlt vielleicht der 10K Widerstand von Reset nach +5V?
>
> Ist alles in Ordnung.

Und das weißt du woher? Nur weil der µC sich programmieren läßt, muß er 
noch lange nicht laufen.

> Bis auf die 10k am Reset.
> Hab den Reset Pin vom µC auf einen Max811 mit 4k7 in Reihe ausgeführt.
> Dann hab ich noch einen 1k Widerstand vom ISP Reset Pin an dieselbige
> LEitung gelegt.
>
> Max811--|---|----|--- RST Pin ISP
>         |   |_1k_|
>         |
>         |---|----|--- RST Pin µC
>             |_4k7|
>
> Sollte zusätzlich noch ein 10k Pull-up an die REset Leitung?

Nein. Da der MAX811 einen Push-Pull Ausgang hat, zieht er Reset auch 
ohne Pullup auf H. Die Verbindung von ISP sollte allerdings direkt an 
den µC gehen. Den 1K Widerling braucht es dort nicht unbedingt.

Als Test solltest du mal ein Programm probieren, das PA0 einfach auf H 
setzt und dann nix mehr tut (Endlosschleife). Wenn dann die LED immer 
noch aus bleibt, würde ich sagen dein Controller läuft nicht an. Kann 
fehlender Takt sein. Oder irgendwas hält ihn im Reset.


XL

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.