Mikroprocessor till reglersystem
Re: Mikroprocessor till reglersystem
Jesse: Intressant svar. Till att börja med kommer jag bara styra ett par enheter parallellt med varsin digital utgång, det är ändå rätt få enheter. Men visst skulle det vara trevligt att lära sig göra ett bus system i framtiden.
En liten dröm är att senare kunna styra en reglerventil analogt.
Vad skulle man kunna ta som "addresseringsenhet" om man bygger ett bussystem? Typ en liten 20 kr microc före varje enhet man styr som man sedan adresserar på något sätt?
Loggning får bli något jag tar senare när jag får lite bättre känsla för det hela.
LaRdA: Arduino verkar ju fint, men är ju bra mycket dyrare. Sen är ju fördelen med PIC att det verkar vara fler som använder det, vilket är bra när man vill ha hjälp och tips. Najs det här dock att Arduino verkar ha färdigt stöd för att kommunicera med PC, om jag tolkat det jag läst rätt.
En liten dröm är att senare kunna styra en reglerventil analogt.
Vad skulle man kunna ta som "addresseringsenhet" om man bygger ett bussystem? Typ en liten 20 kr microc före varje enhet man styr som man sedan adresserar på något sätt?
Loggning får bli något jag tar senare när jag får lite bättre känsla för det hela.
LaRdA: Arduino verkar ju fint, men är ju bra mycket dyrare. Sen är ju fördelen med PIC att det verkar vara fler som använder det, vilket är bra när man vill ha hjälp och tips. Najs det här dock att Arduino verkar ha färdigt stöd för att kommunicera med PC, om jag tolkat det jag läst rätt.
Re: Mikroprocessor till reglersystem
Det "färdiga stöd" är snabbt klarat till vilken processor som helst faktisk så låt inte det lura dig.
Adressering av enheter är egentligen ganska enkelt:
Man skickar oftast kommandon som en block av data ("Hörru #5, slå på ljuset till 50% vetja") och får svar med en block av data ("Tja, #5 här, klart med ljuset på 50%").
Detta betyder att man, i blocken, lägger in data som kan avläsas som adress och andra som är kommandon.
Själv gör jag det som text, det ger lite extra arbete i båda ändar för att omvandla ett kommando till text och i den andra ända att omvandla det till binära värden men det är enkelt med datorkraft nog och det är enkelt att "sniffa" om allt står rätt till.
Det viktiga är att kunde dela upp block så man _vet_ att "denna klump är en block!". Man kan sända rent binära data och se till att när det har varit en viss paus utan nya tecken är det definitivt en block osv.
Så enklast kan det bestå av ett antal bytes:
Till-Adress, en (256 adresser) eller två bytes (65536 adresser) (vi utgår ifrån att en master styr allt och alla slaver hänger på)
Kommando, en byte borde räcka.
Data, 1 eller 2 bytes kan nog räcka långt.
Alltså sänds det ALLTID 1 (/2) bytes + 1 byte + 1(/2) bytes = 3(/5) bytes per block. Samma format på svaret såklart, då är allt klart. Väljer du 5-bytes blocket kan du styra 65536 underenheter, ge dom 256 olika kommandon och 65536 olika värden. Behövs ingen värden till ett visst kommando är det bara att "fylla på" med nollor.
Adressering av enheter är egentligen ganska enkelt:
Man skickar oftast kommandon som en block av data ("Hörru #5, slå på ljuset till 50% vetja") och får svar med en block av data ("Tja, #5 här, klart med ljuset på 50%").
Detta betyder att man, i blocken, lägger in data som kan avläsas som adress och andra som är kommandon.
Själv gör jag det som text, det ger lite extra arbete i båda ändar för att omvandla ett kommando till text och i den andra ända att omvandla det till binära värden men det är enkelt med datorkraft nog och det är enkelt att "sniffa" om allt står rätt till.
Det viktiga är att kunde dela upp block så man _vet_ att "denna klump är en block!". Man kan sända rent binära data och se till att när det har varit en viss paus utan nya tecken är det definitivt en block osv.
Så enklast kan det bestå av ett antal bytes:
Till-Adress, en (256 adresser) eller två bytes (65536 adresser) (vi utgår ifrån att en master styr allt och alla slaver hänger på)
Kommando, en byte borde räcka.
Data, 1 eller 2 bytes kan nog räcka långt.
Alltså sänds det ALLTID 1 (/2) bytes + 1 byte + 1(/2) bytes = 3(/5) bytes per block. Samma format på svaret såklart, då är allt klart. Väljer du 5-bytes blocket kan du styra 65536 underenheter, ge dom 256 olika kommandon och 65536 olika värden. Behövs ingen värden till ett visst kommando är det bara att "fylla på" med nollor.
Re: Mikroprocessor till reglersystem
Håller med islocket om att färdigt stöd. För att ändra processor byter man i idealfallet bara "include" och sen klart resten fixar MPLAB om man kodat rätt (dvs som man ska).
Antar att du också menar att man ALLTID skickar samma format på datat dvs alltid 5 bytes oavsett om bara 2 behövs. Så gör iaf jag och det fungerar utmärkt skulle jag vilja påstå. Stoppbytes är lite luriga, gillar bättre att man isf anger antal bytes någon gång i början. Ett utmärkt sätt att kontrollera datat är en paritet/CRC byte. Sparar man datat i en array innan man använder det behövs inte många rader för att köra xor på hela fadderullan och vips har man lite extra säkerhet också. Vill man tex att obehöriga ska hålla sig väck så räknar man om CRC-byten på sitt egna sätt.
Själv kör jag med 4 st 255 (FF) först så man kan hitta något slags start från PICen. Detta för att när displayen är i "visa läget" så mäter övervakningen kontinuerligt samtidigt som den skickar data. Då skippar den naturligtvis att göra något åt "S" (=skicka data) kommandot utan kör bara på. Därför behövs startbyte:arna så att datorn kan identifiera var den ska börja läsa relevant data. Skickar rubb & stubb med en gång.
Skulle vilja påstå att en PIC lätt kan sortera ut relevant data ur en DATAström även medan den gör annat. Det hela kräver dock lite tankearbete så att det fungerar som man önskar.
Antar att du också menar att man ALLTID skickar samma format på datat dvs alltid 5 bytes oavsett om bara 2 behövs. Så gör iaf jag och det fungerar utmärkt skulle jag vilja påstå. Stoppbytes är lite luriga, gillar bättre att man isf anger antal bytes någon gång i början. Ett utmärkt sätt att kontrollera datat är en paritet/CRC byte. Sparar man datat i en array innan man använder det behövs inte många rader för att köra xor på hela fadderullan och vips har man lite extra säkerhet också. Vill man tex att obehöriga ska hålla sig väck så räknar man om CRC-byten på sitt egna sätt.
Själv kör jag med 4 st 255 (FF) först så man kan hitta något slags start från PICen. Detta för att när displayen är i "visa läget" så mäter övervakningen kontinuerligt samtidigt som den skickar data. Då skippar den naturligtvis att göra något åt "S" (=skicka data) kommandot utan kör bara på. Därför behövs startbyte:arna så att datorn kan identifiera var den ska börja läsa relevant data. Skickar rubb & stubb med en gång.
Skulle vilja påstå att en PIC lätt kan sortera ut relevant data ur en DATAström även medan den gör annat. Det hela kräver dock lite tankearbete så att det fungerar som man önskar.
Re: Mikroprocessor till reglersystem
Nej, jag kör inte med fasta antal bytes (vanligtvis).... det beror på flera orsaker.
t.ex.
kommando 1: reset all - kräver ingen data eller adress - två bytes (startbyte+kommando).
kommando 2: reset viss enhet = start + kommando + adress tre bytes.
kommando 3: programmera ett värde (2 bytes) = start + kommando + adress + data = 5 bytes
kommando 4: skicka en serie data: start + kommando + adress + antal-databytes + data,data,data,data,data,data .....data,checksum(2bytes) = N bytes.
kommando 5: läs in dataserie: start+adress+kommando (sedan väntar master 200ms på svar)
svar från modul:
a) bekräftelse på mottaget kommando + status = två bytes (t.ex. OK eller failed)
b) svar på dataöverföring: bekräftelse + status (t.ex checksum error eller annat)
c) svar med data: bekräfltelse + antal bytes + data,data,data,data...data,checksum
kommandot kommer i det här fallet före adressen eftersom vissa kommandon är globala och inte ska ange någon adress.
Jag kör också med små pauser innan nästa startbyte för att säkra att alla enheter börjar om från början (efter viss tid ställs de in på att vänta på startbyte igen). Någon stoppbyte har jag ingen nytta av.
t.ex.
kommando 1: reset all - kräver ingen data eller adress - två bytes (startbyte+kommando).
kommando 2: reset viss enhet = start + kommando + adress tre bytes.
kommando 3: programmera ett värde (2 bytes) = start + kommando + adress + data = 5 bytes
kommando 4: skicka en serie data: start + kommando + adress + antal-databytes + data,data,data,data,data,data .....data,checksum(2bytes) = N bytes.
kommando 5: läs in dataserie: start+adress+kommando (sedan väntar master 200ms på svar)
svar från modul:
a) bekräftelse på mottaget kommando + status = två bytes (t.ex. OK eller failed)
b) svar på dataöverföring: bekräftelse + status (t.ex checksum error eller annat)
c) svar med data: bekräfltelse + antal bytes + data,data,data,data...data,checksum
kommandot kommer i det här fallet före adressen eftersom vissa kommandon är globala och inte ska ange någon adress.
Jag kör också med små pauser innan nästa startbyte för att säkra att alla enheter börjar om från början (efter viss tid ställs de in på att vänta på startbyte igen). Någon stoppbyte har jag ingen nytta av.
Re: Mikroprocessor till reglersystem
Kodexempel för en DS1820 som visar temperaturen på en LCD display.
Det ända man behöver göra är att välja PIC och ev ändra config om PIC´en man valt har speciella funktioner på de PORTAR som används i exemplet, annars är det bara att klicka "Compile" och ladda in HEX filen PBP genererar.
http://www.microengineeringlabs.com/res ... newire.bas
Det ända man behöver göra är att välja PIC och ev ändra config om PIC´en man valt har speciella funktioner på de PORTAR som används i exemplet, annars är det bara att klicka "Compile" och ladda in HEX filen PBP genererar.
http://www.microengineeringlabs.com/res ... newire.bas
Re: Mikroprocessor till reglersystem
Alltså...
Sådana här "exempel" är lätta att göra när man har en väl begränsad funktion,
eller som i detta exempel en komplett "applikation" utan andra beroenden.
Det blir genast lite mer struligt om man ska skriva något liknande som bara
ska "länkas in" i en helt annan applikation som man inte vet ett smack om.
Så vad var det igentligen du ville säga med exemplet ? Och vad har det med
olika sätt att paketera kommendon som sänds mellan en PC och en PIC att göra ?
Sen är det nog dags att byta avitar...
Den ser lite gammalmodig ut...
Sådana här "exempel" är lätta att göra när man har en väl begränsad funktion,
eller som i detta exempel en komplett "applikation" utan andra beroenden.
Det blir genast lite mer struligt om man ska skriva något liknande som bara
ska "länkas in" i en helt annan applikation som man inte vet ett smack om.
Så vad var det igentligen du ville säga med exemplet ? Och vad har det med
olika sätt att paketera kommendon som sänds mellan en PC och en PIC att göra ?
Sen är det nog dags att byta avitar...

