Klarar processorn det? (Matris och RTC)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Klarar processorn det? (Matris och RTC)

Inlägg av jack »

Hej, länge sedan jag skrev här känns det som..

Håller allafall på att skissar på ett projekt... Eftersom programmering är min svagare sida, så undrar jag följande:

Klarar en PIC16F628A med intern kristall, att "pulsa" en 6x5 LED-matris, samtidigt som den håller koll på tiden? Behöver ingen superexakt tidsmätning. Drar den sig några sekunder om dagen så är det helt okej..

Sen vill jag ju slippa skriva Asm också :) Så om det går i C så vore det ju roligt..

Kan förstå att det är ganska svårt att göra en uppskattning utan att verkligen testa, men nån liten "hint" skulle verkligen uppskattas!

Tacksam för hjälp.

//Jack
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 »

Visst går det - Det bör tilloch med gå att lösa i C även om det är lättare i ASM
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg av jack »

Trevligt att höra! Och tack för ett snabbt svar!

En fråga till:

Blir det problem i programmeringen om jag drar de 6+5 trådarna från matrisern till helt olika IO-portar på processorn? För att underlätta routningen. Om jag tex drar "Kolumn 1" till RA0 och "Kolumn 2" till RA7/OSC1?
sodjan
EF Sponsor
Inlägg: 43250
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Klarar en PIC16F628A med intern kristall,

*Ingen* PIC har en "intern kristall".
Däremot har de olika varianter av interna oscillatorer med olika
hastighet och precision. Kan kallas för INTRC eller INTOSC.
Eller så anslutar man en *extern* kristall...

> Drar den sig några sekunder om dagen så är det helt okej..

Kolla i databladet vilken precision som INTOSC i 16F628A har.
Sedan kan du själv räkna ut hur många sekunder per dag det blir...

> Visst går det -

Dra sig "några sekunder" om dagen ? På en 2%-ig INTOSC ?
Visst om "några sekunder" får vara drygt 1700 sekunder... :-)

I princip spelar det ingen större roll hur du kopplar dina lysdioder.
Det är ett rellativt långsamt förlopp (multiplexningen av LED-matrisen)
så koden har gott om tid att fixa till det.
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 »

Nej, inte så länge du kör med skapligt hög klockfrekvens - kör du med 32kHz så kan det bli lite stökigt, men förmodligen lösbart då också.

Du har sedan två val
Antigen har du en "översättare" som routar dina pinnar rätt och du har den logik och dina minnesmappar snygga och logiska

eller

så lägger du din logik med aktuell routing på kortet


Själv hadde jag gjort enligt modell 1 för att underlätta programutvecklingen
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg av jack »

Tack för svar.

sodjan: 1700 sek kanske är lite gränsfall :) Då får jag försöka trycka in en extern kristall.
sodjan
EF Sponsor
Inlägg: 43250
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Med en standard 50 ppm kristall kommer du i alla fall ner på ca 4 sek.
Sen blir det dyrare kristeller eller externa kompletta (och temperatur
stabiliserade) oscillatorer.

För övrigt, förrutom frågorna kring olika oscillatorer och deras nogranhet,
så ser jag inga problem med det som du beskriver. Som sagt, att multiplexa
några LED's tar en ganska liten del av PIC'ens resurser.
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 »

Yopp, går att lösa med 32kHz troligen. Det fina med just 32kHz kristalle är att de finns som riktigt små och bra noggranhet även för skapligt billiga kristaller. Kul också att köra PIC på 32kHz och låg spänning - den drar inte mycket ström alls då...
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg av jack »

32Khz blir nog lite för klurigt för mig. Bättre att ha lite mariginaler, och runt 4 sek verkar helt okej.

Slängde ihop ett litet schema. Kladdigheten beror på routningen. Det jag är lite osäker på är om jag kan använda alla de portar på processorn som jag gör (om nån tex inte funkar som digital ut osv). Har läst databladet men någon får jättegärna kolla igenom schemat!

http://img369.imageshack.us/img369/2586/matrix1ad9.jpg

Och sedan till matningen. Tänkte köra med 3V. Det bör väl inte innebära några problem? Är väl bara att anpassa motstånden till lysdioderna där efter? Och appropå motstånd, vad kan vara ett bra värde till motstånden på basen till transistorerna? Ska köra med BC807. 4,7kOhm kanske?

