PIC12F675 - ein Port zu wenig Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
PIC12F675 - ein Port zu wenig |
|
|
|
|
BID = 740183
zwack Stammposter
Beiträge: 326
|
|
Hallo Leute,
ich habe folgendes Problem: Mir fehlt für mein aktuelles Projekt
ein Port(Ein- oder Ausgang); und auf einen 14-Beiner möchte ich
deswegen nicht umsteigen wenn möglich.
Genial wäre es, wenn der Ein- und Ausgang sich einen Port teilen könnten,
also 1 Eingang und 1 Ausgang über einen Portpin realisieren.
Bei Microchips Tipps 'n' Tricks gibt es verschiedene Trickserapplikationen,
aber halt nicht das was ich brauche.
Am Besten ich beschreibe mal die Anforderung.
Eingang ist ein Dipschalter, Art der Anschaltung ist noch wahlfrei.
Ausgang Kleinsignalrelais über Schalttransistor geschaltet, auch hier die Schaltungsvariante noch offen.
Das einzig Gute an meinem Problem ist, wenn das Relais angesteuert wird,
muss der Schaltereingang nicht gelesen werden.
Wisst ihr eine Lösung oder kann ich das knicken?
Grüße zwack |
|
BID = 740190
Bartholomew Inventar
Beiträge: 4681
|
|
Hoi zwack,
TTL-Eingang und Relais-Ausgang an einem Pin geht nicht. Grund: wenn der Portpin auf Input steht, muss das Mäuseklavier den Pin ja auf saubere TTL-Pegel ziehen können (sowohl high als auch low). Das würde zwangsläufig das Relais genau so steuern, als ob der Output-Pin umgeschaltet würde.
Aber eventuell kann man an den anderen 5 IO-Pins was zusammenlegen. Was hängt denn da alles dran? Muss das alles gleichzeitig funktionieren können?
Gruß, Bartho
[ Diese Nachricht wurde geändert von: Bartholomew am 11 Jan 2011 22:07 ] |
|
BID = 740262
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Das einzig Gute an meinem Problem ist, wenn das Relais angesteuert wird,
muss der Schaltereingang nicht gelesen werden. |
2 Widerstände nötig:
Nimm als Relaistreiber einen MOSFET und binde den Schalter (mit eigenem Pullup) über einen Widerstand an den Portpin, sodaß der Treibertransistor auf jeden Fall korrekt angesteuert werden kann, egal wie der Schalter steht.
Relais sind langsam.
Um zu zu sehen wie der Schalter steht, kann man da problemlos für ein paar µs die Ansteuerung wegnehmen oder einschalten, ohne daß sich am Schaltzustand des Relais etwas ändert.
|
BID = 740267
Bartholomew Inventar
Beiträge: 4681
|
Das dürfen hoffentlich auch ein paar µs mehr sein, denn Lesezugriffe auf PIC-I/O-Pins, die kapazitativ belastet und zudem eben gerade noch Output waren, sind äußerst heimtückisch. Da liest man durch den Schmitt-Trigger (GP2) oder durch die TTL-Schaltung (alle anderen IO-Pins) gerne mal einen anderen Pegel ein, als man eigentlich dachte. Und wenn dann auch noch Spannungsspitzen aus dem kollabierenden Magnetfeld eines benachbarten Relais durch die Gegend geistern...
Ich bleibe da skeptisch und würde das als letzten Notnagel sehen.
Lesefutter: http://www.microchip.com/forums/tm......78014
Gruß, Bartho
|
BID = 740268
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Lesezugriffe auf PIC-I/O-Pins, die kapazitativ belastet und zudem eben gerade noch Output waren, sind äußerst heimtückisch. |
Ich denke, du sprichst da ein altes Problem an, welches aber nicht nur PICs betrifft.
Dabei geht es darum, daß unterschiedliche I/O-Befehle des gleichen Prozessors verschieden implementiert sind, und ja nach Instruktion den Portpin oder den Latch lesen.
Ich würde das aber nicht als heimtückisch ansehen wollen, wenn man die Datenblätter aufmerksam gelesen hat.
Natürlich muss man kapazitive Effekte berücksichtigen, aber das ist i.d.R nicht allzu kritisch.
Wenn man z.B. einen 2k2 Pullup am Schalter anbringt, und weitere 2k2 zwischen Portpin und Schalter, so liefert der nun mit maximal 2,3mA belastete Port weiterhin einwandfreie H- und L-Pegel.
Wenn der Port außerdem einen nicht allzudicken MOSFET treibt, so hat man es vllt. mit einer Eingangskapazität von 1nF zu tun und das gibt mit den 4k4 eine Zeitkonstante von 4,4µs.
Nach der dreifachen Zeit, 12µs, ist also auf jeden Fall ein sauberer Pegel erreicht, der dem Schalterzustand entspricht, und nach dem Einlesen darf man sofort wieder den Ausgang aktivieren.
Wenn man diese Abfragen mit 800Hz wiederholt, so ist das sicher schnell genug und trotzdem entspricht das nur einem Tastverhältnis von 1%.
Wegen der Induktivität der Spule bleibt der Relaistrom praktisch gleich, er ändert sich nur um diesen Betrag und ich kenne kein Relais, das sich dadurch irritieren lassen würde.
|
BID = 740310
Bartholomew Inventar
Beiträge: 4681
|
So lange der PIC noch dabei ist, sich zu initialisieren (zusätzlich gibt man den PICs gerne eine 72us-Verzögerung beim Einschalten, damit sich die Spannungsversorgung erst mal stabilisieren kann), ist der Portpin noch zwangsläufig auf Input geschaltet. Das könnte beim Einschalten der Spannungsversorgung zu ungewollten kurzen Relaisauslösungen führen (je nachdem, wie der DIP-Schalter steht).
Ferner sollte man im Programm dann vor der Abfrage noch alle Interrupts global abschalten (und danach wieder einschalten). Wäre doof, wenn ein Interrupt den Programmablauf exakt dann unterbricht, wenn der PIC gerade den Relaispin einliest (könnte wieder zu Fehlauslösungen führen).
Wenn an einem anderen Portpin noch irgendwo eine Status-LED hängt, könnte man die viel gefahrloser mit dem Dipschalter kombinieren. Deswegen meine Frage an zwack, was sonst noch so am PIC hängt.
Zitat :
| Dabei geht es darum, daß unterschiedliche I/O-Befehle des gleichen Prozessors verschieden implementiert sind, und ja nach Instruktion den Portpin oder den Latch lesen. |
Den Luxus, direkt den Latch auslesen zu können, gibt's erst bei 16-bittigen PICs. Bei den kleineren (wie diesem hier) muss man dazu pro Port ein Schattenregister verwenden, in die man den Soll-Wert der Output-Portpins puffert und dann bei Bedarf in den Port schreibt.
Gruß, Bartho
[ Diese Nachricht wurde geändert von: Bartholomew am 12 Jan 2011 14:17 ]
|
BID = 740356
zwack Stammposter
Beiträge: 326
|
Hi, vielen Dank für eure Antworten.
...habe mich jetzt doch zu einem 14-Beiner entschlossen,
da bin ich auf alle Fälle auf der sicheren Seite.
Bei dieser schnellen Portumschalterei ist mir nicht wohl.
Gruß zwack
|
BID = 740392
Bartholomew Inventar
Beiträge: 4681
|
Nicht, dass wir Dich jetzt vergrault haben. Perls vorgeschlagener Weg funktioniert mit dem DIP-Schalter und einer LED anstelle eines Relais recht gut, man wird die LED noch nicht mal richtig flimmern sehen (außer einem kurzen Aufblitzen beim Einschalten bei entsprechender DIP-Schalterstellung evtl.).
Auf jeden Fall solltest Du für dein Projekt aber die angesprochenen Schattenregister verwenden, ist einfach sicherer.
Und vergiss nicht, den ADC und den Komparator abzuschalten, sofern vorhanden und nicht benötigt Sonst tun die Portpins unerwartete Dinge.
Gruß, Bartho
|
BID = 740639
QuirinO Schreibmaschine
Beiträge: 2205 Wohnort: Behringersdorf
|
Ja, das mit den Schattenregistern kann ich nur bestätigen! (aus eigener schmerzvoller Erfahrung)
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 14 Beiträge verfasst © x sparkkelsputz Besucher : 182423273 Heute : 2315 Gestern : 5459 Online : 507 29.11.2024 13:38 0 Besucher in den letzten 60 Sekunden ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0243351459503
|