Den ser lite gammalmodig ut...
Re: Mikroprocessor till reglersystem
Precis som gubben i din avatar görSen är det nog dags att byta avitar...
Den ser lite gammalmodig ut...

Re: Mikroprocessor till reglersystem
Det var bara ett exempel på OWIN / OWOUT (one wire) funktionen i PBP.
Det var kanske dumt att lägga in den här och röra till det men det är sådant som händer, jag är bara en vanlig hemma pulare som egentligen vet ganska lite om programmering och PIC´ar så jag bör väl hålla tyst i fortsättningen om jag inte har något vettigt att säga.
(Har raderat avataren nu också..)
Det var kanske dumt att lägga in den här och röra till det men det är sådant som händer, jag är bara en vanlig hemma pulare som egentligen vet ganska lite om programmering och PIC´ar så jag bör väl hålla tyst i fortsättningen om jag inte har något vettigt att säga.
(Har raderat avataren nu också..)
Re: Mikroprocessor till reglersystem
He he, det jag menade var att du skulle byta till den nya "citera" knappen
eftersom den hade bytt utseende i och med uppgraderingen till phpBB3.
Spelar ingen roll, poängen verkar inte ha gått hem riktigt...
Det var väl ingen fel i sig på koden, det var bara lite oklart
hur den rellaterade till tråden. Men det kanske bara var jag
som inte fattade riktigt.
eftersom den hade bytt utseende i och med uppgraderingen till phpBB3.
Spelar ingen roll, poängen verkar inte ha gått hem riktigt...

