PIC utan Kristall
PIC utan Kristall
Kan man köra picen utan kristall om den har inbyggd oscillator?
Den går visserligen inte lika snabbt men kan man använda den som vanligt?
Den går visserligen inte lika snabbt men kan man använda den som vanligt?
> Kan man köra picen utan kristall om den har inbyggd oscillator?
Hm, det är väl själva meningen ?
Referera gärna till databladet så att det går att kolla vad
det var som du inte riktigt förstog ! Då blir det lättare
att förtydliga.
> Den går visserligen inte lika snabbt men kan man använda den som vanligt?
Vad är "som vanligt" för dig ?
> Hur kritiskt är det? Varför är det sämre precision?
Hur kritiskt det är beror på vad du ska göra.
*Varför* det är sämre precision ? Tja, "by design" kanske ?
> beror på t.ex temperatur mm, men 1 till 2% avvikelse från grundfrekvensen kan du räkna med iaf
Går inte att ge något generellt svar, och det finns inte någon anledning
eftersom DATABLADET har uppgifter om detta för varje PIC modell.
Ca 2% för den äldre INTRC, bättre än 1% för den nyare INTOSC (i princip).
> Kritiskt är om du t.ex. ska mäta exakta absoluta tidsintervall...
Det går inte med något, du får alltid ett mer eller mindre stort fel.
*Hur* stort fel som är acceptabelt avgör val av oscillator.
> eller köra snabb och/eller intensiv asynkron kommunikation.
Rätt om du tänker på att sätta baudrate räknaren för att få rätt baudrate.
Fel om du menar att onoggranheten i klockan har med baudraten att göra.
Hm, det är väl själva meningen ?

Referera gärna till databladet så att det går att kolla vad
det var som du inte riktigt förstog ! Då blir det lättare
att förtydliga.
> Den går visserligen inte lika snabbt men kan man använda den som vanligt?
Vad är "som vanligt" för dig ?
> Hur kritiskt är det? Varför är det sämre precision?
Hur kritiskt det är beror på vad du ska göra.
*Varför* det är sämre precision ? Tja, "by design" kanske ?

