mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR mit mehr als 26 I/O Ports


Autor: Mario Mauerer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich suche einen AVR, der mehr als 26 I/O Ports hat... Besser wären mehr
als 30 I/O Ports... Bedingung: er muss ein DIP-Gehäuse haben, also nix
SMD. Kann man bei den 40-pinnern die AD/C-Eingänge als I/O-Ports
gebrauchen? Schon, oder?
Was könnt ihr mir so empfehlen? Sollte von Bascom unterstützt werden.

Herzliche Grüsse
Mario

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

alle Megas im PDIP40. ADC Kanäle kann man problemlos als normale IOs
verwenden.

Matthias

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt halt drauf an, was du unter IO-Port verstehst. Willst du 30
freie Pins haben, neben denen, auf denen die serielle Schnittstelle
usw. liegen, oder meinst du insgesamt 30 IO-Pins?
Das größte, was du im DIL-Gehäuse bekommen kannst, sind 32 IO-Pins,
inklusive Doppelbelegung wie AD-Wandler, Schnittstelle usw.

Bleibt dir nur:

1. Doch auf SMD und einen größeren AVR --> z.B. der 640, der sollte
genug Ports haben, das ist ein 100-Pinner grins
2. Weitere IO-Ports über Schieberegister dranbauen

Ralf

Autor: Mario Mauerer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, hab was gefunden...
Z.B. den Mega 16.
Die Schnittstelle brauch ich net, ich nehm den Chip immer raus und
progge extern.

Ok, Danke für die Hilfe!

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei einem 3-state progger kan er auch drin bleiben

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ralf

"Das größte, was du im DIL-Gehäuse bekommen kannst, sind 32 IO-Pins"

???

Der ATMega162 hat 35 IOs.


Peter

Autor: Aleksej (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2peter dannegger
Mega8515 hat auch 35 IOs

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sonst wirklich serielle schieberigister benutzen.
zur not kann man sich nochmal schnell die aktuelle ct besorgen. dort im
ct-bot projekt wird es auch so gemacht ;-)

Autor: Manos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist auch immer die Frage, was willst Du an die 30 I/O's dranhängen...
Tasten kann man Multiplexen (z.B. 12 Tasten 7 Leitungen, 16 Tasten 8
Leitungen), gleiches könnte für eine LED-Matrix als Ausgabe gelten...

Vielleicht kämst Du dann sogar mit einem 28Pin aus...

Manos

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann auch Tasten und LEDs über den gleichen Port Multiplexen
(Application Note von Atmel: AVR244 oder so ähnlich)

Autor: Mario Mauerer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm, Multiplexen...mal googeln, was dat is..
Wie kann denn das funktionieren? Mehrere Taster an einem Port...
cool...

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rupfe mal ne PC-Tastatur auf.

Der Chip da drin hat keine 102 Anschlüsse und kann trotzdem alle 102
Tasten abfragen.

Drückst Du allerding mehrere Tasten gleichzeitig, kann er das nicht
mehr erkennen.

Die Sondertasten fragt er daher einzeln ab, damit z.B. Strg+Alt+Entf
geht.


Ohne Dioden kann man in einer Matrix nur 2 Tasten gleichzeitig
eindeutig erkennen.


Peter

Autor: hans dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit den tastern kann man mit ein paar widerständen und auch an digitalen
ios pro port-pin zwei tasten anschließen. im prinzip ist das dann eine
kreuz-schaltung in der jeder port-pin die anderen mit einer spannung
versorgt und die taster dann über die dioden den dann leiten.
mit einem adc-kanal kannst du auch noch mehr anschließen, wenn du einen
DAC mit den tastern und widerständen baust.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter:
Warum sollte er mehrere gleichzeitig betätigte Tasten nicht erkennen?
Es ist nur ein Timing-Problem, da man dazu die Zeilen und Spalten
einzeln durchtickern muß, und nicht alle gleichzeitig abfragen
kann(ApplicationNote AVR243).

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kombinierte Tastatur und LED-Matrix: AVR242
als PDF zu finden unter:
http://www.atmel.com/dyn/resources/prod_documents/...

Warum Atmel sonen dämlichen Dateinamen verwendet ist mir ein Rätsel.

