PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warum geht der Pic nicht richtig?



tornado
01.11.2007, 17:51
Nachdem ich seit längerer Zeit nichts mehr an meinem Roboter gemacht habe, wollte ich jetzt meinen alten reparieren und danach einen neuen bauen.

Mein neuer brenner funktioniert schon mal. (Das war eine schwere Geburt)

Ich hatte mir letztes JAhr eine Platiene (Lochraster) für den Pic gebaut mit LEDs, Tastatur, Schaltern... und es funktionierte auch alles.
Jetzt geht sie aber nicht mehr. Alle Kontakte sind in Ordnung.

Ich habe ein kleines und simples Programm in C geschrieben um nur 3 LEDs aufleuchten zu lassen.
Das tuen sie aber nicht. Wenn ich mit meinem Finger (nicht mit etwas anderem wie Kugelschreiber...) berühre, dann leutet die 3. LED hell und die anderen 2 Flackern. Ist das ein Anzeichen fÚr viel "noise"?

Ich habe den Pic dann mal so auf den Roboter gepackt. (Macht jetzt keinen Sinn, aber so konnte ich besser mit dem Multimeter messen).
Am ersten und 2. Pin kommen zwichen 0.12V und 0.75V raus. Beim dritten 3,5V oder so.
Eigendlich müssten da ja jetzt überall 5V sein.

Hat jemand eine Ahnung?

Ich glaube zwar nicht, dass das Programm dran schuld ist, aber ich poste es mal trotzdem.






#include <pic1687x.h>
#define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit))

static bit LED0 @ PORTBIT(PORTA, 0);
static bit LED1 @ PORTBIT(PORTA, 1);
static bit LED2 @ PORTBIT(PORTA, 2);

void main (void)
{
TRISA = 0x00;
PORTA = 0b00000000;

while (1){
LED0 = 1;
LED1 = 1;
LED2 = 1;
}//while

}//()



Falls das noch weiterhilft: als Quarz habe ich 10MHz am Pic 16F876


Viele Grüsse,
Tornado

HF SHOOTER
02.11.2007, 18:04
Hi

Also ich kenne Compiler bei denen muss man im Programmcode noch die ganze Config angeben, wie z.B. Takktquelle, ... .

Dann probier erstmal folgenden Code im main-Teil:

while (1) {
PORTA = 0b00000111;
delay_ms(500);
PORTA = 0b00000000;
delay_ms(500);
}

Ob dein Compiler den delay_ms Befehl kennt weiß ich nicht, probiers einfach mal aus oder such im Handbuch nach einem anderen Befehl der eine definierte Pause erzeugt.

Blinken die 3 LEDs an RA0 - RA3 dann immer noch nicht dann musst Du die Config noch im Compiler mit angeben (eigentlich sowieso nötig - merk ich grad - weil der Befehl delaqy_ms aus der Taktfreuqenz dann den entsprechenden Code generiert um die definierte Zeit zu warten!!!)

mfg
Benny

tornado
06.11.2007, 09:59
Also ich musste die Taktfrequenz glaube ich nie eingebem.
Als ich mit servos was gemacht habe, da habe ich dass dann schon gemacht, aber sonnst nicht.

Das Programm was jetzt nicht geht ging ja ausserdem vorher schon mal.

Ich habe dienen Code ausprobiert, tut sich aber nichts.

ICh hatte damals auch ein kleines Night Rider Lauflicht programiert. Das habe ich jetzt auch noch mal rausgeholt.
Eine LED geht manchmal an.
Und ich habe auf dem Pic rumgedrückt, und habe ein einziges mal dann sehen können, dass die erste LEd anging, dann die 2. und dann die 3.
Das wars dann aber auch schon mit dem Erfolg.

Vieleicht sollte ich mir eine neue Versuchsplatiene für den Pic bauen.

Was für einen Quarz und welche Kondensatoren für ihn würdet ihr mir empfehlen?

Viiele Grüsse,
tornado

HF SHOOTER
06.11.2007, 13:20
Hi

Du sagst auf der Testplatine lief es vorher, jetzt aber ncihtmehr...
Also gehe ich auch davon aus das Du den MCLR extern mit einem Pullup auf High ziehst.

Jetzt kanns eigentlich nur noch an der Konfiguration liegen. Fusebits nochmal überprüfen und einfach mal den internen OSC aktivieren.

