ny inom detta

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Nja, det finns några försök till simulatorer där man även kan hänga
på kringutrustning.

I MPSIM får man alltså stega sitt program och verifiera att I/O-pinnarna
gör som det är *tänkt*. Sedan, när det ser ut att fungera som det ska,
så testkör man direkt i hårdvaran och så får man gå vidare därifrån...

> Då kan jag ju passa på att fråga om det inte är svårt?

Verkligen inte.
Gör ett par menyval i MPLAB och klicka på "Run" eller "Animate"... :-)
Lägg sedan till "Breakpoints", "Watch", "Stopwatch" o.s.v efter tycke och smak.
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

v-g>> " Man behöver inte läsa hundratals sidor med dokumentation för att lära assembler" det är möjligt men jag citerar Sodjan "En sak som många kör fast på, var beredd på att läsa stora mängder dokumentation (datablad) på engelska. "
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

:-)

> ..läsa stora mängder dokumentation...

Alltså, stora och stora... :-)

Poängen med att jag skrev så där var igentligen att de är på *engelska"...

Det jag menar är att en del verkar ha problem med att
läsa igenom ens en *enstaka sida* i databladet (innan de
postar sina RTFM-frågor på forumet)... :-) :-)

En del tror även att man kan klara sig helt utan att öppna databladet,
vilket jag tror är att skjuta sig i foten.

Personligen tycker jag att man bör läsa/browsa/skumma igenom
databladet minst en gång, så att man känner sig "hemma" i det.
D.v.s att man sedan ganska snabbt kan hitta tillbaka till rellevanta
ställen i databladet.

En annan sak är att ca 1/3 till 1/4 av varje datablad består av en massa
elektriska specar, de kan man ta det lite lungt med i början.

Ytterligare en sak är att har man läst ett datablad så har man läst alla,
de är väldigt lika i upplägg/struktur. Det som skiljer är de skillnader
som finns mellan olika processorer. Men t.ex kapitlen om USART, ADC,
Timers o.s.v är *i princip* likadana mellan processorer (inom rimliga
gränser). De stora skillnaerna finns i "Memory Map" och registerstruktur t.ex.
Användarvisningsbild
Earendil
EF Sponsor
Inlägg: 448
Blev medlem: 2 juni 2004, 09:06:43
Ort: Lund

Inlägg av Earendil »

BJ skrev:Wisp628 är nog bra. Jag har inte provat den. Men jag hade inte klarat mig långt utan Microchips icd-2. Den är dyrare, men med den kan man stoppa processorn och titta på olika register. Det är jättebra när man letar fel. Man kan se det mesta. Vilken bank man är i, vilka ben som är ingångar och så... Jag har ingen egen, men det kanske blir så småningom.

Tillägg: Det är lite problem med icd-2:arna. Det är inte alla processorer som går att köra i avlusningsläget om man t.ex. kör med den inbyggda klockan. Det problemet kan man gå förbi då genom att koppla in en yttre klockkrets tillfälligt.
Jag har med framgång använt PICkit2, som är Microchips egen in-circuit-programmerare. Har inte sett någon importör i Sverige, men man kan köpa den direkt av Microchip. Den fungerar riktigt bra och klarar även av 3.3-volts-PIC:arna (ett "nytt" påfund), vilket inte Wisp628 gör (inte för ett tag sedan i alla fall). Behöver man inte använda 3.3-voltarna så kan det nog kvitta vilken du väljer.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7487
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

Nu kanske jag har fått något om bakfoten, med 3.3V PIC är väl i nuvarande utförande bara garanterade för 100 (etthundra) flashningar? De är i så fall verkligen inget bra för oss amatörer.
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Är man erfaren kanske man kan se av namnen på registren i tex MPLAB vilken funktion de har. Jag kan en del av registrena utantill dock lång långt ifrån alla. Hur detta skiljer sig från basic vet jag inte men jag tror ändå inte basic kan "skala bort" sättandet av dessa SFR helt.

