mikrocontroller.net

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


Autor: Massa-Master (Gast)
Datum:

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


    }
  }

Autor: Stefan B. (stefan) Benutzerseite
Datum:

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

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Wenn Du mit

>  DDRB = 0xFF;

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Massa-Master (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Massa-Master (Gast)
Datum:
Angehängte Dateien:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Massa-Master (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Massa-Master (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist, wenn du ein Einfachstprogramm drauf los lässt
#include <avr/io.h>

int main()
{
  while( 1 )
    ;
}

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)

Autor: Massa-Master (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schade da muss ich bis morgen warten mein ISP Programmer liegt noch auf 
Arbeit.

Autor: HildeK (Gast)
Datum:

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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Massa-Master (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Massa-Master (Gast)
Datum:

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

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.