> beror på t.ex temperatur mm, men 1 till 2% avvikelse från grundfrekvensen kan du räkna med iaf
Går inte att ge något generellt svar, och det finns inte någon anledning
eftersom DATABLADET har uppgifter om detta för varje PIC modell.
Ca 2% för den äldre INTRC, bättre än 1% för den nyare INTOSC (i princip).
> Kritiskt är om du t.ex. ska mäta exakta absoluta tidsintervall...
Det går inte med något, du får alltid ett mer eller mindre stort fel.
*Hur* stort fel som är acceptabelt avgör val av oscillator.
> eller köra snabb och/eller intensiv asynkron kommunikation.
Rätt om du tänker på att sätta baudrate räknaren för att få rätt baudrate.
Fel om du menar att onoggranheten i klockan har med baudraten att göra.
Det beror väl på vilken PIC kanske?
Jag har senast använt mest PIC16F628, den har en intern oscillator som i de flesta fall har "gått rätt". Det var bara i ett fall jag var tvungen att stoppa på en kristall för att seriekomunikationen (i drift) med datorn skulle fungera.
Har använt PIC12F629 som också har en inbyggd oscillator, och där får man en fråga i IC-PROG om man vill ändra ett hex-värde där man kan fintrimma klockan, men har inte tagit reda på hur.
Exvis PIC16F84 saknar intern klocka, men jag tror att man kan lägga ett RC nät extern om man inte vill använa kristall. Fast en kristall kostar å andra sidan bara 12kr hos Kjell & Co.
Har använt PIC12F629 som också har en inbyggd oscillator, och där får man en fråga i IC-PROG om man vill ändra ett hex-värde där man kan fintrimma klockan, men har inte tagit reda på hur.
Exvis PIC16F84 saknar intern klocka, men jag tror att man kan lägga ett RC nät extern om man inte vill använa kristall. Fast en kristall kostar å andra sidan bara 12kr hos Kjell & Co.
> Jag har senast använt mest PIC16F628, den har en intern oscillator
> som i de flesta fall har "gått rätt".
Som alltså har den äldre "INTRC" vilken ligger "on the edge" för USART
kommunikation. Fungerar på vissa exemplar, vid viss temperatur och
vid viss matningsspänning...
> Har använt PIC12F629 som också har en inbyggd oscillator,
D.v.s den nyare "INTOSC" som är fabrikskallibrerad till 1% (inom vissa
gränser, se databladet).
> och där får man en fråga i IC-PROG om man vill ändra ett hex-värde
> där man kan fintrimma klockan, men har inte tagit reda på hur.
Korkat verktyg som ens frågar !
Jag hoppas att det i alla fall *behåller* det värde som Microchip
har lagt in vid tillverkningen. Annars ska verktyget i soptunnan direkt !!
Gör den inte det gäller inte lägre 1% kallibreringen.
> Exvis PIC16F84 saknar intern klocka,
Spelar ingen större roll eftersom modellen är "stendöd" i alla fall.
ankan:
> En kristall tar visserligen inte mycket plats men varför inte
> använda den interna om man ändå har en.
Har du inte läst tidigare svar i tråden ??
> som i de flesta fall har "gått rätt".
Som alltså har den äldre "INTRC" vilken ligger "on the edge" för USART
kommunikation. Fungerar på vissa exemplar, vid viss temperatur och
vid viss matningsspänning...
> Har använt PIC12F629 som också har en inbyggd oscillator,
D.v.s den nyare "INTOSC" som är fabrikskallibrerad till 1% (inom vissa
gränser, se databladet).
> och där får man en fråga i IC-PROG om man vill ändra ett hex-värde
> där man kan fintrimma klockan, men har inte tagit reda på hur.
Korkat verktyg som ens frågar !
Jag hoppas att det i alla fall *behåller* det värde som Microchip
har lagt in vid tillverkningen. Annars ska verktyget i soptunnan direkt !!
Gör den inte det gäller inte lägre 1% kallibreringen.
> Exvis PIC16F84 saknar intern klocka,
Spelar ingen större roll eftersom modellen är "stendöd" i alla fall.
ankan:
> En kristall tar visserligen inte mycket plats men varför inte
> använda den interna om man ändå har en.
Har du inte läst tidigare svar i tråden ??
Re: Det beror väl på vilken PIC kanske?
Det där är märkligt. Enda sättet jag lyckats komma runt problemet har varit att läsa in kalibreringsvärdet (en RETLW-instruktion) och sedan lägga in den instruktionen på sista positionen i programmet. Men det är ju en fullösning eftersom det blir omständigt när man ska byta IC-krets. Använder inte IC-PROG längre.manw skrev:Har använt PIC12F629 som också har en inbyggd oscillator, och där får man en fråga i IC-PROG om man vill ändra ett hex-värde där man kan fintrimma klockan, men har inte tagit reda på hur.
Vilken programmerare som helst värd namnet ska fixa detta automatiskt.
D.v.s först läsa cal-värdet, sedan lägga tillbaka det under programmeringen.
Det är en annan sak om man har klantat sig och t.ex kört en "erase all"
utan att först noterat värdet...
EDIT :
Notera också att senare processorer (t.ex 12F683 i just 8-pinnars kapsel)
har en INTOSC *utan* kalliberingsvärde. Så där finns inte detta problem.
I princip är det så för alla modeller med 8 Mhz INTOSC, vilket är den
nyare typen jämfört med 4 Mhz INTOSC.
EDIT_2 :
Lite parentetiskt, men notera också att många nyare processorer
i PIC18-serien har en 8 Mhz INTOSC som man även kan köra
genom PPL'en, och alltså köra 32 Mhz utan extern kristall eller klocka.
Då ligger man inte långt från maxhastigheten på 40 Mhz...
D.v.s först läsa cal-värdet, sedan lägga tillbaka det under programmeringen.
Det är en annan sak om man har klantat sig och t.ex kört en "erase all"
utan att först noterat värdet...