Dokumentationen till PIC är lättöverskådlig och börjar man från slutet finns klickbart register. Jag hittar nästan alltid direkt vad jag letar efter.

Hursomhelst kommer nog den dagen då man vill ansluta en ytterligare krets och dennas datablad kommer inte finnas på svenska. Vad gäller att läsa datablad är det bara att "gilla läget" som ledin sjunger (hans låt handlar dock inte om PIC vad jag vet). Det är helt enkelt en del av elektroniken.

Jag personligen gillar att läsa om den funktion jag ämnar skapa, oftast läser jag igenom hela kapitlet för att få en "humm" om hur det är tänkt att det skall fungera. Microchips datablad tycker jag också personligen är väldigt bra (även om exemplen inte alltid är så överskådliga). Svar på 8 av 10 frågor här på forumet fanns/finns i databladet vad gäller µc.

Dock går väldigt mycket tid bort väldigt fort när man kodar en liten rutin. Det är en stor nackdel :D
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Jag har programmerat i ganska många olika språk. Mest i Basic, så det blev mitt val när jag börjde programmera PIC-kretsar. På senare tid har jag gått över till assembler.

Det går lätt och fort att göra kod i Basic (t.ex MikroBasic) eftersom man liksom kan skriva hela koden från början till slut utan att behöva fundera så mycket. Men: När man blivit lite varm i kläderna och vill göra stora program, t.ex styra några servon, en klocka och en display i samma program så upptäcker man efter en stund att det blir för rörigt. Även om MikroBasic innehåller många kommandon så verkar inte de vara gjorda för att göra snabba och välstrukturerade koder. Det här med att "inte behöva fundera så mycket" är helt plötsligt en stor nackdel.

I assembler är varje instruktion en liten byggsten, därför behövs inte särskillt många instruktioner. Detta innebär istället att man själv får lägga ner lite tid på att "bygga ihop rutiner" för att utföra saker. På köpet tvingas man dessutom tänka igenom hela koden innan man ens börjar knappa. Det kan kännas lite omständigt i början, men man upptäcker *väldigt* snabbt hur smidigt det är.


En liten jämförelse:

Låt säga att PORTA.0 är en ingång och PORTA.1 är en utgång. Vi vill kolla om den är "hög" (dvs har 5V). Isåfall ska koden göra så att PORTA.1 också är hög. Annars ska PORTA.2 bli hög.


Basic:
IF PORTA.0 = 1 THEN PORTA.1 = 1
ELSE
PORTA.2 = 1
END IF

Assembler:
BTFSC PORTA, 0
PORTA, 1
PORTA, 2

Redan på en sån här enkel sak ser man att assembler är mycket smidigare. Dessutom görs Basic-koden om till assembler innan man skapar en .hex-fil till PIC-kretsen. Den genererade assembler-filen är väldigt ofta mycket större och rörigare än om man skrivit det i assembler från början.

BTFSC betyder förresten Bit Test File, Skip If Clear. Dvs om PORTA, 0 är låg så körs inte den raden som står under. Smidigt! :)


För ett halvår sedan hade jag trott att jag skulle skriva såhär om assembler. Jag har programmerat Basic i 20 år och har alltid haft det som mitt favoritspråk. Jag har knappat lite asssembler tidigare, men inte riktigt fastnat för det. Men när jag testade att programmera PIC-kretsar i asssembler så upptäckte jag att det var perfekt för dessa små kretsar.
Däremot kommer jag fortsätta använda Basic på "vanliga" datorer, för det är ett väldigt kul språk. :)
foppa
Inlägg: 189
Blev medlem: 2 oktober 2006, 11:32:04
Ort: sthlm

Inlägg av foppa »

JimmyAndersson skrev:Jag har programmerat i ganska många olika språk. Mest i Basic, så det blev mitt val när jag börjde programmera PIC-kretsar. På senare tid har jag gått över till assembler.

