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; } } }
Stelle PortB nicht mit DDRB = 0xFF auf Ausgang, wenn du dort Taster angeschlossen hast.
Hallo!
Wenn Du mit
> DDRB = 0xFF;
den Port B bauf Ausgang schaltest, solltest Du dringlichst vermeiden,
Taster anzuschließen.
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
OK. Ähm. Asche auf mein Haupt Ich habs falsch Beschrieben. die Tasten hängen natürlich an PortC
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
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.
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.
Ö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.
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.
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)
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)
Schade da muss ich bis morgen warten mein ISP Programmer liegt noch auf Arbeit.
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.
> 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.
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.
Oh mann Ihr seid Toll... Ich hoffe das mit dem MC103 isses^^ werde ich allerdings erst morgen sehen :( ja der AVCC ist nicht angeschlossen
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.