Hallo zusammen, bin ganz neu hier und habe mich mal im Forum ein bisschen umgesehen.....Respekt, wie es aussieht bekommt man hier von geduldigen Usern schnelle und kompetente Auskunft. Ich habe vor mich in die PIC Welt einzuarbeiten, da ich es statt habe mit 40XX, 74xx und Co zu leben :-) Alles weitere bezieht sich auf folgende Fakten: *PIC 16F627 *Programmier- und Experimentierboard von Conrad (schäm) Art-Nr.: 191020 - 62 *MPLAB IDE v8.00 *Compiler CC5X.EXE *Loader (Brennsoftware) zum HEX File schreiben nennt sich "Progpic2.exe" Ziel soll sein mit MPLAB in C ein Programm zu schreiben. Erste Gehversuche mit Assembler waren zwar erfolgreich, jedoch ist mir die ganze Sache etwas zu abstrakt, und da ich C ein bisschen behersche möchte ich das Rad nicht neu erfinden. Das HEX File hat auch soweit funktioniert: (okay war abgeschrieben und ein bisschen modifiziert, aber läuft) loops Equ 0x22 ; Zähler für Warteschleife loops2 Equ 0x23 ; Zähler für Warteschleife Init bsf STATUS, RP0 ; auf Bank 1 umschalten movlw B'00000000' ; PortB alle output movwf TRISB bsf STATUS, RP0 ; auf Bank 1 umschalten movlw B'11111111' ; PortA alle input movwf TRISA bcf STATUS, RP0 ; auf Bank 0 zurückschalten clrf PORTB ; alle LEDs ausschalten btfss PORTA,0 goto Ende Loop20 bsf PORTB,0 ; LED an RB0 einschalten call Wait bsf PORTB,1 call Wait bsf PORTB,2 call Wait bcf PORTB,0 call Wait bcf PORTB,1 call Wait bcf PORTB,2 call Wait goto Loop20 Ende ;********************************************************** ; Warteschleife 250 ms Wait movlw D'250' ; 250 ms Pause movwf loops Wai movlw .110 ; Zeitkonstante für 1ms movwf loops2 Wai2 nop ; nop nop nop nop nop decfsz loops2, F ; 1 ms vorbei? goto Wai2 ; nein, noch nicht ; decfsz loops, F ; 250 ms vorbei? goto Wai ; nein, noch nicht retlw 0 ; das Warten hat ein Ende end So nun möchte ich das ganze in C machen. im I-Net gibt es unzählige Anleitungen welche mehr oder weniger gutr sind. Ich habe mit dem Projektwizard ein neues Projekt erstellt. 1.) Den PIC angegeben 2.) Toolsuite "Data CXX5" 3.) Toolsuite Contents: C:\CC5X\CC5X.EXE C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe C:\Programme\Microchip\MPASM Suite\mplink.exe 4.) Name usw. vergeben 5.) KEINE Daten eingebunden weder Linker noch sonst was aus MPLAB Unter source Files haben ich folgendes erstellt und in das Projekt eingebunden: void main (void) { TRISB = 0b.0000.0000; PORTB = 0b.0101.0101; } Nach dem Builden kommt dann folgendes raus: processor 16F627 radix DEC PORTB EQU 0x06 TRISB EQU 0x86 RP0 EQU 5 RP1 EQU 6 GOTO main ; FILE neu5.c ;void main (void) ;{ main ; TRISB = 0b.0000.0000; BSF 0x03,RP0 BCF 0x03,RP1 CLRF TRISB ; PORTB = 0b.0101.0101; MOVLW .85 BCF 0x03,RP0 MOVWF PORTB SLEEP GOTO main END Soweit so gut. Wenn ich nun die ganze Sache brennen will mit meinem Programm Progpic2.exe, dann kommt folgende Fehlermeldung "No Config-Word in File or Files does not match to the controler type" Ich weiß jetzt nicht ob dass eine spezielle, programmspezifische Fehlermeldung ist, oder ob in der ASM was fehlt, und es darum nicht klappt. Kann mir einer sagen woran es liegt, oder gibt es einen einfacheren Weg. Mir würde ein lauffähiges Grundgerüst genügen in welches ich dann meinen C-Code einfügen kann...... Schöne Grüße Mino
Moin, du hast wahrscheinlich vergessen die Config Bits zu setzen. Entweder kannst du sie im Quellcode direkt setzen (Kenne den CC5 jetzt nicht) oder in MPLAB unter Configure -> Configuration Bits. Ist bestimmt der Haken gesetzt "set in code". Einfach wegmachen, einstellen und neu compilieren.
Hallo Paule, danke für die schnelle Antwort. Werd´s morgen probieren. Meine Nerven schaffen das heute abend nicht mehr :-) Wenn´s so einfach ist, dann soll´s recht sein. Schönen Abend Mino
ich heisse dich herzlich in der kleinen pic-gemeinde willkommen meines erachtens gibt es wenig genug die wetwas mit pics machen für den einstieg hast du eine gute wahl getroffen da meines wissens der 627 einen internen oszillator hat d.h. du kannst ihn auf ain normales steckbrett stecken und eine belibige schaltung aufbauen (feine sache ich mach das auch immer so). du solltest dir umbeding mal die seite vom sprut anschauen www.sprut.de dort werden auch picbrenner vorgestellt brenner 5 als parallelportbrenner und der kaum zu übertreffende Brenner 8 mit usb schnittstelle und unterstützung für fast alle 5V pic typen am besten du besorgst dir nen paar leds, taster und nen 2*16 character display und fängst an zu experimentieren interessant ist auch der max 7219 (gibts bei maxim als sample) mit dem kannst du via spi 7 segmentanzeigen ansteuern und wenn de dir dann noch ne 32,768kHz quarz besorgst ist es zu deiner 1. selbstprogrammirten uhr nichtmehr weit ganz wichtig schau nochmal ins datenblatt kapitel io-pins weil bei manchen pictypen muss man noch die analogeingänge ausschalten bevor man die pins als normale (digitale) io-pins nutzen kann (erspahrt viel frust wenn mans weiss) mfg thomas
Hallo Thomas, danke für die Unterstützung. Die Seite von sprut.de ist quasi meine Bibel die letzten paar Tage gewesen. Jedoch wird dort größtenteils auf Assembler und nicht auf C eingegangen. Mit meinem Board bin ich auch sehr zufrieden. Es ist ausgestattet mit einem Schalter der zwischen Programmmodus und Betriebsmodus umschaltet. Angeschlossen an RS232. Wie gesagt, dass Ding funktioniert auch, Assemblerprogramme kann ich erstellen und brennen. Integriert ist auch ein 4MHz Quarz sowie 6 LED und 4 Taster je Port - was braucht man mehr zu rumspielen :-) Mein Problem ist eben dass das HEX File nicht von der "Brennsoftware" akzeptiert wird "No Config-Word in File or Files does not match to the controler type" Könnte sich jemand bitte mal dass entsprechende ASM File oben anschauen, und sagen ob was fehlt oder falsch ist ? Den Tip mit dem Config-Word im MPLAB werde ich auf jeden Fall heute testen. Wie gesagt, wäre ich auch über eine Beispielgrundprogramm (also ohne I/O Funktion) welches den 16F627 unterstützt sehr dankbar...... Schöne Grüße Mino
Hallo zusammen, habe versucht nochmal mit MPLAB auch das Konfigurationswort zu definieren - bringt nix. Vielleicht sollte ich mal einen Schritt zurückgehen.... Also mein Compiler CC5X tut soweit. Jedenfalls ließ sich das Programm #include <C:\cc5\16F84.h> void main(void) { TRISB = 0b.0000.0000; PORTB = 0b.1010.1010; } übersetzen und brennen (Erstes Erfolgserlebnis) :-) Jede 2. LED war an. Nun mal eine ganz grundlegende Frage: Welche Dateien muss ich in den Quellcode einbinden und wenn ja, für was sind sie gut ? 1.) #include <C:\cc5\16F84.h> 2.) #include <C:\Programme\Microchip\MPASM Suite\LKR\16f627.lkr> 3.) #include <C:\Programme\Microchip\MPASM Suite\Template\Code\16F627TEMP.ASM> 4.) #include <C:\Programme\Microchip\MPASM Suite\Template\Object\16F627TMPO.ASM> zu 1.) ist anscheinend notwendig, da dort der PIC definiert wird zu 2.) ist laut I-Net auch notwendig, da hiermit der Brenner weiß in welchen Bereich das File geschrieben werden soll zu 3.)+4.) Diese Dateien werden bei manchen Tutorials mit in den Quellcode bei MPLAB aufgenommen, ich weiß aber nicht warum... Grüße Mino
Nachtrag Ist es richtig, dass ich die Linker-Datei nicht brauche, da ich bei meiner Brennsoftware angeben muss welchen PICin brennen möchte, und die Software dadurch weiß wohin das HEX File geschrieben werden muss ???
Die Linkerdatei brauchst Du, weil der compilierte Code mit dem Startup-Code gelinkt werden muss. Aber möglicherweise kannst Du auf die Includes 3. und 4. verzichten, das tönt so nach TEMPlate. Schau mal im Manual des Compilers nach, wie Du die Fuses (Config Bits) setzen kannst. #pragma config... Schau auch mal bei www.cc5x.de rein.
> ich heisse dich herzlich in der kleinen pic-gemeinde willkommen > meines erachtens gibt es wenig genug die wetwas mit pics machen Nun ja, so richtig klein ist die Gemeinde eigentlich nicht, da die PICs in ihrer Klasse bei den Verkaufszahlen seit Jahren weltweit die Nummer 1 belegen. Obwohl gelegentlich abgestritten, scheint wohl doch Einiges für diese Controller zu sprechen. Aber gut, vielleicht solltest Du auch nicht vergessen, mal bei Microchip selber vorbei zu schauen. Unter www.microchip.com findest Du alle möglichen Hilfen zu nahezu jeder Frage. Es ist zwar alles in Englisch, aber mit mittelmäßigen Englischkenntnissen trotzdem gut zu lesen. MfG Gast
>da die PICs in ihrer Klasse bei den Verkaufszahlen seit Jahren weltweit die >Nummer 1 belegen. Soll jetzt kein Bashing werden ! Wo kann mann sowas nachlesen ? Mich interessieren die Marktanteile der einzelnen Hersteller bei µC.
Hallo, ich benutze ebenfalls MPLAB IDE v8.00 und CC5X.EXE und programmiere in C. Meine "Standard"-Vorlage sieht so aus, wenn ich beginne. Der Rest wird anhand der gewünschten Funktion und des PIC-Datenblatts eingefügt. Ich denke, bei Dir fehlt das config-word (s. zweite Zeile)
1 | #pragma chip PIC16F876
|
2 | #pragma config = bin(11.1111.0111.0001)
|
3 | #include "int16CXX.h" |
4 | |
5 | |
6 | void initPIC() |
7 | {
|
8 | OPTION_REG = bin(00000010); |
9 | INTCON = bin(11000000); |
10 | |
11 | //Definiton der Ein-/Ausgänge
|
12 | //Port A
|
13 | PORTA=0x00; // Alles Ausgänge |
14 | TRISA=0b00000000; |
15 | ADCON1=0x06; |
16 | |
17 | //Port B
|
18 | TRISB=0b11111110; // Alles Eingänge |
19 | PORTB.0=0; |
20 | |
21 | //Port C
|
22 | PORTC=0x00; |
23 | TRISC=0b00000110; // RC1,2 Eingänge, Rest Ausgänge |
24 | }
|
25 | |
26 | void main() |
27 | {
|
28 | initPIC(); //System initialisieren |
29 | |
30 | // Hier eigenen Code einfügen...
|
31 | |
32 | }
|
Vielleicht hilft's Dir weiter.... Gruß, netfriend
Michi Müller wrote: > Also ich habe mal gelesen, das die AVRs den größeren Marktanteil > mittlerweile haben. Es ging ja darum, wie verbreitet PICs [z.B. hier im Forum] sind. Wenn wenige kommerzielle Anwender riesige Mengen eines Controllers einsetzen, werden zwar stückzahlmässig grosse Umsätze damit erzielt, was aber nicht bedeutet, dass der Controller weit verbreitet ist. Ausserdem tut das jetzt wirklich nichts zur Sache und lenkt von Minos Problem ab.
Hallo Netfriend, vielen Dank, genau sowas habe ich gesucht ! Super ! Also werde den Code mal kopieren und versuchen ein kleines Programm zu integrieren. Melde mich dann mit evtl. Erfolgserlebnissen. Besten Dank für die Hilfe PS: Jungs, es ist doch vollkommen egal wer den größeren Marktanteil hat, Hauptsache das Ding tut :-)
Hallo Netfriend, ich sag nur DANKE !!! Endlich funktioniert´s. Bin echt happy :-) Vielen Dank Mino
....hm, einnmal hat´s funktioniert, jedoch bekomme ich jetzt die Fehlermeldung Error[1] C:\PIC\Programme\Versuch9\neu9.c 1 : Unable to open file '16F627.h' (The file name or path can be wrong (Also consider option -cif)) In meinem Program steht oben #pragma chip PIC16F627 #pragma config = bin(11.1111.0111.0001) Ich habe beim ersten Versuch bemerkt dass ich die Zeile #include "int16C627.h" ausblenden muss (//), sonst merkert er wg. einer Doppelkonfiguration Im Projekt von MPLAP habe ich mal bei "Header Files" 1.) keins 2.) das von CC5X 3.) das von MPLAP Suite eingebunden....immer das gleiche. Nun verlangt er sie, findet sie aber anscheinend nicht, obwohl z.T. eingebunden (s. oben) Was tun ? Mino PS: Die Ports habe ich entsprechend umkonfiguriert, das passt soweit
>Ich habe beim ersten Versuch bemerkt dass ich die Zeile >#include "int16C627.h" >ausblenden muss (//), sonst merkert er wg. einer Doppelkonfiguration Das ist richtig, da die Zeilen (meines Wissens) das gleiche aussagen. Wenn du >#pragma chip PIC16F627 verwendest, brauchst du #include "16F627.H" nicht mehr. --------------- >Nun verlangt er sie, findet sie aber anscheinend nicht, obwohl z.T. >eingebunden (s. oben) Ich glaube das Problem hatte ich auch mal. Hast du mal versucht die entsprechende Datei (bei dir anscheinend 16F627.H) aus dem CC5X Ordner in den gleichen Ordner zu kopieren in dem auch deine "neu9.c" Datei ist? Schöne Grüße, Alex
Hallo, hm, es ist zum Mäusemelken....heute exakt dasselbe Projekt nochmal geöffnet, uns siehe da.....funktioniert. Muss mal bei meinem Rechner ein bisschen auf dem Grund gehen. Es kann ja nicht sein dass die Software mal funktioniert und mal nicht. Sollte der Fehler wieder mal auftauchen (wovon ich mittlerweile nahezu überzeugt bin) dann werde ich mal wie beschrieben, die Header Datei in den Projektordner direkt kopieren und dann von da aus einbinden. Mino
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.