Hallo zusammen. 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. Hat jemand eine Idee?
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. fchk
Hallo Frank, 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?
.. ich hab' jetzt gerade mal umkonfiguriert. Wenn ich GPIO0 als Ausgang und GPIO5 als Eingang konfiguriere, dann funktioniert's auch!??
Werner G. schrieb: > Hallo Frank, > > 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? CMCON = 7; Das schaltet den analogen Komparator ab. fchk
:
Bearbeitet durch User
Hallo Frank, jetzt funktioniert's. Danke für Deine Hilfe! Ist schon etwas kontraintuitiv, dass man die Sonderfunktionen aktiv ausschalten muss.
Werner G. schrieb: > 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.
Werner G. schrieb: > 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. fchk
> Deswegen ist es sinnvoll, beim Start vorsichtshalber alles auf > Analog stehen zu haben und dann per Software auf digital umzuschalten. Ja wenn der 12F629 nur nicht waere. :) Das ist quasi ein 12F675 ohne ADC. Der muss ohne die "sinnvolle" Analogunterstuetzung starten. Voll schlimm! > Ist schon etwas kontraintuitiv, dass man die Sonderfunktionen aktiv > ausschalten muss. Ja. Ist es. Aber: > Das widerspräche allerdings meiner Intuition Fuer Intuition kann man sich bei der Konfiguration nichts kaufen. Und: > Das ist übrigens bei allen PICs so. Es gibt, glaube ich, sogar im Datenblatt des 12F675 einen Extrahinweis auf diesen Umstand. Das sollte man also immer lesen. > Bei Reichelt bekommst du Microchip uCs ziemlich guenstig - guenstiger > aufjedenfall als auf Ebay. Den 12F675 bekam man dort (Ebay) lange Zeit fuer 30 Ct im Zehnerpack. Und Gratisversand "dank" Chinas Entwicklungslandstatus. :)
:
Bearbeitet durch User
Motopick schrieb: > Den 12F675 bekam man dort (Ebay) lange Zeit fuer 30 Ct im Zehnerpack. Das hatte ich auch mal bestellt, ist schon etwas ewig her. Keiner der PICs funktionierte, das waren alles umgelabelte OPs. Den PIC12F1840 kann ich nur empfehlen, den und PIC16F1825 (beide auch in der LF-Variante) verwende ich oft für kleine Projekte.
> Keiner der PICs funktionierte, das waren alles umgelabelte OPs.
Mein Beileid. Hier genau andersherum. Jeder bestellte 12F/16F
funktionierte wie erwartet. Und es waren eine ganze Menge.
:
Bearbeitet durch User
Werner G. schrieb: > 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.
Peter D. schrieb: > 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".
Werner G. schrieb: > In den "alten Zeiten" war die Default-Konfiguration (i.d.R.) nach einem > Reset, alle Pins als Eingang mit "Weak Pullups". .. natürlich außer den VersorgungsPins, Oszillator-E/As, ResetPin, ... die gar nicht als I/Os verwendbar waren.
Werner G. schrieb: > In den "alten Zeiten" war die Default-Konfiguration (i.d.R.) nach einem > Reset, alle Pins als Eingang mit "Weak Pullups". Aha, der Hilfesuchende ist nun zum MC-Spezialisten mutiert.
Jochen-paul S. schrieb: > Aha, der Hilfesuchende ist nun zum MC-Spezialisten mutiert. .. ach, das ist für Dich schon Spezialistenwissen? Sowas haben wir in der Grundschule gelernt.
Werner G. schrieb: > Hättest Du zum Thema einen inhaltlichen Beitrag leisten können, hättest > Du das ja sicher getan. Haette ich ja auch getan aber erstens hatte ich dein Posting zu spaet gelesen und zweitens wurde deine Anfrage ja schon beantwortet. Ich bin von deinem Eingangsposting ausgegangen,dass du ein Neueinsteiger bist - sorry, dass ich den Pic12F1840 erwaehnt hatte. Werner G. schrieb: > .. 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 😄
Toxy T. schrieb: > Nur Dummkoepfe (wie ich) verwenden Windows und Pics 😄 Und was bin ich dann ? Ich verwende fast ausschliesslich Linux (ausser Wine für Target3001 und eine W7-VM für MPLab 8.92) und überwiegend PICs.
:
Bearbeitet durch User
> sorry, dass ich den Pic12F1840 erwaehnt hatte
Ja, besser ist das. Bei Rechelt ab(!) 1.90 Eu. In DIP ueber(!) 2 Eu.
"Preisguenstig" stelle ich mir irgendwie anders vor.
Dagegen sind die 1.10 Eu fuer einen SO8 12F675 ja geradezu ein
Schnapper.
Toxy T. schrieb: > 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.
Werner G. schrieb: > 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.
> spaerlich ausgestattet
Es ist keine Schande UART, SPI und I2C in Software zu machen.
Wenn es von der Geschwindigkeit passt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.