Autor: Mario Mauerer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, hab jetzt mal gegoogelt, aber irgendwie find ich net, wie man das
Ganze mit Tastern macht... Man baut eine Matrix auf, aber wie erkennt
man denn nun, welcher Taster in der Matrix gedrückt wird?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du dir denn schon Rahuls Link angesehen???

...

Autor: Mario Mauerer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar! Aber da steht das Prinzip nicht drin erklärt, nur, wie und wo die
Taster angeschlossen sind... ??

Autor: Manuel B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(entfernt)

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

Bewertung
0 lesenswert
nicht lesenswert
Ist ganz simpel

Das sei die Matrix

            PIN0  PIN1  PIN2  PIN3

    PORT7    1     2     3      F

    PORT6    4     5     6      E

    PORT5    7     8     9      D

    PORT4    A     0     B      C


Du schickst zb an PORT7 eine 1 rein. Ist eine der Tasten
'1', '2', '3' oder 'F' gedrueckt, dann siehst Du entsprechend
an PIN0, PIN1, PIN2 oder PIN3 diese 1, ansonsten sind die 0.
Danach gibst Du PORT7 wieder auf 0 und belegst PORT6 mit einer
1. Siehst du an PIN0 diese 1, dann war die Taste '4' gedrueckt
bei PIN1 die '5' usw.
Danach waehlst du die naechste Zeile mittels PORT5 aus, usw.

Im Grunde setzt Du eine ganze Zeile unter Strom und siehst
nach an welcher Spalte der Strom wieder rauskommt. Am Kreuzungs-
punkt Zeile/Spalte muss dann die Taste gedrueckt sein.

Autor: Mario Mauerer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahaa, so geht das! Jetzt is klar!
Cooler Tip und vielen Dank! Das steht im Appnote nämlich net drin....

Dank dir!

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tip am Rande:

Zu den meisten Appnotes gibt es auch noch ein Codebeispiel im
ASM-Format...

...

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte man nicht auch mit einem Encoder für die Zeilen und einem Decoder
für die Spalten nicht sogar mit 4 Pins auskommen können?

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man es mit Schieberegister und anderen Logik-Bausteinen realisiert,
kann man so ziemlich jeden Controller benutzen, und fast jedes Problem
in der Richtung lösen...
Wenn man aber nicht mal fähig ist, den "parametric table" auf
atmel.com lesen bzw. verstehen zu können, benutzt man einen Intel-Core
für eine Fussgängerampel (die man auch mit einem Zebrastreifen umd
Kreisverkehr ersetzen könnte...).

Autor: Mario Mauerer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, aber wenn ich nun z.B. mehr als 2 Tasten in einer Spalte drücke,
dann krieg ich ja einen kurzen, wenn ich net mit Dioden abriegle. Aber
wenn ich nun 2 Tasten in einer Spalte gleichzeitig drücke und in einer
der Zeile mit gedrückter Taste eine weitere Taste drücke, die direkt
daneben liegt, dann stimmts auch nicht mehr...
Was kann man da machen? Damit man mehrere beliebige Tasten einer
gemultiplexten Tastatur gleichzeitig drücken kann??

