Forum: Mikrocontroller und Digitale Elektronik Wie umgehen mit doppelt belegten IO-Pins (Atmega88PA)?


von Kim-Yannick (Gast)


Lesenswert?

Da ich für mein Projekt 17 verschiedene IO-Pins brauche, wäre es für 
mich am sinnvollsten für die 16 Outputs PB und PD zu nutzen und PC0 als 
Input.

Die ersten PB-Pins sind allerdings auch für den USBAsp-Programmer als 
SPI-Schnittstelle notwendig. Kann ich problemlos diese Pins als Output 
verwenden oder ist das für den Programmer schlecht, wenn dort Strom 
zurückfließt?

Dasselbe geht auch für den Reset-Pin. Wieso sollte man einen 
Input/Output irgendwo haben wollen, wenn bei einem Signal der Controller 
resettet?

von Frank K. (fchk)


Lesenswert?

Einen 40-Pinner kannst Du nicht nehmen? zB Mega164?

Der Reset-Pin lässt sich nur per Fuse zum Portpin machen. Wenn Du keinen 
High-Voltage Programmer hast, ist das eine Einbahnstraße, d.h. ohne 
Rset-Pin funktioniert ISP nicht mehr. Das solltest Du also tunlichst 
lassen.

fchk

von google (Gast)


Lesenswert?

Brauchst Du tatsächlich 16 verschiedene Ausgänge am Controller? Es 
lassen sich keine Ausgänge multiplexen oder per Schieberegister seriell 
bedienen? Wie schnell sind die Abläufe an den einzelnen Pins? Was hängt 
dran?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Kim-Yannick schrieb:
> Kann ich problemlos diese Pins als Output verwenden oder ist das für den
> Programmer schlecht, wenn dort Strom zurückfließt?

Während der Programmierung ist der Controller im Reset und daher
seine Portpins nicht aktiv treibend.

Allerdings wollen Billigstprogrammierer wie ein typischer USBasp
natürlich auch dann schon die Pins treiben, wenn sie nur angesteckt
sind und noch gar nicht programmieren.  Besser wäre dann ein
AVRISPmkII, der belegt die Pins erst, nachdem er /RESET zieht.

Generell würde ich aber auch zu einem Controller mit mehr Pins
tendieren.  Falls die Baugröße ein Problem ist, du aber noch dem
„Bastler können nur DIP“-Paradigma verhaftet bist: trau dich einfach
zu SMD.  So ein 44-Pin-TQFP mit 0,8 mm Pinraster ist noch relativ
gemütlich auch mit Bastlermitteln zu verarbeiten.

von Praktiker (Gast)


Lesenswert?

Hallo,

fast volle Zustimmung für die letzte Aussage ;-)

Warum fast?
TQFP ist nur dann einfach zu händisch zu verlöten wenn die Platine 
hochwertig ist also zumindest auch eine gute Lötstoppmaske aufweist.

Das ist nur schwer, aber auf jeden Fall teuer selbst herzustellen.

Also Platine fertigen lassen.
Das ist aber als Einzelstück und für den privaten Hobbybedarf immer 
teurer als eine fertige und hochwertige Lochrasterplatine mit 
Kupferaugen zu verwenden die man auch kurzfristig beschaffen kann. (Bei 
gefertigten Platinen wird es bei kurzfristig für den Hobbyisten extrem 
teuer, für den Profi auch, aber der gibt die Kosten einfach weiter).

Was aber möglich ist:
Eine hochwertige aber sehr preiswerte Adapterplatine TQFP auf DIL (und 
auch viele andere SMD footprints) zu nutzen.
Die gibt es in diversen E-B.y Shops auch direkt aus den Inland, also mit 
erträglichen Lieferzeiten und einfachen für "jeden" nutzbaren 
Bezahlverfahren (nicht jeder ist ein Freund von Paypal und 
Kreditkarten).

Der Vorteil der kleinen Baugröße geht natürlich verloren, aber das 
scheint beim TO kein Problem zu sein.

Praktiker

von Michael U. (amiga)


Lesenswert?

Hallo,

eigentlich ist die Nutzung der ISP-Pins kein wirkliches Problem.
Was passiert? Die Programmerseite hat Jög Wunsch schon angeführt.
Meinen AVR-Dragon kann ich eigentlich immer dranlassen, der trennt sich 
recht gut, wenn nicht programmiert wird. Ein einfacher Programmer 
verhindert meist die richtige Funktion der Schaltung, weil er auch 
inaktiv feste Pegel auf die Leitungen legt.

