SPI interface

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
d99dan
Inlägg: 23
Blev medlem: 27 januari 2006, 12:08:25

SPI interface

Inlägg av d99dan »

Den huvudsakliga frågan är hur mycket av prestandan i en PIC som går åt för att ta hand om SPI interfacet.

Ponera att man använder en 16F87 jag tog egentligen bara en i mängden för att kolla lite på databladet. Vad kan man förvänta sig att picen klarar för överföring via SPI interfacet tanken är att den ska kommunicera med en ENC28J60 (ett ethernet -> SPI interface från microchip).

Så som jag tolkat det så kommer man inte kunna skicka någon data till picen förens man har tagit om hand om det gamla datat i buffertens 8bitar.

Nu kan jag inte programmera picar utan tänkte ta atg i det parallet med att bygga en ICP men det vore ju bra om det verkar rimligt om det går att göra med en pic eller om man måste välja en kraftfullare uC.

Men Pseudokod för interupt borde väl se ut ungefär:

Move SPIbuff, reg
Move 0,SPIreg %sätt lämplig flagga
if context == localport1
Move reg,localport1+1
if context == localport2
Move reg,localport2+1
return

För fallet att man vill kunna skilja på datat till två olika localports. vilket borde kunna klaras på 8-10 instruktioner om PIC:ar är register baserade och man inte sparar några gamla register världen på stacken.

8 instruktioner borde ju hinnas med på samma tid som bufferten fylls alltså borde man kunna komma upp i en utnyttjande grad på 75% de 2 första instruktionerna innan man har clearat flaggan. Det skulle behövas en utnyttjnade grad på 50% för att hantera 10Mbits ethernet

Tycker ni att ovanstående resonemang verkar rimligt och att man alltså får ca 25% kvar för att hantera data?

Finns det någon PIC som har mer än 8 bitars SSP buffert?
Jag vet attd et står i databladen men det står inte med i charten och det är en himla massa datablad så om någon vet :)

Mvh Dan
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

AVR har iaf inbyggt stöd för SPI (TWI heter det där), och det sköts med ganska enkla metoder.
Däremot förstår jag inte hur du resonerar. Jag menar, du ska ju inte direkt bit-banga Ethernet. Har du verkligen behov av att maxa en 10Mb Ethernet? Vad är det du ska överföra egentligen?
Sedan brukar ju heller inte överföring göras exakt hela tiden, utan man kan oftast åsidosätta all annan aktivitet i uC:n medans exempelvis ett paket överförs via SPI.
Förklara mer vad du ska göra så kanske nån kommer med ett helt annat perspektiv på problemet.

Mvh
speakman
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43202
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Inlägg av sodjan »

> Så som jag tolkat det så kommer man inte kunna skicka någon data till
> picen förens man har tagit om hand om det gamla datat i buffertens 8bitar.

Nja, det finns en flagga som nollas genom att läsa receive registret, men
man beghöver inte *använda* det man har läst, om man inte vill.

> hantera 10Mbits ethernet

Vad menar du med "hantera" ??
Vad är det igentligen som är problemet ?
Användarvisningsbild
PaNiC
Inlägg: 2565
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Inlägg av PaNiC »

speakman skrev:AVR har iaf inbyggt stöd för SPI (TWI heter det där)
TWI är väl ändå I2C?
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Sant! Blandar ihop lite. SPI heter det även i databladet för AVR. :)
Men stöd finns iaf i USI:n på AVR:en. Det är viktigast. ;)

Mvh
speakman
d99dan
Inlägg: 23
Blev medlem: 27 januari 2006, 12:08:25

Inlägg av d99dan »

Med hantera så menar jag att implementera delar av (networklayer?), ENC28J60 haneterar vad jag förstår linklayer. Alltså dela upp datat i olika strömmar beroende på vilken localport det är adresserat till.

Problemet tänkte jag försöka undvika att det uppkommer genom att jag hoppades att någon som har bätter koll på picar skulle kunna svar på om den är lämplig eller om man bör välja en mer kraftfull uC. Tex en arm skulle ju kunna vara ett alternativ helst vill jag ju använda någon där man kan bygga/köpa en billig programmerare och där uC finns i DIP kapsel eller någon annan som man kan montera själv

Nej det behöver antagligen inte maxas i 10mbit. Frågan var väl mest hur mycket tid man kan förvänta sig att ha över för annat. För att kunna välja en lämplig uC för uppgiften. Och nej jag har inte tänkt att bitbanga ethernet hela ethernet biten sköts ju av ENC28J60 via SPI, men det blir ju inte så långt ifrån med bara en 8bitars buffert.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43202
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Inlägg av sodjan »

Jag vet inte om jag förstår vad du menar.

1. ENC28J60 är utvecklad av Microchip, och det vore väll helt otroligt om de
inte har tänkt att den skall köras tillsammans med PIC processorer !!??

2. "Tid över till annat". Tja, du väljer väll själv hur mycket processorkraft du
vill lägga på olika funktioner, inklusive att "hantera" ENC28J60.

Ingen, vad är det för applikation som har så stort behov av snabbt dataflöde ?
Du kan ju varken generera eller bearbeta speciellt mycket data åt gången
i en PIC i alla fall...

> "eller om man bör välja en mer kraftfull uC."

Eller en mer kraftfull PIC ?? Det är stor skillnad på PIC och PIC...
d99dan
Inlägg: 23
Blev medlem: 27 januari 2006, 12:08:25

Inlägg av d99dan »