Det går lätt och fort att göra kod i Basic (t.ex MikroBasic) eftersom man liksom kan skriva hela koden från början till slut utan att behöva fundera så mycket. Men: När man blivit lite varm i kläderna och vill göra stora program, t.ex styra några servon, en klocka och en display i samma program så upptäcker man efter en stund att det blir för rörigt. Även om MikroBasic innehåller många kommandon så verkar inte de vara gjorda för att göra snabba och välstrukturerade koder. Det här med att "inte behöva fundera så mycket" är helt plötsligt en stor nackdel.

I assembler är varje instruktion en liten byggsten, därför behövs inte särskillt många instruktioner. Detta innebär istället att man själv får lägga ner lite tid på att "bygga ihop rutiner" för att utföra saker. På köpet tvingas man dessutom tänka igenom hela koden innan man ens börjar knappa. Det kan kännas lite omständigt i början, men man upptäcker *väldigt* snabbt hur smidigt det är.


En liten jämförelse:

Låt säga att PORTA.0 är en ingång och PORTA.1 är en utgång. Vi vill kolla om den är "hög" (dvs har 5V). Isåfall ska koden göra så att PORTA.1 också är hög. Annars ska PORTA.2 bli hög.


Basic:
IF PORTA.0 = 1 THEN PORTA.1 = 1
ELSE
PORTA.2 = 1
END IF

Assembler:
BTFSC PORTA, 0
PORTA, 1
PORTA, 2

Redan på en sån här enkel sak ser man att assembler är mycket smidigare. Dessutom görs Basic-koden om till assembler innan man skapar en .hex-fil till PIC-kretsen. Den genererade assembler-filen är väldigt ofta mycket större och rörigare än om man skrivit det i assembler från början.

BTFSC betyder förresten Bit Test File, Skip If Clear. Dvs om PORTA, 0 är låg så körs inte den raden som står under. Smidigt! :)


För ett halvår sedan hade jag trott att jag skulle skriva såhär om assembler. Jag har programmerat Basic i 20 år och har alltid haft det som mitt favoritspråk. Jag har knappat lite asssembler tidigare, men inte riktigt fastnat för det. Men när jag testade att programmera PIC-kretsar i asssembler så upptäckte jag att det var perfekt för dessa små kretsar.
Däremot kommer jag fortsätta använda Basic på "vanliga" datorer, för det är ett väldigt kul språk. :)
Va är detta "Basic:
IF PORTA.0 = 1 THEN PORTA.1 = 1
ELSE
PORTA.2 = 1
END IF

det har jag syssla´t med i skolan för 20 år sen.
Hux flux så blev allt mygge roligare och lättare.
Finns ju en chans att jag kan fixa detta.
hu va glad jag blev.
foppa :D
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK, men ditt ASM exemepel fungerar inte riktigt... :-)

Den sätter kanske RA1 hög (beror på RA0), men sätter *alltid* RA2 hög.

Något i stil med detta fungerar :

Kod: Markera allt

   BTFSC PORTA, 0
   BSF   PORTA, 1  ; hoppas över om RA0 = "0"  (Skip if Clear ovan)
   BTFSS PORTA, 0
   BSF   PORTA, 2  ; hoppas över om RA0 = "1"  (Skip if Set ovan)
Sedan behövs det mer om bara *en* av portarna ska vara hög, men
det fixade inte basic koden heller... :-)

Finns ett litet problem om RA0 ändras *mellan* de två BTFSx instruktionena.

Då kan detta fungera bättre:

Kod: Markera allt

   ...
   ...
   ...
   BTFSC PORTA, 0
   GOTO  set RA1_high
   BCF   PORTA, 1  ; om RA0 = "0"
   BSF   PORTA, 2
   GOTO  end_of_RA0_check
set_RA1_high
   BSF   PORTA, 1  ; om RA0 = "1"...
   BCF   PORTA, 2
end_of_RA0_check
   ...
   ...