Was passiert sonst? Eingänge an den ISP-Pins sind dann unproblematisch, 
wenn es Tasten oder Schalter sind, die ich beim Programmeiren 
ausschalten oder eben nciht drücken kann. Versehentliche Mißhandlungen 
z.B. SCL per Schalter auf GND oder Ub überlebt Programmer und AVR schon, 
ist nicht fein, aber macht mir keine Sorgen. Natürlich sollte man an 
sowas denken und bei fehlgeschalgener Programmierung sowas kontrollieren 
und nicht 10 Versuche mache...

ISP als Ausgänge ist auch meist unproblematisch. Alle mir im Moment 
einfallenden SPI-ICs haben CS-Eingänge, die die Ausgäbge der ICs in 
TriStae schalten und Daten ignorieren. Also ein externer PullUp um CS/CE 
oder so und er stört nicht. Ich finde in AVR-Schaltungen sehr selten 
diesen PullUp, warum eigentlich? RFM-Module, externe DA/AD-Wandler, 
Speicherbausteine usw. sind damit generell gut bedient, weil sie nie 
zuverlässige Zustände haben, wenn der AVR im Rest ist.

Bei eigenen Sachen ist das Hauptproblem, was passieren kann. LEDs mit 
Vorwiderstand direkt an den ISP-Pins sind problematisch, weil der 
Programer diese mit treiben muß. Ist ein Transistor o.ä. dazwischen, 
gibt es nur lustiges Geflacker, macht nicht wirklich was.
Relais, Transistoren o.ä., die Lasten schalten, sind kritisch. 
Flackernde LEDs sind lustig, klappernde Relais und wahllos anlufende 
Motore sind nicht lustig.

Schieberegister (die beliebten 74HC595) haben einen OE-Eingang, man kann 
also die Ausgänge mit einem Pin abschalten, muß eben prüfen, was dann 
passieren würde. PullUp an /OE und schon ist Ruhe. Das kosten ein Pin 
zum Einschalten, man kann das aber oft mit einer ganz anderen Funktion 
kombinieren, der AVR-Pin muß ja nur L haben, wenn es Schieberigister 
aktiv sein soll. Man kann auch den Reset des 595 nutzen, hängt eben von 
dessen Funktion ab.

Wenn ich mit einem AVR auskommen will, sortiere ich da beim Entwickeln 
oft die Pins um, weil ich eben noch 1 oder 2 brauche. Meist bekomme ich 
die dann auch frei, manchmal ergibt sich dann beim Sortieren der 
Funktionen und Abläufe und Datenblätter noch manch andere Vereinfachung, 
die mir vorher garnicht aufgefallen ist.

Ich habe natürlich einen Vorteil: Anfang ist meist Steckbrett, Ende eine 
Lochrasterplatine, wo dann eben nochmal umsortiert oder auch komplett 
neu gebaut wird.

Natürlich nehme ich auch einen größeren AVR, wenn es nötig ist, es ist 
aber oft umgekehrt: ein am Anfang genutzer Mega644 wird zum Mega328 oder 
ein Mega88 zum Tiny85.

Auch die Entscheidung, ob es ein 40Pin oder ein 28Pin + externer 
Erweiterung wird, fällt oft erst irgendwo mitten im Projekt.

Gruß aus Berlin
Michael

von Axel S. (a-za-z0-9)


Lesenswert?

Praktiker schrieb:
> TQFP ist nur dann einfach zu händisch zu verlöten wenn die Platine
> hochwertig ist also zumindest auch eine gute Lötstoppmaske aufweist.

Nich unbedingt. Wenn man genug Platz läßt, also z.B. die Pads in 
Richtung nach außen etwas länger macht und Leiterbahnen in mindestens 
2mm, besser 3mm Abstand hält, dann kann man TQFP mit 0.8mm Pitch noch 
ganz problemlos händisch löten.

Kritischer wird es mit 0.5mm Pitch, aber dann hilft ein einfacher Trick: 
Kapton-Klebeband. Damit klebt man einfach die Platine rund um die Pads 
ab (ein 5mm Streifen reicht schon) und kann dann relativ ungeniert mit 
der "Zinntropfen" Methode und viel Flux rumsauen.

von Kim-Yannick (Gast)


Lesenswert?

Kann denn etwas passieren, wenn man die Pins doch als Output verwendet? 
Mit Löten habe ich überhaupt keine Erfahrung, egal ob SMD oder 
"normales" Löten.

von Kim-Yannick (Gast)


Lesenswert?

Kim-Yannick schrieb:
> Kann denn etwas passieren, wenn man die Pins doch als Output
> verwendet?

Oh, ich habe die Nachricht von Michael jetzt erst gelesen.

