Moin zusammen .
Ich bin grade dabei mich in die Pic Programmierung einzuarbeiten,
also noch ein absoluter Anfänger in solchen Dingen.
Die 3-4 Jahre Info in der Schule haben da nicht viel gebracht...
Ein kleines Programm zu schreiben hab ich jedoch nach einiger Zeit
endlich hinbekommen.
Aufgrund meiner Zweifel an der richtigen Programmierung hab ich das
Programm
dann mit dem "Real Pic Simulator" simuliert.
Und nach einigen Versuchen ging es sogar
Also dachte ich mir, versuch ich es mal richtig.
Programm auf den Pic "gebrannt" (mit Mplab IDE)
und dann Strom anschlossen, Quarz (20MHZ)auch ,
Oszilloskop an den festgelegten Ausgangspin
und nix -.-
Garkeine Reaktion.
Ich habe den Pic 16F871 verwendet.
(http://circuits.datasheetdir.com/19/PIC16F871-pinout.jpg)
An die beiden Linken Vss u Vdd Anschlüsse(Pin 11 und 12) Strom(5V)
angelegt.
(kurze Frage , warum gibt es eigentlich 2x Vss und 2x Vdd (Pin11,12 und
31,32)
An die Pins 13 und 14 den Quarz und zwar direkt.
Kann man den direkt anschließen?
Hab glaubich irgendwo gelesen gehabt das das nicht gehen soll...
Mein Lehrer war jedoch der Meinung das sie es früher immer so gemacht
hatten und es auch so ging...
Muss vllt festgelegt werden das ein externer Quarz verwendet wird? oder
so?
Den Pin 33 also RB0 hab ich als Ausgang festgelegt. Jedoch kam da nix
an/raus..
Nun meine Frage, wo ist der/die Fehler?
Da die Simulation erfolgreich war, muss eigentlich der Fehler in der
Schaltung liegen...
Ich würde mich über eine Lösung freuen
Mfg Andi
Andi schrieb:> (kurze Frage , warum gibt es eigentlich 2x Vss und 2x Vdd (Pin11,12 und> 31,32)
Es kann Chip-Layout abhängig sein. Einfach immer alles an Versorgung
anschließen. Es gibt auch bei manchen PICs AGND und AVdd, dies ist die
Versorgungsspannung vom Analog-Digital-Wandler im PIC.
Andi schrieb:> An die Pins 13 und 14 den Quarz und zwar direkt.> Kann man den direkt anschließen?> Hab glaubich irgendwo gelesen gehabt das das nicht gehen soll...> Mein Lehrer war jedoch der Meinung das sie es früher immer so gemacht> hatten und es auch so ging...
Dein Quarz hat 2 Anschlüsse. Diese kommen an die beiden PINs vom PIC, da
ist es auch egal welcher Pin an welchen Anschluss vom Quarz. Zusätzlich
pro Quarz-Anschluss ein Kondensator mit ~12-22pF gegen Masse. Sollte im
Datenblatt (was du hoffentlich gelesen oder mindestens überflogen hast)
aber auch abgebildet sein.
Andi schrieb:> Muss vllt festgelegt werden das ein externer Quarz verwendet wird? oder> so?
Ja, in dem/den Config-Word(s) wird u.A. festgelegt, ob interner
Oscillator, externes RC-Glied, externer Quarz/Oszillator usw.
Andi schrieb:> Nun meine Frage, wo ist der/die Fehler?
Ohne Schaltplan, am besten zusätzlich noch ein Foto vom Aufbau, und ohne
Programmcode wird man es nicht sagen können ;)
Danke erstma für die schnellen Antworten ;)
Den Aufbau hab ich unten rangehangen. Ich hoffe man kann es erkennen,
ist
da alles andere als hübsch oder ordentlich.
Denke der Fehler liegt in der Festlegung vom Quarz im Quelltext.
Zu dem Quelltext. is bissel lang^^
Aaalso ;)
Zum Schaltplan:
Die 2 von mir erwähnten Kondensatoren vom Quarz zur Masse fehlen. Siehe
Datenblatt, Seite 89 (PDF 91):
http://ww1.microchip.com/downloads/en/DeviceDoc/30569b.pdf
Dazu hast du, wie ich schon meinte, auf der rechten Seite die Versorgung
nicht angeschlossen. Ehrlich gesagt, bin ich mir nicht sicher, ob man
diese zwingend anschließen muss, da ich es noch nie probiert habe. Also
erstmal anschließen.
Zuletzt: Pin1 ist ein Reset-Eingang. Dieser startet den PIC neu. Da
dieser im moment in der Luft hängt, wird bestimmt der PIC die ganze zeit
neu starten. Dort gehört ein Pull-Up-Widerstand zu 5V dran, z.B. 10k
Ohm.
Zum Programm:
Auf der Seite im Datenblatt siehst du auch, dass du _RC_OSC bei einem
RC-Glied benutzen musst. Da du aber einen Quarz benutzt, musst du XT
oder HS verwenden, XT bis 4MHz, HS ab 4MHz.
Die warteschleifen hab ich so nicht geprüft, jedoch kann man auch Code
sparen (gerade bei so "langen" Warteschleifen), wenn du eine
100ms-Wartefunktion machst und bei 200ms, 800ms und 900ms diese
100ms-Funktion entsprechend oft aufrufst.
Hi,
JA- Du hast einen Fehler bei der Quarzfestlegung.
Im Quelltext steht _RC_OSC das steht für eine externe Kombination von
Kondensator und Widerstand. ICh habe die 871er bezeichnungen nicht ganz
im Kopf, manchmal weichen die (leider) etwas ab, aber für einen Quarz
müsste da wahrscheinlich stehen: _XT_OSC , evtl. wenn der Quarz eine
HOHE Frequenz hat, z.B. 20MHz (Manchmal, je nach Quarz auch bei 16) auch
HS_OSC!
Zudem sind bei dir am Quarz keine Kondensatoren Angebracht!
Du brauchst noch von jedem Anschluss des Quarzes einen
Keramikkondensator mit einem Wert zwischen 15 bis 22pf nach Masse.
Gruß
Carsten
Was mir doch noch aufgefallen ist:
Die Warteschleife sieht mir irgendwie generiert aus, was ja auch nicht
schlimm ist, nur:
Andi schrieb:> ;PIC Time Delay = 0,80000000 s with Osc = 20000000000 Hz
20000000000 Hz?? -> 20.000.000.000 Hz -> 20GHz. Ich wünschte manchmal
mein PC wär so schnell ;)
Ich mein nur, evtl hat der Generator auch "falsch" gerechnet, wenn er
von 20GHz statt 20 MHz ausgegangen ist. Sollte trotzdem einen Takt
ausgeben, den du mit dem Oszi messen kannst.
Danke schonmal ,
Sind die Kondensatoren zwingend notwendig oder eher empfehlenswert? ;)
Werd die vermutlich eh einbauen, aber halt intressehalber .
Das mit der Versorgung war wenn nicht der einzige Fehler, beim
rumprobieren
hab ich auch beide verbunden.
Zu dem Reset-Eingang, man bin ich doof .
Hatte ich auch schon häufig vorher gelesen gehabt.. aber daran hab ich
natürlich dann nicht gedacht :)
Zu dem Programm,
reicht es dann wenn ich bei der Festlegung , also bei der config das "&
_HS_OS"
einfüge?
Zu der Sparsamkeit, da geht wirklich deutlich mehr ;)
Hätte einfach 2 Unterprogramme machen können und die immer aufrufen
können , aber das kommt später wenn der Rest erstmal stimmt .
Michael Skropski schrieb:> Was mir doch noch aufgefallen ist:>> Die Warteschleife sieht mir irgendwie generiert aus, was ja auch nicht> schlimm ist, nur:>> Andi schrieb:>> ;PIC Time Delay = 0,80000000 s with Osc = 20000000000 Hz>> 20000000000 Hz?? -> 20.000.000.000 Hz -> 20GHz. Ich wünschte manchmal> mein PC wär so schnell ;)>> Ich mein nur, evtl hat der Generator auch "falsch" gerechnet, wenn er> von 20GHz statt 20 MHz ausgegangen ist. Sollte trotzdem einen Takt> ausgeben, den du mit dem Oszi messen kannst.
Jo, gut gesehn ;)
Das ist natürlich Schwachsinn , da kommt 20000000Hz hin .
Andi schrieb:> Sind die Kondensatoren zwingend notwendig oder eher empfehlenswert? ;)> Werd die vermutlich eh einbauen, aber halt intressehalber .
Die sind notwendig;) Nach meinem Wissensstand bringen die den Quarz zum
schwingen.
Andi schrieb:> reicht es dann wenn ich bei der Festlegung , also bei der config das "&> _HS_OS" einfüge?
Kommt drauf an, wie der Assembler das umsetzt. Nur sehe ich keinen Sinn
darin den RC_OSC drin zu behalten, da du ihn schlicht nicht
angeschlossen hast.
Andi schrieb:> Zu der Sparsamkeit, da geht wirklich deutlich mehr ;)> Hätte einfach 2 Unterprogramme machen können und die immer aufrufen> können , aber das kommt später wenn der Rest erstmal stimmt .
War auch nur als Tipp gemeint. Was ich mir auch angewöhnt habe: Ich hab
ganz am Anfang immer die Initialisierung. Dort stehen ALLE TRIS und
PORT-Register, aber auch OSCCON, ADCON usw. Die passen zwar nicht immer,
aber dann vergesse ich nicht mal ein Register hinzuschreiben oder
nachzugucken, ob es das Register gibt und wenn nicht, ob es
vergleichbare gibt. Da AD-Wandlereingänge eine höhere Priorität haben,
als Digitale Eingänge (also vom vordefiniertem zustand der Register als
ADC-Input eingestellt sind), stell ich sie so gleich immer aus (es sei
denn ich brauch sie. Alles was ich nicht brauche, kommentiere ich aus.
Ich weiß nicht, ob du extra nachgeguckt hast, welche Einstellung im
OSCCON-Register ist, aber dort wird u.A. der Taktteiler eingestellt. Und
nur wenn du den weißt, kannst du auch eine Warteschleife programmieren
;)
Andi schrieb:> Jo, gut gesehn ;)> Das ist natürlich Schwachsinn , da kommt 20000000Hz hin .
Hast du die denn (evtl falsch) generieren lassen oder selbst
programmiert?
Michael Skropski schrieb:> Ich weiß nicht, ob du extra nachgeguckt hast, welche Einstellung im> OSCCON-Register ist, aber dort wird u.A. der Taktteiler eingestellt. Und> nur wenn du den weißt, kannst du auch eine Warteschleife programmieren> ;)
Ich hab ins DB geguckt. Der hat noch kein OSCCON-Register ;) Der ist
schon n Stück älter der PIC.
Edit:
Den PIC den ich u.A. für mein nächstes Projekt nehme ist der PIC16F1825,
der Anfang/Mitte letzen Jahres rausgekommen ist. Die neueren haben im
Datenblatt mehr Blockschaltbilder, wie z.B. vom Clock Source auf Seite
58:
http://ww1.microchip.com/downloads/en/DeviceDoc/41440B.pdf
Kann man gut sehen, wie was womit einstellbar ist.
Danke, ihr habt mir sehr geholfen.
Demnach müssen nur noch die Kondensatoren ergänzt werden.
Der Reset Pin auf High gelegt werden, sowie die Quarzfestlegung .
@Michael Skropski
Mich wundert nur warum es denn auch schon bei Leuten ohne geklappt hat..
aber hautpsache es geht mit :)
Zu der Sache mit den Delays, zuerst hatte ich die falsch generieren
lassen
, sie dann berichtigt , aber das Kommentar nicht ersetzt ;)
Daher mit Recht verwirrend.
Jo der Pic ist schon paar Jahre alt, da ich aber ja absoluter Beginner
bin, hab ich genommen was ich kriegen konnte, vorallem da ich die 16F871
direkt hatte ohne Umkosten :)
Andi schrieb:> @Michael Skropski> Mich wundert nur warum es denn auch schon bei Leuten ohne geklappt hat..> aber hautpsache es geht mit :)
Meinst du ohne Kondensatoren am Quarz? Wenn ja, es kann evtl auch mal
funktionieren. Ebenso ist es bei den Kondensatoren zwischen Vdd und GND
am PIC (den du übringens auch nicht drin hast) oder den Kondensatoren
vor und hinter einem Spannungsregler a la 7805. Es funktioniert evtl
ohne und bei vielen Aufgaben ist es meist auch nich sooooo wichtig,
trotzdem sollte man sich sowas angewöhnen, denn sonst funktioniert es
evtl mal nicht ganz oder der PIC verhällt sich eigenartig, man ist
verwirrt, weil es ja sonst immer funktioniert hat, nur um dann nach
langem Messen mit dem Oszi (was man evtl nicht mal zuhause hat)
rauszukriegen, dass die Versorgungsspannung unsauber ist.
Ich benutze ausschließlich neue(re) PICs. Sie sind meist schneller zu
takten, stromsparender, mehr Speicher, besser Configurierbar und das bei
ansich immer billigerem Preis. Wenn bei mir etwas eher unkritisch
zeittechnisch gesehen ist, bin ich froh, dass ich für provisorische
Aufbauten keinen Pullup-Widerstand an MCLR brauche (da deaktiviert/als
IO konfiguriert) und auch keinen Quarz + 2 Kondensatoren (da interner
Taktgeber). Ich spare Platz auf der Platine, Bauteile, Arbeitszeit,
nervem beim routen der Signale für eine Platine usw. Zugegeben haben
mache ältere PICs auch die Möglichkeit mit internen Taktgeber und
deaktivierung vom MCLR, doch da bleiben noch die anderen oben genannten
Bauteile.
Um einfach mal 3 von mir für sehr angenehm empfundene PICs zu erwähnen:
PIC12F1840, PIC16F1939, PIC18F26K22
Als Beispiel dein PIC16F871 vs. PIC16F1939 (beide 40pinner und DIP):
PIC16F871:
Programmspeicher: 3,5kByte
RAM: 128 Byte
EEPROM-Speicher: 64 Byte
IOs: 33
Max. CPU-Speed: 20MHz
Interner Oscillator: -
AD-Channels: 8 á 10bit
Communitation: 1xUART
Timer: 2x8bit, 1x16bit
Stromaufnahme RC,4MHz,3V Vdd: 2mA max
Reicheltpreis: 3,40€
PIC16F1939:
Programmspeicher: 28kByte
RAM: 1024 Byte
EEPROM-Speicher: 256 Byte
IOs: 35, 1 Input only
Max. CPU-Speed: 32MHz
Interner Oscillator: 32kHz, 32MHz
AD-Channels: 14 á 10bit
Communitation: 1xUART, 1xSPI/I²C
Timer: 4x8bit, 1x16bit
Stromaufnahme RC,4MHz,3V Vdd: 0,49mA max
Reicheltpreis: 2,15€
Deine Argumente sprechen echt schon ziemlich für einen neuen PIC ;)
Meine Pics wurden -soweit ich weiß- auch zu einer Zeit gekauft wo sie
relativ neu waren, und die mit integriertem Quarz deutlich teurer waren.
Außerdem hab ich gehört das die Genauigkeit bei integrierten Quarzen
sind soo super ist, stimmt das?
Aber bei meinem ersten Versuch habe ich erstmal das genommen was da war,
man will ja am Anfang noch nich soviel Geld dafür ausgeben ( bzw so wie
ich garkein Geld :D)
Welchen Sinn hat der Kondensator zwischen GND und VDD?
Könnte es mir nur vorstellen zwecks Spannungsspitzen beim einschalten..
Werde am Mittwoch mal berichten was dabei rauskam ;)
Vorher habe ich leider nur die Möglichkeit die programmtechnischen
Fehler
anzupassen..
>Meine Pics wurden -soweit ich weiß- auch zu einer Zeit gekauft wo sie>relativ neu waren, und die mit integriertem Quarz deutlich teurer waren.
Klar, grad wenn man welche hat und keine großen Ansprüche hat oder
Grundlagen lernen will. Nur wenn ich mir PICs kaufe, dann sind die nach
dem F vierstellig. Außer es ist alles schon fertig, also Schaltplan,
Layout und Programm, aus dem Internet.
>Außerdem hab ich gehört das die Genauigkeit bei integrierten Quarzen>sind soo super ist, stimmt das?
"sind" = "nicht"? Also es geht. Es heißt, dass die internen Taktgeber
bei den PICs genauer sind als bei AVRs, aber das hab ich nur mal
gelesen. Wenn du eine Relaiskarte machst, ein paar Tasten auswerten
willst, nen LED-Cube machen willst, reicht der massig aus. Ob du zum
entprellen der Taster 20ms oder 20,05ms wartest, ist ja total
unrelevant. Es gibt allerdings Sachen, wo er als zu ungenau gilt. z.B.:
für das USB-Modul, für das UART-Modul (zumindest bei hohen Baudraten)
und natürlich bei einer Uhr. Doch zumindest nach meiner Erfahrung ist
das meiste nicht soo sehr Zeitkritisch und der interne langt. Also
Tasterauswertung, I2C, SPI, LCD-Ansteuerung, Leds oder Relais
ansteuern.. Alles machbar.
> Welchen Sinn hat der Kondensator zwischen GND und VDD?
Durch die internen Schaltvorgänge kommen Störsignale aus dem IC in/auf
die Versorgungsleitung und kann andere Teile stören. Deswegen sollen
diese auch so dicht wie möglich an das IC und auch deswegen sollte mal
die Versorgungsspannung für Digital-ICs getrennt von der der Analog-ICs
routen. Wenn es denn so wichtig und genau ist/seib soll.
Servus,
alsoo
Prinzipiell geht es erstmal, danke :)
Denke das Hauptproblem war echt der Resetpin..
Der Quarz ist inzwischen auch richtig angeschlossen.
Und ja, mit "sind" war "nicht" gemeint ;)
Wie groß sollte der Kondensator etwa sein zwischen GND und VDD?
Und wie sollte man ihn schalten?
Einfach direkt vor Vdd?
Hab es erstmal ohne versucht, es geht, aber ich bekomm irgendwie kein
sauberes Signal raus..
Liegt zum einen auch an der Schaltung, da die irgendwie nur aus
Wachelkontakten bestand, war auch erstmal nur zusammengesteckt..
Werde es bald mal auf ne Platine löten, dann sollten die erstmal weg
sein.
Hoff ich jedenfalls.
Genauigkeit spielt schon eine wichtige Rolle..
Was kann man dafür noch machen um ein möglichst stabile und genaue
Schaltung zu erhalten? ( im Bezug auf den Pic)
Bzw, fallen dir noch irgendwelche typischen Fehler ein die für ein
unsauberes Signal sorgen?
Wenn ich direkt am Pic abgreife müsste auf dem Oszilloskop ja eine
Rechteckspannung angezeigt werden.
Bei einer groben Anzeige sieht es auch danach aus
Je feiner man es sich jedoch anzeigen lässt , desto weniger hat es mit
Rechteckspannung zu tun ... extreme Ungenauigkeiten die ich mir nicht
erklären kann .
Vielleicht könnt ihr / du mir helfen :)
Andi schrieb:> Wie groß sollte der Kondensator etwa sein zwischen GND und VDD?
So ein grober Standardwert sind 100nF Kondensatoren, also nich nur bei
PICs sondern allgemein ICs (auch 7400-Reihe etc). Und diesen so dicht
wie es geht an das IC dran. Manchmal sieht man auch einen Sockel, wo
schon gleich ein Kondensator eingelötet ist, doch dazu braucht man
natürlich ein IC, der die Versorgungsspannungspins an der Stelle hat.
Andi schrieb:> Hab es erstmal ohne versucht, es geht, aber ich bekomm irgendwie kein> sauberes Signal raus..
Wie ich meinte, meist funktioniert es auch ohne. Aber man sollte ihn
trotzdem hinmachen. Wegen der Sicherheit.
Andi schrieb:> Liegt zum einen auch an der Schaltung, da die irgendwie nur aus> Wachelkontakten bestand, war auch erstmal nur zusammengesteckt..
Wenn der Aufbau sche**e ist, dann kann das schon passieren. Genauso,
wenn irgendwas anderes am PIN hängt oder ein Messkopf nicht richtig
calibriert ist oder das Oszi falsch eingestellt ist. Hast du denn mit
dem Oszi die Möglichkeit nen Screenshot zu machen oder es
abzufotografieren? Und hast du am Programm was geändert? Wenn ja lad es
nochmal hoch hier
Andi schrieb:> Werde es bald mal auf ne Platine löten, dann sollten die erstmal weg> sein.> Hoff ich jedenfalls.>> Genauigkeit spielt schon eine wichtige Rolle..
Mach das, ist besser so. Genauigkeit ist relativ. Bei der Messung
zwischen Hamburg und Berlin kommts nicht auf n paar Meter an, jedoch
schon, wenn du ein Regal baust ;) Ich mein nur, dass man für manches es
genauer braucht und für manches nicht und man deshalb die Genauigkeit
festlegen muss und dementsprechend Datenblätter lesen und
dementsprechend genaue Bauteile kaufen muss.
Andi schrieb:> Je feiner man es sich jedoch anzeigen lässt , desto weniger hat es mit> Rechteckspannung zu tun ... extreme Ungenauigkeiten die ich mir nicht> erklären kann .
Wie extrem ist extrem? Schwingt das Signal nach dem Schalten oder passt
die Spannung oder Frequenz nicht? Also am besten Screenshot/Foto, da
sieht man es am besten.
Den Kondensator werde ich morgen dann mal zwichen schalten,
dann kommt auch gleich ein Foto vom Oszi und vom Aufbau.
Ich versuch mal die Ungenauigkeit zu beschreiben ;)
So sieht es etwas bei einer groben Einstellung aus, wie es auch sein
muss.
http://www.hobby-bastelecke.de/bilder/grundlagen/rechteckspannung.gif
Bei einer feinen Zeiteinstellung kommt das etwas sowas -nicht ganz so
extrem - zustande
http://www.physikblog.eu/wp-content/uploads/2008/08/dsc01430.jpg
Morgen kommen dann alle Bilder.
Evtl auch Vid
Am Quelltext wurde nur der Teil "_RC_OSC" durch "_HS_OSC" geändert
Joa
die Ungenauigkeit ist erstma weg, ohne Grund ;)
Denk mal das Video kann ich mir jetzt sparen ..
Wenn sich was neues ergibt melde ich mich wieder.
Aber jetzt schonmal vielen Dank für eure ganze Hilfe!
Michael Skropski schrieb:> Ich spare Platz auf der Platine, Bauteile, Arbeitszeit,> nervem beim routen der Signale für eine Platine usw. Zugegeben haben> mache ältere PICs auch die Möglichkeit mit internen Taktgeber und> deaktivierung vom MCLR, doch da bleiben noch die anderen oben genannten> Bauteile.
Vorsicht! Wenn bei älteren PICs der interne Takt aktiviert wird, sowie
der MCLR als IO genutzt wird, lassen sie sich gerne mal nicht mehr neu
programmieren. Ist mir schon oft bei einem PIC16F716 mit dem
Original-PICkit3 von MicroChip passiert. Meine Meinung dazu: Bau den
Quarz mit den beiden Kondensatoren dran und verzichte auf einen IO, und
das spart dann wirklich Nerven :-)
Gruß
Jens
Ein Grund mehr, keine älteren PICs mehr zu benutzen ;)
Joa, diese IOs benutze ich auch erst zum Schluss, wenn keine anderen
PINs mehr frei sind. Doch wenn alle belegt sind, bis auf die beiden vom
Oscillator und ich brauche noch einen oder auch 2 Pins, dann werde ich
trotzdem den PIC benutzen und keinen Größeren nehmen. Also statt einem
28pinner einen 40 Pinner oder statt einem 44TQFP nen 64TQFP. Probleme
hatte ich bisher auch nie. Hast du zu dem PIC schonmal die Errata
gelesen, ob das darin erwähnt ist?
Nabend zusammen,
ich muss mich leider nochmal mit dem selben Problem wie in dem ersten
Post melden..
Konkret: es hat alles funktioniert bis letzte Woche Donnerstag.
Dann haben wir es irgendwie geschafft - wir wissen bis heute nicht wie,
vermutlich irgendwie zuviel Spannung angelegt - einen Kurzschluss zu
produzieren , der Pic ist wohl abgeraucht...
Naja nicht schön, aber eig nicht so tragisch,
neuen Pic genommen (selber Typ) , Programm rauf, eingebaut , und es
passiert nix.
Es kommt einfach nichts raus...
Die Fehler die beim ersten Mal dafür verantwortlich waren können es
nicht sein.
Vielleicht hat sich mit dem Pic der Quarz verabschiedet?
Was ich mir eigentlich nicht vorstellen kann..
Ich hoffe ihr habt irgendwelche Ideen wo der Fehler liegt.
Paar Bilder vom Aufbau häng ich noch ran.
Noch paar Daten zu den Bauelementen:
Die Kondensatoren am Quarz haben beide 15pF.
Der Wiederstand dabei ist 270 ohm.
Der Quarz hat 20Mhz.
Es liegen 5V an.
Ausgang vom Pic ist RB0.
Also 2 Sachen.
1. So wie ich das Sehe geht +5V von links zum MCLR, von da aus zum Vdd
PIN 11 und von da aus zu Vdd PIN 32. Deine Brücke von Vss zu Vss, also
PIN 12 zu 31 ist zwar da, jedoch sehe ich auf den (recht großen ;) )
Bildern nicht, dass da auch noch n anderes Kabel ankommt. Deine Masse
kommt von rechts und geht an die Kondensatoren, jedoch nicht zum PIC.
2. Der Quarz ist zu weit weg. Am besten den Quarz direkt in die nächsten
Löcher und die Kondensatoren direkt dahinter.
Sonstige Anmerkungen: Den Widerstand beim Quarz dürftest du eigentlich
nicht brauchen. Im Datenblatt steht: "A series resistor (Rs) may be
required for
AT strip cut crystals.", also wird VIELLEICHT benötigt bei AT Strip Cut
Crystals. Die Quarze, die ich wenn benutzt habe, waren die
Standard-Teile von Reichelt und ich hab nie einen Widerstand gebraucht.
Und.. Was sind das für Kondensatoren?^^ Die hab ich ja noch nie gesehn
;)
Andi schrieb:> und das Programm ist dasselbe wie oben geschrieben, nur mit "_RC_OSC"> statt "_HS_OSC".
Ich hoffe, du hast hier nen Dreher drin ;) Es muss _HS_OSC sein, statt
(wie oben im Code) _RC_OSC.
Oh... Das mit der Masse stimmt... keine Ahnung wie ich die übersehn
konnte,
klar, danke ;)
Zu 2.
Spielt die Entfernung echt eine so extreme Rolle ?
Hätt ich nicht gedacht. Klar je näher desto weniger Wiederstände durch
Kabel, und minimal kürzere Zeit beim Stromfluss , aber das es so wichtig
ist, ist gut zu wissen.
Zu dem Wiederstand, naja ich hatte in nem Buch über Pics die Schaltung
zum Aufbau bei nem 20Mhz Quarz gefunden, da dachte ich , kann nicht
schaden ;)
Vorallem da es ja nur 270 ohm sind .
Jaa die Kondensatoren sind mit Sicherheit bestimmt doppelt so alt wie
ich und kommen entweder DDR oder noch früher bzw weiter östlicher her :D
Hatte auch einen 270ohm Wiederstand in der Größe einer AAA Batterie mit
einem "Russenstern " drauf gefunden gehabt .
Alles halbe Antiquitäten ;)
Jup da hab ich mich bei dem Beitrag verschrieben, natürlich andersrum.
Andi schrieb:> Spielt die Entfernung echt eine so extreme Rolle ?
Je länger die Leitung, desto höher ist die Kapazität zwischen den beiden
Leitungen und könnte stören. Genauso wie die 100nF an den
Versorgungspins. Es KANN funktionieren, aber evtl tuts das irgendwann
mal nicht, wenn irgendwas stört. Und dann ist die Suche lang und der
Ärger groß, denn die Schaltung hat ja schon funktioniert.. ;)
Funktionierts denn jetzt?^^
So ich meld mich mal wieder.
Also es geht jetzt erstma wieder alles , danke :)
Nur glaub ich, dass das Programm nicht so geht wie es gehen soll.
Im Simulationsprogramm wird mir eine regelmäßige Rechteckspannung
angezeigt, und genau da ist das Problem.
Theoretisch sollte eine unregelmäßige Absenkung von 100ms low und 900ms
high,
bzw von 200ms low und 800ms high vorkommen.
Und von dieser Unregelmäßigkeit kann ich beim simulierten Programm
nichts erkennen..
Ich vermute, dass das Programm bei den Schleifen , bzw eher beim
Aufrufen dieser liegt.
Ich hoffe ihr konnt mir nochmal helfen ;)
P.s generiert wurde die Schleifen mit :
http://techref.massmind.org/cgi-bin/delay.exe
hallo andi,
hab gerade mal deinen "leidensweg" durchgelesen ;-)
hmmm...trau es mich kaum zu fragen, aber kennst du als PIC-anwender die
page von sprut??
hatte vor etlichen jahren auch mit pic-controllern angefangen, dabei war
sprut ein guter lehrer, dort gibts wirklich gute tips für den einstig in
die manchmal nicht ganz so triviale pic-welt ;-)
hier der link ---> www.sprut.de
Hallo Andi,
ich kann "pom pete" nur zustimmen. Auch ich habe mit Hilfe der Seite von
"sprut" [http://www.sprut.de/index.htm] den Umgang mit den PICs gelernt
(und lerne auch noch heute).
Lese Dir mal PORTB_TEST.asm (am besten lesbar wenn in MPLAB geladen)
durch, vielleicht gibt es Dir einige Anregungen.
Es ist auch vorteilhaft, wenn man sich von Anfang an einen guten
Programmierstil zulegt. Das bedeutet:
- Übersichtlich gegliederter Programmaufbau
- Erläuterung hinter jeder Zeile Programmcoce. Nur so kannst Du oder
auch ein anderer der Dir helfen soll, den Code wieder rasch verstehen.
Ich habe Dir mal ein Beispiel angehängt, wie ich - so auf die Schnelle -
Dein Programm erstellt haben würde. Einige Anmerkungen habe ich
beigefügt. Fehlerfreiheit ist nicht garantiert, jedenfalls läuft es im
Debugger "MPLAB-SIM" durch.
Dieser Simulator, integriert in MPLAB, erlaubt Dir mit Hilfe des
"Watch-Fensters" die Überwachung des Programmablaufs. Auch das
"Stop-Fenster" ist zur Zeitmessung hilfreich. Der "Stimulus" erlaubt Dir
z.B. Impulsfolgen (z.B. Tastendruck) usw an einen oder mehrere Eingänge
des µC zu legen.
Viel Spass mit den PICs
Ottmar
Ja, die Seite kannte ich schon ;)
@Ottmar , vielen Dank ;)
Musste das Programm zwar etwas abwandeln aber dafür hat es heute
komplett mit allem funktioniert :)
Vielen vielen Dank !!
Eure Hilfe war echt super !
Mit freundlichen Grüßen
Andi