Hallo Forumsgemeinde, ich habe da ein Problem von dem ich glaube es ist trivial, aber ich verstehe es leider nicht. Mein Ziel ist es, wie schon die Überschrift vermuten lässt, eine LED 3x blinken zu lassen, danach soll die LED permanent an bleiben. Ich habe dazu folgenden möglichst einfachen Code entworfen. MAIN CLRF CCP1CON ; 16F628 alle Comparatoreingänge auf Digital umschalten ; alles in der Bank 0 auf Digital umschalten BSF CMCON, CM0 BSF CMCON, CM1 BSF CMCON, CM2 CLRF PORTB BANKSEL TRISB ; wählt PortB MOVLW b'00000000' ; MOVWF TRISB ; PORTB beschreiben BANKSEL PORTB ; wechselt auf PortB ;call _SET_BrakeLight _Go_Main call _SET_BrakeLight ;ON für Permanent call _SET_BrakeON goto _Go_Main ; Loop Forever GOTO MAIN ; springe wieder in die Main Funktion _SET_BrakeLight ;1 ON LED auf RB0 einschalten BSF PORTB,RB1 call _delay_1s ; ruft Wait Funktion auf, die Funktion ist unten definiert und warte vorgegebene Zeit ;LED OFF auf RB0 ausschalten BCF PORTB,RB1 ; löschen LED call _delay_1s ;2 ON BSF PORTB,RB1 call _delay_1s ;OFF BCF PORTB,RB1 call _delay_1s ;3 ON BSF PORTB,RB1 call _delay_1s ;OFF BCF PORTB,RB1 call _delay_1s return _SET_BrakeON BSF PORTB,RB1 ; jetzt 1 Sekunde Warten dann erneut flashen call _delay_2s call _delay_2s return Wie zu erkennen ist wird nach dem Start eine Routine augerufen die die LED 3x ein und ausschaltet. zwischen jedem einschalten wartet die Routine delay_1s was in etwa 0.1Sek entspricht. Danach soll die LED eingeschaltet werden und an bleiben. Da sich das Programm dann nur noch in der _Go_Main Schleife befindet, nahm ich an dann sollte die LED an bleiben. Aber sie blinkt anschließend im ca. 1 Sekunden Takt. Um das zu verhindern habe ich eine 2. Warteschleife die ca. 2 Sekunden warten soll. Diese führe ich zur Sicherheit sogar 2x nacheinander aus, aber trotzdem blinkt die LED im Sekundentakt. Hat dafür jemand eine Erklärung? Ich habe schon Stunden damit zugebracht, verstehe es aber nicht. Bin, wie man sicher am Code erkennt, allerdings ein Rookie in der PIC Programmierung. Vorab vielen Dank Reiner
Reiner L. schrieb: > _Go_Main > call _SET_BrakeLight > ;ON für Permanent > call _SET_BrakeON > > goto _Go_Main ; Loop Forever Hi Wenn ich Das recht verstehe, ist '_Go_Main' ein Label. Dieses wird nach dem Durchlauf auch wieder angesprungen. Und dort wird die Blink-Routine angesprungen (_Set_BrakeLight) und danach _Set_BrakeOn. Danach beginnt dieser Ablauf wieder von Vorne - wenn Du statt dem Sprung zu '-Go_Main' eine wirkliche Endlosschleife machst, passt Das besser. In der Art wie: _Endlosloop goto _Endlosloop (mir gefallen Label mit : dahinter besser ;)) MfG
Hallo Patrick, danke für deine schnelle Antwort. Ich bin eigentlich davon ausgegangen das es eine wirkliche Schleife ist, das Semikolon dahinter soll nur den Kommentar vom Befehl trennen. ich kann da keinen Fehler ekennen. Gruß Reiner
Reiner L. schrieb:
1 | Label _Go_Main |
2 | Aufruf Funktion Blinken call _SET_BrakeLight |
3 | Aufruf Funktion Dauerlicht call _SET_BrakeON |
4 | goto Label goto _Go_Main |
Damit springst Du, nachdem Dauerlicht, wieder zum Label und dahinter kommt Blinklicht, Dauerlicht, Sprung, Blinklicht, Dauerlicht, ...... Versuche Mal das, ohne meine 'Erklärungen' davor:
1 | Label _Go_Main |
2 | Aufruf Funktion Blinken call _SET_BrakeLight |
3 | Aufruf Funktion Dauerlicht call _SET_BrakeON |
4 | Label _Endlos |
5 | goto Label goto _Endlos |
MfG
Danke Patrik, ich habe es jetzt so geändert, ;_Go_Main call _SET_BrakeLight ;ON für Permanent ;call _SET_BrakeON BSF PORTB,RB1 _Endlos ;leer goto _Endlos ;goto _Go_Main ; Loop Forever aber keine Verbesserung, es blinkt 3x wie gewünscht, danach blinkt es in Abständen von ca. 1 Sekunde, aus unerfindlichen Gründen. Wie du siehst habe ich die Funktion komplett auskommentiert und setze zuletzt nur noch den PIN auf ON. Gruß Reiner
:
Bearbeitet durch User
Hi Hast Du noch einen Timer laufen? Irgend was in der Richtung PWM, wo die Frequenz nicht so passt? Habe leider keine Ahnung von PICs und mir den Programmablauf aus dem Listing nur interpretiert. Das Sekundenblinken - tritt Das auch auf, wenn Du vorher statt 3x öfter, 15x blinken lässt, damit Du eine Laufzeit hast, Die in das Sekundenblinken rein fallen würde? Sieht bis jetzt so aus, als ob der µC eh alle Sekunde blinken würde (warum auch immer), Du davon aber Nichts merkst, da die erwarteten Blink-Zyklen wie gewollt ablaufen, aber vor dem ersten Fremd-1-Sekunden-Blinken, bereits vorbei sind? Wenne s eine Main gibt, gibt's soch bestimmt eine Init, oder? Soll heißen: Ist Das das ganze Listing, könnte ich mir damit einen eigenen PIC brennen? Welcher überhaupt, vll. interessant für die Jungs, Die sich damit auskennen :) MfG
Hallo, Grundsätzlich sehe ich das auch so wie Du. Da muss noch was laufen, von dem ich keine Ahnung habe. Das 1 Sekunden blinken tritt in jedem Fall auf. Das habe ich durch deine Codeänderungen prüfen können. Es wird dann zwar meine Routine nicht mehr ausgeführt, aber das sekunden blinken passiert immer noch. Hab auch noch mal einen anderen Pin versucht, weil dort keine anderen Funktionen hinterlegt sind BR5. Aber auch das gleiche. Klar kann ich den gesamten Code zum Download bereitstellen, es handelt sich im konkreten Fall um einen PIC 16F628A. Wenn es hilft ;-). Gruß Reiner
Hallo, Watchdog? Bitte etwas ausführlicher, kann im Moment nichts mit der Aussage anfangen. meine Config Str sieht so aus: __CONFIG _FOSC_INTOSCIO & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF ich denke damit sollte der Watchdog aus sein, oder ? Gruß Reiner
:
Bearbeitet durch User
Hallo Reiner, wenn Dein Code nicht funktionierst und Du Fragen dazu hast, solltes Du den gesamten Code, als ungekuerzt und vollstaendig bekannt geben. Dazu gibt es hier im Forum die Funktion ["Dateianhang" Durchsuchen...], dass man eine oder mehrere Dateien hochladen kann. Einen groesseren Quelltext im Forumsfenster zu zeigen halte ich fuer keine gute Idee. Was mir an Deinem Quelltext auffaellt: Zum Fehler selbst: Dass die LED nach dem 1. Durchlauf mit ca. 1Hz blinkt, kann mangels Delaycode nur vermutet werden, dass in Deiner Delay-Routine eine Zaehlvariable falsch belegt / initialisiert wird. Nach dem letzten Einschalten der LED mit Sub "_SET_BrakeON" wird wieder an den Schleifenbeginn "_Go_Main" gesprungen. Dort wird die LED "eingeschaltet" obwohl sie ja noch aus Sub "_SET_BrakeON" immer noch eingeschaltet ist. Somit geht das erstmalige Blinken im noch bestehenden Dauerlicht unter. CLRF CCP1CON: Dieses Register gehoert zum CAPTURE/COMPARE/PWM-Modul auf S. 55 des Datenblattes und hat mit Deinem Projekt (zunaechst) gar nichts zu tun. Wenn ein Delay nur 0,1s dauert, solltest eindeutige Labels wie zB. Delay100ms, aber keinesfalls _delay_1s als Label verwenden, das irritiert. Sprungziele wie "_Go_Main" gehoeren OHNE ABSTAND an den linken Seitenrand, optimal, bzw. wahlweise mit einem Doppelpunkt abgeschlossen z.B. "_Go_Main:". Dann weiss man genau, dass es sich um ein Sprungziel und nicht um eine Label, der z.B. Programmcode enthalten kann, handelt. ; Als funktionierendes (praktisch getestetes) Beispiel, aber auch als Anhalt fuer die Darstellung des Codes - mehr nicht - haenge ich Dir ein Programm an, so wie ich schreiben wuerde. mfG Grober Klotz
Hallo grober Klotz ;-), sehr witziger Name wenn man den als Anrede benutzt. Vielen Dank für deine Informationen. Den ganzen Code zu posten, habe ich mich nicht getraut, ich dachte das nervt wenn man alles hier reinhaut. Aber du hast es ja auch gleich erklärt, mann sollte den Code anhängen. Das werde ich demnächst machen, ist eh viel besser! Ich muss eventuell noch erwähnen, das ich das Projekt aus einem anderen Lauflicht Projekt von mir kopiert hatte, deshalb die eine oder andere nutzlose Zeile, von denen ich aber annahm das sie nicht stören. Natürlich muss ich dir auch Recht geben, das die Delays auch so gelabelt werden müssen, wie auch ihr Inhalt ist. Aber durch meine vielen Versuche war ich dann irgendwann zu faul das immer umzubenennen. Auch die Form, wie der äußere Rand für Sprungziele, werde ich zukünftig wahren. Was mich aber am meisten beeindruckt, das du ein kompletten Code entwickelt hast dafür, Super stark. Als ich zum ersten Mal hingesehen habe, wunderte ich mich maßlos wie der vollständige Code dahin kommt, bis ich schnell merkte, es ist nicht meiner ;-). Ich werde das natürlich heute Abend sofort probieren und meine Ergebnisse kundtun. Hoffentlich kann ich daran dann auch abstrahieren was an meiner Variante falsch ist, ich habe fast ein WE damit zugebracht und dann den Entschluss gefasst doch mal jemanden zu fragen. Vielen Dank, ich freu mich auf meine Versuche heute Abend. Gruß Reiner
Hallo GroberKlotz, leider hat auch dein Code nicht das erhoffte ergebniss gebracht ;-(. Deiner 2 Sekunden LED ON lassen die LED 2x blinken innerhalb von ca. 2 Sekunden. Ich habe es nun einen total schlanken Code benutzt um nur die LED einzuschalten, aber auch da blinkt diese im ca. 1 sekunden Takt. Code ist beigefügt und Bild vom Breadboard.
Hallo Reiner, Das von mir mitgeteilte Programm wurde mit MPLAB 8.92 erstellt, mit MPLAB SIM simuliert und dann, nachdem es fehlerfrei war, mit dem sprut brenner 8 in den PIC gebrannt. Dann wurde dieser Code ausgefuehrt (LED an RB1) wobei fehlerfreies Verhalten wie beschrieben, von mir festgestellt worden ist. Wenn ich Deinen Code in MPLAB 8.92 lade und zu kompilieren versuche erhalte ich die beigefuegten Fehlermeldungen. Offensichtlich ist da Einiges bei unseren Programmiersystemen nicht miteinander zu vereinbaren mfg Grober Klotz
Hallo GroberKlotz, ich arbeite mit Product Version: MPLAB X IDE v3.50 Brenne mit PickKit3 auf den Pic. Eigentlich macht die Umgebung einen guten Eindruck, auch andere kleinere Projekte tun was sie sollen. Wenn noch wer eine Idee dazu hat, dann gerne her damit. Ich werde damit noch weitertesten, eventuell stoße ich durch Zufall auf die Lösung. Dir auf jeden Fall bis hierhin vielen Dank für Deine Bemühungen. Ich melde mich bei Erfolg aber bestimmt auch bei Misserfolg ;-). Gruß Reiner
Hi Denke, die [ avrasm ] und [/ avrasm ] gehören nicht zum PIC-Code ;) (Ok, Die haben Atmel übernommen, aber ob Sie so weit gehen gg) Was machen diese beiden Konstrukte? _MCLRE_ON _FOSC_INTOSCIO Die 'Suchmaschine meiner Wahl' brachte mir bei diesen Wörtern und 'PIC' viele 'Pictures' - jo, fail ;) Zumindest das FOSC liest sich wie Frequenz Oszillator INT 0 OSCO - den Rest mit den ganzen _OFF dahinter halte ich für unverdächtig - bin aber PIC-Noob !! (soll heißen: habe hier nen paar PIC 8-Beiner rumfliegen ... war aber ne Fehlbestellung) MfG EDIT: Rätsraibug bessar gmacht Edit2: das Goto $ sieht wie eine Endlosschleife aus - beim AVR wäre Das wohl rjmp PC, oder?
:
Bearbeitet durch User
Hallo Patrick, ja die [avrasm] sind nur für Beginn und Ende als Code Marker. Ich wollte es erst direkt im Post machen, aber dann habe ich mich doch für einen Anhang entschieden. Der Code im Anhang soll eigentlich nur eine LED einschalten und dann, wie von Dir schon korrekt bemerkt, in eine Endlosschleife gehen. Aber auch bei diesem Code, wie schon geschrieben, blinkt die LED im ca. 1 Sekunden Takt. Das FOSC_INTOSCIO besagt nur das der interne 4MHz Taktgeber genutzt wird, das erspart den externen Quarz. Na ich werde, wie geschrieben noch ein wenig damit herum experimentieren, eventuell kommt mir noch eine zündende Idee, oder ein anderer User findet den Fehler in meinem Konstrukt. Zum besseren Verständnis habe ich noch einen kurzen Film bereitgestellt: www.rlonline.de/BilderForForums/170227_628_SetLED.mp4 Danke und Gruß Reiner
Hallo Reiner, ich sehe an Deinem Minimalprogramm auch nichts, was ein Blinken der LED verursachen könnte! Entweder, Du hast versehentlich irgend einen ganz anderen Code im PIC (Assemblierung vergessen? Programmierung vergessen? Falsches Hexfile?), oder Dein ggf. noch angeschlossenes Programmiergerät löst im Sekundentakt einen Reset aus. Ziehe doch im Betrieb einfach mal die gelbe Verbindung zum MCLR-Pin ab... Thomas
Hallo Thomas, vielen Dank für deine Hinweise. Nein, einen falschen Code schließe ich aus, weil ich wechselseitig auch andere Projekte auf den PIC gebrannt habe die mir zur Vefügung gestellt wurden aber auch meine Versuche. Das Verhalten entsprach zwar immer dem gewünschten, mit dem Problem des Sekunden blinken. Das PicKit habe ich auch für den Test abgezogen, so das der Pic autrak arbeiten musste. Kann es sein, das meine Hardware nicht korrekt verdrahtet ist? Ist zwar schlecht zu sehen auf dem Foto, aber auch auf dem Video sieht man es nicht so gut. Eventuell hat ein User richtig gute Augen und kann da einen Fehler erkennen. Gruß Reiner
Hallo Reiner, ich habe das File 16F628_Bremslich.ASM mal nach MPLABX importiert. Dabei habe folgendes festgestellt: ⦁ In der config-zeile wurde lediglich das Wort WDT_OFF angemahnt, wurde von mir nach WDTE_OFF geaendert. ⦁ Im Debug-Modus wurden keine Fehler mehr angezeigt ⦁ Im Simulator wurden die Delay-Zeiten mit stopwatch (Window->Debugging->stopwatch gemessen und wie programmiert angezeigt. ⦁ Die Kompilation zum HEX-File funktionierte anstandslos. ⦁ Das Hex-File wurde in den PIC gebrannt ⦁ Programm funktioniert auf meiner Testplatine wie programmiert Der Fehler muss daher nicht im Programm, eher bei der Hardware gesucht werden. Ich habe nun den gesamten Ordner, so wie ich das Programm in MPLABX 3.05 importiert habe gezippt beigefuegt. Ich hoffe, Du findest den Fehler. mfG Grober Klotz
Vielen Dank Grober Klotz für deine Hilfe und dem damit verbundenen Aufwand. Ich werde das natürlich heute Abend noch einmal testen. Super wäre wenn du mir deine Harware mal aufzeichnen könntest, oder Foto. Kannst du denn auf meinem Foto (Video) irgendwas erkennen, von dem du meinst das es Falsch oder verdächtig wäre? Ich vermute den Fehler ja eher in der Hardware bei mir. Ich melde mich nach meinen Tests heute Abend. Gruß Reiner PS: mal ne blöde Frage, wie muss ich denn einen Weblink markieren? Ich habe dazu nichts gefunden.
Reiner L. schrieb: > PS: mal ne blöde Frage, wie muss ich denn einen Weblink markieren? Ich > habe dazu nichts gefunden. Aber Du solltest doch wissen: Es gibt keine blöden Fragen! ;) Schreib ein "http://" davor: http://www.rlonline.de/BilderForForums/170227_628_SetLED.mp4
:
Bearbeitet durch User
Oh man, mich ohrfeigen dauernd ;-). na klar, da hätte ich ja auch mal selbst drauf kommen können. Danke !!!!
Hallo Reiner, ich habe mir mal das Foto Deiner Schaltung angeschaut (soweit das nun mal moeglich ist). Wenn ich das richtig sehe, ist auf dem Steckbrett Pin 1 (RA2) und Pin 4 (RA5/MCLRE) mit R10k verbunden, RA5 ist jedoch mit R=10kOhm nach +Vdd zu verbinden! vgl. Link unten Von Pin 1 fuehrt ein rotes Kabel zur Steckleiste nach (?? +Vdd??) Sollte dies der Fall sein - wenn RA2 als Output konfiguriert ist, und auf LOW liegt - wird dieser PIN strommaessig total ueberlastet! Das weisse Kabel fuehrt vom Taster zum Pin4 (MCLRE) das waere zwar richtig, wuerde aber evtl. wegen dem 10k nach RA2 Probleme bereiten koennen. Vom Taster fuehrt ein weisses Kabel nach (??GND??) das waere richtig, Hinweis im Datenblatt 17.0 ELECTRICAL SPECIFICATIONS "Note" beachten. ICSP: Falls RB7/RB6 (Data/Clock) beschaltet sind, sollte die Beschaltung mit je 1kOhm von den ICSP-Leitungen Data/Clock entkoppelt werden. Schau Dir mal ueber die korrekte Beschaltung von MCLR/RB5 (Pin4) diese Links bei www.sprut.de an: http://www.sprut.de/electronic/pic/reset/index.htm#mclr http://www.sprut.de/electronic/pic/icsp/icsp.htm http://www.sprut.de/electronic/pic/icsp/icsp.htm#3 (Bei dem Bild mit dem ICSP-Stecker ist die sprut-eigene Belegung angegeben! Das Pickit verwendet eine spiegelverkehrte Belegung!) Vielleicht hilft Dir das weiter mfG Grober Klotz
Hi Reiner, Nachtrag zu Deiner Frage >Super wäre wenn du mir deine Harware mal aufzeichnen könntest Zur verwendeten Testplatine: Ich habe mir vor Jahren diese Testplatine (spaeter auch die fuer 28pin modifiziert) nachgebaut: http://www.sprut.de/electronic/pic/test/index.htm#84 Mit diversen Steckmodulen (EEPROM, LCDs, RTCs=RealTimeClock usw) ergaenzt, konnte ich bis heute fast alle meine Projekte ohne allzu grossen Aufwand testen, bevor ich mal was fertig aufgebaut habe. Die Testboards verwende ich in Verbindung mit dem Pickit3 (fuer Pickit3 modifizierte ICSP-Anschluesse), bzw. dem Brenner 8 von sprut. mfG Grober Klotz
Vielen Dank, das liest sich so, als wenn da irgendwo der Hund begraben liegt. Das werde ich natürlich zeitnah heute Abend prüfen. Danke und bis dann, hoffentlich kann ich eine positive Rückmeldung geben. Gruß Reiner
Hallo Grober Klotz, ich hatte gestern Abend wenig Zeit aber habe trotzdem einiges geprüft. (war aber keine gute Idee ;-) An der Hardware habe ich eigentlich keinen Fehler erkennen können. Soweit ich das verstanden habe, werden die 10 oder 20K an RB5 gegen VDD nur beim Sprut Brenner benötigt, weil der mit 12V arbeitet, beim PicKit ist das nach meiner Meinung nicht so. Was aber überhaupt nicht lief, war deine Projekt zip, ich konnte das Projekt zwar nach dem entpacken im MPLABX 3.05 als Projekt öffnen, aber dann kam beim compilieren ein Fehler. Da ich noch nie ein vorhandenes Projekt so bekommen habe, hatte ich den Fehler zuerst mal ignoriert und habe mich erinnert du hattest etwas von Import geschrieben. Also gelöscht und über Import versucht, das klappte aber nicht, da kann man nur in die Version v8.x importieren? Wieder gelöscht und als Projekt geöffnet, ab dem Moment habe ich aber immer ein Ausrufezeichen am Projektordner gehabt und konnte nicht mehr auf das Projekt zugreifen. Auch meine schon vorhandenen Projekte konnte ich dann nicht mehr auf den Pic brennen? Aber wie schon erwähnt ich hatte sehr wenig Zeit und war eben gespannt ob es eine Lösung gibt. Ich werde mich noch einmal ausführlicher damit beschäftigen. Ich denke das war nicht der richtige Moment. Melde mich wieder, wollte nur eben dan aktuellen Stand mitteilen. Gruß Reiner
Hallo Reiner, Du schreibst unter anderem: > Soweit ich das verstanden habe, werden die 10 oder 20K an RB5 > gegen VDD >nur beim Sprut Brenner benötigt, weil der mit 12V > arbeitet, beim PicKit ist das nach meiner Meinung nicht so. Ich sehe das jedoch anderst (bezieht sich auf den hochgeladenen Ausschnitt Deines Steckbrettes): RA5 (MCLRE) muss, wenn als Resetpin (in CONFIG -> _MCLRE_ON) verwendet, ueber einen Widerstand (vgl microchip-Poster PICkit3 R20-50kOhm) nach +5V verbunden sein. Dieser Widerstand hat folgende Aufgaben: 1. Indem RA5 im PIC als digitaler Input fest verdrahtet ist, muss der Eingang zum sicheren Betrieb wie jeder andere Eingang auch, waehrend der Codeausfuehrung auf definiertem Pegel liegen. 2. Der Widerstand von MCLRE nach +Vdd schuetzt die anderen Schaltungsteile, welche ueber die Vdd-Leitung versorgt werden, vor der hohen Programmierspannung. 3. Waehrend der Ausfuehrung des Codes muss MCLRE ueber den Widerstand auf +Vdd bleiben, nur dann kann der PIC sein Programm ausfuehren (wenn in CONFIG -> _MCLRE_ON). 4. Zum Programmabbruch (RESET) wird MCLRE, wie bei Deiner Schaltung, ueber einen Taster auf GND gezogen. Die Programmausfuehrung startet sodann wieder an Adresse 0x000 (reset vector), sobald am MCLRE-Pin wieder +Vdd anliegt Zu Deiner Schaltung (vgl. Anhang Reiner_Breadboard_Snip.PNG): Die Ecke mit dem versenkten Punkt vorne unten links gibt vor, dass hier die Zaehlung der Pins mit 1 beginnt - klar-. Pinbelegung (Irrtum vorbehalten) so wie das fuer mich sichtbar / bzw. zu vermuten ist: · Pin 1 (RA2) ist offensichtlich ueber 10kOhm mit Pin 4 RA5/MCLRE/Vpp) verbunden – m.E. FEHLER · Pin 1 ist mit dem roten Kabel vermutlich mit +5V verbunden (nicht sicher erkennbar) – m.E. FEHLER Korrektur durchfuehren: Widerstand 20-50k von RA5 direkt auf +5V legen · Zu Pin 4 (RA5/MCLRE/Vpp) fuehrt noch ein gelbes Kabel, vermutlich die Programierspannung Vpp - OK · Zu Pin 4 fuehrt noch ein graues Kabel zum Taster (Reset) - OK (Bitte Taster beim Flashen nicht druecken, denn dann ist das Pickit defekt) · Pin 5 (Vss) schwarzes Kabel fuehrt vmtl nach GND (0V) – OK · Pin 7 (RB1) ist ueber LED + R 220 nach GND geschaltet – OK · Pin 14 (Vdd) ist mit roten Kabel vmtl. Nach +5V geschaltet – OK mfG Grober Klotz P.S. Nochmals geprueft: mein Code, importiert von MPLABX laeuft problemlos.
Hallo Grober Klotz, vielen Dank für deinen Aufwand. Ich musste zuerst mal ein wenig an der IDE reparieren, offensichtlich hatte ich mir beim experimentieren gestern das Makfile zerschossen. Nach ein wenig Suche kam ich aber drauf. Die gute Nachricht, auf meinem Velleman K8048 funktioniert der PIC mit dem von dir gesendeten Code so wie es die Programmierung besagt. Also liegt es definitiv an der Hardware. Ich habe also deine Änderungen durchgeführt, eigentlich ist das einzige was du bemerkt hattest der Wiederstand nicht gegen pin 1 sondern direkt gegen +vdd. Das also geändert. Aber selbst das erhöhen des Wiederstands auf 47K brachte keine Veränderung. auf dem Breadboard blinkt die LED im Sekundentakt wo sie doch 2 Sekunden an sein sollte. Ich bleibe dran. Gruß Reiner
Hallo Reiner Mir faellt noch was zu Deinem Schaltungsaufbau ein: Falls noch nicht geschehen, stecke einen 100nF-Keramikkondensator (keinen Elko!) direkt ueber den Vdd und Vss-Pin (kuerzeste Verbindung absolut erforderlich). Dieser C darf beim PIC NIE fehlen. Ob der Pullup an MCLRE 20k oder 50k hat spielt fuer das Fehlverhalten keine Rolle. Hast Du die Schaltzeiten mit dem Simulator (Watch-Window und stopwatch) schon mal gemessen? Bei mir kommen dabei stets die mit Delay vorgegebenen Zeiten heraus, denen auch der visuelle Eindruck entspricht. mfG Grober Klotz
Hallo noch mal Grober Klotz, eigentlich habe ich jetzt keine Idee mehr. Um alles auszuschließen was Fehler beinhalten könnte, habe ich eine absolute Minimalvariante auf dem Breadboard erstellt. (siehe Bild) Ich denke da müssten alle Fehler ausgeschlossen sein. Das entspricht genau der Beschaltung auf dem Velleman Testboard. Auch im Internet habe ich diverse Bilder und Beschreibungen erneut gelesen. Mir ist das absolut schleierhaft. Eigentlich ist es nich wirklich wichtig, auch die jetzt vorliegende Variante wäre zu Not akzeptabel, soll nur für ein RC-Modellauto sein. Aber du weißt ja wie das ist, wenn man sich erst mal was in den Kopf gesetzt hat. Es ist ja auch total ärgerlich, wenn es eigentlich funktionieren müsste (theoretisch), aber es einfach nicht das macht, was es soll. Was soll es. Ich denke ich werde das jetzt mal ein paar Tage sacken lassen. offensichtlich hat auch kein anderer Benutzer mehr eine Idee ;-). Ich dankle dir jedenfalls riesig für deine Bemühungen. Gute Nacht und Gruß Reiner
Noch ein Nachtrag, damit man das auch nachvollziehen kann, habe ich noch zwei Videos bereitgestellt, die das Verhalten dokumentieren. Variante Breadboard http://www.rlonline.de/BilderForForums/MOV_0386.mp4 Varainte Velleman K8048 http://www.rlonline.de/BilderForForums/MOV_0387.mp4 wohlgemerkt, es handelt sich um den gleichen PIC nur einmal in das eine und das andere Board eingesteckt. Verrückt, oder ;-). Gruß Reiner
Ich glaube, ich weiß, was los ist! Deine LED auf dem Breadboard ist gar keine normale Standard-LED, sondern eine Blink-LED (eine mit eingebautem Blinker-Chip!) Schließe sie einfach mal direkt an die Versorgungsspannung an, statt an den PIC-Port und Du wirst sehen, daß der PIC am Blinken völlig unschuldig ist!
Ohhhh, na klar das kann sein, ich habe die nur aus der Grabbelkiste genommen. Das ist durchaus möglich... mich vor den Kopf schlagen ohne Ende ;-). Das du dadrauf gekommen bist!!! Alle Achtung. Werde ich natürlich heute Abend direkt prüfen. Vielen, Vielen Dank Thomas, ich denke das wird es sein. Sorry an Grober Klotz das ich dich solange mit meinem Fehler belästigt habe. Ich melde mich heute Abend, ich kann es kaum erwarten. Leider kann ich nicht einfach losfahren, sind immerhin 60km, aber am liebsten würde ich ;-). Gruß Reiner
Hallo Thomas du bis mein Held !!! Ich wäre wohl nur durch Zufall drauf gekommen. Es ist natürlich genauso wie du es geschrieben hattest. Als du es erwähnt hast, war mir auch sofort klar das es die Ursache ist. Man sollte eben nicht einfach mal in die Grabbelkiste greifen wenn man mal schnell ein Bauelemenet zu Testzwecken benötigt. Oder aber die Grabbelkiste regelmäßig weg sortieren. Aber auch sonst allen Dank die sich mit meinem Problem beschäftigt haben. Grober Klotz an deinem Beispiel habe ich sehr viel lernen können, auch wie man einen Code besser strukturiert, damit er lesbarer und übersichtlicher wird. Ich vermisse eigentlich grundsätzlich größere Code Beispiele im Froum. Gerade für Anfänger ist es mitunter sehr hilfreich die Vorgehensweise von anderen zu sehen. Also, Problem gelöst, schöne Tage, Gruß Reiner
Hi Das ist ja geil :) Und Danke für das Feedback - so kann's gehen ... PS: Zumindest kannst Du jetzt auch ohne µC was blinken lassen (genau genommen ist da auch ein µC drin, aber Schwamm drüber) MfG
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.