Grundsätzlich habe ich gar kein "festes" Projekt, sondern ein paar 
Bauteile bei mir rum liegen, mit denen ich am Steckbrett experimentiere.

Für diese Schaltung wollte ich eine 8x8-LED-Punktmatrix steuern und mit 
einem Knopf verschiedene Sachen auf dem Display anzeigen. Daher auch 17 
Pins.

Wo könnte ich am besten etwas über das Löten lernen? Und welche 
Lötsachen sollte ich mir als Anfänger am besten zulegen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Praktiker schrieb:
> TQFP ist nur dann einfach zu händisch zu verlöten wenn die Platine
> hochwertig ist also zumindest auch eine gute Lötstoppmaske aufweist.

Ich habe auch schon problemlos ATmega1281 (TQFP mit 0,65 mm Raster)
auf selbstgefertigten Platinen verlötet, also ohne Lötstopp.  (Ich
habe auch schon QFN auf selbstgemachten Platinen verlötet, aber das
muss man sich nicht freiwillig antun.)

Kim-Yannick schrieb:
> Wo könnte ich am besten etwas über das Löten lernen?

Das ist in erster Linie Übungssache.

Erstmal sollte man Löten natürlich ohne SMD lernen.  Wichtig bei
einer Lötstelle ist, dass man ausreichend viel Flussmittel benutzt,
damit sich zwischen den beiden Partnern keine Oxidschicht befindet –
das gäbe dann eine so genannte „kalte Lötstelle“, die nicht
dauerhaft hält, auch wenn sie anfangs Kontakt hat.

Für einfache Schaltungen (LED-Blinker oder dergleichen) muss man da
nicht einmal irgendwelche Platinen benutzen, das geht auch völlig
„frei fliegend“.

Zum Üben von SMD-Löten kann man sich irgendwelchen Elektronikschrott
beschaffen.  Mit der Heißluftpistole ablöten, ggf. die Pads mit
Entlötlitze und Flussmitteln säubern (Flussmittelreste kann man
hernach mit Aceton gut entfernen), dann versuchen, die Teile wieder
aufzulöten.

> Und welche
> Lötsachen sollte ich mir als Anfänger am besten zulegen?

Irgendwas mit Temperaturregelung ist mehr als sinnvoll, sofern man
nicht nur Dachrinnen und Heizungsrohre klempnern will. ;-)  Die
Spitze nicht zu klein wählen, sonst kann sie die Wärme nicht an die
Lötstelle bringen.  Gut sind so genannte Dauerlötspitzen, die sich
nur sehr langsam verbrauchen.  Klassische Lötspitzen aus blankem
Kupfer legieren sich an der Spitze allmählich ins Lötzinn ab (als
Gegenmittel hilft es ein wenig, Lötzinn mit Kupferanteil zu
benutzen), die muss man dann regelmäßig neu ausformen.  Besser als
eine Feile ist es dabei, sie mit dem Hammer kalt auszuschmieden;
durch die dabei eintretende Kaltverfestigung legieren sie dann
langsamer ab.

Ansonsten: je besser das Werkzeug, um so mehr Spaß macht es natürlich.
Ist eine Frage, wie dick dein Geldbeutel dafür ist.  Das untere Ende
des sinnvollen Bereichs dürfte sowas sein wie ebay 361405226601 oder
ebay 151828593147 (keine Ahnung, wie gut die Entlötpumpe beim ersten
wirklich taugt), das obere Ende (für Hobbyisten) wäre JBC, ebay
231705525199.  Ich kann dir versichern, dass damit das Löten richtig
Spaß macht. :-)  Aber für nur 10 Lötstellen im Jahr lohnt so eine
Investition gewiss nicht (auch wenn es eine lebenslange sein dürfte).

> Grundsätzlich habe ich gar kein "festes" Projekt, sondern ein paar
> Bauteile bei mir rum liegen, mit denen ich am Steckbrett experimentiere.

Dann sollte es aber auch kein Thema sein, stattdessen gleich einen
ATmega16A oder sowas zu benutzen.  Der bietet dann einfach ein paar
Pins Reserve.

: Bearbeitet durch Moderator
von Fred R. (fredylich)


Lesenswert?

Hallo,

warum nicht I2C nutzen?

Dann benötigst Du nur 2 Pins am MC und kannst locker noch 16 Expander 
PCF 8574/A anhängen macht zusätzlich 128 I/O.
Diese ICs benötigen keine weiteren Bauteile für Außenbeschaltung nur 
einmal zwei Widerstände für SCL und SDA Leitung.


Mit freundlichen Grüßen
Fred

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.