Guten Abend, ich bin neu in der Welt der Mikrocontroller. Ich möchte ein zunehmendes Lauflicht bauen, das bedeutet 10 - 15 LED´s sollen nacheinander aufleuchten und wenn die letzte LED erleuchtet sollen alle wieder erlöschen, dann das selbe von vorne in einer Endlosschleife. Ich möchte dies mit dem Mikrocontroller PIC16F628A verwirklichen, da ich davon schon 2 gekauft habe. Eine Programmier Platine habe ich bereits und ein Brenner Programm auch. Damit muss ich ja einfach nur die .hex Datei auf den Controller Brennen oder? Ich bräuchte Hilfe bei dem Programm da es so eine Masse an verschiedener Software und Sprachen gibt, ich habe das Internet schon stundenlang durchsucht aber da jeder leider eine andere Meinung hat war die Suche erfolglos. Gibt es ein Kostenloses Programm in dem ich einfach programmieren kann und es mir das dann Umwandelt zu einer PIC Controller verständlichen .hex Datei? Wäre wirklich schön wenn ihr mir "verständlich" weiter helfen könntet. Gruß Sebastian
Praktikabel sind wohl nur Assembler und C. Und eigentlich gibt es nur MplabX als IDE. Alles andere am besten erst mal komplett ignorieren. Ganz egal, welche Sprache du wählst, mal mit den Beispielen auf http://www.sprut.de/electronic/pic/ anfangen. Problem sind die unzähligen Register. Die Sprut Beispiele nach C übersetzen ist nicht so schwierig. Später musst du sowieso die Assemblerbeispiele aus dem Datenblatt in deine Sprache übersetzen.
Aus ebay, K150 Programmer nennt der sich. Mit Brenn Software wo man .hex Dateien einfügt.
Ein Wunder, dass nicht sogar noch von PIC abgeraten wird. Und nein, AVR und C sind nicht das Einzige! Ich programmiere meine PICs mit MikroBASIC von MikroE. Die haben auch einen Pascal und C Compiler. Die freie Version macht bis 2kWorte Code. Gruss Chregu
Wenn du mit dem HEX Files direkt brennen kannst, dann such dir eine Programmiersprache aus, die dir liegt und dazu das Programm zum schreiben. Beispiele: http://www.mikroe.com/ http://www.microchip.com/pagehandler/en-us/family/mplabx/ Das sind so die meist genutzten. Programmiersprachen: C Basic Assembler Pascal oder was es sonst noch gibt. http://www.mikroe.com/compilers/ Gibt es auch Demos von. Also ausprobieren, was dir liegt. Foren: http://www.mikrocontroller.net/forum/mikrocontroller-elektronik http://pic-projekte.de Und noch einige mehr.
Ich würde mir MPLABX und den XC8 Compiler holen - d.h. die PICs in C programmieren. C hat den Vorteil, dass sich das erlernte später besser auf andere Controller übertragen lässt. MPLABX hat den Vorteil, dass es kostenlos ist und man relativ viel Hilfen findet. Die IDE und den Compiler gibts hier: http://www.microchip.com/pagehandler/en-us/family/mplabx/ Such dir am besten bei youtube ein paar Tutorials und schau sie dir an. Beispiele - in Form von fertigen Projekten für MPLABX - gibts hier: http://www.microchip.com/pagehandler/en-us/devtools/mla/home.html Das ist ein guter Start zum "spicken", das geht von ganz einfach bis hin zu USB-Devices. Andere Codebeispiele gitbs direkt Microchip hier: http://www.microchip.com/CodeExamplesByFunc.aspx Bei Problemen ist das Microchip Forum einen Blick wert: http://www.microchip.com/forums/
Für den 16F628 kannst auch MPLAB nehmen. Das sollte viel schlanker als MPLABX sein. Der XC8 Compiler lässt in MPLAB als Tool integrieren. Die MikroE-Compiler haben relativ gut ausgebaute Bibliotheken. Der Haken: Es wird vorrangig die "eigene" Peripherie von MikroE unterstützt. Und die Bibliotheken sind nicht im Quelltext verfügbar. In den neuen Versionen wird nicht mal mehr der Assembleroutput des Compilers für die Bibliotheken gelistet. (Wie noch beim alten 8er C-Compiler.) Ich würde Dir eher zum XC8-Compiler raten.
@Sebastian G. Bezueglich des XC8-Compiler : http://pic-projekte.de/wordpress/?cat=13 Ich habe die Webseite nur kurz "ueberflogen",duerfte fuer Dich aber als Neueinsteiger interessant sein....
Hallo Sebastian, also ich habe auch vor einigen Jahren mit NULL Ahnung angefangen, mir damals den 16F628 und den Brenner 8 von sprut zugelegt. Beim Brenner würde ich gleich sofort den PicKit3-Programmer (billig vom Chinesen) zulegen. Die Seite von sprut [http:\\www.sprut.de] ist weit und breit die beste die Du finden kannst, wenn es um das Erlernen von Assembler für PICs geht. Geh einfach frischauf drauf los, lass zuerst 1 LED, dann 2 dann schließlich soviel Du möchtest blinken. Arbeite Dich in Assembler ein, bis Du die Dich mit den internen Modulen (PORTS, den Timern, Comparatoren, der Pulsweitenmodulation, Capture, Interrupt usw) einigermaßen auskennst. Die baldmöglichste Ansteuerung von LCD (HD44780-kompatibel) möchte ich Dir besonders empfehlen. Dann kannst Du Dich bereits dem 16F1827 (18Pin) widmen, der einige Module mehr als der 16F628 (bei geringerem Preis!) zu bieten hat . ADC, Touchsensor, interner Oscillator bis 32MHz usw, geben Dir ein volles Betätigungsfeld. Wenn Du mal mehr Pins benötigst, dann gib Dich nicht mehr mit den 16F87x ab, greife gleich zu den 28/40pin-MCUs wie z.B. 16F1936. Wenn möglich baue Dir eine Testplatine wie sie bei sprut zu finden ist z.B. auf Lochraster auf, dann vermeidest Du evtl. unsichere Kontaktgabe und Verdrahtungsarbeit am Steckbrett. Ich füge Dir mal ein Bild von meinem, vor Jahren gebauten Testboard als Beispiel bei. Bei "sprut" findest Du jede Menge Hilfe, Infos und Anregungen vom einfachen Blinken einer LED bis zu sehr anspruchsvollen Projekten. Wenn Du dann Assembler drauf hast und Du das Verlangen nach "C" in Dir verspürst, lernst Du eben diese Programmiersprache und kannst zeitkritische Programmteile auf Grund Deiner Vorkenntnisse in Assembler programmieren. Pack's einfach an, kannst ja nur gewinnen und keinesfalls verlieren! mfG GroberKlotz
Sebastian G. schrieb: > ich bin neu in der Welt der Mikrocontroller. Ich möchte ein zunehmendes > Lauflicht bauen, das bedeutet 10 - 15 LED´s sollen nacheinander > aufleuchten und wenn die letzte LED erleuchtet sollen alle wieder > erlöschen, dann das selbe von vorne in einer Endlosschleife. > > Ich möchte dies mit dem Mikrocontroller PIC16F628A verwirklichen, da ich > davon schon 2 gekauft habe. > > Eine Programmier Platine habe ich bereits und ein Brenner Programm auch. > Damit muss ich ja einfach nur die .hex Datei auf den Controller Brennen > oder? Besser wäre es gewesen, vorher zu fragen. Die PIC10/12/16 machen es einem C-Compiler nicht ganz einfach, brauchbaren Code zu erzeugen. PIC18 ist besser, und PIC24 und PIC32 sind in dieser Hinsicht optimal. Ich hätte Dir für den Anfang einen PIC24 angeraten, der ist am einfachsten und bequemsten, die 8-Bitter haben da so ein paar Eigenheiten, mit denen man erstmal klar kommen muss. Aber ok, das Kind ist jetzt im Brunnen. Andere Leute haben MPLABX und XC8 empfohlen, ich schließe mich dem an. Dazu ein PICKIT3. Keinen Brenner. Die Dinger sind noch aus der Zeit, als es noch kein Flash gab und man die PICs unter eine UV-Lampe zum löschen legen musste (oder nur ein einziges Mal brennen konnte). Diese Zeiten sind seit 20 Jahren vorbei. Heutzutage programmiert man Prozessoren direkt in der Schaltung. Da die Chips auch von der Bauform immer kleiner werden und damit direkt auf die Leiterplatte gelötet werden müssen, geht es auch gar nicht mehr anders. Der Vorteil, der nebenbei herausspringt, liegt daran, dass Du mit dem PICKIT3 dem Prozessor auch bei der Arbeit zuschauen kannst. Du kannst Dir die Speicher und Register anschauen, Du kannst Befehle im Einzelschritt ausführen lassen, Stoppunkte setzen usw. Ein Brenner kann das prinzipiell nicht. Diese Möglichkeiten solltest Du Dir nicht entgehen lassen, Du lernst eine ganze Menge dabei. fchk
Ach was, Pic24 mit MpabX und Pickit3... damit bekommt sogar meine Oma ein Mikrocontroller-Programm zum laufen. Echte Programmierer benutzen Pic16 und einen Brenner, den die IDE nicht kennt. :-)
Christian Müller schrieb: > Ein Wunder, dass nicht sogar noch von PIC abgeraten wird. Und nein, AVR > und C sind nicht das Einzige! Du hast ja schon 50 Minuten nach Threaderstellung geschrieben. Warst wohl schneller als die hater ;) Frank K. schrieb: > Die PIC10/12/16 machen es einem C-Compiler nicht ganz einfach, > brauchbaren Code zu erzeugen. PIC18 ist besser, und PIC24 und PIC32 sind > in dieser Hinsicht optimal. Das mag stimmen. Aber sofern der Compiler alles ausbadet (was er tut), juckt es mich weniger, dass er beim PIC18 oder höher weniger arbeit hat. Meine Empfehlung wäre nen PIC18, z.B. PIC18F25K22 oder PIC18F45K22. Finde zum Einstieg ist es ein gutes Mittelmaß zwischen PIC12 oder PIC16 und den doch komplizierteren 16bitter, geschweige 32bitter. Aber das ist ja rein subjektiv. Zusätzlich dazu die MPLAB X IDE mit XC8. Beides die aktuellsten offiziellen Tools. Neue PICs werden wohl nirgends schneller implementiert. Und du kannst auch Assembler nehmen, in der gleichen IDE. Aus dem selben Grund würde ich dir auch das PICKIT3 ans Herz legen. Das musste ich mir auch zwangsläufig zulegen da der Brenner8 ein neuen PIC nicht unterstützt hat, das dazugehörige Brenntool auch nicht. Aber das hat ja noch Zeit. Ich nutze aber gerne den MikroC Compiler/IDE. Ist iwie schlüssiger, übersichtlicher und besser dokumentiert. Zu ansich jeder Funktion gibt es ein Beispiel, zusammen mit Schaltplan. Es hat aber 2 Nachteile. 1. Ist es auf 2kWord begrenzt, wenn man kein Geld ausgeben will 2. Die Bibliothekfunktionen sind nicht einsehbar, geschweige änderbar. Ich hatte einmal die I2C Funktionen benutzt und das Programm hat sich aufgrund eines fehlenden Pullup Widerstands (vergessen eine Seite festzulöten) aufgehangen. Da wollte ich dann ein Timeout einbauen. Ging aber nicht. Ein USB Device zu bauen geht damit aber bedeutend schneller und einfacher. Resultiert aber automatisch bei >2kWord Code, somit braucht man die Vollversion. Sebastian G. schrieb: > aber da jeder leider eine andere Meinung hat war die Suche > erfolglos. Das ist hier nicht anders. Hättest du den PIC nicht als musskriterium genannt (und selbst dann kommt es idR, daher die Verwunderung), käme nicht nur die Programmiersprache sondern auch der uC ansich dazu. Daher wirdt du nur Empfehlungen bekommen. Entscheiden musst du. Und ich persönlich würde sagen MPLAB C, XC8 (also C), PICKIT3 (später) und Datenblatt sowie ERRATA
Sebastian G. schrieb: > Gibt es ein Kostenloses Programm in dem ich einfach programmieren kann > und es mir das dann Umwandelt zu einer PIC Controller verständlichen > .hex Datei? Konkret: JA Besuche doch mal die Seite von microchip: [http://www.microchip.com/] Lade Dir die Entwicklungsumgebung (IDE) MPLAB X herunter: [http://www.microchip.com/pagehandler/en-us/family/mplabx/] Dann noch das Datenblatt zum 16F628A [http://ww1.microchip.com/downloads/en/DeviceDoc/40044G.pdf] Überfliege mal den Inhalt des Datenblatts im Groben. Immer wenn Du Code erstellst, liest Du Dir den entsprechenden Abschnitt im Datenblatt genau durch. Wenn Du was nicht verstehst frägt Du im Forum oder suchst erstmal im Web oder bei sprut. Mit dem 16F628 kannst Du (ohne Klimmzüge) direkt an den als Ausgang verwendbaren Pins PORTB,RB7:RB0 und PORTA RA7:6,RA4:0 insgesamt 15LEDs einzeln ansteuern, sofern Du den internen Oszillator (4MHz) verwendest, da hierdurch RA7:6 frei werden. Denke aber daran (Datenblatt S. 133), dass der PIC an seinen Ausgängen und insgesamt nicht beliebig viel Strom liefern kann. Absolute Grenzwerte sind lt. Datenblatt 250mA Stromaufnahme über den Vdd (+)-Pin, am einzelnen Ausgang dürfen maximal 25mA rein/raus! Aber: bei 15 LED: 250mA/15=16.6 mA/Ausgang! Noch eine Bremse: Maximale Verlustleistung des PIC=800mW, bei 5V also nicht mehr als 160mA Stromaufnahme in den Vdd-Pin. Nochmals: mit dem Programmer/Brenner würde ich nicht sparen und NUR das Pickit3 verwenden. Damit hast Du die nächsten Jahre Deine Ruhe und Du vermeidest jeden Ärger den Du wahrscheinlich mit einem anderen Gerät haben wirst. >Eine Programmier Platine habe ich bereits und ein Brenner Programm auch. >Damit muss ich ja einfach nur die .hex Datei auf den Controller Brennen >oder? Mit MPLAB schreibst Du Deinen Programmcode z.B. in Assembler. Dann gehst Du einfach ins Programmer-Menü, wählst z.B. Pickit3. Im Menu Projekt wählst Du "Make" oder drückst [F10] und schon wird Dein Code automatisch in Hexcode umgewandelt und in den PIC geschrieben. Bei einem anderen Programmer musst Du das zugehörige Programm gestartet haben, dann die Einstellungen zum verwendeten PIC vornehmen usw. und dann mag es sein (?), dass Dein Programm klaglos in den PIC geschrieben wird. Vielleicht hat Dir diese und meine vorherige Antwort etwas geholfen :-) mfG GroberKlotz
Sebastian G. schrieb: > Ich möchte dies mit dem Mikrocontroller PIC16F628A verwirklichen, da ich > davon schon 2 gekauft habe. > > Eine Programmier Platine habe ich bereits und ein Brenner Programm auch. > Damit muss ich ja einfach nur die .hex Datei auf den Controller Brennen > oder? Naja. Also ich hoffe mal, daß die 2 PIC's nicht zu teuer gewesen sind, falls deine Interessenlage denn doch anders ist als beschrieben. Ich selber habe genau diesen Typ PIC schon seit langem im Einsatz, davon sind Abertausende in verschiedensten Geräten in der Welt. Aber ich habe im Gegensatz zu den anderen Vorrednern diese Chips immer in Assembler programmiert. Zum Hex-File: das ist eine lesbare Textdatei, die zeilenweise den eigentlichen Maschinencode nebst Adressen, Blocklängen und Prüfsummen enthält. Sowas versteht eigentlich nur das Brennprogramm, was dann an die betreffenden Stellen im Flash des Controllers die gewünschten Bitmuster schreibt. Das Hexfile ist also NICHT der eigentliche Maschinencode. Aber wenn du schon einen Brenner (nebst zugehörigem Programm) hast, dann sollte das alles klar gehen. Das Problem an sowas wie PICKIT2 und 3 ist, daß es eben NUR das MPLAB bzw. dessen Javaversion von Microchip dafür gibt und keinerlei andere (schlankere) Programmierprogramme. Sowas nagelt einen doch sehr auf die Üblichkeiten bei Microchip fest und läßt wenig Raum für Alternativen. Nun weiß ich (wie die anderen hier) natürlich nicht, was denn so an Interessen und Fertigkeiten in dir steckt. Also - abgesehen von deinem Lauflicht - wonach strebst du? Die PIC's kennenlernen? Bloß so programmieren? Was fertiges auch haben wollen? Fertigkeiten in PIC-Assembler erwerben? Oder nur Fertigkeiten in einer weniger hardwareorientierten Programmiersprache? Diese Fragen mußt du dir selbst beantworten und danach deinen Weg einschlagen. W.S.
Vielen vielen Dank schonmal für die vielen Beiträge und Tipps von euch, das hat mir schon sehr weiter geholfen. Auf den seiten von "sprut" und "pic-projekte" kann man ja wirklich viel dazu lernen und die ersten schritte besser verstehen. Ich werde mir mal den MPLABX und den XC8 Compiler herunterladen und mich langsam durchlesen. Das schwierigste finde ich das vieles auf Englisch ist und ich die Englischen fach Begriffe nicht alle kenne. Ich glaube zum Anfang werde ich mit Assambler durchstarten das wird schwierig genug und irgendwann habe ich vielleicht auch zeit und lust auf C. Das Interesse ein Lauflicht zu bauen hat ziemlich große Ausmaße angenommen, aber um so mehr ich über Mikrocontroller lerne um so mehr möchte ich das alles verstehen. Aber glaube ohne dieses Forum und eure guten Beiträge würde ich das nicht erlernen. Das PIC Kit habe ich mir noch nicht gekauft da es ja schon nicht gerade günstig ist. Ich versuche mal mit dem was ich jetzt habe etwas auf die Beine zu stellen, falls ich nicht weiter komme kann ich euch ja hoffentlich fragen :-) Vielen Dank schonmal ! Echt Super, so viel Hilfe innerhalb von 24h hätte ich nicht erwartet. Gruß Sebastian
Den XC8 Compiler benötige ich doch nur wenn ich in C Programmieren will oder verstehe ich das falsch? Kann ich in MPLABX v3.00 auch in Assamlber Sprache schreiben?
Sebastian G. schrieb: > Das schwierigste > finde ich das vieles auf Englisch ist und ich die Englischen fach > Begriffe nicht alle kenne. Gut. Englisch ist in dem Bereich Standard. Die meisten Fachbegriffe sind allerdings schon auf Englisch ;) Sebastian G. schrieb: > Ich glaube zum Anfang werde ich mit Assambler durchstarten das wird > schwierig genug und irgendwann habe ich vielleicht auch zeit und lust > auf C. Mach das. Ich persönlich finde C deutlich einfacher. ASM hat den Vorteil, dass man da einen näheren Bezug zur noch unbekannten Hardware hat. Aber Hochsprachen sind ja eben dazu da, nicht zu nah an der Hardware zu sein um soviel es geht Hardwareunabhängig zu programmieren. So kann man mal ne C Funktion von nem PIC auch mit wenig oder am besten keinem Aufwand für nen AVR oder ARM nehmen (und anders rum). Sebastian G. schrieb: > Das PIC Kit habe ich mir noch nicht gekauft da es ja schon nicht gerade > günstig ist. Joa. Es ist das Geld mMn aber wert und es gibt auch Chinaclones bei ebay für 15-20€. Sebastian G. schrieb: > Ich versuche mal mit dem was ich jetzt habe etwas auf die > Beine zu stellen, falls ich nicht weiter komme kann ich euch ja > hoffentlich fragen :-) Jeder kann mit jeder Frage hier ankommen und ihm wird geholfen. WENN man gewisse "Regeln" befolgt ;) - Dazu gehört zu schreiben, was man probiert hat und nicht funktioniert - Am besten im Vorfeld Schaltplan, Code und ggf Foto des Aufbaus oder Layout anhängen (auch den Code) - zumindest ein bisschen auf Grammatik achten. Ein Text ohne Absätze, Satzzeichen und Großbuchstaben kommt meistens SEHR schlecht an ;) Dann ist es egal, ob du ein Lauflicht, MP3 Player, Oszi oder Linuxboard machen willst. Es wird dir geholfen und die dummen Sprüche sind auf das Minimum gebracht. Wenn man sich aber alles nur aus der Nase ziehen lässt, so tut, als wäre es ein Top Secret Projekt, auf die Hälfte nicht eingeht und meint man weiß alles besser, kann und wird einem nicht geholfen. Manche werden dann auch ziemlich ausfallend und andere ziemlich.beleidigend. Das ist der Nachteil an diesem Forum. Sebastian G. schrieb: > ! Echt Super, so viel Hilfe innerhalb von 24h hätte > ich nicht erwartet. Das ist das gute an diesem Forum ;) Wenn man die Frage richtig stellt, bekommt man auch qualifizierte und schnelle Antworten. Sebastian G. schrieb: > Den XC8 Compiler benötige ich doch nur wenn ich in C Programmieren will > oder verstehe ich das falsch? Kann ich in MPLABX v3.00 auch in Assamlber > Sprache schreiben? Richtig. Der Assembler ist bei der IDE dabei, die Compiler nicht. Ist jetzt aber auch nicht irre groß. Musst du wissen, ob du den gleich mit lädst unf installierst. Wenn du so bist wie ich, willst du den relativ schnell testen und bleibst dann erstmal bei C ;)
Für PIC16 kommt m.E. eigentlich nur Assembler in Frage! Ich haben gerade den 16F628a auch in vielen kleineren Geräten/Projekten im Einsatz und habe mir damals die optisch ziemlich ähnliche Testplatine wie GroberKlotz geätzt (nicht auf Lochraster!). Sprut hat mir netterweise die CorelDraw Datei gesendet für kleinere Anpassungen! Es ist heute mein Standard-Controller schlechthin. Ich habe noch mit dem "Vorgänger" PIC16F84 angefangen und bin diesem Typ eben mit dem 16F628a bis heute treu geblieben, wenn es klein ist und schnell gehen soll. Zur Einführung in einfache uC-Programmierung würde ich den auch heute noch nach wie vor empfehlen. Die relativ einfache Anpassbarkeit von den vielen PIC16F84-Programmen, die sprut zudem auch gut beschreibt, spricht dafür. Für größere Projekte bin ich dann später aber von PIC weggegangen. Da war mir AVR lieber mit dem Atmega644 wegen den vielen I/O Pins, "großen" Flash, freien avr-gcc C-Compiler und günstigen Preis. Am Anfang war ich erstaunt, wie umständlich manche Dinge in C doch sind (wie z.B. ein Bit setzen oder löschen). Aber spätestens, wenn man mit printf Text formatieren möchte, um ihn auf einem Display auszugeben, bin ich froh, dass ich das nicht in Assembler machen muss. Ebenso bei komplexeren Berechnungen, bei denen ich mathematisch an meine Grenzen stoße.
Kermit schrieb: > Ich habe noch mit dem "Vorgänger" > PIC16F84 angefangen und bin diesem Typ eben mit dem 16F628a bis heute > treu geblieben Deine Treue in allen Ehren, aber man darf und sollte sich für ein neues Projekt auch ruhig mal die etwas moderneren PIC-Typen anschauen. Die "Enhanced MID Range" Typen kann man auf jeden Fall ohne Änderung der Hardware statt der alten MID-Range Typen nehmen. Programmiertechnisch muss man nicht viel umlernen, hat aber deutliche Vorteile, wie z.B. automatisches (und schnelles!) Sichern der Register bei Interrupts, erweiterter Befehlssatz, höhere Taktfrequenzen (oft bis 32MHz mit internem Oszillator!) und diverse Kleinigkeiten mehr...
:
Bearbeitet durch User
Im Allgemeinen kann ich mich der vorherrschenden Meinung anschließen: MplabX mit XC8 compiler, kostenlos und unbegrenzt bei Microchip. Dazu empfehle ich ebenfalls den Pickit3, das gibts auch im Bundle mit einem Pic18-Demoboard für nicht ganz 80€ original von Micorchip. Klar, das mag auf den ersten Blick viel erscheinen, aber bedenke: Mit dem Pickit kannst du ALLE Mikrocontroller von Microchip programmieren, auch die ganz großen Pic32MZ. Dazu ein leicht modifizierbares Demoboard (auf meinem ist mittlerweile ein HD44780 aufgelötet). Mit einem solchen Debugger kannst du nicht nur das Programm auf den Controller schreiben, sondern auch direkt in der Hardware debuggen. So lassen sich Fehler im Code deutlich schneller eingrenzen und auffinden.
Hallo, hat jemand von euch ein Lauflicht Programm für den PIC16F628A, das ich etwas spicken kann? Gerne in C und Assamlber... Gruß Sebastian
Am besten in Assamlber und in C so das ich mit beiden etwas Spielen kann dann fällt hoffentlich meine Entscheidung mit welcher Sprache ich beginne am Anfang. Gruß Sebastian
Teutschlehrer schrieb: > Sebastian G. schrieb: > >> Assambler > > Das Dingens heisst Assembler. > > Das schreibst Du jetzt 100 mal... Entschuldige, ist mir nicht aufgefallen. Assembler :)
Bei dem Lauflicht beispiel Programm von sprut.de zeigt er mir in MPLAB ganz viele Fehler und Error an wenn ich auf Build gehe. Ich bräuchte nur mal ein Fertiges Programm für den PIC 16F628A das ich mal ein bisschen Klarheit in das ganze bekomme... Würde mich freuen wenn jemand da was für mich hätte.
Max H. schrieb: > Sebastian G. schrieb: >> hat jemand von euch ein Lauflicht Programm für den PIC16F628A > Siehe Anhang Habe den Code
1 | // Untested
|
2 | |
3 | #define _XTAL_FREQ 4000000
|
4 | |
5 | #include <xc.h> |
6 | #include <stdint.h> |
7 | |
8 | // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT
|
9 | // pin, I/O function on RA7/OSC1/CLKIN)
|
10 | #pragma config FOSC = INTOSCIO
|
11 | // Watchdog Timer Enable bit (WDT disabled)
|
12 | #pragma config WDTE = OFF
|
13 | // Power-up Timer Enable bit (PWRT disabled)
|
14 | #pragma config PWRTE = OFF
|
15 | // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
|
16 | #pragma config MCLRE = ON
|
17 | // Brown-out Detect Enable bit (BOD enabled)
|
18 | #pragma config BOREN = ON
|
19 | // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function,
|
20 | // HV on MCLR must be used for programming)
|
21 | #pragma config LVP = OFF
|
22 | // Data EE Memory Code Protection bit (Data memory code protection off)
|
23 | #pragma config CPD = OFF
|
24 | // Flash Program Memory Code Protection bit (Code protection off)
|
25 | #pragma config CP = OFF
|
26 | |
27 | |
28 | void main(void) |
29 | {
|
30 | uint8_t lauflicht = 1; |
31 | TRISB = 0x00; |
32 | PORTB = 0x00; |
33 | |
34 | while(1) |
35 | {
|
36 | lauflicht <<= 1; |
37 | if(lauflicht == 0) |
38 | lauflicht = 1; |
39 | PORTB = lauflicht; |
40 | __delay_ms(100); |
41 | }
|
42 | }
|
auf den Controller gebrannt, aber er gibt keine Spannung an dem Port aus, woran kann das liegen?
Sebastian G. schrieb: > aber er gibt keine Spannung an dem Port > aus, woran kann das liegen? Wie gemessen? An welchen Pins?
:
Bearbeitet durch User
Sebastian G. schrieb: > Am besten in Assamlber Die Mutter aller Lauflichtprogramme für PIC16 in ASM: ; David Tait (david.tait@man.ac.uk) ; PROCESSOR 16C54 ;COULD BE ANY 16C5X __CONFIG 0FH ;RC OSC, WATCHDOG ; PORTB EQU 6 STATUS EQU 3 CARRY EQU 0 NOT_TO EQU 4 RFLG EQU 8 ;GO RIGHT FLAG MSB EQU 3 ;BIT POSITION OF LEFTMOST LED ; BTFSS STATUS,NOT_TO ;RESET OR WATCHDOG TIMEOUT? GOTO NOINIT ;SKIP INIT IF TIMEOUT MOVLW 1 ;INIT IF RESET MOVWF PORTB CLRF RFLG NOINIT CLRW TRIS PORTB ;PORTB ALL OUTPUTS MOVLW 0AH OPTION ;WATCHDOG PRESCALE 4:1 BCF STATUS,CARRY BTFSC RFLG,0 ;CHECK LEFT OR RIGHT GOTO RIGHT LEFT RLF PORTB,F ;LIGHT LED TO LEFT BTFSC PORTB,MSB ;LEFTMOST? COMF RFLG,F ;YES - GO RIGHT NEXT TIME SLEEP RIGHT RRF PORTB,F ;LIGHT LED TO RIGHT BTFSC PORTB,0 ;RIGHTMOST? COMF RFLG,F ;YES - GO LEFT NEXT TIME SLEEP ; END PS: Im Gegensatz zu den Sprut-Beispielen läuft das Programm unabhängig von der µC-Taktfrequenz ;-)
:
Bearbeitet durch User
Max H. schrieb: > Sebastian G. schrieb: >> aber er gibt keine Spannung an dem Port >> aus, woran kann das liegen? > Wie gemessen? An welchen Pins? An den Pins RB0 - RB7 LED´s leuchten nicht. Gibt er auch eine Spannung an den ports aus wenn keine LED´s angeklemmt sind? So das ich z.b. mit einem Multimeter Messen kann ob eine Spannung da ist?
:
Bearbeitet durch User
Автомат Калашникова schrieb: > Sebastian G. schrieb: >> Am besten in Assamlber > > Die Mutter aller Lauflichtprogramme für PIC16 in ASM: > > ; David Tait (david.tait@man.ac.uk) > ; > PROCESSOR 16C54 ;COULD BE ANY 16C5X > __CONFIG 0FH ;RC OSC, WATCHDOG > ; > PORTB EQU 6 > STATUS EQU 3 > CARRY EQU 0 > NOT_TO EQU 4 > RFLG EQU 8 ;GO RIGHT FLAG > MSB EQU 3 ;BIT POSITION OF LEFTMOST LED > ; > BTFSS STATUS,NOT_TO ;RESET OR WATCHDOG TIMEOUT? > GOTO NOINIT ;SKIP INIT IF TIMEOUT > MOVLW 1 ;INIT IF RESET > MOVWF PORTB > CLRF RFLG > NOINIT CLRW > TRIS PORTB ;PORTB ALL OUTPUTS > MOVLW 0AH > OPTION ;WATCHDOG PRESCALE 4:1 > BCF STATUS,CARRY > BTFSC RFLG,0 ;CHECK LEFT OR RIGHT > GOTO RIGHT > LEFT RLF PORTB,F ;LIGHT LED TO LEFT > BTFSC PORTB,MSB ;LEFTMOST? > COMF RFLG,F ;YES - GO RIGHT NEXT TIME > SLEEP > RIGHT RRF PORTB,F ;LIGHT LED TO RIGHT > BTFSC PORTB,0 ;RIGHTMOST? > COMF RFLG,F ;YES - GO LEFT NEXT TIME > SLEEP > ; > END > > PS: Im Gegensatz zu den Sprut-Beispielen läuft das Programm unabhängig > von der µC-Taktfrequenz ;-) make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf make[1]: Entering directory 'C:/Users/Sebastian/Downloads/ggg.X' make -f nbproject/Makefile-default.mk dist/default/production/ggg.X.production.hex make[2]: Entering directory 'C:/Users/Sebastian/Downloads/ggg.X' make[2]: *** [build/default/production/newAsmTemplate.o] Error 1 "C:\Program Files (x86)\Microchip\MPLABX\v3.00\mpasmx\mpasmx.exe" -q -p16f628a -l"build/default/production/newAsmTemplate.lst" -e"build/default/production/newAsmTemplate.err" -o"build/default/production/newAsmTemplate.o" "newAsmTemplate.asm" Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 11 : Executable code and data must be defined in an appropriate section Error[151] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 12 : Operand contains unresolvable labels or is too complex Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 12 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 13 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 14 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 15 : Executable code and data must be defined in an appropriate section Error[150] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 16 : Labels must be defined in a code or data section when making an object file Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 16 : Executable code and data must be defined in an appropriate section Warning[224] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 17 : Use of this instruction is not recommended. Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 17 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 18 : Executable code and data must be defined in an appropriate section Warning[224] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 19 : Use of this instruction is not recommended. Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 19 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 20 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 21 : Executable code and data must be defined in an appropriate section Error[151] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 22 : Operand contains unresolvable labels or is too complex Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 22 : Executable code and data must be defined in an appropriate section Error[150] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 23 : Labels must be defined in a code or data section when making an object file Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 23 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 24 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 25 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 26 : Executable code and data must be defined in an appropriate section Error[150] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 27 : Labels must be defined in a code or data section when making an object file Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 27 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 28 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 29 : Executable code and data must be defined in an appropriate section Error[152] C:\USERS\SEBASTIAN\DOWNLOADS\GGG.X\NEWASMTEMPLATE.ASM 30 : Executable code and data must be defined in an appropriate section nbproject/Makefile-default.mk:95: recipe for target 'build/default/production/newAsmTemplate.o' failed make[2]: Leaving directory 'C:/Users/Sebastian/Downloads/ggg.X' make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2 nbproject/Makefile-default.mk:78: recipe for target '.build-conf' failed make[1]: Leaving directory 'C:/Users/Sebastian/Downloads/ggg.X' nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed BUILD FAILED (exit value 2, total time: 993ms) Ich geb´s langsam auf :o Das es so kompliziert sein kann ein Paar LED´s leuchten zu lassen hätte ich nicht gedacht.
Nimm dies hier. http://www.oz1bxm.dk/PIC/628LED.htm Muss nur auf A type geändert werden. CPU sowie include
Sebastian G. schrieb: > Das es so kompliziert sein kann ein Paar LED´s leuchten zu lassen hätte > ich nicht gedacht. Also 8 LEDs anzulöten dauert länger, als in MPLABX eine neues Projekt aufzumachen, sich ein main-File erzeugen zu lassen, die 10 Zeilen C für ein Lauflicht zu schreiben und das ganze mit dem PICkit zu flashen. Das Datenblatt des Prozessors mal zu lesen hab ich rausgelassen, da kommt man sowieso nicht drumherum. MfG Klaus
Reicht 1 Microcontroller, die LED´s und passende Wiederstände nicht? Bei http://www.manelsoft.com/projects/pic16f628a_led_chaser.aspx sind ja noch Kondensatoren usw. in der Schaltung ?
micropoint schrieb: > Bei http://www.manelsoft.com/projects/pic16f628a_led_chaser.aspx sind ja > noch Kondensatoren usw. in der Schaltung ? Der 100nF zwischen Vdd und Vss, nahe an den Pins, ist auch notwendig. Siehe: https://www.mikrocontroller.net/articles/Kondensator#Entkoppelkondensator
:
Bearbeitet durch User
Sebastian G. schrieb: > ... > BUILD FAILED (exit value 2, total time: 993ms) > > Ich geb´s langsam auf :o > > Das es so kompliziert sein kann ein Paar LED´s leuchten zu lassen hätte > ich nicht gedacht. Bevor Du versuchst, ein "sinnvolles" Programm zu verarbeiten, solltest Du Dich vielleicht zunächst mal mit ein paar Grundlagen beschäftigen und die Entwicklungsumgebung wenigstens soweit beherrschen, daß Du es schaffst, ein Programm, das gar nichts macht (das z.B. nur aus ein paar "No Operation"-Befehlen besteht) vom Source Code in den Hex-Code umzuwandeln.
:
Bearbeitet durch User
Ist es möglich einfach einen 100nF zwischen Vdd und Vss, die beiden an Plus und Minus und an den anderen Pins gibt der PIC mir nach und nach (Lauflicht) Spannung die ich über Wiederstände an LED´s gebe und bei der letzten LED das ganze wieder von vorne? Eigentlich ja nichts Kompliziertes oder doch? Hier ein beispiel Video wie ich es vor habe. https://www.youtube.com/watch?v=whKYU7W8whw
Benutz doch das asm prog von 628. Defines: #define Led0 PORTB,0 .... #define Led14 PORTA,7 Dann delay1 und delay2 mit unterschiedlichen Zeiten. delay1 MOVLW 60 CALL delay+1 delay2 ; hier 1 sec. CALL $+1 CALL $+1 GOTO delay Dann in Main Main MOVLW 0xff MOVWF PORTA MOVWF PORTB CALL delay2 CLRF PORTA CLRF PORTB CALL delay BSF Led0 CALL delay1 BSF Led1 CALL delay1 BSF Led2 CALL delay1 ... BSF Led13 CALL delay1 GOTO Main
@ Sebastian G Anbei ein Lauflicht aus alter Zeit, habe es nur mal kurz überflogen, zussätzlich kommentiert und mit MPLAB 8.92 assembliert und mit meiner 18-Pin Testplatine (sprut) erfolgreich getestet. mfG GroberKlotz
Schöne code obfuscation. Das erste mal dass ich sowas sehe. Delay100ms ist nicht 100ms sondern 2.44ms Aber im W wird 0 über geben, also 256x2.44ms Ist ca 624ms oder der Wert 5, was dann 10ms wäre, je nach Version des kompilers. Dies alles ist nicht gleich ersichtlich. Es wäre aber besser die Zeit von 2.44ms einfach auf 10ms zu erhöhen. Für 100ms sind die Werte 199 sowie 167 dezimal für d1 und d2. Dann sind es echte ca 100ms Intervalle. Fosc_mult sollte ein +0.5 am Ende stehen haben wegen runfungsfeler, da darf dann aber keine Klammer beim Aufruf verwendet werden. Weiters sollte beim laden von w ein +1. Angehängt werden, man kann ed auch delay_offset nennen, ansonsten müsste man Nach movwf d3 ein incf d3 reińmachen.
chris schrieb: > Schöne code obfuscation. Nanana.. Das Beispiel vom groben Klotz ist hier das erste !! was wenigstens einigermaßen eine anständige Form hat und größtenteils problemlos lesbar ist. Nix Obfuscation. Es zeigt zwar all die notationstechnischen Dinge, die mir bei MicroChip schon immer auf den Nerv gegangen sind, aber da kann man nix machen, die Assemblernotation bei denen ist eben so. Allerdings sind mir ein paar Dinge aufgefallen: __CONFIG _FOSC_INTOSCIO Mir ist nicht erinnerlich, daß der 16F628A einen internen RC-Oszillator hat. Hat er nun? Oder sollte da doch ein Quarz oder wenigstens ein billiger Keramikschwinger dran? ;--RAM ALLOCATION ;Zuweisung von Registeradressen an Labels) CBLOCK 0x20 ;Variablen ab Adresse 20h anlegen d1,d2,d3 ;Zähler in Sub Delay100ms ENDC kriegt man das nicht lesbarer, etwa so: SEG RAM ORG 20h d1: DS 1 d2: DS 1 d3: DS 1 Jaja,ich weiß, bei älteren Assemblern konnte man nur d1: equ 21h d2: equ 22h d3: equ 23h schreiben. Ging auch, war aber recht unschön. W.S.
Hallo, habe das Programm auf den PIC gebrannt, müsste eine LED an RB7 nicht normal leuchten wenn ich sie anklemme? Denn das tut sie auf keinem der Ports... Habe ich den PIC richtig angeklemmt?
W.S. schrieb: > __CONFIG _FOSC_INTOSCIO > Mir ist nicht erinnerlich, daß der 16F628A einen internen RC-Oszillator > hat. Hat er wohl! 1. Siehe header file P16F628A.INC, Abschnitt "CONFIG Options" 2. Siehe Datenblatt zum PIC16F628A Abschnitt 4.2.2.6 (S.29) >PCON Register >bit 3 OSCF: INTOSC Oscillator Frequency bit > 1 = 4 MHz typical > 0 = 48 kHz typical mfG GroberKlotz
Hallo, kann ich RA0 - RA7 auch noch zum LED ansteuern verwenden? (bis auf RA5/MCLR) Wenn ja, wie muss ich das in Assembler schreiben?
1 | TITLE "LED-Lauflicht" |
2 | NOLIST |
3 | ;******************************************************************** |
4 | ; Datei: LED_Lauflicht_03.ASM |
5 | ; Autor: GroberKlotz |
6 | ; begonnen: 18.07.2010 |
7 | ; geändert: 14.06.2015 |
8 | ; IDE: MPLAB 8.92 |
9 | ;******************************************************************** |
10 | ; PROJEKT |
11 | ; Einfaches Lauflicht, Ansteurung von 8 LEDs an PORTB,RB7:0 |
12 | ; Ports sind H-aktiv, LEDs sind an jedem Pin von PORTB nach GND mit |
13 | ; Vorwiderstand 560 Ohm angeschlossen. |
14 | ; Einschaltreihenfolge der LEDs: RB7 ... RB0 -> RB7 ... RB0 usw.... |
15 | ; |
16 | ; FUNKTIONSBESCHREIBUNG |
17 | ; Zunächst wird PORTB,RB7 = 1 und (RB6:0) = 0 gesetzt. |
18 | ; Mittels des Bitshift-Befehls "RRF PORTB,F" wird das H-Bit 8x um |
19 | ; 1 Position verschoben und steuert dabei die an den Pin geschaltete |
20 | ; LED ein. |
21 | ; Beim Bitshift wird das "herausfallende" Bit automatisch in das |
22 | ; Bit "STATUS,C" geschoben. Da nur 1 Bit den Wert 1 hat, wird nach |
23 | ; 8maligem RRF keine 0 sondern eine 1 aus RB0 herausgeschoben. |
24 | ; Die Bits RB7:0 haben dann allesamt den Wert 0. Der Wert von "C" |
25 | ; wird abgefragt und falls C=1 ist, startet das Lauflicht erneut mit |
26 | ; PORTB,RB7=1. |
27 | ;******************************************************************** |
28 | ; Hardware: PIC16F628A |
29 | ; 18Pin-Testplatine |
30 | ; Interner Oszillator 4MHz |
31 | ; RB7:0 je 1x Rv=560 OHM + LED |
32 | ; |
33 | ; Files P16F628A.INC |
34 | ; Datenplatt zum PIC16F628A |
35 | ;******************************************************************** |
36 | LIST |
37 | ;--SUPPRESSED WARNINGS |
38 | ERRORLEVEL-302 ;Meldung wegen Bankwechsel |
39 | ;--MCU CONFIGURATION |
40 | LIST P=16F628A ;list directive to define processor |
41 | #INCLUDE <P16F628A.INC> ;processor specific variable definitions |
42 | __CONFIG _FOSC_INTOSCIO & _LVP_OFF & _CPD_OFF & _CP_OFF & _WDT_OFF & _PWRTE_ON |
43 | ; __CONFIG _LP_OSC & _LVP_OFF & _CPD_OFF & _CP_OFF & _WDT_OFF & _PWRTE_ON |
44 | ; |
45 | ; Configwords und alle andere Labels (z.B. PORTB, RA7, RA0 sind |
46 | ; explizit in der Datei P16F628A.INC (Pfad: "MPLAB/MPASM Suite" |
47 | ; zugewiesen. |
48 | ;******************************************************************** |
49 | ;--RAM ALLOCATION ;Zuweisung von Registeradressen an Labels) |
50 | CBLOCK 0x20 ;Variablen ab Adresse 20h anlegen |
51 | d1,d2,d3 ;Zähler in Sub Delay100ms |
52 | ENDC |
53 | ; |
54 | ;--LABELS & CONSTANTS |
55 | ;Konstante zur Anpassung an unterschiedliche Oszillatorfrequenz |
56 | ;Dazu den Eintrag der Frequenz (MHz) anpassen |
57 | FOSC EQU 4 ;Oszillatorfrequenz Fosc (MHz) |
58 | FOSC_MULT EQU FOSC/4 ;Multiplikator für Delays berechnen |
59 | ;******************************************************************** |
60 | ORG 0x000 ;Einsprung nach Reset (Startup) |
61 | GOTO Init |
62 | ;******************************************************************** |
63 | ; ORG 0x004 ;Einsprung bei Interrupt (nicht verwendet) |
64 | ; RETFIE |
65 | ;******************************************************************** |
66 | Init: |
67 | ;--PORTA ;nicht verwendet |
68 | BANKSEL PORTA ;bank0 |
69 | clrf PORTA ;clear output-latches |
70 | movlw 0x07 |
71 | movwf CMCON ;configure analog pins as digital I/O |
72 | BANKSEL TRISA ;bank1 |
73 | clrf TRISA ;RA7:0 are outputs (except RA5) |
74 | ; |
75 | ;--PORTB |
76 | BANKSEL PORTB ;bank0 |
77 | clrf PORTB ;clear output-latches |
78 | BANKSEL TRISB ;bank1 |
79 | clrf TRISB ;Wert zum umstellen der Pins auf Ausgang |
80 | ; |
81 | ;--WEAK PULL UPs PORTB |
82 | bsf OPTION_REG,7 ;b7=1 PORTB Weak Pull up OFF (bank1) |
83 | ; |
84 | ;--PCON - INTERNAL OSCILLATOR |
85 | ; nur verwenden wenn im CONFIG Int Osc aktiviert ist! |
86 | ;bank1, S.29 Datenblatt |
87 | bsf PCON,OSCF ;b3=1 set IntOsc to 4MHz |
88 | BANKSEL 0 ;zurück zu bank0 |
89 | ;******************************************************************** |
90 | ; HAUPTPROGRAMM |
91 | ;******************************************************************** |
92 | Main |
93 | movlw b'10000000' ;Lauflicht beginnt mit LED an RB7 |
94 | movwf PORTB ;RB7=1, RB6:0=0 |
95 | ; |
96 | MainShift |
97 | movlw .5*FOSC_MULT ;Wert für Verzögerungsschleife 0,5s |
98 | CALL Delay100ms ;LED-Wechsel im Sekundentakt (5x100ms) |
99 | ; |
100 | bcf STATUS,C ;Carry löschen, wird nach RRF in PORTB,RB7 übertragen |
101 | rrf PORTB,f ;RRF schiebt die Bitreihe in PORTB,RB7:0 um 1 Bit |
102 | ;in Richtung RB0. Das "herausfallende" Bit0 wird |
103 | ;in das Carrybit (STATUS,C) übertragen. Daher muss |
104 | ;das Carrybit für das Lauflicht gelöscht bleiben.. |
105 | ; |
106 | btfss STATUS,C ;C=1? aktueller Zyklus RB7:0 abgelaufen? (PORTB=00000000) |
107 | GOTO MainShift ;NEIN, LED EIN anzeigen und weiter mit RRF. |
108 | GOTO Main ;Restart with bit 7 |
109 | ;******************************************************************** |
110 | ; UNTERPROGRAMME |
111 | ;******************************************************************** |
112 | Delay100ms |
113 | ; Basic-Delay = 0.100 seconds fosc 4MHz |
114 | ; Übergabe der Anzahl 1/100el Sekunden im WREG |
115 | ; Wertbereich: 1-255 (nach Multiplikation mit FOSC_MULT!) |
116 | movwf d3 |
117 | Delay100ms_0 |
118 | movlw 0x1E |
119 | movwf d1 |
120 | movlw 0x4F |
121 | movwf d2 |
122 | Delay100ms_1 |
123 | decfsz d1, f |
124 | goto $+2 |
125 | decfsz d2, f |
126 | goto Delay100ms_1 |
127 | goto $+1 |
128 | nop |
129 | decfsz d3,f |
130 | GOTO Delay100ms_0 |
131 | RETURN ;Generated by http://www.piclist.com/cgi-bin/delay.exe |
132 | ;******************************************************************** |
133 | END |
Sebastian G. schrieb: > Hallo, kann ich RA0 - RA7 auch noch zum LED ansteuern verwenden? (bis > auf RA5/MCLR) JA! in der Konfiguration mit Internem Oszillator schon. Beachte aber, dass RA4 ein Pin mit "open collector" ist, das heißt, dass Du diesen so beschalten musst: z.B.: RA4>---470R--LED-+5V LED ist ON wenn RA4=LOW RA4>--470R---+5V LED ist ON wenn RA4=H | LED | GND mfG GroberKlotz P.S. Hattest Du meinen Code zum Laufen gebracht?
Achso Okay, ja habe es mit deinem Programm zum laufen gebracht, danke nochmal dafür, das hat mir sehr weiter geholfen. Jetzt muss ich nur noch alles so umbauen das es so funktioniert: https://www.youtube.com/watch?v=whKYU7W8whw
Hallo Sebastian! Mir gings vor einiger Zeit ganz ähnlich wie dir, daher meine Empfehlung: Kauf dir von Microchip das "PICkit 3 Starter Kit". Das enthält den PICkit 3 Programmer, mit dem (fast) alle µCs von Microchip zu programmieren sind, das enthält weiter ein Demoboard, und zwei Pic_µCs: den Pic 16F1829 und den Pic 18F14k22. Dazu gibts als Download den passenden "User Guide". Darin enthalten sind sehr viele wichtigen Grundlagen, die man zum Anfang braucht, und vor allem dieses: 13 sehr gut dokumentierte und erklärte Programm-Beispiele. Und die sind alle sowohl in Assembler als auch in C vorhanden. Einen besseren Einstieg wirst du nicht finden. Die Bedenken hinsichtlich der Englisch-Kenntnisse hatte ich auch. Aber so schlimm wird es nicht, mit Grundschatz kommt man recht gut zurecht. Zum Geld: Klar kostet das Geld. Aber was ist deine Zeit wert, wenn du Wochen verplemperst, weil du dich als Anfänger in zahllosen Fallgruben wieder findest, immer wieder Räder neu erfinden mußt, und dich in der Vielfalt der Angebotet im Inet verstrickst?! Mit diesem Kit wirst du am schnellsten die Anfangshürden überwinden, das Ding ist jeden Cent wert. Und eine Prog-Anpassung an deine vorhandenen Pics wird dir dann auch leicht fallen. Gruß, wilhelmT
Sebastian G. schrieb: > Hallo, kann ich RA0 - RA7 auch noch zum LED ansteuern verwenden? (bis > auf RA5/MCLR) Man kann vieles mit dem PIC16F628 machen - hier ein Beispiel mit Leds: "Rotierende" Leds deren Helligkeit mit PWM gesteuert wird. Fuer einen Newbie ein schoenes Anfangsprojekt(naja glaube ich zumindest) und die Gelegenheit sich etwas mit PWM zu beschaeftigen.Das braucht man fast alle naselang..... https://youtu.be/yB4uQwuDITc
Leider fehlt mir momentan die Zeit um mich ausführlich um die Programierung meines PIC´s zu beschäftigen bzw. diese überhaupt erst einmal zu erlernen. Ich habe mir viele beispiele angesehen und auch teilweise viel verstanden von Programmcode und die Hilfe hier im Forum war auch eine sehr große. Danke dafür! Leider leuchten die LED´s immer noch nicht so wie ich es gerne hätte. Momentan einfach nur ein Lauflicht, was aber schon ein großer Anfang für mich war. Eigentlich ist es nicht meine art andere zu bitten die Arbeit für einen zu erledigen, aber ich frage jetzt einfach mal vielleicht hat ja jemand schon was passendes für mich oder könnte es mir abgeändert zukommen lassen für den PIC16F628A. Ich suche ein Programm das mir an allen möglichen Ausgängen (RB0 - RB7 und die restlichen A Ports) LED´s ansteuert. Die LED´s sollen ähnlich wie bei einem Lauflicht nacheinander aufleuchten aber an bleiben, erst wenn alle Leuchten sollen sie wieder aus gehen. Die Geschwindigkeit des Lauflichts kann man ja dann variieren. Wäre dies möglich? Könnte mir da jemand ein gefallen tun? Wäre sehr sehr sehr dankbar! Gruß Sebastian
:
Bearbeitet durch User
Sebastian G. schrieb: > Wäre dies möglich? Natürlich:
1 | #include <XC.h> |
2 | #include <stdint.h> |
3 | /*
|
4 | Insert suitable configuration
|
5 | */
|
6 | |
7 | void main(void) |
8 | {
|
9 | uint16_t leds = 0; |
10 | // Init IOs
|
11 | TRISA = 0; |
12 | TRISB = 0; |
13 | PORTA = 0; |
14 | PORTB = 0; |
15 | |
16 | while(1) |
17 | {
|
18 | // Calculate LED pattern
|
19 | leds = (leds << 1) | 1; |
20 | if(leds == 0xFFFF) |
21 | leds = 0; |
22 | |
23 | // Ouput the LED pattern
|
24 | PORTA = ((leds >> 8) & 0x1F) | ((leds >> 7) & 0xC0); |
25 | PORTB = leds & 0xFF; |
26 | |
27 | __delay_ms(100); |
28 | }
|
29 | }
|
Vielen DANK!!! Funktioniert schon fast Perfekt ! :) Woran liegt es wenn ich die Delay Zeit verändere das er dann manche LED,s überspringt im Lauflicht? // Untested #define _XTAL_FREQ 4000000 #include <xc.h> #include <stdint.h> // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT // pin, I/O function on RA7/OSC1/CLKIN) #pragma config FOSC = INTOSCIO // Watchdog Timer Enable bit (WDT disabled) #pragma config WDTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config PWRTE = OFF // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR) #pragma config MCLRE = ON // Brown-out Detect Enable bit (BOD enabled) #pragma config BOREN = ON // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, // HV on MCLR must be used for programming) #pragma config LVP = OFF // Data EE Memory Code Protection bit (Data memory code protection off) #pragma config CPD = OFF // Flash Program Memory Code Protection bit (Code protection off) #pragma config CP = OFF void main(void) { uint16_t leds = 0; // Init IOs TRISA = 0; TRISB = 0; PORTA = 0; PORTB = 0; while(1) { // Calculate LED pattern leds = (leds << 1) | 1; if(leds == 0xFFFF) leds = 0; // Ouput the LED pattern PORTA = ((leds >> 8) & 0x1F) | ((leds >> 7) & 0xC0); PORTB = leds & 0xFF; __delay_ms(100); } }
> Woran liegt es wenn ich die Delay Zeit verändere das er dann manche > LED,s überspringt im Lauflicht? Das kann ich mir jetzt nicht erklären. Was genau passiert? Werden immer bestimmte LEDs übersprungen oder wirkt es zufällig? > // Untested Wie hast du das vom Überspringrn dann gesehen? PS: Für C-Code bitte die Formatierung verwenden:
1 | [c]c-Code[/c] |
:
Bearbeitet durch User
Habe den PIC nochmal neu Programmiert jetzt gehen alle LED`s, kann mir nicht erklären woran es gelegen hat, jetzt funktioniert es :)
1 | #define _XTAL_FREQ 4000000
|
2 | |
3 | #include <xc.h> |
4 | #include <stdint.h> |
5 | |
6 | // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT
|
7 | // pin, I/O function on RA7/OSC1/CLKIN)
|
8 | #pragma config FOSC = INTOSCIO
|
9 | // Watchdog Timer Enable bit (WDT disabled)
|
10 | #pragma config WDTE = OFF
|
11 | // Power-up Timer Enable bit (PWRT disabled)
|
12 | #pragma config PWRTE = OFF
|
13 | // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
|
14 | #pragma config MCLRE = ON
|
15 | // Brown-out Detect Enable bit (BOD enabled)
|
16 | #pragma config BOREN = ON
|
17 | // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function,
|
18 | // HV on MCLR must be used for programming)
|
19 | #pragma config LVP = OFF
|
20 | // Data EE Memory Code Protection bit (Data memory code protection off)
|
21 | #pragma config CPD = OFF
|
22 | // Flash Program Memory Code Protection bit (Code protection off)
|
23 | #pragma config CP = OFF
|
24 | |
25 | void main(void) { |
26 | uint16_t leds = 0; |
27 | // Init IOs
|
28 | TRISA = 0; |
29 | TRISB = 0; |
30 | PORTA = 0; |
31 | PORTB = 0; |
32 | |
33 | while (1) { |
34 | // Calculate LED pattern
|
35 | leds = (leds << 1) | 1; |
36 | if (leds == 0xFFFF) |
37 | leds = 0; |
38 | |
39 | // Ouput the LED pattern
|
40 | PORTA = ((leds >> 8) & 0x1F) | ((leds >> 7) & 0xC0); |
41 | PORTB = leds & 0xFF; |
42 | |
43 | __delay_ms(30); |
44 | }
|
45 | }
|
RA4 muss ich die LED so anschließen oder? RA4>--470R---+5V LED ist ON wenn RA4=H | LED | GND
Hallo, wie kann ich die Endlosschleife "while" ändern das mir die LED´s an bleiben ohne aus zu gehen und von neuem zu beginnen?
Am einfachsten wäre das
1 | if (leds == 0xFFFF) |
2 | leds = 0; |
wegzulassen
Achso, okay das fuktioniert :) Max, kannst du mir noch sagen wie ich das Lauflicht jetzt nach einer Wartezeit wieder von neuem beginnen kann? Geht das auch mit delay? Aber dazu muss ich ja aus der Schleife raus oder?
1 | void main(void) |
2 | {
|
3 | uint16_t leds = 0; |
4 | // Init IOs
|
5 | TRISA = 0; |
6 | TRISB = 0; |
7 | PORTA = 0; |
8 | PORTB = 0; |
9 | |
10 | |
11 | while (1) |
12 | {
|
13 | // Calculate LED pattern
|
14 | leds = (leds << 1) | 1; |
15 | |
16 | if (leds == 0xFFFF) |
17 | {
|
18 | __delay_ms(WARTEZEIT); |
19 | leds = 0; |
20 | }
|
21 | // Ouput the LED pattern
|
22 | PORTA = ((leds >> 8) & 0x1F) | ((leds >> 7) & 0xC0); |
23 | PORTB = leds & 0xFF; |
24 | |
25 | __delay_ms(30); |
26 | }
|
27 | }
|
So langsam könntest du aber versuchen den Code zu verstehen, drüber nachzudenken und so Kleinigkeiten selbst ergänzen.
:
Bearbeitet durch User
Vielen Dank! Funktioniert:) Ja so langsam verstehe ich immer mehr Befehle und deren Zusammenhang.
Sebastian G. schrieb: > Ja so langsam verstehe ich immer mehr > Befehle und deren Zusammenhang. Ein gutes C-Buch oder -Tutorial kann da Wunder wirken.
Hallo, wenn ich alles über 12v vom Auto Boardnetz laufen lassen möchte benötige ich am besten Festspannungsregler oder? Das der PIC mit 5v läuft und die LED´s mit Weiderständen über 12v?
Hallo, geht das wenn ich die LED´s über ein ULN (ULN2803a) ansteuern will? Soweit ich erfahren habe müsste ich die LED´s ja dann auf + schalten. Mein Microcontroller schaltet die Ausgänge ja aber auf Masse?
Hallo, könnte mir jemand erkären wie das mit den Pull Up oder Pull Down Widerstände funktioniert? So das ich die LED´s über ein ULN2803a betreiben kann? Habe schon überall gesucht aber nichts gefunden. Wäre Dankbar.
nichts zum Thema gefunden? Glaub ich nicht ->www.sprut.de!! Deine MCU kann ihr Ausgaenge sowohl auf H- als auch auf L-Pegel legen! Beispiel: banksel TRISB bcf TRISB,RB0 ;RB0 ist Output banksel PORTB bcf PORTB,RB0 ;RB0=Low (GND) treibt LED mit Anode an +Ub bsf PORTB,RB0 ;RB0=HIGH (+Ub)treibt LED mit Kathode an GND Pull Up bzw. Pull Down Widerstaende (intern oder extern) werden nur dann erforderlich wenn ein MCU-Pin als Eingang konfiguriert ist, um dort definierte Spannungspegel einzustellen. Ist ein Port-Pin als Ausgang konfiguriert ist dort grundsaetzlich kein Pull Up bzw Pull Down erforderlich. Ausnahme: wenn es sich um einen "open drain"-Ausgangspin handelt wie z.B. beim PIC16F628 PORTA,RA4 (Idrain max. ca. 30mA). Schau Dir doch mal diese Erlaeuterungen an zu den Portpins an: www.sprut.de/electronic/pic/grund/grund.htm#1 Abgesehen von RA4 brauchst Du also keine Pull-Ups/Pull-Downs wenn Du den ULN2803 verwendest. mfG GroberKlotz
Hallo, ah okay, danke schonmal. Das bedeutet ich kann alle Ports Direkt mit dem ULN betreiben bis auf den RA4 ? Wie sieht das dann in der C Programmierung aus? TRISA muss dann 1 sein?
1 | void main(void) { |
2 | |
3 | uint16_t leds = 0; |
4 | // Init IOs
|
5 | TRISA = 0; |
6 | TRISB = 0; |
7 | PORTA = 0; |
8 | PORTB = 0; |
9 | |
10 | |
11 | |
12 | while (1) { |
13 | |
14 | // Calculate LED pattern
|
15 | leds = (leds << 1) | 1; |
16 | |
17 | |
18 | // Ouput the LED pattern
|
19 | PORTA = ((leds >> 8) & 0x1F) | ((leds >> 7) & 0xC0); |
20 | PORTB = leds & 0xFF; |
21 | |
22 | __delay_ms(13); |
23 | }
|
24 | }
|
Kann mir da keiner mehr Helfen? Habe mein Projekt fast fertig, es scheitert nur noch an dem ULN... Leider finde ich nichts im Internet wie ich in C es umprogrammiere? Wäre sehr sehr dankbar wenn ihr mir da nochmal Hilfe geben könntet.
Sebastian G. schrieb: > Habe mein Projekt fast fertig, es > scheitert nur noch an dem ULN... Leider finde ich nichts im Internet wie > ich in C es umprogrammiere? Der ULN2803 kann keinen C-Code verarbeiten, sondern nur simple Logikpegel - was soll man dann im Internet zu "C Programmierung ULN2803" finden? Wo ist das Problem? Funktioniert Dein o.a. Programm nicht? Oder traust Du Dich nur nicht, es auszuprobieren? Warum meinst Du, daß TRISA auf 1 sein muss?
Mir ist klar das ich den ULN nicht programmieren kann, ich meine den Controller Umprogramieren das meine LED´s auf +Ub geschalten werden. Meine LED´s gehen momentan ja vom Controller auf GND, so wie ich das verstanden habe müsste es aber umgekehrt sein um den ULN direkt anzuschließen. Andernfalls bräuchte ich Pull up, Pull down Widerstände? Oder wie schließe ich sonst den ULN an das er läuft? Microcontroller + Ub -> ULN2803a -> LED -> GND (Funktioniert ja so nicht?) Ich habe schon so viel gesucht im Internet aber zu dem Thema finde ich irgendwie keine klare Antwort...
:
Bearbeitet durch User
Sebastian G. schrieb: > ich meine den > Controller Umprogramieren das meine LED´s auf +Ub geschalten werden. Das ist aber die Verschaltung der Hardware - das kann man nicht im Controller per Software ändern, sondern nur mit Draht und Lötkolben! An der Programmierung im Controller ändert sich überhaupt nichts: Wenn der Controller eine "1" ausgibt (High-Pegel), schaltet dort angeschlossene Treiber des ULN auf "Ein" (= schaltet seinen Ausgang nach Masse) und eine LED zwischen +Vb und dem Ausgang leuchtet.
Hier mal ein schnell gezeichneter Schaltplan. Widerstände fehlen noch. Wäre das so richtig?
Sebastian G. schrieb: > Hier mal ein schnell gezeichneter Schaltplan. Widerstände fehlen > noch. > > Wäre das so richtig? Es fehlen noch die LED Vorwiderstände, der Anschluss für den Progger, der Reset-Pullup und die Abblockkondensatoren. Ist zwar ne Geschmacksfrage aber Leds schalte ich (wie alles was Leistung braucht) wenn möglich gegen plus. Ist einfacher da die Treiber meist open collector Ausgänge gegen plus haben (so wie der ULN2003). Das würde bei deiner Schaltung z.B. dafür sorgen das Die LEDs auch leuchten wenn der Pic das will ;-).
Ich glaube das werde ich niemals so hinbekommen, ich weiß weder was "progger" oder "reset-pullup's" sind, geschweige denn abblockkondensatoren?? Bin kein Elektriker.
Sebastian schrieb: > Ich glaube das werde ich niemals so hinbekommen, ich weiß weder was > "progger" oder "reset-pullup's" sind, geschweige denn > abblockkondensatoren?? Such mal ein paar Standardschaltungen für den Pic 16F628 im Netz. > Bin kein Elektriker. Versuch macht kluch X4U schrieb: > wenn möglich gegen plus Korrektur meinerseits: Gemeint ist das die Led an Plus hängt (mit Vorwiderstand in Reihe). Von dort geht es in den ULN2003 (der immer gegen minus schaltet).
Hallo Sebastian Meine Antwort [Beitrag "Re: Einsteiger Hilfe zu PIC PIC16F628A"] vom 5.12.2015 bezog sich natuerlich auf die Ausgaenge des PIC! An den Ausgaengen des ULN2803A brauchst Du UNBEDINGT VORWIDERSTAENDE fuer die LEDs sonst raucht Dir der ULN2803 samt LEDs ab! Mit der beigefuegten Beschaltung von EINER Treiberstufe im ULN28003A solltest Du zurechtkommen. Ich habe die Pinnummern der Treiberstufe hinzugefuegt. Die Versorgungsspannung des ULN (z.B +5V wird mit Pin 10 und GND (0V) wird mit Pin 9 verbunden. ALLE LEDs 1-8 werden MIT VORWIDERSTAND zwischen Treiberausgang (Pin 11-18) und +Ub (z.B +5V) geschaltet. Du brauchst die anderen Treiberstufen 2-8 in gleicher Weise wie die dargestellte Treiberstufe 1 zu beschalten. Du wirst sehen es funktioniert! Ein H-Pegel am Ausgang des PIC schaltet den Treiberausgang auf Low (0V) und damti die LED ein! Ein L-Pegel am Ausgang des PIC schaltet die LED aus. Stoere Dich nicht an der sichtbaren Innenbeschaltung des Treibers, der haelt sich genau an die Vorgaben aus dem Datenblatt des ULN28003A und war notwendig um das "Oszillogramm" zu erstellen. Beachte auch das zugehoerige "Oszillogramm" mit den relevanten Spannungs- und Stromwerten. Das Schaltbild und das "Oszillogramm" wurden mit dern kostenlosen Software LTSpiceIV erstellt. mfg GroberKlotz
sorry die Beschriftung der Schaltung "ULN2805" ist falsch, muesste natuerlich richtig ULN28003A benannt sein.
GroberKlotz schrieb: > Beachte auch das zugehoerige "Oszillogramm" mit den relevanten > Spannungs- und Stromwerten. Bei diesen Werten kann er sich den ULN aber sparen weil der PIC pro Ausgang 25mA liefert und eine Summenstrom von 250mA verträgt. Siehe Datenblatt: 17.0 ELECTRICAL SPECIFICATIONS -> Absolute Maximum Ratings
X4U schrieb: > GroberKlotz schrieb: >> Beachte auch das zugehoerige "Oszillogramm" mit den relevanten >> Spannungs- und Stromwerten. > > Bei diesen Werten kann er sich den ULN aber sparen weil der PIC pro > Ausgang 25mA liefert und eine Summenstrom von 250mA verträgt. > > Siehe Datenblatt: 17.0 ELECTRICAL SPECIFICATIONS -> Absolute Maximum > Ratings Also könnte ich es auch ohne ULN theoretisch laufen lassen, ohne das mein PIC Überstrapaziert wird?
Sebastian G. schrieb: > Also könnte ich es auch ohne ULN theoretisch laufen lassen, ohne das > mein PIC Überstrapaziert wird? JA! Du musst aber die im Datenblatt angegebene maximale Stromaufnahme des PIC beachten! z.B. PIC 16F628 Datenblatt ab Seite 135 (absolute Grenzwerte!): a) Maximal 25mA je Pin b) aber nicht mehr als 300mA durch den GND-Pin (z.B. alle LEDs nach +Ub geschaltet) c) bzw. nicht mehr als 250mA in den Vdd-Pin (z.> Alle LEDs nach GND geschaltet b,c inclusive des Eigenbedarfs des PIC! Auf S. 138 kannst Du ablesen welchen Strom der PIC typisch fuer seinen Eigenbedarf aus dem Vdd-Pin zieht (z.B. max. 5mA im HS-Oszillator-Mode) Wenn Du also z.B den Vorwiderstand so bemisst, dass nur 10mA durch eine LED fliesst, liegst Du bei 16 LEds x 10mA = 160mA + 5 mA auf der sicheren Seite und Du kannst auf den ULN2803 verzichten. Heutzutage sind LEDs erhaeltlich die schon mit <10mA fast unertraeglich hell strahlen! Vom Grenzwert 300mA, bzw. 250mA wuerde ich aus Gruenden der Betriebssicherheit deutlichen Abstand halten! mfG Grober Klotz P.S. Du musst Dir angewoehnen Datenblaetter zu lesen und zu verstehen!
Vielen Dank GroberKlotz für die Info. Ich habe jetzt noch das Problem das wenn der Pic Stromlos wird, die ersten beiden LED´s noch kurz nachleuchten, im Millisekunden bereich zwar, aber man sieht es - Müsste ja an den Kondensatoren liegen?. Gäbe es dafür eine Lösung? Habe überlegt mit dem RA5/ MCLR zu Resetten dann. Aber da die Schaltung ja Stromlos ist wird das Schwer.?
Sebastian G. schrieb: > Ich habe jetzt noch das Problem das wenn der Pic Stromlos wird, die > ersten beiden LED´s noch kurz nachleuchten, im Millisekunden bereich > zwar, aber man sieht es - Müsste ja an den Kondensatoren liegen? Dafür gibt es BOR (brown out detection). Die springt an wenn die Spannung eine kurze Zeit zu klein ist und resettet den Pic. Wird über das configuration register beim flashen aktiviert. Im PCON Register steht dann wer den letzten reset ausgelöst hat.
X4U schrieb: > Sebastian G. schrieb: >> Ich habe jetzt noch das Problem das wenn der Pic Stromlos wird, die >> ersten beiden LED´s noch kurz nachleuchten, im Millisekunden bereich >> zwar, aber man sieht es - Müsste ja an den Kondensatoren liegen? > > Dafür gibt es BOR (brown out detection). Die springt an wenn die > Spannung eine kurze Zeit zu klein ist und resettet den Pic. > > Wird über das configuration register beim flashen aktiviert. Im PCON > Register steht dann wer den letzten reset ausgelöst hat. #pragma config BOREN = ON Ist bei mir aktiviert.
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.