Det var väl ingen fel i sig på koden, det var bara lite oklart
hur den rellaterade till tråden. Men det kanske bara var jag
som inte fattade riktigt.
Re: Mikroprocessor till reglersystem
Mycket intressant kunnande på detta forum
Jag får titta lite närmare på informationen i den här tråden när jag fått mer grepp om grunderna.
Nu är ett PicKit2 inköpt, satan så taggad jag är
Köpte också en feting PIC18F 40 pin.

Nu är ett PicKit2 inköpt, satan så taggad jag är

Köpte också en feting PIC18F 40 pin.
Re: Mikroprocessor till reglersystem
Nu har jag installerat alla program enligt instruktioner och har försökt köra igång enligt guiden "Get started with pic basic pro".
Här ska en färdig basic fil kompileras. När jag försöker göra detta kommer detta meddelande upp:
ERROR: Unable to execute mpasmwin.Halting build on first failure as requested.
BUILD FAILED: Tue Feb 17 21:42:26 2009
Pic basic pro är inlagd som compiler i MPLAB.
Någon som känner igen detta fel och vet vad det beror på?
Här ska en färdig basic fil kompileras. När jag försöker göra detta kommer detta meddelande upp:
ERROR: Unable to execute mpasmwin.Halting build on first failure as requested.
BUILD FAILED: Tue Feb 17 21:42:26 2009
Pic basic pro är inlagd som compiler i MPLAB.
Någon som känner igen detta fel och vet vad det beror på?
Re: Mikroprocessor till reglersystem
Leta efter inställningar som "pekar ut" mpasmwin.exe.
Tool-chain eller liknande i MPLAB.
mpasmwin är alltsp MPASM, assemblern som hör till MPLAB.
PIC BASIC Pro använder sannolikt den för att assemblera det
som den har kompilerat...
Tool-chain eller liknande i MPLAB.
mpasmwin är alltsp MPASM, assemblern som hör till MPLAB.
PIC BASIC Pro använder sannolikt den för att assemblera det
som den har kompilerat...
Re: Mikroprocessor till reglersystem
Jag är det på spåren nu. Det verkar som att vissa sökvägar blivit fel, p.g.a att jag inte lagt programmen i dom mappar som installationsprogrammen föreslog. Installerar om allt och ser vad som händer.
Re: Mikroprocessor till reglersystem
För några år sedan provade jag denna kombination och fick det aldrig till att funka. Det fanns en massa att läsa om det på nätet hur man skulle gå till väga , men det hjälpte inte mig.
Det slutade med att jag körde med Editorn som följde med kompilatorn i mitt fall "Code Lite Designer", och sedan importerade jag bara Hexfilen i MPLAB för att sedan programmera med PIC Start Plus.Berätta gärna hur det gick. "Nu kör jag Wisp och är nöjd med det"
Det slutade med att jag körde med Editorn som följde med kompilatorn i mitt fall "Code Lite Designer", och sedan importerade jag bara Hexfilen i MPLAB för att sedan programmera med PIC Start Plus.Berätta gärna hur det gick. "Nu kör jag Wisp och är nöjd med det"