Du schreibst auch dein Brenner funktioniert jetzt endlich, also schreiben und anschließendes lesen liefert das selbe zurück? (nur mal um den Brenner 100% auszuschließen)
Oder PIC mal aus dem Brenner raus bzw. ICSP Kabel abziehen (damit Reset auf High gehen kann)

Wenn das immer noch nicht funktioniert dann schreib ich mal ein Programm das diese LEDs blinken lässt - wenn das dann auch nicht funktioniert kannste wenigstens den Code als Fehlerquelle ausschließen!

mfg
Benny

tornado
06.11.2007, 18:56
Ich werde den Fusebit noch mal überprÚfen.
den Brenner können wir 100% ausschliessen. Checksum ist OK

Nach dem Brennen kommt der PIC aus dem Brenner und auf die andere Platine (damit mÜsste reset ja auf high gehen, oder?).

Wäre toll wenn du mir einen kurzen Code schicken könntest.

viele GrÜsse,
tornado

HF SHOOTER
06.11.2007, 19:28
Nach dem Brennen kommt der PIC aus dem Brenner und auf die andere Platine (damit mÜsste reset ja auf high gehen, oder?).

Wäre toll wenn du mir einen kurzen Code schicken könntest.

Hi

Wenn dort ein 10k Widerstand gegen Vcc verbaut ist dann ja, ein interner Pullup (wie bei den AVRs gibt es hier nicht).

Was für einen PIC verwendest Du?

mfg
Benny

tornado
07.11.2007, 14:51
Hi
ich verwende einen PIC 16F876(A)

HF SHOOTER
07.11.2007, 17:00
So

Also habs jetzt erstellt damits mit einem 10 MHz Quarz betrieben werden muss. Config liest der Programmer ja automatisch ausm hex-File.

mfg
Benny

tornado
07.11.2007, 19:15
danke, ich werde das morgen dann zu Hause direkt mal ausprobieren

tornado
10.11.2007, 19:11
Ich habe das jetzt mal ausprobiert aber es ist das Selbe wie vorher.
Nur wenn ich den Quarz mit dem Finger berÜhre, leuten die LEDs.

Wenn ich dann noch ein Bein vom PIc anfasse, leuchten die LEDs heller.

Ich werde dann mal eine neue Testplatiene bauen, oder was meint ihr?

tornado
24.11.2007, 19:56
Ich habe noch mal alles überprüft.
Jetzt leuchten die 3 LEDs manchmal. Meisstens geht es, wenn ich masse und den 5V Eingang der Platiene direkt an den Trafo halte. Wenn ich verschiedene Kabel dazwichen anbringe (auch wenn es nur 4cm sind) dann leuchten die LEDs manchmal nur kurz auf.
Woran liegt das?

Wenn ich das ganze an die 5V vom Computer anschliesse, geht es meisstens. Falls es nicht geht (und die LEDs aus sind) und ich den Computer ausschalte, dann leuchten die LEDs kurz auf.

Hm, also ich bin mir nicht sicher was das soll.
Hat jemand eine Idee?
Viele Grüsse,
tornado

HF SHOOTER
24.11.2007, 20:11
Glecihgerichtet hast du schon, oder?
Am besten mal ein Foto machen wo man alles gut erkennen kann.

Und evtl. noch einen Schaltplan weil immo bin ich nur am raten weil normalerweise der PIC läuft wenn Quarz angeschlossen ist, Ub anliegt und MCLR auf High ist.

mfg
Benny

tornado
25.11.2007, 16:33
MCLR auf High muss ich noch mal gucken.
Meinst du mit gleichgerichtet "gleichstrom"? dann wÄre das OK

Was meinst du mit das Ub anliegt?

HF SHOOTER
25.11.2007, 16:38
Japp ich meine Gleichstrom.
Ub ist die Betriebsspannung.

mfg
Benny

PICture
25.11.2007, 22:57
Hallo tornado!

Hast Du überhaupt ein 100nf (0,1µF) vielschicht Keramikkondensator am kürzesten zwischen Vcc und Gnd des PICs angeschlossen?

MfG

T.J.
26.11.2007, 09:47
vor allem auch solche Kondis am Spannungsregler?

tornado
27.11.2007, 14:36
Die Stromversorgung ist OK . Ich habe es ja ausserdem an zwei verschiedenen ausprobiert (Trafo und Computer)

Zwichen den Pins Vcc und Gnd habe ich auch schon einen Kondensator.
MCLR war nicht auf high. Das habe ich gemacht, tut sich aber nichts.
Müssen noch andere Pins auf High oder Low gezogen werden?

