Steve Beydekerken
steve
Hallo,
Bij de meeste projecten gebruik ik een PIC16F648A. Hierbij gebruik ik altijd de interne oscillator (4MHz).
Nu ben ik voor de eerste keer begonnen aan een RS232 verbinding met de USART. Zowel het zenden als het ontvangen werken perfect voor 9600Baud. Voor een bepaalde koppeling heb ik een snelheid van 57600 Baud nodig.
Bij gebruik van de interne oscillator, maar ook bij een kristal van 4MHz, is de foutenmarge van de SPBRG en de BRGH te groot.
Ik ontvang tekens, maar niet de correcte.
Volgens de datasheet werk ik best met een kristal van 20MHz.
Hier loopt het fout. Ik zie waarschijnlijk iets doms over het hoofd.
Het lukt me op geen enkele manier op de PIC op te starten met een externe kristal boven de 4MHZ.
Volgens de datasheet moet vanaf 8MHz de mode op HS, eronder moet hij op XT. De condensatoren tussen de 15 en de 30pF, deze heb ik op 18pF
De config bit stel ik samen met de 'configure/confuguration bits' uit de MPLAB IDE. Programmeren doe ik met een PM3.
Als ik een 4MHz kristal neem en ik zet hem op HS dan start hij natuurlijk ook niet op. Herprogrammeer ik hem met de mode op XT doet hij het wel.
Als ik of de 8MHz of 20MHz kristal aansluit en hij staat op HS meet ik wel degelijk een verschillend signaal op de OSC pennen.
Het 'opstarten' van de PIC herken ik aan het feit dat hij normaal 2 bytes verzendt als er spanning op komt.
Blijkbaar werkt alles tem 4MHz, en alles wat daarboven zit niet.
Ik heb de ganse datasheet al meermaals doorlopen, maar ik vind geen instelling om de frequentie aan te passen.
Heeft er iemand een idee in welke richting ik dit moet zoeken?
Alvast bedankt.
hadv
Just find out what you like and let it kill you
Vreemde zaak. Ik heb nog nooit problemen gehad met externe kristallen van 8MHz of meer. En in wat je beschrijft ten aanzien van de instelling zie ik zo gauw geen zaken die niet kloppen.
Ik zou een stapje teruggaan. 8/20 MHz kristal en dan een simpel blink-a-led programmaatje. Als dat werkt dan weet je dat het niet aan de hardware ligt.
Fire_IC
"If I would have listened to my customers, I would have invented a faster horse." - Henry Ford
Kun je ook je huidige programma code laten zien? En weet je zeker dat je kristal oscileerd, m.a.w. is deze niet stuk?
Steve Beydekerken
steve
Inderdaad. De PIC werkt wel.
Met een eenvoudig led programmaatje zie ik dat er nog leven in zit.
De eerlijkheid gebied mij ook te zeggen dat ik zo dom ben geweest om te vertrouwen op een zendroutine. Die is natuurlijk gebaseerd op 4MHz.ipv 20MHz.
Duizendmaal excuses voor de domme vraag, dit had ik zelf en sneller moeten vinden.
Toch bedankt voor de moeite.
Steve Beydekerken
steve
Ik werk in MPLAB, enkel met asm.
Ik laat verschillende PICs met elkaar communiceren over een 2draads bus. Dit gebeurt adhv een zelf geknutseld protocol.
Al jaren werk ik met PICs met interne oscillator en ik heb dus bepaalde gewoontes/afwijkingen aangeleerd.
Het protocol dateert van in de beginperiode en aangezien dat goed werkt heb ik daar ook al lange tijd niet meer naar gekeken.
Door de frequentie van de PIC nu plots aan te passen, gaat de snelheid van de pulstrein die de PIC verstuurt, nu ook 5 keer sneller dan normaal, waardoor de andere modules deze data niet verstaan.
Door de raad van hadv om er een blink-a-led in te steken, zag ik dus dat de knipperfunctie dus veel sneller gaat dan op de 4Mhz die ik gewoon ben.
Toen is letterlijk het licht gaan branden.
Jullie kennen het waarschijnlijk wel: op het eerste moment de grootste euforie, want het werkt, maar een paar tellen later komen het schaamrood, de vloeken en andere krachttermen opzetten.
Ik begrijp dus dat jij het niet meer begrijpt. Ik begrijp dus ook niet waarom ik zo'n domme vraag gesteld heb.
r3dnax
Nieuwe website: http://members.home.nl/xanderhuisman/Sites/Xander/home.html
Liever dat je nu weet dat je wat(en je weet wat) fout hebt, dan je er een nacht niet van slaapt en er niet uitkomt:)
Steve Beydekerken
steve
Inderdaad, ik kan er van meespreken.
Deze nacht zal ik wel slapen, want de vorige nacht lukte het inderdaad niet.