Hallo Leute, ich habe mir den USB PIC Develop Microcontroller Programmer Programmiergerät K150 ICSP + 2x Kabel von internet gekauft. ich benutze den microc pro for pic. ich habe ein simples programm geschrieben wo nur eine led aufleuchten soll. habe 2 verschiedene pics zum testen gehabt. die software sagt, dass das brennen erfolgreich war (beim ersten pic 16f84). will ich es dann testen funktioniert der Controller nicht. beim 2. pic kommt direkt eine fehlermeldung "fuse error" mit bad und good hexwerten. mach ich da was falsch oder ist der brenner einfach nur müll? ps die Controller und der brenner sind neu, richtig angeschlossen habe ich es auch (nach datasheet und software) ich hoffe ihr könnt mir helfen mfg Hamo61
Moin Hamo61, die Wahl deines Programmers ist leider nicht sehr gut gewesen, ich hätte dir zu einem PICKit2 (als Anfänger) geraten. Aber es sollte natürlich auch mit deiner Hardware gehen! Wenn du hier etwas Hilfe haben möchtest wäre es schön wenn du deinen Code hier reinstellst, ein Foto und/oder Plan deines Aufbaus und uns sagst welche Fuses du denn eingestellt hast. Auch solche Infos wie die welchen Quarz du nimmst usw. helfen den anderen dir zu helfen. Ich glaube das es sich um ein Problem mit den Configuration Bits handelt, aber meine Glaskugel gibt sich da sehr unentschlossen :o) Frohes Weihnachtsfest Andi
Danke für den Hinweis. Ich habe mir diesen Programmer gehohlt weil er für 11€ ziemlich günstig ist. Mein Takt ist 20MHZ (PIC16f877A) Meine Schaltung ist im Anhang. Es sollte eine Knightrider-Led-Bewegung werden ^^. Testen wollt ich es erstmal mit den ersten 3 Leds aber die gingen nie an. Zur Fehlermeldung: Fuse error 0x2007 Good 0x2F4A Bad 0x3F7A Mein Quelltext sieht so aus (MicroC Pro for PIC):
1 | void main() { |
2 | PORTD = 1 ; |
3 | TRISD = 0 ; |
4 | PORTB = 1 ; |
5 | TRISB = 0 ; |
6 | |
7 | |
8 | while(1) |
9 | {
|
10 | Portb = 0b10000000; |
11 | delay_ms(100); |
12 | Portb = 0b01000000; |
13 | delay_ms(100); |
14 | Portb = 0b00100000; |
15 | delay_ms(100); |
16 | Portb = 0b00010000; |
17 | delay_ms(100); |
18 | Portb = 0b00001000; |
19 | delay_ms(100); |
20 | Portb = 0b00000100; |
21 | delay_ms(100); |
22 | Portb = 0b00000010; |
23 | delay_ms(100); |
24 | Portb = 0b00000001; |
25 | delay_ms(100); |
26 | Portb = 0b00000000; |
27 | Portd = 0b10000000; |
28 | delay_ms(100); |
29 | Portd = 0b01000000; |
30 | delay_ms(100); |
31 | Portd = 0b10000000; |
32 | delay_ms(100); |
33 | Portd = 0b00000000; |
34 | Portb = 0b00000001; |
35 | delay_ms(100); |
36 | Portb = 0b00000010; |
37 | delay_ms(100); |
38 | Portb = 0b00000100; |
39 | delay_ms(100); |
40 | Portb = 0b00001000; |
41 | delay_ms(100); |
42 | Portb = 0b00010000; |
43 | delay_ms(100); |
44 | Portb = 0b00100000; |
45 | delay_ms(100); |
46 | Portb = 0b01000000; |
47 | delay_ms(100); |
48 | Portb = 0b10000000; |
49 | delay_ms(100); |
50 | }
|
51 | }
|
Edit: Dir auch ein schönes Fest :)
Wie sieht es denn mit den Configuration Bits aus? Leider hast du das Bild nicht in der üblichen Größe gepostet, wenn du es noch kleiner machen kannst (2,3MB sind definitiv zu groß, es gibt hier Regeln wie groß ein Bild sein darf und welche Formate erlaubt sind) ansonsten hoffe ich mal das ein Moderator sich der Verkleinerung annimmt! Schau dir doch auch mal Beispielcode mit LEDs in MicroC an, und versuch nur mal eine LED blinken zu lassen. Mit MicroC kenn ich mich leider nicht aus! Wozu benutzt du denn den PORTD? Gruß Ich
habe das bild jetzt verkleinert. ich habe es mit proteus simuliert. das problem liegt nicht am quelltext sonderm am programmer. ich habe ja da 20 leds und die will ich mit 10 pins verbinden. Die ports haben aber nur 8 Pins deswegen habe ich port D benutzt.
Die Widerstände sind mit den Leds verbunden. Spannung ist 5V. Falls du die led meins, ja die ist richtig rum geschaltet(habs direkt mit der Stromversorgung getestet). Ich denke das Problem liegt am Programmer und nicht an der schaltung oder dem µC. Die Ausgänge haben auch keine 5V Spannung, sind also die ganze zeit auf low.
Nein meine ich nicht. Lies dir das Datenblatt durch. Oder zumindest was MCLR macht. So funktioniert es nicht. www.sprut.de ist auch sehr hilfreich.
ich werde es gleich testen. kann man nicht direkt es anschliesen oder warum muss man 10k dazwischen schalten? was kannich von sprut erfahren? und warum gibt mir das programm direkt schon fehler raus?
16F877A??? Wenn ich mich recht erinnere hat dieser KEINEN internen Oszillator - wo ist bei deinem Aufbau da der Quarz mit den Kondensatoren (oder ist der nicht mehr auf dem Bild?).
Stefan schrieb: > Oder zumindest was MCLR macht. > So funktioniert es nicht. > www.sprut.de ist auch sehr hilfreich. Ich will das mal abkürzen. Es fehlt gänzlich die Verbindung für MCLR. Der MCLR Pin hat immer mindestens 2 Funktionen: 1. Programmierspannung Vpp +12V vom Programmer. Zum flashen braucht es die. Ohne die kann man kaum Programmieren. (Ausnahme LVP aber das zählt hier nicht) 2. Reset. MCLR muss (außer es wurde in den Config-Bits deaktivert) immer auf +5V (bzw. Vdd) gehalten werden. Ansonsten befindet sich der Controller im Dauerreset - ergo nix läuft. Die Standartbeschaltung sieht daher vor, dass MCLR im Betrieb mit einem sog. Pullupwiderstand (googeln) von mindestens 10kOhm nach Vdd (+5V) gezogen wird. Sprich MCLR-Pin - 10k - Vdd. mehr hier http://www.sprut.de/electronic/pic/reset/index.htm#mclr Hamza K. schrieb: > Mein Takt ist 20MHZ (PIC16f877A) Wo genau ist denn deine Taktquelle? Soweit ich das im Kopf hab hat der 16F877 garkeinen internen Oszillator. Kann mich aber täuschen. Ohne Takt geht natürlich schon garnix. Auf dem Steckboard sehe ich nix. oO Hamza K. schrieb: > Danke für den Hinweis. Ich habe mir diesen Programmer gehohlt weil er > für 11€ ziemlich günstig ist. Ein China Clone des PICkit2 kostet das gleiche und ist um eine Zehnerpotenz besser. Klarer Tipp in diese Richtung. Andreas G. schrieb: > Wie sieht es denn mit den Configuration Bits aus? Die musst dur bitte wirklich posten. weiter im Text. Ich darf dir kurz verdeutlichen was du da machst? > PORTD = 1 ; entspricht PORTD= 0b00000001; //(PortD Pin0 (PD0) high) WARUM ? > TRISD = 0 ; okay alle Pins an PortD sind Ausgänge, schlechte Reihenfolge. Die vorherige Anweisung PORTD=1 wird wohl nix bewirken. Wenndann erst sagen ob Eingang oder Ausgang (TRIS) und dann setzten (PORT) > PORTB = 1 ; > TRISB = 0 ; gleiches Spielchen hier nur alles mit PortB edit: er hat echt keinen internen Oszillator und ich bin zu langsam
:
Wiederhergestellt durch Admin
Wusste nicht dass es extern getaktet werden muss(wo genau steht das im Datenblatt?). Kannst du mir nen Link geben von einem pickit2 clone? aber warum macht der programmer schon die probleme? oder soll ich das einfach ignorieren?
Hamza K. schrieb: > Wusste nicht dass es extern getaktet werden muss(wo genau steht das im > Datenblatt?). > Kannst du mir nen Link geben von einem pickit2 clone? > > aber warum macht der programmer schon die probleme? oder soll ich das > einfach ignorieren? Kapitel 14-2 Oscillator Configurations, Seite 145 Wenn du keine Quarz zur Hand hast, kannst es auch mit einem RC Oszillator versuchen. Für ein Lauflicht spielt die Genauigkeit/Stabilität keine Rolle. PICKIT2 clone: einfach auf EBAY suchen!
Sie sollten so eingestellt sein. Ohne Quartz läuft eh nix. Siehe Datenblatt. Benutze die Suchfunktion vom Datenblatt, oder besser gesagt vom pdf.
> Der MCLR Pin hat immer mindestens 2 Funktionen: > 1. Programmierspannung Vpp +12V vom Programmer. Zum flashen braucht es > die. Ohne die kann man kaum Programmieren. (Ausnahme LVP aber das zählt > hier nicht) > 2. Reset. MCLR muss (außer es wurde in den Config-Bits deaktivert) immer > auf +5V (bzw. Vdd) gehalten werden. Ansonsten befindet sich der > Controller im Dauerreset - ergo nix läuft. Die Standartbeschaltung sieht > daher vor, dass MCLR im Betrieb mit einem sog. Pullupwiderstand > (googeln) von mindestens 10kOhm nach Vdd (+5V) gezogen wird. Sprich > MCLR-Pin - 10k - Vdd. Das ist aber nicht bei allen PICs so: 3. MCLR kann bei manchen PICs auch als digitaler Eingang beschaltet sein, das hängt dann von den Config-Bits (AKA Fuses) ab, dann braucht man die 10k nach Vdd nicht. Beim 16F877(A) ist es aber ein Reset-Eingang.
Ok danke für die hilfreichen Tipps. Wenn ich jetzt noch PWM nutzen will brauch ich da 2 Osszilatoren oder reicht da einer aus und beide arbeiten mit dem gleichen Takt?
Lies dir die Sprut Seite durch. Damit du Grundkenntnisse in µC bekommst. Dann merkst du schnell wie blödsinnig deine Frage war. Fang klein an, und dann kannst du dich auch an größere Projekte wagen. Die meisten Antwaorten, findest du auch im Datenblatt. Dies wirst du immer wieder brauchen. Also mach dich damit mal vertraut.
Ok werd ich machen. Was ist aber jetzt mit dem Programmer? Soll man die Meldung einfach ignorieren?
Nein natürlich nicht. Wer gibt den Fehler aus ? Der Compiler beim compelieren oder beim Brennen ?
Dann stimmt mit deinem Brenner was nicht. Kenne das Teil nicht. Muß ein anderer was zu sagen.
Jemand ne Idee woher das Problem kommen könnte, bzw wie man es beheben kann?
Ich kenne weder den Brenner, noch das microbrn. Aber das Problem prinzipiell darauf zu schieben, halte ich nicht für zielführend. 1. Hinweise bzgl. Beschaltung MCLR und Notwendigkeit eines ext. Oszillators beim 16F877A wurden schon gegeben. Die sind auch richtig. 2. Wichtig ist, überall den richtigen PIC auszuwählen (IDE/Compiler/Brenner). Die verschiedenen PIC-Typen haben unterschiedliche Speicherstrukturen und bnötigen unterschiedliche Programmier-Algorithmen. 3. Was mich aber immer etwas skeptisch macht, sind die Versuche, das Configuration Word (ja, Fuses heißen die Dinger nur beim AVR) noch extra "händisch" programmieren zu wollen. (Habe da bzgl. microbrn entsprechend verdächtiges im Web gelesen, was mich stutzig macht.) Bei PICs wird Configuration Word üblicherweise in der IDE oder besser noch im Quelltext eingestellt, und mit ins Hex-File geschrieben. Damit wird dann der PIC in einem Rutsch "gebrannt". Das zu nutzen kann ich nur empfehlen. (Ist nebenbei viel einfacher und sicher als beim AVR gelöst.) 4. Die Register TRISB und TRISD sind in der Regsiter-Bank 1. Prüfe bitte, ob dein C-Compiler automatisch die Bank-Auswahl macht. (Abschnitt 2.2 im Datasheet) Wenn nicht, musst du zuvor selbst über RP0 und RP1 die Bank 1 auswählen. Dazu im STATUS-Register entsprechend setzen, und vor der While-Schleife auf Bank 0 wechseln, sonst funktionieren die Zugriffe auf PORTB und PORTD nicht. Und das noch: Die PORTD=1; und PORTB=1; am Programmanfang kannst du weglassen. Die bewirken nicht wirklich was sinnvolles. Grüße.
Hamza K. schrieb: > Zur Fehlermeldung: > > Fuse error 0x2007 Da steht doch klar und deutlich wo der Fehler liegt! Da ist entweder eine nicht mögliche Kombination der Configbits o. event. stimmt was nicht mit der Verbindung zum µC des Programmers. @TO: Ich kenn Deinen Programmer leider nicht. Wie stellst Du eigentlich die Verbindung vom Programmer zum µC her? Auf dem Foto ist das ja nicht zu sehen.
Ubs, natürlich müssen dann noch Quarz o.ä. plus noch'n paar andre Kleinigkeiten ran.
Ich tippe schwer darauf, dass die MCLR-Leitung vergessen wurde. Die BRAUCHT man UNBEDINGT zum Programmieren. Leitungen kurz halten und basta.
:
Wiederhergestellt durch Admin
Falls ein Pickit, dann lieber gleich das Pickit 3 holen. Das geht dann auch ohne Probleme aus MPLAB heraus und bekommt auch Support für neuere Chips.
Peter W. schrieb: > Falls ein Pickit, dann lieber gleich das Pickit 3 holen. Das geht dann > auch ohne Probleme aus MPLAB heraus und bekommt auch Support für neuere > Chips. Mal ein kleiner Testbericht: wenn jemand nur MPLAB nutzt ist das Pickit III Ok, ohne ist das II er deutlich besser. Das IIer hat zudem einige gerade für Anfänger sehr nützliche Zusatzfunktionen. Hamza K. schrieb: > Meine Schaltung ist im Anhang. Das ist wenig hilfreich, vor allem für dich. Mach eine Schaltplan (ruhig von Hand und Foto, besser mit eagle). Dann lässt sich besser sehen und verstehen was du gemacht hast.
Moin Leute, ich nehm mal schwer an das er den PIC im Programmer programmiert und dann auf das Steckbrett steckt. Schaut euch doch einfach mal das Teil inner E-Bucht an, dann seht ihr das der Programmer einen Nullkraftsockel (schreibt man das so?) hat. Das mit dem Oszillator und dem MCLR hab ich zuerst garnicht gesehen augenverdreh. best wishes Andi
Der Rächer der Tansistormorde schrieb: > Mal ein kleiner Testbericht: > wenn jemand nur MPLAB nutzt ist das Pickit III Ok, ohne ist das II er > deutlich besser. Das IIer hat zudem einige gerade für Anfänger sehr > nützliche Zusatzfunktionen. Welche Funktionen meinst du? Ausserdem ist doch gerade für Anfänger MPLAB keine schlechte Wahl. Alles in einer Umgebung und den PIC programmieren ist fast schon Plug&Play :)
Andreas G. schrieb: > ich nehm mal schwer an das er den PIC im Programmer programmiert und > dann auf das Steckbrett steckt. Hallo Andreas, was meinst du jetzt damit? Falls du auf den fehlenden Oszillator/Takt abzielst, dies ist beim Programmieren von PICs erst mal egal (im Gegensatz zu AVRs, welche einen int. oder ext. Takt auch beim Programmieren brauchen, außer bei HV-Programmierung). Aber ich denke, nach den vielen Hinweisen und Fragen sollte sich erst mal wieder der TO äußern. Grüße.
Das mit dem MCLR und Oszilator hab ich jetzt schon verstanden danke. Ich habe kein Oszilator hier und den MSCLR hatte ich auch nicht beschaltet. Bezogen auf die zwei Sachen können wir das Thema beenden. Mein Problem ist der Brenner. Unabhängig von meiner Schaltung brennt das Teil die hex-file nicht auf dem PIC. Es kommt eine Fehlermeldung wie oben beschrieben. Im Internet habe ich gelesen, dass man eventuell die Firmware updaten soll. Leider habe ich keinen zweiten passenden PIC dafür. Kommt jemand aus Berlin und wäre so freundlich mir den PIC zu brennen, sodass ich dann gucken kann ob es daran liegt? Danke für die zahlreichen Hilfposts hier :) Hamo61
Hier hat jemand ähnliche Probleme mit dem Dingens: http://www.microchip.com/forums/m668494.aspx Falls du es auch über eBay gekauft hast, diese Chinesen bieten fast immer an das Geld zurückzuerstatten. Und wie schon empfohlen: Hol dir das PicKit. Diese Bastel Programmer sind bei den PIC Geld am falschen Ort gespart. Du kannst die viel Kopfschmerzen ersparen mit den originalen (oder von mir aus auch China Clones davon) Programmern.
Hamza K. schrieb: > Das mit dem MCLR und Oszilator hab ich jetzt schon verstanden danke. > Ich habe kein Oszilator hier und den MSCLR hatte ich auch nicht > beschaltet. Ein Quarz (irgendwas zw. 1MHz und 20MHz) auch nicht? > Bezogen auf die zwei Sachen können wir das Thema beenden. > > Mein Problem ist der Brenner. Unabhängig von meiner Schaltung brennt das > Teil die hex-file nicht auf dem PIC. Es kommt eine Fehlermeldung wie > oben beschrieben. Im Internet habe ich gelesen, dass man eventuell die > Firmware updaten soll. Leider habe ich keinen zweiten passenden PIC > dafür. Evtl. Link? Was passiert eigentlich, wenn du den PIC auslesen willst? > Kommt jemand aus Berlin und wäre so freundlich mir den PIC zu brennen, > sodass ich dann gucken kann ob es daran liegt? Leider nicht. > Danke für die zahlreichen Hilfposts hier :) Ist schon OK.
Der K150 ist meiner Meinung nach ein super Brenner der auch wirklich super funktioniert so lang man die Original-Brennsoftware nimmt und nicht irgendein Quatsch von Hobbyprogrammierern... (Will niemanden zu nahe treten also entschuldigt bitte) Allerdings ist zu beachten, dass die auf e-Bay angebotenen K150 nicht mit der neusten Firmware ausgeliefert werden. Das bedeutet das wenn man ne aktuelle Brennsoftware verwendet (selbst die neuste Version der Originalen) der Brenner nicht macht was er soll. Aber zum Glück gibt es Abhilfe. Einfach mit einer alten originalen Brennersoftware ein Firmwareupdate machen und dann kann man mit der aktuellen originalen Software alles perfekt ohne Probleme und vorallen richtig schön schnell ohne viel Aufwand und Probleme brennen. MFG. J.M
Brauche ich denn nicht fürs brennen einen weiteren PIC? Kannst du mir genau sagen, wie ich das machen soll?
Ja für das Firmwareupdate brauchst du einen pic16f628 oder einen pic16f628A. Als nächstes brauchst du die neuste Firmware. Also das Hex-File der neusten Firmware (Das Hex-File und die neuste Brennersoftware findest du da: http://www.kitsrus.com/zip/DIYpack25ep.zip). Aber Achtung wenn die die Firmware aus dem Zip-Archiv aufspielst musst du die Software-Version verwenden mit der der Brenner ausgeliefert wurde. Danach kannst du denn gebrannten pic mit dem auf dem K150-Board austauschen und in Zukunft die neue Software aus der Zip weiter oben nutzen.
Wenn du willst kann ich dir auch einen brennen dann musst du ihn nur noch austauschen. Müssen uns nur einig werden zwecks Versand und kosten fürn PIC. Aber das bekommen wir ja hin
Leider weiss ich nicht genau welche Software dazu gehört, denn der Verkäufer hat mir nen Link geschickt wo ich eine Zip-Datei downloaden sollte. darin waren viele Unterordner mit jeweils einer Sofwre. Drauf ist ein pic16f628A. Was stellst du dir preislich dafür vor? Danke das du sowas anbietest, echt nett :) Wenn du nen Quarz hast den eventuell auch, damit ich wenigstens einbisschen rumtesten kann. Nenn mir einfach für beide Varianten einen Preis. mfg Hamo61
Für den pic + Versand würde ich jetzt einfach mal 4€ sagen. Wegen dem Quarz muss ich erstmal nachsehen ob ich noch einen rumliegen habe. Ich geb dir heut Abend bescheid.
Also brennen tut er schon was rauf. Zum Schluss, wo er es noch einmal abchecken will kommt der Fehler. Ich kann ach von dem Pic die Sachen auslesen. Sieht aufm ersten Blick sehr identisch aus. Eventuell sollte ich mir einfach nen Oszilator kaufen und gucken ob alles richtig funktioniert.
Habe einen Oszilator (20MHZ) mit Kondensatoren angeschlossen und getestet. Das Resultat war dass die Leds wie gewünscht blinkten. D.h er brennt die HEX-File schon rauf aber irgendwo gibt es eventuell trotzdem ein Problem. Meint ihr alles läuft super und die Fehlermeldung kann man ignorieren?
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.