PIC-grund på exprimentkort - Fungerar i asm -

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

PIC-grund på exprimentkort - Fungerar i asm -

Inlägg av JimmyAndersson »

Labbplatta (såndär vit med många hål) har inte fungerat så bra när jag kört med PIC-kretsar och höga frekvenser (40MHz). Så jag tänkte löda ihop ett exprimentkort, med det viktigaste, dvs kristall mm.

(Ritningen är gjord i Photoshop, så mått mm stämmer inte.)
Bild
De inringade anslutningarna är till programmeraren.
Övriga anslutningar ska gå till labbplattan.

C1: 2200µF
C2: 47µF
C3: 100nF
C4: 47nF (inte med på ritningen)
R: 1kohm
Kristall: 10MHz
Kondensatorer till kristallen: 22pF.

Detta borde väl ge en spänningsmatning "utan" störningar (om nätagget redan är stabilt) och det borde väl fungera mycket bättre än att montera allt löst på labbplatta?

edit: Justerade rubriken........
Senast redigerad av JimmyAndersson 7 oktober 2005, 05:24:44, redigerad totalt 7 gånger.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Lite många kondingar, kanske... :-)

De större (elyter) är för att "ta bort" lågfrekventa störningar, som nätbrum (50 Hz) från nätdelen. De mindre är för att "ta bort" högfrekventa störningar som genereras av alla digitala kretser, även PIC'ar. Alltså igentligen mest för att inte PIC'en skall störa *andra* kretsar. Dock räcker det oftast med en av varje...

Om det kommer att fungera "mycket bättre" är väll frågan. Om jag har förstått rätt, så bygger du en lite modul som sedan kan monteras på labbplattan (?). Det kan väll vara praktiskt om inte annat !

När det gäller labbplattan, så beror det ju även mycket på *hur* man kopplar in prylarna. Om jag inte minns fel från din bild i den andra tråden, så hade du t.ex kopplat 22 pF kondingarna via några extra trådar, jag brukar bocka ut benen så att 22 pF kondongarna kan anslutas direkt mellan OSC1/2 och jord-skenan på plattan. Och sedan kristallen direkt på samma ben. Så om man tittar på bilden i tråd http://www.elektronikforumet.com/forum/ ... php?t=7041 så skulle kristallen flyttas in mot processorn, kondingarna flyttas så att de sitter utanför kristallen kopplade direkt mot jord (om det går). Jag skulle göra så, inte för att det skall fungera "bättre", utan för att blir färre trådar och går snabbare att koppla upp... :-)

På bilden är ju inte bara OSC1/2 pinnarna först kopplade med trådar till kondingarna, utan kondingarna är dessutom kopplade till jord med ytterligare en tråd. Man kan också gärna sätta en 100nF ker konding rakt över PICen mellan 5V och jord.

Sen, med det sagt, så är det ju även så att en del PIC18Fxxxx (alltså en del av de "fyr-siffriga" 18F) har haft problem med högre hastigheter...

Dessutom, när det gäller 10/40 Mhz. Det är ju samma prylar *utanför* PICen i både 10 och 40 Mhz fallet, så fungerar det i 10 Mhz, så fungerar det normalt även i 40 Mhz. Det uppstår däremot andra fenomen vid högre hastighet, som t.ex read-modify-write problemet.
Hempe
Inlägg: 132
Blev medlem: 8 januari 2004, 17:23:19
Ort: Sundbyberg
Kontakt:

Inlägg av Hempe »

Labbplattans design gör ju att det blir en del kapacitans mellan de intilliggande raderna. Det kan skapa vissa problem vid högre frekvenser.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jo, men min poäng är att för en PIC18 så är det ingen skillnad mellan 10 och 40 Mhz när det gäller signalerna *utanför* PIC'en. 40Mhz klockan är intern och kristall m.m är fortfarande 10 Mhz...
Hempe
Inlägg: 132
Blev medlem: 8 januari 2004, 17:23:19
Ort: Sundbyberg
Kontakt:

Inlägg av Hempe »

Då har du rätt, och jag vet inte om det skulle kunna ställa till problem ändå. Men det kan vara något att tänka på vid experimenterande med högre frekvenser.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

En sak som brukar "ställa till det" när man växlar mellan 10 och 40 Mhz, är om man "togglar" enstaka bitar i en port med BSF/BCF. P.g.a att instruktionerna kommer 4 gånger snabbare så kan man mycket väl på åka på "read-modify-write" problemet with 40 Mhz, fast det fungerade helt OK vid 10...
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Det var riktigt praktiskt att ha allt på ett litet kort! Jo, det blev många kondingar, men jag brukar ta till lite extra när jag vill få bort eventuella störningar. :)

10MHz fungerar fint, men inte 40MHz. Har även testat att bygga om allt på labbplattan en gång till. Dessvärre har jag 1.3cm avstånd mellan jord-skenan och de andra banorna som t.ex OSC1/2 är kopplade till. Därför använde jag extra sladdar till kondingarna. Kristallen har jag däremot flyttat in.

Men som sagt, Kristallen är ju på 10MHz oavsett om PIC-kretsen kör med 40MHz eller 10MHz och eftersom det fungerar bra med 10MHz så borde själva uppkopplingen vara ok.


