Ein kleiner PIC 12f675 treibt mich gerade zur Verzweiflung.
Ich versuche schon den halben Tag (mit 3 verschiedenen Compilern) den Pegel eines Eingangspins auf einen Ausgangspin auszugeben.
Mein SourceCode (hier für den XC8 Compiler): >>> siehe Anhang
Nach meinem Verständnis sollte ich am Pin GPIO5 den Pegel sehen, den ich an GPIO0 anlege. Funktioniert aber nicht.
In der Initialisierung fehlt ein ANSEL = 0; Die Pins sind defaultmäßig auf Analog eingestellt, man muss sie ausdrücklich auf Digital setzen, um GPIO-Pins über das GPIO-Register lesen zu können.
danke für den Tip.
Jetzt habe ich das Phänomen, dass es funktioniert, wenn ich GPIO2 als Eingang verwende. Mit GPIO0 und GPIO1 funktioniert es nicht. Ich hab's auch schon mit einem brandneuen Baustein versucht mit dem gleichen Ergebnis.
Fällt Die da noch was ein?
danke für den Tip.
Jetzt habe ich das Phänomen, dass es funktioniert, wenn ich GPIO2 als
Eingang verwende. Mit GPIO0 und GPIO1 funktioniert es nicht. Ich hab's
auch schon mit einem brandneuen Baustein versucht mit dem gleichen
Ergebnis.
Fällt Die da noch was ein?
Ist schon etwas kontraintuitiv, dass man die Sonderfunktionen aktiv
ausschalten muss.
Was heisst hier kontraintuitiv?
Es ist ein uC mit gerademal 8 Pins und einen Haufen interner Peripherie.Welche Peripherie aktiviert oder welche Grundeinstellung vorhanden sein soll ist dem Chiphersteller ueberlassen.Das Datenblatt sollte IMMER vorhanden sein,wenn man wissen moechte wie die Schalter stehen muessen um die gewuenschte Funktion zu erreichen.Wie bei einem Stellwerk der Bundesbahn.Nur das dort eine Fehleinstellung einer Katastrophe gleichkommt....
Der Pic12F675 ist uebrigens schon aelteren Datums und kostet garantiert mehr als der wesentlich "bessere" und neuere pinkompatible Pic12F1840.
Bei Reichelt bekommst du Microchip uCs ziemlich guenstig - guenstiger aufjedenfall als auf Ebay.
Das Datenblatt gibt es gratis dazu 😉
Du kannst natuerlich auch das MCC verwenden und Code automatisch generieren lassen - ich selbst lese gerne und setze Bits selbst.
Das MCC ist ja in der MPLAB X - IDE integriert.Aeltere uCs werden zur Zeit noch nicht unterstuetzt - wohl aber der Pic12F1840
MPLAB® Code Configurator (MCC) is a free graphical programming environment that generates seamless, easy-to-understand C code to insert into your project.
.. auf den "wertvollen" Hinweis, dass es neuere Bausteine die besser und dazu noch billiger sind habe ich schon die ganze Zeit gewartet.
Wenn ich Zeit und Muße habe, kann ich mir natürlich das Datenblatt zuerst mal durchlesen. Ich glaube so schlau sind wir hier alle.
Bevor ich eine Leiter hinaufsteige kann ich natürlich erst mal die Bedienungsanleitung lesen, weil dort ja drinstehen könnte, dass die 6. und 9. Sprosse zuerst festgeschraubt werden müssen bevor man die Leiter benutzt.
Das widerspräche allerdings meiner Intuition weil ich die Erfahrung mit vielen anderen Leitern gemacht habe, dass man davon ausgehen darf, dass die Leiter im "gebrauchsfertigen" Zustand die Fabrik verlässt.
Bei den Controllern mit denen ich bisher gearbeitet habe, werden die Sonderfunktionen nach Bedarf konfiguriert und aktiviert. Ein (besonders kreativer) Hersteller kann das zwar alles auf den Kopf stellen, nur ist es dann (zumindest für mich) nicht mehr intuitiv. Wahrscheinlich kennst Du nur µCs von Microchip.
Und ich habe durchaus Gründe weshalb ich gerade den 12f675 ausgewählt habe.
Hättest Du zum Thema einen inhaltlichen Beitrag leisten können, hättest Du das ja sicher getan.
Hallo Frank,
jetzt funktioniert's.
Danke für Deine Hilfe!
Ist schon etwas kontraintuitiv, dass man die Sonderfunktionen aktiv
ausschalten muss.
Microchip hat sich schon was dabei gedacht.
Digitale Signale sind entweder low (unterhalb von VLo) oder High (oberhalb von VHi). Der Bereich dazwischen ist undefiniert und kann unter Umständen zu unzulässig hohen Querströmen in der Eingangsstufe führen. Deswegen soll man ja auch unbenutzte digitale Pins niemals offen lassen, sondern entweder per Pullup oder Pulldown auf einen definierten Wert legen, oder als Ausgang programmieren.
Wenn Du aber die Analogfunktionen (ADC oder Komparator) nutzen willst, dann ist die Bedingung für digitale Signale, dass die Spannung nicht in diesem undefinierten Bereich liegen darf, ausdrücklich nicht mehr gegeben. Deswegen ist es sinnvoll, beim Start vorsichtshalber alles auf Analog stehen zu haben und dann per Software auf digital umzuschalten. Das ist übrigens bei allen PICs so.
Ist schon etwas kontraintuitiv, dass man die Sonderfunktionen aktiv
ausschalten muss.
Das kommt von den ganz alten OTP-PIC, wo die Funktionen noch nicht umschaltbar waren. Und die einmal getroffenen Zuordnungen hat man für neuere Typen beibehalten, damit die codekompatibel sind.
Bei den AVRs gibt es auch solche Umstände, ein Attiny25 kann z.B. Binärcode des ATtiny15 ausführen, ein ATmega128 Code des ATmega103 usw.
Es war früher üblich, daß Code extern entwickelt wurde und die Sourcen sind entweder verschollen oder der Entwickler verstorben, aber die Geräte werden noch viele Jahre weiter produziert.
Auch wurde noch viel in Assembler geschrieben, wo eh kein anderer durchsehen kann. Code reviews, Wartbarkeit und Erweiterbarkeit waren noch nicht erfunden.
Das kommt von den ganz alten OTP-PIC, wo die Funktionen noch nicht
umschaltbar waren. Und die einmal getroffenen Zuordnungen hat man für
neuere Typen beibehalten, damit die codekompatibel sind
Das würde mich aber wundern, wenn der "Ur-Typ" des 12f675 (und anderer 8-Pinner) ADC- bzw. Komperator- Eingänge gehabt hätten.
In den "alten Zeiten" war die Default-Konfiguration (i.d.R.) nach einem Reset, alle Pins als Eingang mit "Weak Pullups".
.. auf den "wertvollen" Hinweis, dass es neuere Bausteine die besser und
dazu noch billiger sind habe ich schon die ganze Zeit gewartet.
Ja dieser Hinweis war Kaese von mir - konnte ja nicht wissen, dass du Profi bist aber dies liess sich eben aus deinem Eingangsposting nicht so ohne weiteres entnehmen.
Wie dem auch sei - wenigstens mal wieder jemand der sich erfreulicherweise mit Pics beschaeftigt.
Mit Pics ist es hier auf diesem Forum so wie bei Windows und Linux:
Windows = Shit ,Linux = das obergenialste und fehlerloseste OS aller Zeiten.
Nur Dummkoepfe (wie ich) verwenden Windows und Pics 😄
Ich bin von deinem Eingangsposting ausgegangen,dass du ein Neueinsteiger
bist - sorry, dass ich den Pic12F1840 erwaehnt hatte.
.. das ist ja in Ordnung.
Es hat bei mir nur einen Punkt getriggert, der mich in solchen Foren nervt:
Es wird ein konkretes Problem geschildert und es ist immer ein Schlaumeier dabei der meint: Selber Schuld wenn man mit so einem alten Zeug ...
Der Grund weshalb ich gerade den 12f675 verwendet habe ist, dass ich vor gut 15 Jahren mal ein kleines Projekt mit diesem Chip gemacht hatte und noch ca. 20 Stück in der Schublade habe.
Der Grund weshalb ich gerade den 12f675 verwendet habe ist, dass ich vor
gut 15 Jahren mal ein kleines Projekt mit diesem Chip gemacht hatte und
noch ca. 20 Stück in der Schublade habe.
Ist ja auch ok.Geht mir aehnlich.Die "alten" Pics sind tadellos aber halt ein bischen spaerlich ausgestattet.Verwenden tue ich sie fuer einfache Anwendungen immer noch.