Hej. kikat en hel del på Arduino den senaste tiden och tycker dom verkar kanon.
relativt billiga (iaf på dealextreme) mycket olika sensorkort och diverse delar. Men såg nu att Microsoft har sin Gadjeteer och där fanns även en Arduino kompatibelt kort.(http://www.ghielectronics.com/catalog/product/351). hur går det ihop? någon som forskat kring dessa?
är någon av dem riktigt multitaskande os? dvs så man inte med hjälp av timers måste dela upp CPU tid som jag sett en del gör på arduino.
Eftersom gadjeteer kör .net så kanske man har tillgång till multithreading?
jag har en förkärlek till MS då jag är c# utvecklare men dom verkar lite dyrare än så länge och inte sett ngr kopior som det finns på arduino.
Jo så är det väl, går alltså rätt smidigt att använda shields från arduino-världen även till dom där korten som är baserade på .NET micro framework. Jag lekte lite med ett en FEZ Panda förut som är något liknande den du länkar till, väldigt lätt att komma igång med och koda samt debugga direkt i visual studio med C#. Vad jag minns så gick det att köra trådat eller med events precis som i vanliga C#, såklart blir prestandan lite lidande när en stackars microprocessor ska hålla igång ett helt litet "OS".. har du minsta lilla realtidskrav i ditt tänkta projekt tycker jag du ska titta på andra lösningar.. om inte så kör på!
Snabbt kan det säkert gå, även om det är en definitionsfråga och såklart beror på tillämpningen. Men några realtidskrav kommer du aldrig uppfylla, det är alldeles för stor random-faktor inblandad med lite garbage-collectors osv som kickar in då och då..
> Men några realtidskrav kommer du aldrig uppfylla,
Att t.ex tända/släcka ytterbelysningen styrt av
dagsljuset "i realtid" går säkert aldeles utmärkt!
Fullständigt meningslöst att tala om "realtid" utan att
ha förutsättningarna giva...
> hmm men 240Mhz som exempelvis Fez hydra borde väl räcka att köra multi
> trådat även i realtid? det är ju ändå 240 milj instruktioner per sekund.
Problemet är plattformen som sådan (.NET o.s.v) och det kan inga MHz
eller GHz göra något åt. Och, som sagt, begreppet "realtid" är i alla fall
ganska meningslöst.
Det viktiga med "realtid" är att svarstider o.s.v är förutsägbara och stabila.
nja, det beror nog helt på hur man kodar skulle jag säga. på jobbet bygger vi applikationer i C# (visserligen Windows) på miljoner rader kod som vi utvecklat under nästan 10 års tid som smäller vilket c++ program på näsan vilken dag som helst i veckan i prestanda. men det är klart rena mattematiska beräkningar blir det svårt att slå assembler o C++ men så fort det blir komplext så får man minnesläckor o skit som man slipper tänka på med .net
sodjan skrev:> Men några realtidskrav kommer du aldrig uppfylla,
Att t.ex tända/släcka ytterbelysningen styrt av
dagsljuset "i realtid" går säkert aldeles utmärkt!
Fullständigt meningslöst att tala om "realtid" utan att
ha förutsättningarna giva...
> hmm men 240Mhz som exempelvis Fez hydra borde väl räcka att köra multi
> trådat även i realtid? det är ju ändå 240 milj instruktioner per sekund.
Problemet är plattformen som sådan (.NET o.s.v) och det kan inga MHz
eller GHz göra något åt. Och, som sagt, begreppet "realtid" är i alla fall
ganska meningslöst.
Det viktiga med "realtid" är att svarstider o.s.v är förutsägbara och stabila.
Vet inte varför du tar upp ytterbelysningen, det är ingen realtidsapplikation. Den andra halvan av ditt inlägg är det jag var inne på gällande tex garbage collectors och dyl som finns i .NET.
Som sagt, dom här korten med .NET micro framework är trevliga och man kommer igång snabbt (precis som arduino) men man ska komma ihåg att dom lämpar sig inte för alla projekt.
låter bra. har ni några exempel på något som skulle vara direkt olämpligt att försöka köra? ett ambitiöst projekt jag funderade på var en Wlan styrd Quadkopter och då hade ju netduinon varit kalas
Om ytterbelysningen tänds just när det blir tillräckligt mörkt
så är det "realtid". Det är just det som är problemet när man
slänger sig med uttryck som "realtid", det är ganska meningslöst
utan att förutsättningar är givna. Och som sagt så ska svarstider
vara förutsägbara och beräkningsbara, och där har nog .NET
och liknande miljöer (JVM t.ex) lite problem. Om man har ett OS
så krävs det att OS'et har realtidsegenskaper.
Prylen i tråden kan kanske användas för vissa realtids applikationer
(där variationerna i svarstider ändå ligger inom gränserna för den
aktuella applikationen) men för andra räcker det kanske inte till.
Det beror på, så att säga.
C.a. en och en halv minute in i videon nedan förklaras lite nackdelar. Verkar som koden inte JITas som på intelplattformar. Nu är jag absolut ingen expert på .Net, men det verkar iaf som det gör exekveringen lite segare.
Dock brukar det ju (iaf i andra utvecklingsmiljöer) finnas bibliotek/drivers som hjälper till med vissa saker som t.ex kommunikation via USART/USB/WIFI... Likaså för PWM och H-bryggor med mera. Det kan vara svårt att skriva ihop en mjukvaru PWM i någorlunda hög frekvens utan jitter t.ex i en miljö som C# eller andra tolkande språk. Lika kan det vara problem med att t.ex bitbanga USART och liknande i högnivåspråk. Svårt att räkna klockcykler när man inte har en aning om hur koden exekveras under huven. Som sagt just USART är nog en dålig jämförelse eftersom det antagligen finns hårdvara för det som gör att mjukvaran inte behöver bekymra sig om dom minsta detaljerna.
Problemet med utvecklingsverktyg som är "enkla" att komma igång med är ofta att så fort du vill göra något lite "utanför ramarna" så stöter man på problem. Enkla utvecklingsverktyg är enkla just för att dom har "standardiserade" lösningar av typen "one size fits all", därmed blir det svårare om man vill göra något utanför dessa "standarder". Jag är den typen som vill ha så mycket kontroll som möjligt och föredrar en liten högre tröskel för att komma igång, men å andra sidan större frihet och möjligheter.
Om du bestämmer dig för att köpa en och experimentera får du gärna göra en liten recension om vad som funkar bra/mindre bra.
Jag kör med en Fez Panda och kör multitrådat utan problem, visserligen inga jättekomplexa operationer men det har fungerat riktigt bra hittills. Kan inte annat än att rekommendera det.