...
Då sätts också den andra pinnen = "0"... :-)

Deta hela beror helt på exakt vilken funktion man vill uppnå.

foppa, vad fasen citerade du nästan 50 rader för ???
Och låt dig inte luras av ett litet exempel som ser enkelt ut.
Läs vad Jimmy skrev för övrigt...
foppa
Inlägg: 189
Blev medlem: 2 oktober 2006, 11:32:04
Ort: sthlm

Inlägg av foppa »

sodjan skrev:OK, men ditt ASM exemepel fungerar inte riktigt... :-)

Den sätter kanske RA1 hög (beror på RA0), men sätter *alltid* RA2 hög.

Något i stil med detta fungerar :

Kod: Markera allt

   BTFSC PORTA, 0
   BSF   PORTA, 1  ; hoppas över om RA0 = "0"  (Skip if Clear ovan)
   BTFSS PORTA, 0
   BSF   PORTA, 2  ; hoppas över om RA0 = "1"  (Skip if Set ovan)
Sedan behövs det mer om bara *en* av portarna ska vara hög, men
det fixade inte basic koden heller... :-)

Finns ett litet problem om RA0 ändras *mellan* de två BTFSx instruktionena.

Då kan detta fungera bättre:

Kod: Markera allt

   ...
   ...
   ...
   BTFSC PORTA, 0
   GOTO  set RA1_high
   BCF   PORTA, 1  ; om RA0 = "0"
   BSF   PORTA, 2
   GOTO  end_of_RA0_check
set_RA1_high
   BSF   PORTA, 1  ; om RA0 = "1"...
   BCF   PORTA, 2
end_of_RA0_check
   ...
   ...
...
Då sätts också den andra pinnen = "0"... :-)

Deta hela beror helt på exakt vilken funktion man vill uppnå.

foppa, vad fasen citerade du nästan 50 rader för ???
Och låt dig inte luras av ett litet exempel som ser enkelt ut.
Läs vad Jimmy skrev för övrigt...

hmmm kan man göra det på olika sätt.
citera allså....förklara :shock:
foppa
Användarvisningsbild
GrodanB
Inlägg: 245
Blev medlem: 11 februari 2006, 16:46:25
Ort: Göteborg
Kontakt:

Inlägg av GrodanB »

Det som efterfrågas av dig är att om du svarar på föregående inlägg så trycker du på "Skriv Svar". Som du ser att jag nu gjort.

Inte "Citera"

När man väl citerar kan välja att ta bort rader som INTE behövs om man vill poängtera något påstånde i tidigare inlägg så inte ditt eget blir 500 rader trots att du bidrar med 2 som handlar om 3 rader i det aktuella inlägget.
Så länge man inte ändrar innehållet i citatet kan man korta ner det. Men man bör låta allt som behövs för förståelsen vara kvar...

Code taggarna används som citat eftersom de tillåter indentering...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> citera allså....förklara...

GrodanB förklarade perfekt. :-)
Jag trycker nästan aldrig på "Citera" knappen...
BJ
Inlägg: 8864
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Inlägg av BJ »

sodjan skrev:Gör ett par menyval i MPLAB och klicka på "Run" eller "Animate"...
Pratar vi verkligen om samma sak nu?
Här är en bruksanvisning:
http://ww1.microchip.com/downloads/en/D ... 51519B.pdf

Det jag tittade på var "Chapter 18. Using Stimulus". Jag tycker att det sättet påminner ganska mycket om att göra insignals-filer till vhdl utan att använda modeller.
Svårt kanske det inte är, men det blir ju ganska mycket jobb.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Pratar vi verkligen om samma sak nu?

*Jag* pratar om att komma igång med MPSIM...

Om *du* vill prata om att göra stimulus-filer till MPSIM, så fine, gör det...
BJ
Inlägg: 8864
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Inlägg av BJ »

Okej... Jag missade väl att det var "Komma i gång med" då... :roll:
Skriv svar