Hallo zusammen. Neuerdings habe ich mich an einen Pic herangewagt, welcher mehr I/o's hat. Den 16F877a. Nun habe ich ein einfaches blinkprogramm geschrieben. Es funktioniert leider nur teilweise. Am pin OSC1 und OSC2 ist der Taktgenerator mit 2x 22pF condis auf masse gehängt. main{ //konfiguration TRISA = 0x00; TRISB = 0x00; TRISC = 0x00; TRISD = 0x00; //was ich noch eingestellt habe: watchdog = disable, XT osciallator ==> 4.194304Mhz, PWRT = enable, Brown-out Reset = enable, while(1) { RB1 =1; delay_ms(500); RB1=0; delay_ms(500); } } Sobald der uC 5v bekommt fängt das LED am pin RB1 an zu blinken mit der frequenz von 1Hz. aber nach etwa 2min hört es einfach auf und macht keine anzeichen von ,,online,,. aber nach weiteren 20sek. fängt es wieder an zu blinken als währe nichts gewesen. kann mit jemand sagen was ich falsch mache? es ist ziemlich nervig...mit dieser eigenschaft kann kein vernünftiges projekt realisiert werden...
die gibts vom compiler aus. eigentlich heisst sie __delay_ms(500); sie ist erstaunlich genau.
Dann seh ich eigentlich nur noch ein Hardware-Problem in meiner Kristallkugel. Spannungsversorgung, BLockkondensatoren, .... irgendwas in dieser Richtung.
an Vdd ist 5V, an Vss ist 0V, am pin MCLR ist ein pullupwiderstand auf 5v. und bei den beiden pins OSC1 & OSC2 ist ein quarz mit zwei 22pF condis dran. oder was könnte man noch falsch machen
danilo S. schrieb: > an Vdd ist 5V, an Vss ist 0V, Das war nicht gemeint. Das du die angeschlossen hast, glaub ich dir schon. Aber wo kommen die her? Steckernetzteil, Labornetzteil, .... Ist die Quelle über jeden Zweifel erhaben, im 2 MInuten 'Takt' die Spannung einbrechen zu lassen? Und sei es nur ganz langsam einbrechen, bis irgendwann der Brown Out anschlägt?
Ich hatte mit dem Hitech-Light-Compiler, den man mit MPLAB zusammen herunter lädt, und der Freeware Demo ist, mal arge Probleme. Er ist nicht einfach codelimitiert, wie es anderswo ist, aber er ist anders limitiert, darüber fand ich nichts. Beispielsweise konnte man keine zwei Klammerterme in einer Zeile verknüpfen, und das Ergebnis einer Variablen zuweisen. Das machte der einfach gar nicht. Erst, nachdem ich einen Dreizeiler aus dem Code machte. Vielleicht mag der auch keine Strukturen, so weit versuchte ich es gar nicht mehr. Das doofe Ding setzte mir einfach Code ohne Fehlermeldungen so um, daß der nicht funktionierte. Ich mußte den Code dann auseinander klamüsern, und in einfachere Konstrukte überführen. Dann ging es. Auf meinen anderen Plattformen wie 8051 geht es doch mit C und dem SDCC auch einwandfrei. Karl Heinz Buchegger schrieb: > Und sei es nur ganz langsam einbrechen, > bis irgendwann der Brown Out anschlägt? Für einen Brown Out reicht bestimmt auch manches Steckbrett.
ja mit einem labornetzteil. ich habe den pic16f627a programmiert. der besitzt einen INTRC (interner taktgenerator). und da hat es reibungslos geklappt und die schleife while(1) hat wirklich ist tatsächlich unendlich viele male wiederholt. aber nun mit dem externen klappts irgendwie nicht so...daraus schliesse ich, dass die versorgung nicht der übeltäter ist.
benutze den MikroC for pic mit dem hauseigenen Kompiler von denen.
danilo S. schrieb: > daraus schliesse > ich, dass die versorgung nicht der übeltäter ist Mach mal ein Foto, wie der externe Oszillator aus sieht. Quarzdefekte gab es auch schon mal, oder zu lange Strippen, alles möglich. Hast du einen Ersatzquarz? Ist das Verhalten zeitlich immer exakt reproduzierbar?
ich habe den grossen prozessor durch den kleinen pic16f627a ausgetausch aber das problem liegt immer noch genau gleich an. nai alles kalt bzw kälter als handwarm. habe noch eine grüne led angeschlossen um die speisespannung zu überwachen...nicht das die spannung an all dem schuld ist.
jetzt noch eine ganz bescheuerte theorie...wenn ich das ganze aus der ferne beobachte läufts reibungslos(sofern ich es beobachten kann) aber sobald ich in die nähe komme habe ich das gefühl fängt die ganze apparatur an zu spinnen... einbildung oder könnte was daran sein (EMV oder so)
danilo S. schrieb: > nai alles kalt bzw kälter als handwarm. Steckbrett? Schalte den Brownout einfach mal testweise aus. Einfach, um zu sehen, was er dann macht.
warum ist das steckbrtt nicht gut? ich will ja meine schaltungen zuerst mal testen. oder ist das falsch? oke ich mach mal ein neues projekt mit der andere confi. -->brown-out reset diable. was heisst versorgungsspannung nicht mit Cs geblockt? soll ich einen Kondensator zwischen + und - schalten als stützkondensator?
danilo S. schrieb: > warum ist das steckbrtt nicht gut? Weil 'billige' Steckbretter gerne dazu neigen, dass die Kontakte mehr Wackelkontakte sind als irgendwas anderes. > was heisst versorgungsspannung nicht mit Cs geblockt? Zwischen + und - gehört bei Digital-IC immer ein 100nF Kondensator. Immer. Möglichst nahe am IC.
Zwischen + und - gehört bei Digital-IC immer ein 100nF Kondensator. Immer. Möglichst nahe am IC. das wusste ich nicht. Nun nehme ich ein noch verpacktes klemmbrett mal schauen ob der fehler verschwindent.
danilo S. schrieb: > das wusste ich nicht. Nun nehme ich ein noch verpacktes klemmbrett mal > schauen ob der fehler verschwindent. Bitte vorher noch den Artikel Steckbrett lesen!
>Nun nehme ich ein noch verpacktes klemmbrett mal >schauen ob der fehler verschwindent. Probier erst mal den 100n.
Tausch mal Quartz und die Kondensatoren aus. Vielleicht haben die ja einen hau.
ich hab nun mal den quarz gewechselt und es sieht vielversrsprächend aus...seit 10min beobachte ich die LED und sie blinkt immer im gleichen takt. die grüne LED hat einen Vorwiderstand aber man sieht ihn nicht ...hab das bein abgeschnitten und direkt ein R dran gelötet. Als bastler hat man solche sachen immer parat:)
leider habe ich gerade keinen 100n im haus. aber mit morgen besorge ich mir gleich einen. Vielen dank für die tollen Ratschläge.
danilo S. schrieb: > ich hab nun mal den quarz gewechselt und es sieht vielversrsprächend > aus...seit 10min beobachte ich die LED und sie blinkt immer im gleichen > takt. Quarze bitte immer wie ein rohes Ei behandeln. Nie runter fallen lassen, oder ähnliches. Die haben innen sehr empfindliche stoßempfindliche Quarzscheibchen. Das hatten wir hier im Forum auch schon mal.
Aus irgendeinem Grund haben Quarze auch oft Anschlussdrahtdicken die entweder größer oder kleiner als die Drähten von anderen bedrahteten Bauteilen sind. Ist mir auch schon passiert, dass ein Quarz im Steckbrett nur so einen lala Kontakt hatte.
was wäre denn eine geeignete methode eine Schaltung zu testen, welche ich schnell und bequem umbauen(umverdrahten) kann. habe bemerkt dass Steckbretter nicht so beliebt bei euch sind. wie machts ihr denn? Lötet ihr alle bauteile in eine Rasterplatine?
>leider habe ich gerade keinen 100n im haus. Das müssen nicht genau 100n sein. Hast du sonst irgendwas da? 47nF oder 1uF Elko reicht zur Not auch erst einmal. >ich hab nun mal den quarz gewechselt und es sieht vielversrsprächend >aus Dann pack den alten Quarz auch noch mal rein. Vieleicht doch ein Kontaktproblem.
danilo S. schrieb: > leider habe ich gerade keinen 100n im haus. Muss nicht exakt 100nF sein. Bisschen weniger oder (in deinem Fall ausnahmsweise viiiel) mehr darf es auch sein.
danilo S. schrieb: > wie machts ihr denn? Bei seltsamen Fehlern erst mal an allen Bauteilen im Steckbrett wackeln. :-)
hmm jetzt sind es bestimmt 40min die es praktisch ohne ausfälle blinkt. ich hoffe wir konnten das problem lösen(quarz). danke allerseits.
danilo S. schrieb: > ich hoffe wir konnten das problem lösen(quarz). [nerv] Kondensator nicht vergessen... [/nerv]
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.