Hallo Leute,
ich will mit meinen PIC (16F887) für 30 Sek. 500Hz an RE2 ausgeben.
Hier ist mein kleines Programm, ich finde den Fehler nicht, denn am
Oszilloskop liegt einfach keine Frequenz an.
Überfragter schrieb:> A: mit welchem Compiler arbeitest du
HI-TECH C
> B: ein Write Befehl macht das sicher zuverläßiger als ein Eingabebefehl
Ich kenne leider nicht den Unterschied :o
Max D. schrieb:> denn am Oszilloskop liegt einfach keine Frequenz an.
Bei Pic meist I/O Port Konfiguration
Komparatoren aus?
A/D Wandler aus ?
Sonst. I/O Funktionen aus die am Pin liegen?
Endlosschleife wäre auch nicht schlecht am Anfang
Sieht mal nach Hi-Tech Compiler aus...
Wenn du die __delay_ms verwenden willst, musst du den CPU Takt
definieren, ich glaub mit XTAL oder so. Steht im Compiler Handbuch.
Müsste eigentlich ne Warnung oder Fehler erscheinen.
Sonstige Pinfunktionen müssten nach Power on eigentlich aus sein. Bei
Ausgang müsste auch die Einstellung Analog/digital egal sein, wenn der
Pin ein Analogeingang ist.
Den Pin würde ich mit einer XOR Verknüpfung mit 1 toggeln:
RE2 ^= 1;
Sonst erst mal probieren den Ausgang dauerhaft auf High zu schalten.
Erstmal klein anfangen...
Hast du Anzeichen dafür, dass irgendwas läuft? Was für einen Takt
verwendest du?
Ah, ja. Du hast den Oszillator ja gar nicht initialisiert. Musst du mal
schauen, wie der nach Power on reset eingestellt ist und ggf. wie
gewünscht einstellen.
Dankeschön Leute für eure Hilfe,
habe jetzt statt RE2, einfach RD0 genommen und alles klappt wunderbar :v
Kann es sein das irgendwas anders ist mit den RE Pins?
Ein Blick ins Datenblatt:
http://ww1.microchip.com/downloads/en/DeviceDoc/41291D.pdf
verrät, RE2 ist standardmäßig als Analogen Pin geschalten. Um ihn als
digitalen I/O zu verwenden musst du die Analoge Funktion am Pin
deaktivieren.
P.S: So ein 500Hz Signal lässt sich auch leicht per PWM realisieren
(Kapitel 11), dadurch kann es im Hintergrund laufen.
Frank M. schrieb:> Ein Blick ins Datenblatt:> http://ww1.microchip.com/downloads/en/DeviceDoc/41291D.pdf>> verrät, RE2 ist standardmäßig als Analogen Pin geschalten. Um ihn als> digitalen I/O zu verwenden musst du die Analoge Funktion am Pin> deaktivieren.
Wie ich bereits geschrieben habe, wird das nicht die Ursache für das
Problem sein:
"The state of the ANSEL bits has no affect on digital output
functions. A pin with TRIS clear and ANSEL set will
still operate as a digital output."
Tippe da auch eher auf ein Hardwareproblem.
Vielleicht zeigst du mal einen Schaltplan und ein Foto vom Aufbau.
Martin S. schrieb:> Frank M. schrieb:>> Ein Blick ins Datenblatt:>> http://ww1.microchip.com/downloads/en/DeviceDoc/41291D.pdf>>>> verrät, RE2 ist standardmäßig als Analogen Pin geschalten. Um ihn als>> digitalen I/O zu verwenden musst du die Analoge Funktion am Pin>> deaktivieren.>> Wie ich bereits geschrieben habe, wird das nicht die Ursache für das> Problem sein:>> "The state of the ANSEL bits has no affect on digital output> functions. A pin with TRIS clear and ANSEL set will> still operate as a digital output.">> Tippe da auch eher auf ein Hardwareproblem.> Vielleicht zeigst du mal einen Schaltplan und ein Foto vom Aufbau.
Vielleicht liegt es daran, dass er nicht direkt dem Ausgang einen Status
zweist, sondern über ein NOT Operator und daher der Analoge Modus einen
Einfluss darauf hat.
Da es an einem anderen Pin, ohne Analoge Funktionalität, problemlos
funktioniert, denke ich schon, dass er die Pins richtig angeschlossen
hat und richtig verwendet.
Aber nicht wenn er ne Lötbrücke zum Vdd Pin nebenan oder zum Vss Pin
gegenüber hat. Oder wenn er bei einem Streifenraster die eine
Unterbrechung vergessen hat. Ein Foto, Schaltplan und/oder nochmal
genauere Beschreibung vom Oszibild (Spannung, bewegt er sich vlt ein
paar mV,...)
Bei mir funktionierte das ~= bisher immer. Und beim anderen Pin gehts ja
auch. Und analoger Eingang spielt keine rolle, da er das TRISE register
ja nicht mehr anrührt.
Ja eben, bei allen anderen hat es ja funktioniert, nur bei TRISE nicht.
Kann leider kein Foto mehr machen da ich den Baukasten mit den PIC nicht
mehr habe (hab es von der Schule ausgeliehen gehabt).
Daraus folgt meine nächste Hürde..
Ich will mir jetzt selber eine kleine Schaltung aufbauen mit den
PIC16F887 um meine Funktionen zu testen. Nun finde ich aber keine
Grundschaltung oder ähnliches im Internet.
Könnt ihr mir bitte weiterhelfen?
Gruß
Hallo Frank,
Dankeschön für deine Hilfe, aber wir müssen den PIC16 verwenden. Ist
eine Voraussetzung von diesen Projekt.
Ich bräuchte also erstmal eine Grundschaltung zu diesen PIC, habe auch
bei sprut.de etwas durchgestöbert..
Beschaltung braucht man nicht viel. Ein Pull up Widerstand am MCLR
(braucht man nicht bei jedem, schadet aber auch nicht) und ein 100nF
Kondensator an der Versorgungsspannung. Wenn du den internen Oszillator
benutzt, so wie in deinem Programm auch, brauchst du keinen Externen.
Stromversorgung für 5V brauchst du dann noch, kannst aber auch direkt
vom Schaltnetzteil nehmen.
Ein Debugger wie das Pickit 3 ist sicherlich eine gute Investition. Den
Rest kann du auf einem Steckbrett aufbauen.