Hallo ich habe das Problem , dass ich den Pic gebrannt habe aber wenn ich ihn an 5V lege passiert am RB0 garnichts vlt weiss ja jemand von euch an was es liegen könnte. // // PIC16F627A // // toggle an LED on port RB0 with about 2Hz // // include PIC header #include <pic.h> // variable int t = 0; // main method void main (void) { // configuration word __CONFIG(0x3f71); // IO settings #define LED RB0 TRISB0 = 0; // main loop while (1) { // toggle LED LED != 1; // wait for about .25s for (t = 0; t < 1000000; t++) { NOP(); } } }
danilo S. schrieb: > // toggle LED > LED != 1; Hallo Danilo, ich glaube die o.a. Zeile funktioniert so nicht. Der Operator überprüft auf Ungleichheit. Negation mit Zuweisung wie man es von += kennt gibt es glaube ich nicht! Ich kenne mich zwar mit PICs nicht aus, aber ich denke man kann auch nicht direkt auf einzelne Pins zugreifen, sondern nur auf ganze Ports. Deshalb wird >// IO settings > #define LED RB0 > TRISB0 = 0; auch nicht funktionieren.
oke ich habe den Code abgeändert jetzt ist nur noch while(1) { LED =1 ; } nun leuchtet die LED für 5s dann schaltet sie für immer aus nehm ich die Spannung weg und tu sie wieder dran kommt die led wieder für ca 3s und dann erslisht sie wieder. an wass kann das liegen? vielen dank
ah oke meinst du wegen dem ist das mit dem unkontrollierten abschalten der LED? wie soll ich den diesen beschalten?
hat geklappt vielen dankt...diese zum glück gibt es dieses Forum einfach einsame Spitze.
noch so ein Tip am Rande: du hast für t eine Int Variable angelegt. Die wird von den mir bekannten Compiler (CCS PCM) als 16Bit Variable verstanden. Das passt so garnicht zu Deiner Zeitschleife mit Abfagewert 1000000. Je nach Compiler gibt das Chaos. Udo
kaplic schrieb: > danilo S. schrieb: > >> // toggle LED >> LED != 1; Du willst LED^=1; Schreiben. ^ ist das Exklusiv-Oder in C. Oder LED = ~LED; ~ ist das bitweise nicht, ! das logische nicht. fchk
danilo S. schrieb: > // configuration word > __CONFIG(0x3f71); > > // IO settings > #define LED RB0 Es scheint auch so zu funktionieren, doch das "__CONFIG.." und das define würde ich nach oben (direkt unter dem include) und außerhalb der main machen. danilo S. schrieb: > // wait for about .25s > for (t = 0; t < 1000000; t++) > { > NOP(); > } Abgesehen davon, dass wie erwähnt ein int mit höchstwarscheinlich 16bit zu klein für 1.000.000 ist, haben sogut wie alle Compiler Funktionen/Libs, die sie mitbringen, und wenn sie das tun, ist da auch sehr warscheinlich eine Warte-Funktion dabei. Dann kannst du auch sowas wie "delay_ms(250);" schreiben. Ist kürzer, "besser" als Wartefunktion zu erkennnen und du brauchst die t Variable nicht mehr. Dann drittens hast du keine Taktquelle. Ich sehe auf dem Board keinen Quarz o.ä. und den Internen Oscillator schaltest du auch nicht an. Das kann garnicht funktionieren. Also es fehlt auf jedenfall noch ein Widerstand am MCLR und ein Quarz mit 2 C's oder du musst den Internen Oscillator anschalten. Zu beidem findest du im Datenblatt, wie es geht.
danke für die Tipps. Ja das Foto habe ich ganz am anfang meiner Probleme gemacht. Der MCLR habe ich mittlerweile angeschlossen. Zur Taktquelle die habe ich in der Konfiguration eingeschaltet so brauche ich keinen externen Takt. Jetzt läufts auch wie es sollte. und das mit den 1000000 war weil ich dachte 16000 sind zu schnell erreicht dass ich es gar nicht blinken sehe. Wurde nachträglich auch noch geändert. Config und define werde ich noch aus dem main nehen. wo kann ich nachschauen welche Funktionen mein Compiler mitbringt? ich benutze den HI-TECH ANSI C Compiler.
http://ww1.microchip.com/downloads/en/DeviceDoc/manual_PICC_983.pdf , Seite 176. Dort steht, wie man es benutzt. Dazu musst du die htc.h einbinden, da es dadrin steht. Und dann kannst du auch gleich da mal rein gucken, was es noch so darin gibt.
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.