Suomen Robottiyhdistyksen prosessori vertailuja
Ominaisuus | C8051F330 | PIC18F26J11 | PIC18F26K20 | ATmega128 | MSP430F1611 | LPC17858 | |
---|---|---|---|---|---|---|---|
Valmistaja | Silicon LABS | Microchip | Microchip | Atmel | Texas Instruments | NPX | |
Flash | 8kB | 64kB | 64kB | 128 KB | 48 KB | 512k | |
Kotelo | DIP20/QFN | SO-28/DIP28 | SO-28/DIP28 | PDIP-40 TQFP QFN/MLF (44) | LQFP 64 | LQFP80 | |
RAM | 769B | 3,936B | 3,800B | 16KB | 10 KB | 64kB | |
POWER | 2.7. .3.6 V 6.4mA 25MHz | 2.0 -3.6 V | 2.0 -3.6 V | 1.8 - 5.5V | 1.8 - 3.6 V | 2.4-3.6V 41mA | |
Sleep mode | 100 nA | 13 nA | 34 nA | 1uA | 1.1 µA | 40nA | |
I2C | 1 | 1 | 1 | 1 | 1 | 3 | |
PWM | PCA 3 | PWM 6 | PWM 6 | PWM 6 | PWM 7 | PWM 6 | |
SPI | 1 | 2 | 1 | 1 | 2 | 2 | 12*12bt 200kHz |
UART | 1 | 2 | 1 | 2 | 2 | 4 | |
ADC | 16*10bit | 10*10bit | 13*10bit | 8*10bit | 6*12bit | ||
EEPROM | Ei | Ei | 1024Byte 10 milj. kertaa | 4K | 256 B | ei | |
Flash kirjoitus ohjelmasta | Kyllä | Kyllä 10k kertaa 2.0V | Kyllä 10k kertaa2.0V | 10k | Kyllä | kyllä | |
Ajastimet | 4 | 4 | 5 | 2*8 + 2*16 | 2 | 4 | |
Komparaattorit | 1 | 3 | 2 | 1 | 1 | ||
Kertolaskuyksikkö | ei | 1 | 1 | ? | 1 | ? | |
Floating point kääntäjä | Ilmainen SDCC | Ilmainen Microchip MCC18[8] | Ilmainen Microchip MCC18[8] | GCC | GCC | RED-code(ilmainen) | |
Simulaattori | SiLabs IDE [9] | MPLAB | MPLAB | AVR STUDIO | ? | LPCxpresso | |
Nastamatriisi | Crossbar | Kyllä PPS 16 pin | ei | ei | ? | Kyllä | |
Referenssijännitteet | 2.44 V | 1*16 tasoa | 1*16 tasoa | sisäinen/ulkoinen | 1.5 V, 2.5 V ja ulkoinen | ? | |
Sisäinen oskillaattori | 80 kHz-25 MHz | 32kHz- 48MHz | 32kHz- 48MHz | kyllä | 1MHz ? | 1-25MHz | |
MIPS | 25MIPS | 12MIPS | 16MIPS | 20 MIPS | 8 MIPS | 100MHz | |
Ohjelmointitapa | USB ToolStick | Booloader/USB PICKIT2 | Booloader/USB PICKIT2 | Bootloader/ISP/ JTAG | Bootloader/JTAG | ||
Can | ei | ei | ei | ei | ei | CAN | |
Ethernet | ei | ei | ei | ei | ei | USB2.0 Ethernet 10/100MHz | |
Quadrature laskuri | ei | ei | ei | ei | ei | Kyllä | |
Lisäominaisuuksia | 4 | 1, 2,3,4,[5] | 1,3 ,4,[5] | 4,6,7 | 10,1,[11] |
Hinta | 2.17e Digikey | 3.6e Digikey | 2.26 e Microchip, 3.26 Digikey | 63 Digikey7. | 11.4e Digikey | 12 digikey |
[1] Hardware reaaliaikakello paristovarmistuksella (kello, kalenteri ja hälytys Harwdaressa ) 830 nA
[2] Kapasitiivinen ilmaisu kosketusnäyttöä varten ( Charge Time Measurement Unit,CTMU,supports capacitive touch screens]
[3] Rinnakkainen ADC mittaus eri kanavilta
[4] Wachdog, Brown Out reset
[5] Uart RS-485, RS-232 ja LIN tuki, Auto-Wake-up on Break, Auto-Baud Detection
[6] kolmekanavainen DMA
[7] 2* DAC 12bit
[8] Muita Microchip kääntäjiä CCS , Hi Tech, WIZ-C , MicroEngineering, GCC, SDCC, mikroC PRO for PIC,
Pascal compiler for PIC12, PIC16, and PIC18, [mikroBasic PRO for PIC 2009]
Basic compiler for PIC12, PIC16, and PIC18, Forest Electronics C compiler.
[9] In-circuit, full speed debugging, simulaattoria ei varsinaisesti tarvita mihinkään.
[10] 10-bit DAC
[11] IRDA ja RS485 tuki sarjaliikenteelle, LPC 1758 on ARM 9,Cortex M3 sarjaa
Ohjelmointi USB/ON LINE kääntäjällä, ei rajoituksia