Gruss,
tornado

T.J.
27.11.2007, 15:02
eigentlich nicht

PICture
27.11.2007, 20:31
Hallo Tornado!

Ich kenne die C Programmiersprache nicht, aber wahrscheinlich fehlt bei Dir die Konfiguration (__config in ASM). Der PIC kann nicht funktionieren, wenn er nicht richtig konfiguriert ist.

MfG

tornado
28.11.2007, 14:47
Aber ich habe früher, als mein letzter Roboter noch funktionierte auch nichts anderes gemacht als jetzt.
Danach hatte ich mir eine Testplatiene gebaut, und die ging ja auch. Und jetzt geht sie halt manchmal und manchmal auch nicht.
Also irgendwie ist das komisch.
tornado

Enrock
30.11.2007, 15:25
Servus,

hattest du jetzt eine neue Testplatine gebaut oder nicht? Wenn ja, hast du die gleichen Bauteile benutzt oder neue verwendet.

Ist die Platine selber geätzt worden oder ist das ganze auf einer Euro-Lochplatine aufgebaut? Hast du die Lötstellen überprüft insbesondere am PIC und am Quarz?
Hast du den PIC mal auf einem anderen Board getestet oder mal einen neuen verwendet?

Gruß

HF SHOOTER
30.11.2007, 15:36
Vielleciht wär es möglich das Du mal einen Schaltplan skizzierst wie es bei dir angeschlossen ist.
Und vielleicht auch noch ein zwei Bilder von der Platine (beide Seiten).

mfg
Benny

Enrock
30.11.2007, 18:09
Jop da wäre ich auch dafür!

tornado
03.12.2007, 19:01
ok, dann werde ich die Fotos uns Skizen in den nächsten Tagen machen.

tornado
08.12.2007, 12:45
So, hier sind die Fotos von der Platiene die manchmal geht, manchmal aber auch nicht.

MCLR schwebt frei in der Luft, weil der an einem Pin hängt, der über Kabel zum Brenner geht.
Ich habe aber auch schon versucht den mit Masse zu verbinden wenn der PIC an ist, das Ergebniss ist aber immer das selbe.

HF SHOOTER
08.12.2007, 13:16
MCLR schwebt frei in der Luft, weil der an einem Pin hängt, der über Kabel zum Brenner geht.
Ich habe aber auch schon versucht den mit Masse zu verbinden wenn der PIC an ist, das Ergebniss ist aber immer das selbe.

o_O das ist dann wohl der Fehler,
Wenn Masse an MCLR anliegt wird der Microcontroller ständig resettet.
Du musst diesen Pin unbedingt mit einem 10k gegen Vcc schalten, also dieser Pin muss 5V haben wenn er normal betreiben wird!

mfg
Benny

T.J.
09.12.2007, 13:05
MCLR schwebt frei in der Luft, weil der an einem Pin hängt, der über Kabel zum Brenner geht.
Ich habe aber auch schon versucht den mit Masse zu verbinden wenn der PIC an ist, das Ergebniss ist aber immer das selbe.

Das ist aber ganz schlecht. 5V wären dort angebracht!

tornado
09.12.2007, 19:32
Ups, da habe ich dann wohl etwas mächtig verkehrt verstanden :oops:

Dann werde ich das mal direkt ausprobieren.
Danke schon mal für die Antworten

tornado
09.12.2007, 19:44
Und es wurde Licht... ...die LEDs leuchten!!!

Also Masse mit 5V vertauscht... ich schäme mich so, hehe

Vielen Dank. Jetzt ist das Problem gefunden und ich kann endlich weiter machen (zumindest bis zum nächten Problem)

MfG
Tornado

T.J.
09.12.2007, 19:47
;) viel Erfolg und Spaß

PICture
10.12.2007, 03:38
Hallo tornado!

Ich würde dir bei nächsten Problemen empfehlen:

https://www.roboternetz.de/wissen/index.php/PIC_Assembler

Dein letztes Problem ist z.B. in "Grundbeschaltung" hoffentlich ausreichend erklärt.

Ich wünsche Dir auch viel Spaß und Erfolg beim PIC-Programmieren! :)

MfG

tornado
12.12.2007, 15:50
Danke PICture,
ich programiere zwar in C, werde mir den Link aber trotzdem mal angucken.
Da ist bestimmt auch etwas allgemeines dabei was mir dann auch helfen kann.

MfG
Tornado