Och sista frågan: ICSP. Eftersom jag har mycket snålt om plats tänkte jag bara löda in mig på de rätta pinnarna på processorn, innebär det ett problem att ICSP-pinnarna går till andra saker i designen?

Tacksam för svar!
Användarvisningsbild
Earendil
EF Sponsor
Inlägg: 448
Blev medlem: 2 juni 2004, 09:06:43
Ort: Lund

Inlägg av Earendil »

ICSP-pinnarna kan användas till annat också, men man får tänka efter lite. PGC och PGD drivs av PIC-programmeraren under programmeringen och de signaler som programmeraren skickar där är relativt snabba. Alltså bör inte PGC/PGD ha för mycket kapacitans i sin last. Sedan är det ju viktigt att pinnarna aldrig kortsluts eller har alltför liten resistans till jord. Programmeraren måste ju orka drivs pinnarna. Slutligen, om pinnarna under normal drift används som ingångar så är det ju viktigt att inte programmeraren försöker "slåss" mot någon annan krets som driver dem!

Vad beträffar MCLR så är den multiplexad med andra funktioner på vissa PIC:ar, men inte på andra. Normalt har man ett pullup-motstånd på MCLR så att inte PIC:en resettas hela tiden när programmeraren inte är ansluten. Din applikation måste klara av det motståndet.

Om du använder MCLR som ingång i din applikation så måste programmeraren slå av strömmen till PIC:en, hålla MCLR låg, och sedan slå på strömmen igen för att PIC:en ska komma i programmeringsläge. Tror inte alla programmerare kan det. Detta var en liten parentes kom jag på... :) Hur som helst så gäller samma principer för MCLR som ingång som när man använder PGC/PGD som ingångar. Förutom kanske att kapacitans nog inte spelar lika stor roll, eftersom man inte pulsar en massa snabb data på MCLR.

EDIT: Om du ska driva rasket på 3 volt så stöter du nog på problem när du ska programmera med ICSP. Att erasea flashen kräver nämligen 5 volts drift på de flesta PIC:ar (de som inte heter något med J i namnet, som 18F25J10, som jag valde pga just det problemet).
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 »

Ofta finns inget problem om man tänker efter att designa en 3.3V applikation som kan ta 5V när man programmerar. Måste erkänna att jag glömt att designa för 5V ifrån programmeraren och allt har fungerat ändå... Men det rekomenderas inte... Kan man inte så bör man verkligen som Earendil säger försöka låta bli att använda PGC/PGD för lyckas man med det så har man möjligheten att köra ICD och DET är verkligen ett bra verktyg !
sodjan
EF Sponsor
Inlägg: 43250
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Du kan *INTE* köra ICSP om din koppling *INTE* accepterar att man
lägger på 5V under själva programmeringen. (eller använder en av de nya
3.3V-only PIC'arna.) Det kan t.ex lösas med en strapp så att du kan
koppla loss PIC'ens Vdd från övriga kretsar under programmeringen.

> Om du använder MCLR som ingång i din applikation så måste
> programmeraren slå av strömmen till PIC:en, hålla MCLR låg,
> och sedan slå på strömmen igen för att PIC:en ska komma i
> programmeringsläge.

Hm, inte riktigt...
Det som programmeraren måste stödja heter "Vpp-before-Vdd", d.v.s
att prgrammeraren ska lägga MCLR till Vpp-nivån *innan* matningsspänningen
till Vdd sätts till 5V. I praktiken räcker det med att helt kort pulsa Vdd låg
efter att Vpp har lagts på till MCLR-pinnen. Enklast är att låta MCLR vara
just MCLR...
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg av jack »

Tack för svar.

Som jag förstår er så borde det alltså inte vara några problem att köra på 5V via ICSP på min design. Eftersom resten av min krets inte borde må så dåligt av lite 5V.

MCLR används inte till nåt annat i min krets.
sodjan
EF Sponsor
Inlägg: 43250
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Eftersom resten av min krets inte borde må så dåligt av lite 5V.

Men i så fall, varför inte köra med 5V ??

> MCLR används inte till nåt annat i min krets.

Enklast (med avseende på ICSP) är att låta den vara just MCLR...
Användarvisningsbild
jack
EF Sponsor
Inlägg: 2059
Blev medlem: 5 oktober 2004, 17:32:27

Inlägg av jack »

Eftersom jag tänkte köra den på ett 3V-batteri.

ICSP ska jag ju bara använda när jag programmerar och då har jag tillgång till 5V.
Skriv svar