Mikä on nastamatriisi?

Nastamatriisi on moduuli joka kytkee joukon laitteitta kuten UART, ajastimia, SPI, I2C jne, haluttuihin nastoihin.
Nastoissa on luonnostaan yksi laite esim. PWM, mutta siihen voi kytkeä toisen Uartin. Uart on normaalisti kytketty kiinteästi määrättyihin nastoihin esim. -51 sarjassa P.2 ja P3, Microchipissä RC.7 ja RC.6.
Niissä piireissä, jossa on tämä nastamatriisi on mahdollista ohjelmallisesti valita määrättyjen nastojen toiminnat. Microchip 28-nastaisissa malleissa on on 18 ohjelmallista nastaa.
Nastamatriisissa määritellään tulo- ja antonastat erikseen. Esim. Uartissa on RX ja TX nastat, jotka voidaan kytkeä moniin nastoihin. Samoin perinteiset Uart nastoihin voidaan kytkeä muita laitteita. Kaikki ohjelmoitavat nastat voidaan määritellä tulo- tai anto-nastoiksi.
Huomaa tarkistaa etukäteen ennen piirilevyn suunnittelua, mitkä toiminnat ovat mahdollisia eri nastoille.
Käyttöjännitenastoja ei vielä ole mahdollista muuttaa. Joskus olen kuvitellut sellaista mikropiiriä, joka osaa vaihtaa nastat, jos käyttäjä laittaa piirin väärinpäin. Ehkä sekin vielä nähdään.

Jos prosessorissa ei ole kuin yksi Uart, usemapaa sarjaliikennettä voi hoitaa ulkoisella digitaalisella multiplekserillä kuten esim. CD4053 mikropiirillä. Ei ole ohjelmoijalle kovin herkullinen tehtävä. Tämä sopii vain määrättyihin tehtäviin. Esim. kun Video multiplekseristä tulee sarjaliikenne sanoma ja se pitää muuttaa toiselle laitteelle, joka tietysti käyttää erilaista sarjaliikennenopeutta ja protokollaa.
Nores toi aikoinaan suuren määrän Sanoyn videototykkejä ja saamaan yhteyteen he olivat hankkineet hollantilaisia videomultipleksereitä. Asiakkaat olivat odottaneet pitkän toimitusajan, mutta yksikään laite ei toiminut yhdessä.
Tutkin asiaa sarjaliikenneanalyssaattorillani. Onneksi ongelma ei ollut kovin monimutkainen.
Tein protokolla ja baudinopeusmuuntimen, jota silloin tällöin vieläkin tarvitaan.

