Hallo ich weiß nicht wirklich warum der mc des programm nicht ständig ablaufen läst.. also ich hab nen etwas größeres programm geschrieben aber zwecks fehlersuche hab ich es mal wirklich sehr stark reduziert.. Ich benutze einen PIC 18F4685 #define _PIC18Fxxx #include <18F4685.h> #fuses INTRC_IO, NOMCLR, NOWDT, NOPROTECT, DEBUG // auf internen RC laufen #use delay(clock=2000000) void main(){ if (input(PIN_D1)) {output_high(PIN_D0); } else output_low(PIN_D0); } // ich benutz mplab mit CCS C compiler weiß jemand vielleicht woran es liegen könnte?! ich hatte es einmal des es lief und eigentlich nix geändert aber als ich dann das pic kit 3 abgezogen habe lief nix mehr... aber so wie ich es jetzt da stehen habe läuft es nur einmal runter und bleibt dann stehen hatte schonmal ein do, while drin (hört sich zwar bloed an aber na ja) hat auch nicht geholfen danke schonmal für eventuelle antworten
probiers mal mit
1 | #define _PIC18Fxxx |
2 | #include <18F4685.h> |
3 | |
4 | #fuses INTRC_IO, NOMCLR, NOWDT, NOPROTECT, DEBUG // auf internen RC |
5 | laufen |
6 | #use delay(clock=2000000) |
7 | |
8 | |
9 | void main(){
|
10 | while (1) {
|
11 | if (input(PIN_D1)) |
12 | {output_high(PIN_D0);
|
13 | }else {
|
14 | output_low(PIN_D0); |
15 | } |
16 | } |
17 | } |
ja also das es ein schleifen prob ist das hab ich mir schon gedacht.. (weil es halt nur einmal abläuft)
Hy ich habe zwar noch nichts mit PIC gemacht, jedoch sollte das auch hier gelten: [c] void main(){ while(1) { if (input(PIN_D1)) { output_high(PIN_D0); } ... } } [\c] ohne diese while(1) würde das ja nur einmal durchlaufen! Hoffe, dass ich dein Problem richtig verstanden habe!
Hallo, ich gebe meinem Vorredner Recht. Ohne Schleife läuft das ganze nur einmal ab, bei den heutigen Taktfrequenzen also ziemlich schnell. Versuche es mal mit:
1 | while (1) { |
2 | //dein Code
|
3 | }
|
4 | return 0; |
Gruß Jannis
Executing: "D:\Program Files\PICC\Ccsc.exe" +FH "main.c" +DF +LN +T +A
+M +Z +Y=9 +EA
*** Error 48 "main.c" Line 10(1,22): Expecting a (
1 Errors, 0 Warnings.
Halting build on first failure as requested.
BUILD FAILED: Thu Mar 24 14:05:36 2011
das sagt mir die build... wo soll denn da ne klammer fehlen!?=
ok des war mein fehler hatte da den text zur beschreibung ned hinter die // geschrieben.. ok jetzt macht er folgendes.. des programm wartet jetzt quasi bis ich den pin auf high habe.. aber sobald das ist.. geht er nicht mehr auf low wenn der Input pin auf low geht.. quasi als hätte ich ne selbsthaltung
Schmolke schrieb: > wo soll denn da ne klammer fehlen!?= In Deinem Quelltext. Den wir hier nicht sehen.
#define _PIC18Fxxx
#include <18F4685.h>
#fuses INTRC_IO, NOMCLR, NOWDT, NOPROTECT, // auf internen RC
#use delay(clock=2000000)
void main()
{
while (1) {
if (input(PIN_D1)==1)
{output_high(PIN_D0);
}
else
output_low(PIN_D0);
}
}
;) ok des ist er jetzt mit while.. wenn ich jetzt return rein baue dann
erkennt er das als command.. aber wenn ich es innerhalb der void mache
dann sagt er mir nach dem build (böse böse das return kann ned in der
void stehen)
wenn ich es unter die void main mache dann will er es deklariert haben
obwohl er es als command erkennt..
ok um alle beteiligten zu beruhigen.. es läuft :-) habe jetzt einen pull down drine (hatte ihn auf dem testboard ned dauf ) aber jetzt läuft es.. danke für die sehr schnelle hilfe
Schmolke schrieb: > ;) ok des ist er jetzt mit while.. wenn ich jetzt return rein baue dann > erkennt er das als command.. aber wenn ich es innerhalb der void mache > dann sagt er mir nach dem build (böse böse das return kann ned in der > void stehen) > wenn ich es unter die void main mache dann will er es deklariert haben > obwohl er es als command erkennt.. Was willst du mit einem return? Ein return hat in der main-Funktion nichts zu suchen! Du solltest mal klare und verständliche Sätze formulieren, vorzugsweise mit Groß- und Kleinschreibung.
Hallo, erstmal wegen der Übersichtlichkeit, ist es sinnvoll den Code einzurücken. Macht man am Anfang eigentlich immer falsch. Ich spreche da aus Erfahrung:). Das sieht dann etwa so aus:
1 | void main() { |
2 | while (1) { |
3 | if (input(PIN_D1)==1){ |
4 | output_high(PIN_D0); |
5 | }else |
6 | output_low(PIN_D0); |
7 | |
8 | }
|
9 | }
|
Gruß Jannis
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.