PIC12F675 - ein Port zu wenig

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 29 11 2024  13:38:52      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : 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
Zur Homepage von QuirinO ICQ Status  

Ja, das mit den Schattenregistern kann ich nur bestätigen! (aus eigener schmerzvoller Erfahrung)


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


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