Microchin prosessorissa nastamatriisin nimi PPS ( Parallel Pin Select ).
Sillä voi hoitaa
- Nastojen vaihtamisen I/O, Uart, PWM, ajastimien välillä.
- Nastojen toimintoja voi vaihtaa kesken ohjelman
- 28-nastaisissa on 18 vaihdettavaa ja 44-nastaisissa piireissä on 26 vaihdettavaa nastaa
- Nastojen nimet ovat RPxx esim. RP1.. RP26
- Toimintojen tulo- ja lähtönastat voidaan määritellä ei nastoihin. Esim. perinteisen Uartin nastat voidaan ohjelmoida PWM toiminnaksi.
- Nastamatriisilla ei voi tehdä yhteensopivia prosessoreita.
- Nastamatriisilla ei voi vaihtaa analogia nastoja
- Nastamatriisi on eri asia kuin kaksi Uartia. Onko laitteessa kaksi Uartia riippuu mallista.
- Kahta Uartia ei Mikrochipillä ole kuin 3.3V malleissa. 3.3V käyttöjännite ei ole sen hankalampaa kuin 5 V. Käyttäjällä pitää olla kuitenkin sopiva 3.3V ohjelmointilaite kuten PICKIT2, uudet 3.3V regulaattorit ja 3.3V RS232 muuntimet. Joitakin analogiapiireissä kuten LM335-lämpötila-anturia ei voi kytkeä suoraan 3.3V analogiatuloon. Silloin pitää käyttää vastaavia 3.3V antreita kuten MCP9701 tai tehdä tasomuunnos vastuksilla. Esim. 1k8 ja 3k3 vastusjännitejako on sopiva viidestä 3.3V:iin.
Ohjelmointi PPS:llä on edelleen hankalaa, mutta mahdollista.
Pieni säästö tulee siitä , että ei tarvita ulkoista multiplekseriä.
PPS toimintojen ohjelmallinen käyttö pitää aloittaa ja lopettaa tarkasti oikealla koodisekvenssillä, jotta nastat eivät missään tapauksessa pääse vaihtumaan.
Nastojen vaihtaminen myöhemmin ohjelmassa voidaan lukita.
PPS:llä voi vaihtaa samaan nastaan eri toimintoja kuten laskureita, joten PPS on käyttökelpoinen joissakin tapauksissa, mutta kahden Uartin ongelmaa se ei ole ratkaisu.

Jos prosessorissa on kaksi oikeaa Uartia ja PPS, ohjelmointi on paljon helpompaa, mutta ei edelleenkään helppoa.
Kun periaatteet ovat selvät, kahden (ja useamman ) laitteen tietoliikenne on mahdollista.
Uartiin pitää tehdä ainakin kaksi keskeytyspuskuria, jotka huolehtivat taustalla sarjaliikenteen vastaanoton puskureihin
Joku saattaa muistuttaa, että nykyisillä prosessoreilla voi melkein mitä tahansa nastaa käyttää
sarjaliikenteessä. Unohtakaa tämä menetelmä, paitsi äärimmäisen yksinkertaisissa tehtävissä.
Ongelmia tulee kaikissa yhtäaikaisissa tehtävissä kuten ajastimien käsittelyssä.
Pulssien laskenta ja laskurien tausta-ajo ohjelmallisella Uartilla on mahdotonta.
Aikaisemmin prosessorit, joissa on monta Uartia ovat olleet vain suurinastaisissa piireissä, kuten Microchipin 68-, 84- ja 100-nastaisissa prosessoreissa, Siemens 80C817A ( -51 tyyppi), joissakin Dallasin ( -51 sarja) prosessoreissa.
Käyttämällä PPS-tekniikkaa, on mahdollista käyttää kahta Uartia myös pienissä 28-nastaisissa prosessoreissa esim. PIC18F26J11. Tätä piiriä saa SOIC 28 ja DIP28 koteloissa.
Mielestäni tämä on erittäin hieno asia.
Käyttökohteita:
- GPS ja GSM vaativat kaksi Uartia. SMS-viestit tulevat silloin kuin haluavat, niitä ei voi pyytää määrättyyn aikaan. Samoin GPS:stä tulee koko ajan tietoa, ei sitäkään voi keskeyttää eikä se ole edes mahdollista. Useamman NMEA-laitteiden sanomien yhdistäminen on nyt mahdollista yhdellä prosessorilla melko yksinkertaisella laitteella.
- Auton OBD2 laite, auton IO-laitteet ja PC vaativat kahden Uartin käytön
- Protokolla muuntimet, jossa on kaksi eri nopeutta vaativat myös kaksi Uartia
- Automaatiolaitteissa jossa on väylä vaativat eri nopeuden väylässä kuin liitäntälaitteissa
Linkin kuvassa on sama asia ratkaistu monella prosessorilla.
[http://robotti.wikidot.com/local--files/projektit/Token2.jpg]
==
Miten tämä tehdään käytännössä?
Käytä CCS-kääntäjää esim PCW.
Laita ohjelman alkuun esim.
#PIN_SELECT U1TX=PIN_C6
#PIN_SELECT U1RX=PIN_C7
#use rs232(baud=9600,parity=E,UART1,bits=8,stream=PORT1,enable=PIN_C5,errors)
#pin_select CCP2OUT=PIN_B2
Näin helppoa se on kun sen oikein ymmärtää
PCW lisäys 22.2.2018 OH3GDO
Nastamatriisikuvaus : 19.6.2009 OH3GDO
Lisäys/Korjaus : 11.6.2009 OH3GDO C8051F330 tarkistettu
Alkuperäinen taulukko 2.6.2009 OH3GDO