Forum: Mikrocontroller und Digitale Elektronik Hoher Strom bei Taster am Eingan


von Massa-Master (Gast)


Lesenswert?

Hi
Ich habe mir ein Experimentierboard gebaut und bin jetzt grad ein wenig 
am rumprobieren.
Ich habe auf dem Experimentierboard einen Atmega128 mit 8 LEDs an PortA 
und 8 Tasten an PortB gegen 0V. Intern habe ich den PullUp aktiv.
Jetzt habe ich das Problem, daß wenn ich eine Taste drücke der Strom um 
150 mA pro Taste steigt. Wenn ich einen externen PullUp einbaue und den 
internen abschalte wird wiederrum der Taster nicht erkannt.
Mein Mini-Progrämmchen sieht so aus:

#include <avr/io.h>                             // I/O-Definitionen
#include <stdint.h>                   // Standard Integer Typen
#define  F_CPU 16000000                        // CPU Clock für 
Wartezeiten für
#include <util/delay.h>

void main (void)
  {
  int I;
  DDRA = 0xFF;
  DDRB = 0xFF;
  DDRC = 0x00;
  PORTC = 0xFF;
  while(1)
    {
    PORTA  = ~I;
    PORTB  = ~PINC;
    //PORTC  = ~I;

    _delay_ms (100);

    if (PINC == 0b11111110)
    {
    I++;
    }
    if (PINC== 0b11111101)
    {
    I--;
    }
    if (PINC== 0b11111011)
    {
    I=0xFF;
    }
    if (PINC== 0b11110111)
    {
    I=0x00;
    }


    }
  }

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Stelle PortB nicht mit DDRB = 0xFF auf Ausgang, wenn du dort Taster 
angeschlossen hast.

von Route_66 (Gast)


Lesenswert?

Hallo!
Wenn Du mit

>  DDRB = 0xFF;

den Port B bauf Ausgang schaltest, solltest Du dringlichst vermeiden, 
Taster anzuschließen.

von Karl H. (kbuchegg)


Lesenswert?

Massa-Master schrieb:
> Hi

> Ich habe auf dem Experimentierboard einen Atmega128 mit 8 LEDs an PortA
> und 8 Tasten an PortB gegen 0V.

Was stimmt denn nun.
Sind die Tasten am Port B oder an Port C?

laut Beschreibung: B
laut Programm: C

von Massa-Master (Gast)


Lesenswert?

OK. Ähm. Asche auf mein Haupt Ich habs falsch Beschrieben. die Tasten 
hängen natürlich an PortC

von Karl H. (kbuchegg)


Lesenswert?

Massa-Master schrieb:
> OK. Ähm. Asche auf mein Haupt Ich habs falsch Beschrieben. die Tasten
> hängen natürlich an PortC

Dann ist das Programm soweit OK.

Schaltplan?
bzw. mach ein Photo von der Platine. Das Bauchgefühl sagt: Da simmt was 
in der Verdrahtung nicht

von Massa-Master (Gast)


Angehängte Dateien:

Lesenswert?

So Hallo nochmal und danke für die Antworten.
Ich bin jetzt erst nach Hause gekommen und deshalb kommt auch jetzt erst 
die Schaltung.

Bemerkungen: Ich habe die Schaltung für mich und einen Kumpel entworfen 
und so universell gehalten wie möglich. Als erstes habe ich ein 
Mainboard mit dem Atmega, der Stromversorgung, RS232, USB und für jeden 
Port einen für mich genormten 16 poligen Stecker mit den einzelnen Port 
Bits, 5V und 0V. Dazu habe ich mir ein Tastenboard und ein LED Board 
gemacht. Es wird noch ein LCD Board und bei Bedarf noch anderes hinzu 
entwickelt.
Mainboard und Tastenboard habe ich mit reingestellt.
Ich weiss nicht was ich hätte viel falsch machen können. Derzeit sind 
der Max232- und der USB Chip nicht auf der Platine verbaut.

von Karl H. (kbuchegg)


Lesenswert?

Hab ich was auf den Augen oder hast du die LED ohne Vorwiderstand 
angeschlossen?

Anyway. Wenn die LED die 150mA verursachen würden, wären sie schon 
längst gestorben.
Auf dem Photo kann man leider nicht viel erkennen. Such alle Bahnen nach 
Kurzschlüssen nach GND oder Vcc ab.

Wie war das nochmal: Du drückst einen Taster und dann rinnen 150mA mehr.
-> Klingle speziell die Tastenleitungen nach Kurzschlüssen ab. Irgendwo 
müsste da imho was sein.

von Massa-Master (Gast)


Lesenswert?

