Hallo, Ich bin gerade mit dem 12F675 und dem Buch PICs für Einsteiger angefangen. Nun habe ich die Frage, ob ich auch anstatt des GPIO,3 auch z.B. GPIO,0 mit dem Taster benutzen kann und wenn nicht warum das nicht geht. Ich hoffe auf Hilfe ;-) Wenn sowas schonmal erklärt wurde, könnt ihr auch einfach den link posten. Danke der Marco
:-) Ich habe aus dem Grunde geschrieben: "und wenn nicht warum das nicht geht". Ich hab nicht geschrieben, dass es nicht geht.
Ich hab was einfaches: bsf STATUS,RP0 call 0x3FF movwf OSCCAL movlw B'00001111' movwf TRISIO clrf ANSEL bcf STATUS,RP0 clrf INTCON clrf GPIO HAUPT btfsc GPIO,0 goto HAUPT bsf GPIO,4 WARTE0 btfss GPIO,0 goto WARTE0 WARTE1 btfsc GPIO,0 goto WARTE1 bcf GPIO,4 WARTE2 btfss GPIO,0 goto WARTE2 goto HAUPT end Statt das die LED angeht, wenn ich den Taster gedrückt hab, leuchtet diese durchgehend.
Hallo, bin zwar nicht der PIC - Kenner, aber ich glaube der Fehler liegt in deiner Initialisierung. Port 0 und 3 als Eingang (Port 3 kann nur Input) und restliche Ports als Ausgang würde ich so initialisieren. bcf STATUS,PRO ;Bank 0 clrf GPIO ;Initialisierung GPIO movlw 07h ;GP 0-2 movwf CMCON ;auf I/O setzen bsf STATUS,RPO ;Bank 1 clrf ANSEL ;Digital I/O movlw 09h ;GP 0 und 3 als Input und movwf TRISIO ;restliche als Output Ich hoffe es ist nicht totaler Mist den ich schreibe. Wie gesagt kein PIC - Profi und schon garnicht in Assembler. Evtl. hilft es dir ja.
mal so auf die schnelle: - hast du den Watchdog deaktiviert? - wie ist der Schalter am Port 0 angeschlossen? Hängt der evtl. in der Luft, wenn er nicht gedrückt ist? Dass du die weak-pullups an Port 0 aktiviert hast, kann ich im Code nicht sehen.
@ Joachim: Danke für die Antwort, werde ich morgen ausprobieren und werde dann noch mal posten. @ Claus: - WDT ist deaktiviert - Der Port 0 wird mit Spannung versorgt und wird dann durch das Tasten auf Masse gezogen...also soll der auf eine abfallende Flanke reagieren. So Funktioniert das mit dem Port 3 halt auch :-)
Hallo, das geht, GP3 ist nur input, und wird deshalb gerne auch für Switches hergenommen. Nicht alle Pins gehe, GP0 geht, aber nicht alle Pins haben einschaltbare pull-ups. Natürlich geht es sonst auch, aber nur mit externem Widerstand.
Ich hab im Anhang mal meinen Quellcode. Ist mit MPLAB geschrieben. Es soll so funktionieren: Wenn ich den Taster am GP3 gedrückt halte soll LED1 blinken, drücke ich den Taster kurz blinkt die LED1 3 mal. Wenn ich dann den anderen Taster an GP0 gedrückt halte soll LED2 blinken, drücke ich den Taster kurz blinkt LED2 3 mal. Wenn ich nur GP3 im Quellcode habe funktioniert es. Nehme ich den GP0 mit rein blinkt LED2 durchgehend. Vielleicht hat ja jemand eine Lösung :-).
Das ist übrigens nicht so leicht geschrieben, aber im Quellcode vereinfachen bin ich noch nicht so Fit ;-). Kritik ist aber gern gesehen, denn so kann ich mich ja verbessern :-D
3.2.1 WEAK PULL-UP Each of the GPIO pins, except GP3, has an individually configurable weak internal pull-up. D.h. du musst noch einen Widerstand von GP3 nach Vdd einlöten (ca. 4,7k ist ok).
Deinen Relais fehlen die Freilaufdioden. So ist das ne Art elektrischer Stuhl für Halbleiter. Sollen Ports digital sein müssen glaub ich die Komparator und Analogeingänge abgeschaltet werden.
und... werden die Ports vermutlich nicht genug Power liefern um die Relais zu treiben. Der Pic wird vermutlich ziemlich warm. Warum nimmst du nicht einfach nen LED Verwiderstand (z.B. 330 Ohm gg Plus)? Das spart die 3 Volt Versorgung und die Relais.
hmmm die Relais schalten und der PIC wird auch nicht sonderlich warm, da der die Relais ja kurz schaltet. Das Stimmt schon das ich mir die Relais sparen kann aber wenn ich jetzt z.B. einen Lüfter mit 12V anschließen möchte geht das nicht mit dem PIC. Am Relais aber, kann ich bis zu ich weiß nicht wieviel Volt dran hängen. :-) Deswegen die zusätzliche Versorgung ;-) Aber trotzdem danke für den Tip
Wo hast du denn diese Schaltung her? Folgende Fehler springen sofort ins Auge: 1. Relais direkt am PIC - geht nur, wenn diese wenig Strom (<20mA) ziehen - besser IMMER (gerade als Anfänger!) einen Transistor 2. keine Freilaufdioden an den Relais - das zerschießt dir über kurz oder lang den PIC 3. Relais über 2 Port-Pins angestreuert - das ist Unfug! 4. Beschaltung der Taster - der Pull-Up (R gegen Vdd) ist viel zu niedrig nimm 4,7 kOhm 5. die Leuchtdioden - brauchen IMMER, (bis auf gaaanz wenige Ausnahmen) einen Vorwiderstand, auch 3 Volt sind schon zu viel, selbst wenn sie die vielleicht ein paar Minuten, höchstens wenige Stunden überleben sollten Tip: Schaue dir mal andere Schaltungen an, wie das so gemacht wird und welche Werte für die Bauteile dort verwendet werden. http://www.sprut.de/ http://www.holger-klabunde.de/ Da findest du VIELE Tips um als Anfänger mit PICs nicht auf die Nase zu fallen, und auch ein paar Schaltungsbeispiele zur Orientierung. HTH
Die Schaltung hab ich in mühevollen 30 sekunden selbst entworfen ;-) 1. Das Relais hat einen ungefähren Schaltstrom von 10mA...Transistoren kann ich natürlich auch benutzen (werde ich auch machen) 2. Freilaufdioden: hab ich einfach nicht dran gedacht und ehrlich gesagt wollte ich einfach nur schnell testen :-) und hab die Platine dann geätzt :-) 3. Geht auch über einen ? Muss ich das andere Beinchen vom Relais dann an Masse hängen ? 4. Widerstand oder Widerstände lassen sich schnell umlöten zum test 5. Das ist auch richtig...ich hab die Dinger an einem Netzteil wo sich Spannung und Strom begrenzen lassen aber es ist auch kein problem welche vorzulöten :-) Die links werde ich mir auf jeden Fall angucken. Das problem, dass der Taster nicht Funktioniert besteht leider immer noch, aber ein GROßES DANKE an alle. Gruß der Marco
Dir ist schon bewusst, daß du dir da am GPIO3 einen Spannungsteiler gebaastelt hast, und die Spannung einfach zu schwach sein könnte, daß der Controller ein high erkennen könnte.
Es Funktioniert: Den Schaltplan den ich hochgeladen habe entspricht genau dem was ich als Layout vor mit liegen hab...mit den 100 Ohm Widerständen läuft das. Außerdem ist das so auch in dem PIC Buch das ich habe.
Was funktioniert? Du meinst jetzt aber nicht die Steuerung über GP3 oder? BTW: Auch wenn etwas in einem Buch gedruckt ist, bedeutet das noch lange nicht, dass es immer richtig sein muss.
Doch die Steuerung funktioniert auch mit den beiden 100 Ohm Widerständen und so wie jetzt bei mir mit dem 4,7k
Hey ich habs hinbekommen :-) bsf STATUS,RP0 clrf ANSEL movlw B'00001100' movwf TRISIO bcf STATUS,RP0 movlw B'00000111' movwf CMCON clrf GPIO Initialisiere den PIC so...so wie Joachim die schon weiter oben gepostet hat nur umgedreht wenn man so will. Und um das Layout oder sonstige sachen auf der Platine kann ich mich jetzt kümmern ;-) Nochmals VIELEN DANK für die HILFE Gruß Marco
Marco Hinrichs schrieb: > Doch die Steuerung funktioniert auch mit den beiden 100 Ohm Widerständen > und so wie jetzt bei mir mit dem 4,7k Nur fließen bei 100 Ohm über den Taster, wenn er gedrückt wird, 50 mA nach Masse! Das ist einfach mal völlig falsch dimensioniert, ganz egal ob es nun in einem Buch steht! ;-)
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.