Det borde ju gå att göra ett enkelt test som inte ger "read-modify-write"-problemet? Hur...? :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Alltså, som jag sa tidigare, så hade flera av de tidigare 18(L)Fxxxx modellerna en del problem vid 40Mhz. Var det dig som jag skickade ett par "F" modeller till ? Är det dom du testar med ?
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Jo det stämmer. Har inte testat 18F2320 ännu, men 18F1320 uppförde sig likadant: Fungerar med 10MHz men "fryser" vid 40MHz.
Gjorde ett testprogram som blinkar med en lysdiod. Det verkar som om den bara kör första raden i koden, sedan "låser" den sig.
Såhär alltså:

Kod: Markera allt

program Test40Mhz

TRISB = $00
PORTB = $FF  <----Här stannar den, oavsett om jag kör $FF eller $00.
delay_ms(500)
PORTB = $00
delay_ms(500)
PORTB = $FF
delay_ms(500)
PORTB = $00
end.
Finns det något annat jag kan testa?
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Testa en ytmonterad keramisk konding direkt mellan padarna för matningen - borde inte behövas, men vem vet? Har du valt ocs-start-timer? Har du kollat med oscilliscop att kristallen svänger som den skall? Testat en annan kristall? Testat en annan pic?
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Börjar från slutet:

Jag har provat två PIC av samma sort (PIC18LF1320) och en PIC18F1320 från en annna serie.

Har bara en till kristall, dessvärre på 14MHz. Inte testad på PIC-kretsen......
Men den på 10MHz som jag kör med svänger bra i just 10MHz. När man kör med 40MHz så "trimmas" (enkelt uttryckt) 10MHz upp till 40MHz internt i PIC-kretsen, så just kristallen bör vara ok. (särskillt eftersom jag inte har något oscilloscop :lol: )


Oscillator Start-up Timer, (OST...) har jag inte valt. Har kollat databladet, men hittar inte vad jag ska välja. OSCCON-registret? Behöver med andra ord lite hjälp här....
Om inställningarna i OST är ett måste för att kunna köra med 40MHz så tycker jag att det borde stå med stora bokstäver på databladets första sida. :)

Dessvärre har jag ingen ytmonterad keramisk kondensator. Annars hade det varit värt ett test, för som sagt: vem vet...?


Jag ska fortsätta läsa databladet angående OST, men ni får hemskt gärna skriva mer om det. :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OST -> CONFIG.

OST gör att programköringen fördröjs något för att kristall-
oscillatorn ska hinna bli stabil, fungerar gör det hur som helst.

Alltså, jag tror att du är lite på fel spår.
Det är normalt inte några problem att köra en PIC18 i 40 Mhz
på en labbplatta. Jag tror att de exemplar du har helt enkelt
hör till de tidigare kisel-serier som hade problem vid 40 Mhz.
Eller så har du gjort någon annan tabbe. Svårt att säga utan
att se den testkod som du kör med (alltså en *riktig* kod i
assembler där man ser allt, inte något i Basic !).

I morgon skall jag koppla upp en likadan och prova...

Hur viktigt är det just nu att köra i 40 Mhz ? Är det helt avgörande
för det du vill göra ?
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Kolla matningsspänningen kanske? Ju fortare man kör desto mer kritiskt är det att spänningen är rätt har jag för mig ifrån iaf de "gamla" picar jag kör med. Sen att jag aldrig ens testat att mata en pic med annat än 5v är en annan sak... ;) Men enligt databladet skall man kunna gå ner i spänning vid lägre frekvenser. Mät iaf och är det inte det så är det nog som sodjan säger, taskiga kretsar.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Ska bli intressant att se vad du får för resultat.

Tills vidare klarar jag mig utan problem med 10MHz. Varken mekaniken eller programmet är så pass klart ännu. Så än så länge vet jag inte om den måste köra i just 40MHz när projektet är klart.
Men det är klart, det kan ju alltid vara bra att ha den möjligheten. :)
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

JimmyAndersson skrev:Jo det stämmer. Har inte testat 18F2320 ännu, men 18F1320 uppförde sig likadant: Fungerar med 10MHz men "fryser" vid 40MHz.
Gjorde ett testprogram som blinkar med en lysdiod. Det verkar som om den bara kör första raden i koden, sedan "låser" den sig.
Såhär alltså:

Kod: Markera allt

program Test40Mhz

TRISB = $00
PORTB = $FF  <----Här stannar den, oavsett om jag kör $FF eller $00.
delay_ms(500)
PORTB = $00
delay_ms(500)
PORTB = $FF
delay_ms(500)
PORTB = $00
end.
Finns det något annat jag kan testa?
Inte för att det kanske är mycket till hjälp, men har du testat att bara sätta en utgång på PORTB? t.ex. TRISB=$FE och PORTB=$01.

Jag skulle testat tagit bort programmerarens pinnar (om dom nu är anslutna) för att utesluta "störningar utifrån". Helt enkelt minimera externa komponenter, ifall du har någe mer än du ritat i första posten.

Har du satt någon "switch" som talar om för BASIC:en att du klockar 40MHz och inte 10MHz, så delay_ms() funktionen räknar rätt?

Skumt fel, inge roligt att felsöka sånt. Bättre när ett rökmoln stiger upp från kretsen. Då är det iaf definitivt. :lol:

Mats
Skriv svar