Jo det är väl klart att ENC28J60 fungerar ihop med en pic, jag har väl inte påstått någonting annat.

Jo det är väl klart att man väljer själv hur processor kraften fördelas, det har väl ingenting med min ursprungliga frågeställning att göra?

Jag tycker väl inte att jag var särskilt otydlig från början men jag undrar om ni tycker att mitt antagande verkar rimligt att en 20Mhz PIC bör klara av att utnyttja ett 20Mhz SPI interface ca 75% av tiden, om man inte behöver sätta registret efter läsning så borde det bli högre.

Det har väl ingenting att göra med hur snabbt data flöde som behövs, om man behöver 2Mbits ethernet och antagandet stämmer så vet man ju att man behöver använda <10% av processorkraften på att bara ta emot data

I nu läget så är det väl inte helt bestämt vad som ska implementeras mer än ett ethernet interface. Sen tänkte jag att med en programerbar krets som pic så kan man göra rätt mycket som går att styra från en dator över ethernet eller omvänt.

>Eller en mer kraftfull PIC ?? Det är stor skillnad på PIC och PIC...
Man skulle ju kunna använda en PIC på 40Mhz men förutom klockningen så skiljer det väl inte så mycket på "beräknings" kapacititen. Ok dubbelt så snabb det är ju rätt stor skillnad.

Och det var väl mycklet det att jag tänkte försöka komma fram till hur kraftfull uC som behövs
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

1. "Jo det är väl klart att man väljer själv hur processor kraften fördelas, det har väl ingenting med min ursprungliga frågeställning att göra? "
2. "Och det var väl mycklet det att jag tänkte försöka komma fram till hur kraftfull uC som behövs"

Seems emotsägeslefullt to me...

Det är ganska sällan man behöver 2Mb dataflöde från en liten uC, så jag tror nog ingen tänker allt i siffror som du. Om du har 25% kvar av kapaciteten så tror jag knappast du ens hinner hitta ny data att skicka, och generera paketet, innan det är dags för nästa "batch".
Dessutom pratar du om enstaka instruktioner såsom "sätta register" som om det är tidskritiska saker.

Du får nog gärna konkretisera din frågeställning en aning, då åtminstone inte jag vet vad jag verkligen ska svara på.

"Och det var väl mycklet det att jag tänkte försöka komma fram till hur kraftfull uC som behövs"
Behövs för vaddå? Att skicka data via Ethernet och SPI kräver knappast någon märvärdig uC. Du skulle i princip kunna skicka SPI-datat genom tre tryckknappar och ändå få ut det via Ethernet.

Mvh
speakman
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43202
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Inlägg av sodjan »

> Jag tycker väl inte att jag var särskilt otydlig från början men jag undrar om
> ni tycker att mitt antagande verkar rimligt att en 20Mhz PIC bör klara av att
> utnyttja ett 20Mhz SPI interface ca 75% av tiden...

Och även om det går, när skull det behövas ??

Men antagligej inte, resten av tiden (de 25%'en) skulle antaglige inte
räcka till för att föreberede/generera all den data som du tydligen
tänker skicka.

Sen är det en helt annat sak om du menar i korta "burst" där man t.ex
läser från en buffer med data (t.ex till ett nätverkspaket).

Du kommer naturligtsvis aldrig att få svar som är mindre flummiga är dina frågor... :-)

> Man skulle ju kunna använda en PIC på 40Mhz

Eller 120 Mhz...
Som sagt, det är skillnad på PIC och PIC...
d99dan
Inlägg: 23
Blev medlem: 27 januari 2006, 12:08:25

Inlägg av d99dan »

Hmm finns dom i 120Mhz Jag kollade på microchips chart igen ,lite nogrannare, men såg inga som hade mer än 48 som max?
Men det är ju betydligt större skillnader då ja.

Men ja då kan man väl ponera att man använder 120Mhz PIC då så borde man ju hinna genera/hantera en del data på de resterande 100Mhz
Användarvisningsbild
Zyxel615
EF Sponsor
Inlägg: 1839
Blev medlem: 9 november 2005, 21:20:43
Ort: Kiruna

Inlägg av Zyxel615 »

Vet du egentligen vad du vill göra??
d99dan
Inlägg: 23
Blev medlem: 27 januari 2006, 12:08:25

Inlägg av d99dan »

Zyxel615 nej, och det framgår om du läser tråden, jag citerar mig själv
"I nu läget så är det väl inte helt bestämt vad som ska implementeras mer än ett ethernet interface. Sen tänkte jag att med en programerbar krets som pic så kan man göra rätt mycket som går att styra från en dator över ethernet eller omvänt."

Till att börja med försökte jag få en uppfattnig om en PIC är lämplig till att hantera ethernet. för att sedan bygga en liten test rigg och ett programm för att kommunicera med den. Först efter det kommer det bli aktuellt att implementera något mer än just bara ethernet delen. men då är det ju bra om det finns möjlighet att utöka det och göra något mer. Här skulle det ju vara en fördel att använda picar just eftersom de finns i många utföranden med olika I/O ADC och sånt beroende på vad man vill implemetara.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43202
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Inlägg av sodjan »

> Hmm finns dom i 120Mhz ?

Vissa av PIC24 och dsPIC30/33 modellerna.
Användarvisningsbild
Zyxel615
EF Sponsor
Inlägg: 1839
Blev medlem: 9 november 2005, 21:20:43
Ort: Kiruna

Inlägg av Zyxel615 »

Jag erkänner att jag läste lite väl fort.
Skriv svar