Hallo Zusammen, ich habe ein Programm, das auch ganz wunderbar funktioniert. Allerdings nur, wenn ich es auf meinen uC debugge. Es soll aber ständig laufen, auch wenn ich die Verbindung zwischen ICD2 und der Schnittstelle zum uC trenne.... Ich benutze MPLAB IDE v8.20, wenn ich von Debugger auf Programmer umschalte, und das Programm laufen lassen will, funktioniert aber garnix! Ich habe Pin 10 von meinem 30F2020 als Osci- Ausgang deklariert und dabei gesehen, dass nicht mal der Osci ein Signal von sich gibt..... Kann mir jemand sagen, wo ich den Fehler suchen soll? Oder worauf ich beim Programmer allgemein achten muss? Gruß ede
Du musst das Programm im Modus Release builden und mit dem ICD2 als Programmer programmieren. Dann ICD2 trennen oder "Release from Reset" (oder so ähnlich) wählen.
Pic- gangster Edgar wrote: > Ich habe Pin 10 von meinem 30F2020 als Osci- Ausgang deklariert und > dabei gesehen, dass nicht mal der Osci ein Signal von sich gibt..... > > Kann mir jemand sagen, wo ich den Fehler suchen soll? Das klingt irgendwie als ob du versuchst den Takt des internen Oszillators auszugeben. Die Clock-Out-Funktion ist gedacht um ein Quarz am Controller zu betreiben. Setze einen Pin am Anfang des Programms auf High. Dann kannst du kontrollieren ob der Controller anläuft und siehst auch ob er resettet (zB wenn der Watchdog an ist). Ansonsten sind Probleme mit den Takt nahezu immer auf falsche Config Bits zurückzuführen. Falls es nicht geht, poste mal die Config Bits.
Hallo, also das mit dem Release-Mode geht jetzt...so einiger maßen... ich hab jetzt folgendes: im Debug-Mode läuft das Programm einwand frei... aber im Release-Mode tut er irgendwie folgende Zeile ignorieren: ******************************** int uC-NS; uC_NS = PORTBbits.RB1; ******************************** eigentlich wird in diesem Befehl ein Signal vom parallel-uC eingelesen.. ('1' oder '0')....aber hier tut er so, als wäre immer eine '0' am Eingang.... wie gesagt, im Debug-Mode funktioniert es! komisch komisch.... vll liegt es ja an diesem 'PORT'- Befehl? bin für jeden Tipp dankbar!!! Gruß ede
Pic- gangster Edgar wrote: > also das mit dem Release-Mode geht jetzt...so einiger maßen... An was hats gelegen? > ******************************** > int uC-NS; > > uC_NS = PORTBbits.RB1; > ******************************** uC-NS ist nicht dasselbe wie uC_NS Ansonsten ist das schon richtig. Woher weisst du im Release Modus ob das falsche eingelesen wurde? Also wie testest du das?
hey Willi, ne sorry, das war jetzt ein Tipfehler von mir....in meinem Programm sind die beiden Variablen natürlich identisch. Ich weiß, das er immer nur eine '0' einliest, weil er immer nur im Tiefsetzsteller-Betrieb arbeitet, und nie in den Hochsetzsteller-Betrieb wechselt, egal was der andere uC gerade so treibt. Ich vermute, das der Spannungspegel am Pin einfach nicht hoch genug ist. Ich habe nämlich gerade das Programm umgeschrieben. Und mache jetzt an dem Pin eine A/D-Wandlung. Und siehe da, er schaltet wunderbar um. Welche Spannung brauch ich den eigentlich, um eine '1' zu haben? 2,5V? ********************** ... init_ADC(); if (ADCVALUE >= 512) { ... *********************** vorher hatte ich die Abfrage: *********************** ... if (uC_NS == 0) { ... *********************** aber eine echte Lösung ist die A/D-Wandlung natürlich nicht, denn es geht bei mir ja um jede Nanosekunde. Gruß Edgar
Pic- gangster Edgar wrote:
> Welche Spannung brauch ich den eigentlich, um eine '1' zu haben? 2,5V?
0,8 * Vdd
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.