Forum: Mikrocontroller und Digitale Elektronik Pullup aktiviert?


von Max (Gast)


Lesenswert?

Hallo,

ich habe eine Schaltung gebaut, die eine 7Segmentanzeige ansteuern
soll. Nun zeigt sie mir immer die "1" an.Obwohl kein Schalter
gedrückt wurde. Könntet ihr mir sagen, ob was im Programm falsch ist.
Die Schaltung besteht nur aus wirklich benötigten Teilen wie Quarz,
Spannungsstabilisierung, Taster , und die  7-Segmentanzeige. Ich habe
also keine externen Pullupwiederstände. Habe ich die internen richtig
aktiviert?

Gruß Max

Hier mein Programm:

$regfile = "2313def.dat"
$crystal = 3686400
Dim Ledvar As Byte
Portd = &B1111111
Config Portb = Output
Config Portd = Input
                                      'Port B = Ausgang
Do
Ledvar = 255    'Wenn keine Taste gedrückt leuchtet keine LED
If Pind.0 = 0 Then Ledvar = 207                             '1
If Pind.1 = 0 Then Ledvar = 145                             '2
If Pind.2 = 0 Then Ledvar = 193                             '3
If Pind.3 = 0 Then Ledvar = 71                              '4
If Pind.4 = 0 Then Ledvar = 97                              '5
If Pind.5 = 0 Then Ledvar = 61                              'L
If Pind.6 = 0 Then Ledvar = 183                             'r
Portb = Ledvar
Loop

von Max (Gast)


Lesenswert?

Hi,

ich habe das Problem gelöst; es lag an einer Kabelverbindung. Nun ich
habe aber noch ein Problem und zwar hängen die Leds (der
Segmentanzeige)direkt am AVR. Um diesen zu entlasten will ich die den
Strom etwas mindern. das kann ich ja durch PWM. Könnt ihr mir hier
helfen , weil ich nicht weiss , wie ich das in mein Programm einbinden
kann. Vielleicht könnt ihr mir sogar dies in den oben angefügten code
schreiben -falls es nicht zuviel zeit in anspruch nimmt-

Vielen Dank (:
Gruß Max

von Marius Schmidt (Gast)


Lesenswert?

wieso benutzt du nicht einfach einen Vorwiederstand für die LEDs?

von Dirk (Gast)


Lesenswert?

Hi,

du solltest auf jeden FALL Vorwiderstaende benutzen sonst geht dein AVR
in RAUCH auf!!!

von Marius Schmidt (Gast)


Lesenswert?

Naja, nicht sofort... das hält der ziemlich lange aus (jedenfalls bei
mir) aber er wird nach 'ner weile richtig warm :)

von Max (Gast)


Lesenswert?

Hallo,
ja das habe ich nun auch gemacht, aber mir wäre es lieber wenn ich die
Helligkeit über die Software regeln kann. KLar würde es mit einem Poti
gehen, aber wie gesagt die Helligkeit muss über Software verndert
werden können, da der AVR mit einem anderen kommuniziert und von diesem
in der Helligkeit geregelt werden muss.   Gruß Max

von Mark Hämmerling (Gast)


Lesenswert?

Salve,

also mit einem Poti würde es so einfach auch nicht gehen, weil
unterschiedlich viele LEDs eingeschaltet sein können, und sich daher
der Strom vervielfacht. Jede LED der 7-Segmentanzeige MUSS mit einem
Vorwiderstand betrieben werden, damit der Strom auf das spezifizierte
Maximum begrenzt wird. Man kann LEDs im Pulsbetrieb mit einem
Vielfachen des erlaubten Dauerstroms betreiben - aber auch hier muß das
Datenblatt zu Rate gezogen werden. Allerdings wird Dein AVR den
entsprechenden Strom so einfach nicht liefern können.
Ich persönlich würde es so machen: LEDs an Shiftregister (z.B. 595),
dieses an SPI, Enable an PWM-Ausgang, und natürlich jede LED mit
Vorwiderstand versehen. Das spart Pins und ist vorallem jederzeit auf
beliebig viele Stellen erweiterbar, ohne einen Pin mehr zu kosten.

Mark

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.