Herzlichen Gruss
Mario

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hannes:
Nicht nur, dass in den AppNotes Asm-Beispiele sind, es sind auch
Programmablaufpläne dabei. Dann sind die meisten Problem ("zwei Tasten
gleichzeitig drücken" etc) auch meist schon behandelt, oder?
Irgendwie scheine ich mir eine andere AppNote als Mario angeguckt zu
haben...

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Warum sollte er mehrere gleichzeitig betätigte Tasten nicht
>> erkennen? Es ist nur ein Timing-Problem, da man dazu die Zeilen
>> und Spalten....

Sehe ich genauso. Und wenn man es cleverer macht so fragt man erstmal
Spaltenweise/Zeilenweise ab und falls es Tasterkollisonen gibt fragt
man nochmals selektiv nur die betroffenen Spalten/Zeilen einzeln ab.
Wozu ist den dann der High-Z State und die DDRs im AVR dann noch gut ?

Gruß Hagen

Autor: mh. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tut doch nicht so erwachsen!

Wenn ich jetzt nicht vollkommen daneben liege, testet das
Atmel-Beispiel nur auf eine Taste. Zumindest der Ablaufplan auf Seite
neun. Oder was übersehe ich hier?

Und bei der Frage, wie man "clever" abfragt ob die 4 gedrückt ist,
wenn 1, 2 und 5 gedrückt sind, müsst Ihr mir auch mal auf die Sprünge
helfen.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Ablauf:
Die einfache Variante ist, einen Port auf Eingang zu stellen und die
Pull-Ups einzuschalten.
Der andere Port wird als Ausgang geschaltet und auf Masse gezogen.
Jede gedrückte Taste führt zu einem Low-Pegel an einem Eingang.
Dann vertauscht man die Funktionen der beiden Ports, und stellt so die
zweite Koordinate der gedrückten Taste(n) fest.
Dadurch kann es zu "Phantom-Tasten" kommen (siehe AppNote).
Um die zu verhindern, wird nicht der gesamte Port zum Ausgang gemacht,
sondern immer nur ein Pin (und der dann auf Low gelegt).
Dadurch kann man bei den Eingängen feststellen, ob mehr als nur eine
Taste gedrückt wurde.
Das erfordert natürlich etwas mehr Zeit, dafür ist es sicherer.
Die Quick'n'dirty-Methode hat meist zur Folge, dass die Taste mit der
höheren Priorität "gewinnt". Das ist die, die als letzte positiv
überprüft wird.

Autor: mh. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dass ich einzel durchtesten kann, war mir schon klar. Dass man damit
mehr rauskriegt als mit zeilen- und spaltenweisem Test auch.

      P0   P1
      |    |
P7 -- 1 -- 2 --
      |    |
P6 -- 4 -- 5 --
      |    |

Angenommen, 1, 2 und 5 sind gedrückt. Dann messe ich durch:

P0 ->     P1, P6, P7
P1 -> P1,     P6, P7
P6 -> P1, P2,     P7
P7 -> P1, P2, P6

Also: Wie schließe ich jetzt auf den Zustand von Schalter 4?
Ich glaube auch, Du hast eine andere AppNote als ich ;)

Autor: Manos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde versuchen erstmal alles auf Eingang (P0 und P1 mit Pullup) zu
setzen. Anschließend P7 als Ausgang auf Low. Dann sehe ich an P0 und P1
ob sie High oder Low sind (in deinem Fall beide Low). Anschließend P7
wieder Eingang und P6 als Ausgang auf Low. Wieder P0 und P1 checken und
da sollte dann P1 auf Low sein und P0 immer noch High, da hier keine
Verbindung geschlossen wurde.

      P0   P1
      |    |
P7 -- 1 -- 2 --
      |    |
P6 -- 4 -- 5 --
      |    |

Autor: ,,,, (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich suche einen AVR, der mehr als 26 I/O Ports hat

www.atmel.com

Autor: mh. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Anschließend P7 wieder Eingang und P6 als Ausgang auf Low. Wieder
> P0 und P1 checken und da sollte dann P1 auf Low sein und P0 immer
> noch High, da hier keine Verbindung geschlossen wurde.

Doch, wurde sie. Die Verbindung geht von P6 zu 5. Der schließt eine
Verbindung zur Senkrechten von P1. Von dort schließt 2 die Verbindung
zur Waagerechten von P7. Von dort schließt 1 die Verbindung zur
Senkrechten von P0. P0 wird low.  Oder etwa nicht?

      P0   P1
     1|    |2
P7 ---+----+---
      |    |
P6 --------+---
     4|    |5


Ich korrigiere meine Tabelle nochmal, inhaltlich bleibt sie gleich.

P0 ->     P1, P6, P7
P1 -> P0,     P6, P7
P6 -> P0, P1,     P7
P7 -> P0, P1, P6

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ohne Dioden kann man nur max 2 Tasten sicher erkennen.
Bei 3 oder mehr Tasten können Pseudotasten entstehen:

      P00  P01  P02
       |    |    |
P10 -- p --   -- t --
       |    |    |
P11 -- t --   -- t  --
       |    |    |
P12 --   --   --   --
       |    |    |

Ohne Dioden ist durch die 3 Tasten (t) auch P00 mit P10 verbunden und
es scheint die Pseudotaste (p) gedrückt zu sein

Mit Dioden (eine je Taste) kann man unbegrenzt gleichzeitige Tasten
erkennen.


Hier mal ein Beispiel für das Auslesen und Entprellen:

http://www.mikrocontroller.net/forum/read-4-20511.html#new


Peter

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.