EDIT :
Notera också att senare processorer (t.ex 12F683 i just 8-pinnars kapsel)
har en INTOSC *utan* kalliberingsvärde. Så där finns inte detta problem.
I princip är det så för alla modeller med 8 Mhz INTOSC, vilket är den
nyare typen jämfört med 4 Mhz INTOSC.
EDIT_2 :
Lite parentetiskt, men notera också att många nyare processorer
i PIC18-serien har en 8 Mhz INTOSC som man även kan köra
genom PPL'en, och alltså köra 32 Mhz utan extern kristall eller klocka.
Då ligger man inte långt från maxhastigheten på 40 Mhz...
Kommunikation mot dator
Har inte lyckats få datakommunikationen mot datorn att lira.
Satte ihop en wisp628 idag vilken fungerar att bränna min 16F88 utan problem. Men jag har inte lyckats få kretsen att prata med datorn.
Har provat Tinybootloader http://www.etc.ugal.ro/cchiculita/softw ... loader.htm för just 16f88 med medföljande program vilket borde fungera men de har ingen kontakt.
Jag provade båda via Wisp628 (lödde fast de extra två sladdarna på kontakten) och en lös MAX232 krets med kondingar.
Ingen av dem gav utslag. Varken i terminalen eller programmet som tinybootloader skulle kunna jobba mot.
Provade annan 16f88 för att det inte skulle vara den det var fel på.
Någon som har förslag på annan testkod jag kan prova på min pic eller hur jag ska felsöka det jag har. Känns inte som kodfel när jag även provade med tinybootloader.
Vad ska jag felsöka och hur?
Satte ihop en wisp628 idag vilken fungerar att bränna min 16F88 utan problem. Men jag har inte lyckats få kretsen att prata med datorn.
Har provat Tinybootloader http://www.etc.ugal.ro/cchiculita/softw ... loader.htm för just 16f88 med medföljande program vilket borde fungera men de har ingen kontakt.
Jag provade båda via Wisp628 (lödde fast de extra två sladdarna på kontakten) och en lös MAX232 krets med kondingar.
Ingen av dem gav utslag. Varken i terminalen eller programmet som tinybootloader skulle kunna jobba mot.
Provade annan 16f88 för att det inte skulle vara den det var fel på.
Någon som har förslag på annan testkod jag kan prova på min pic eller hur jag ska felsöka det jag har. Känns inte som kodfel när jag även provade med tinybootloader.
Vad ska jag felsöka och hur?
Det är lite oklart vad du vill testa.
Är det bootloadern eller RS232 kommunikationen ?
Har du alltså tagit ett beslut att du vill köra med bootloader ?
Sen finns det tydligen en del anpassningar i bootloadern
att göra, och det framgår inte av ditt inlägg vilka du har gjort...
> Någon som har förslag på annan testkod
Om det enbart är RS232 du vill testa, så kan du ju alltid
skriva ett litet testprog som enbart sätter upp USART'en och
skickar något. Om det är så, så är det att röra till det i onödan
med en bootloader också...
Men, varför vill du använda en bootloader ? Är det för något
speciellt projekt ?
Är det bootloadern eller RS232 kommunikationen ?
Har du alltså tagit ett beslut att du vill köra med bootloader ?
Sen finns det tydligen en del anpassningar i bootloadern
att göra, och det framgår inte av ditt inlägg vilka du har gjort...
> Någon som har förslag på annan testkod
Om det enbart är RS232 du vill testa, så kan du ju alltid
skriva ett litet testprog som enbart sätter upp USART'en och
skickar något. Om det är så, så är det att röra till det i onödan
med en bootloader också...
Men, varför vill du använda en bootloader ? Är det för något
speciellt projekt ?