Öhm die LEDs haben SMD Vorwiderstände. Kurzschlüsse kann ich keine 
finden. Eagle meckert auch keine übereinander liegenden Leitungen im 
Layout an. Mein kumpel hat sein Board auch schon fertig (Gleicher 
Aufbaustand) und er hat das selbe Problem.

von Karl H. (kbuchegg)


Lesenswert?

Schau dir auch das Flachbandkabel genau an ob es richtig rum gequetscht 
wurde. (Ist mir schon mal passiert. Meine Taster haben dann einen 
Kurzschluss getastet :-)

Wenn du einen Durchgangsprüfer hast, dann stelle fest, ob die Leitung 
vom Taster auch wirklich zum richtigen Pin am 128er geht. Bei der 
Gelegenheit auch gleich durchklingeln, ob es eine Verbindung zu Vcc oder 
GND gibt (bei ungedrücktem Taster)

Das ist irgendein Problem im Aufbau. Wenn du den Taster betätigst, 
schliesst du irgendwas kurz und das löst dann die 150mA aus.

von Massa-Master (Gast)


Lesenswert?

Die Schaltung will mich für dumm verkaufen ;)

Flachbandkabel Durchgepiepst und auf verdrehung geprüft: I.O.
Beim drücken der Taster 0V gegen Pin gepiepst: I.O.
Port-Pins gegeneinander gepiepst: I.O. (Kein Kontakt ;))

Anmerkungd er Strom der Platinenversorgung steigt pro gedrücker Taste so 
um die 80-100 mA. (Nein ich drücke jetzt nicht alle ^^ nur 2-3 und nur 
kurzzeitig)

von Karl H. (kbuchegg)


Lesenswert?

Was ist, wenn du ein Einfachstprogramm drauf los lässt
1
#include <avr/io.h>
2
3
int main()
4
{
5
  while( 1 )
6
    ;
7
}

d.h. alle Ports sind so wie sie Default sind, also Eingang ohne Pullup.
Hast du dann immer noch erhöhten Strom?

(Da darf sich jetzt überhaupt nichts ändern)

von Massa-Master (Gast)


Lesenswert?

Schade da muss ich bis morgen warten mein ISP Programmer liegt noch auf 
Arbeit.

von HildeK (Gast)


Lesenswert?

Ich sehe, dass der Steckverbinder der Tastenplatine SV8 heißt, ein 
gleichnamiger auf der Hauptplatine heißt auch SV8 an Port A - und die 
sind als Ausgänge konfiguriert.
Sollten nun doch die beiden SV8 zusammengekommen sein? Dann wären die 
Taster auf den Ausgängen.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> Schaltung.png

Ist wirklich AVcc am Atmega128 nicht angeschlossen?

Wie ist die M103C Fuse programmiert? Wenn die im Werkszustand ist, ist 
PORTC nur AUSGANG, d.h. du ballerst beim vermeintlichen Setzen der 
internen Pullups an PORTC ein HIGH zum Taster und beim Drücken des 
Tasters ohne Serienwiderstand gegen GND raus.

von Karl H. (kbuchegg)


Lesenswert?

Stefan B. schrieb:
>> Schaltung.png
>
> Ist wirklich AVcc am Atmega128 nicht angeschlossen?
>
> Wie ist die M103C Fuse programmiert?

Die vermaledeite 103.
Ja, das ist ein guter Hinweis.

von Massa-Master (Gast)


Lesenswert?

Oh mann Ihr seid Toll... Ich hoffe das mit dem MC103 isses^^ werde ich 
allerdings erst morgen sehen :(

ja der AVCC ist nicht angeschlossen

von Karl H. (kbuchegg)


Lesenswert?

Massa-Master schrieb:
> Oh mann Ihr seid Toll... Ich hoffe das mit dem MC103 isses^^ werde ich
> allerdings erst morgen sehen :(
>
> ja der AVCC ist nicht angeschlossen

Keine gute Idee.
Dann kannst du den ganzen Port A nicht benutzen.
(Avcc ist die Versorgung für Port A. Du brauchst sie, unabhängig davon, 
ob du den ADC benutzt oder nicht. Also vid, vid, schnell ein Drähtchen 
zu Vcc eingelötet und einen 100nF nach GND nóch drannpappen)
Und wenn du schon dabei bist, machst du auch noch einen 100nF 
Kondensator von ARef nach GND

von Massa-Master (Gast)


Lesenswert?

OK. Nochmal Rückmeldung....
Hab jetz meinen uralten verstaubten Parallel Programmer rausgekramt. Es 
lag natürlich an der MC103. Ihr seid Spitze.
Zum Letzten Post: die vorgeschlagenen Änderungen werden schnellstmöglich 
eingebaut ^^ Will morgen endlich mal mein T6963 LCD anbauen und testen.

Habt noch einmal vieeeeeeelen dank. Immer wieder toll nette Hilfe im 
I-Net zu finden.

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.