Sida 5 av 8

Re: Mikroprocessor till reglersystem

Postat: 20 februari 2009, 23:23:43
av vfr
Nja. Inte PIN-nr som i kapselns PIN-nr. Utan portens bitnr. Bit 0 i registret PORTC motsvarar t.ex första portpinnen på port C. För att sätta denna så ska du sätta registret till 1 (bitvärdet för bit 0). Bit 1 i PORTC motsvarar andra portpinnen på port C. Då sätter du PORTC till 2 (bitvärdet för bit 1). Och motsvarande för övriga bitar. Greppar du inte det, så bör du nog läsa på lite om binära talsystem och bitvärden för att komma vidare.

Re: Mikroprocessor till reglersystem

Postat: 21 februari 2009, 13:15:27
av Kretskort
vfr skrev:Nja. Inte PIN-nr som i kapselns PIN-nr. Utan portens bitnr. Bit 0 i registret PORTC motsvarar t.ex första portpinnen på port C. För att sätta denna så ska du sätta registret till 1 (bitvärdet för bit 0). Bit 1 i PORTC motsvarar andra portpinnen på port C. Då sätter du PORTC till 2 (bitvärdet för bit 1). Och motsvarande för övriga bitar. Greppar du inte det, så bör du nog läsa på lite om binära talsystem och bitvärden för att komma vidare.
Jag förstår inte ändå :oops:

Jag vet hur binära tal är uppbygda och att en bit bara kan vara hög eller låg.

Det hade varit jätteschysst om någon bara kunde förklara hur det gått till i just detta fall. Jag tror inte jag kan komma vidare på egen hand och jag har inte en aning om vad jag ska söka på.

Dessa tal skickas av programmet till PORTC:
[1,3,7,15] (tänder dioder åt höger)
[8,12,14,15] (tänder dioder åt vänster)

Re: Mikroprocessor till reglersystem

Postat: 21 februari 2009, 13:25:54
av v-g
Du testa kalkylatorn i windows. Slår du på avancerad kan du direkt se vad ett tal blir i hex, bin och decimal form. Använder den själv för jämnan.

HEX är också viktigt eftersom varje tal i HEX motsvaras av 4 binära. (decimalt 0-15)

[1,3,7,15] (tänder dioder åt höger)
00000001
00000011
00000111
00001111

[8,12,14,15] (tänder dioder åt vänster)
00001000
00001100
00001110
00001111

Re: Mikroprocessor till reglersystem

Postat: 21 februari 2009, 13:29:12
av vfr
Dessa tal skickas av programmet till PORTC:
[1,3,7,15] (tänder dioder åt höger)
[8,12,14,15] (tänder dioder åt vänster)


1 = bara bit 0 hög, övriga låga (00000001)
3 = bit 0 + 1 höga, övriga låga (00000011)
7 = bit 0 + 1 + 2 höga, övriga låga (00000111)
15= bit 0 + 1 + 2 + 3 höga, övriga låga (00001111)

8 = bara bit 3 hög, övriga låga (00001000)
12 = bit 2 + 3 höga, övriga låga (00001100)
14 = bit 1 + 2 + 3 höga, övriga låga (000001110)
15= bit 0-3 höga, övriga låga (00001111)

Om du nu kan det binära talsystemet, så förstår jag inte riktigt var problemet ligger.

Re: Mikroprocessor till reglersystem

Postat: 21 februari 2009, 13:32:18
av sodjan
> Dessa tal skickas av programmet till PORTC:
> [1,3,7,15] (tänder dioder åt höger)
> [8,12,14,15] (tänder dioder åt vänster)

Skriv talen binärt istället. Eller åtminstående hexadecimalt.

Håller med övriga, det är lite svårt att förstå vad problemet är...

Re: Mikroprocessor till reglersystem

Postat: 21 februari 2009, 14:28:10
av TotteBasicPic
Kanske detta

Om Bars är 0 skickas 1 till PORTC
Om Bars är 1 skickas 3 till PORTC
Om Bars är 2 skickas 7 till PORTC
Om Bars är 3 skickas 15 till PORTC


edit

är TRISC = %11111111

H.Thomas

Re: Mikroprocessor till reglersystem

Postat: 21 februari 2009, 14:37:43
av Kretskort
Men detta är ju lysande! :D

Nu förstår jag hur sambandet är. Smart att skicka så mycket information i en enda siffra.

Jo, ovanstående är ett problem för en kille som inte arbetat med andra digitala signaler än strömbrytarna till sin belysning hemma...

TotteBasicPic: Japp, så långt var jag med. :)

Re: Mikroprocessor till reglersystem

Postat: 24 februari 2009, 10:15:09
av MGKea
Fredrick skrev:Absolut genomförbar....

Eftersom du inte verkar kunna programmera i ASM så föreslår jag något nu som kommer att uppröra en del personer här (du lär märka det...).

PICBASIC PRO compiler ifråm Melabs.com och PICkit2 ifrån Microchip, ja och så en microprocessor och några DS1820 för temperatur mätningen, källkod kan jag hjälpa dig med.
Jag är också intresserad av lite källkod.

Re: Mikroprocessor till reglersystem

Postat: 27 februari 2009, 20:27:42
av Kretskort
Just nu använder jag MicroCode för jag tycker det är enklare än MPLAB.

Hur får jag koden att köras på Microcontrollern så fort enheten programmerats? Den dumpar över koden som den ska men programmet körs inte sedan.

Re: Mikroprocessor till reglersystem

Postat: 27 februari 2009, 20:40:02
av v-g
Och du har kontroll på MCLR pinnen och även dess interna inställning?

Re: Mikroprocessor till reglersystem

Postat: 28 februari 2009, 16:05:01
av Kretskort
v-g skrev:Och du har kontroll på MCLR pinnen och även dess interna inställning?
Ja, där hade vi det!

Jag lade till -R och -T på kommandoraden, och nu fungerar det!

R Release /MCLR after operations
T Power Target after operations

Om jag har förstått det rätt så läggs en spänning på MCLR då PICen programmeras, vilket nollställer den? Och release parametern i detta fall tog bort denna spänning?

Här är en guide för att koppla PICkit2 till microcode studio:
http://nutsvolts.texterity.com/nutsvolts/200801/?pg=67

Här är mina parametrar på kommandoraden:
-PPIC$target-device$ -F$hex-filename$ -E -M -Y -Y -R -T -Hk

Re: Mikroprocessor till reglersystem

Postat: 28 februari 2009, 16:08:29
av v-g
Hur pinnen fungerar står i databladet.

Men för att vara hygglig så normalt kör man den med 10K pullupmotstånd för att få något alls att hända.

Dvs pinnen mot jord = konstant reset = inget händer.

Re: Mikroprocessor till reglersystem

Postat: 28 februari 2009, 16:57:04
av Kretskort
Aha okaj. :)

Jag försöker just nu sätta ihop en räknare till programmet. Det sitter en switch på PORTA.3 som är 0 då switchen är nedtryckt.

Jag har försökt räkna nedtryckningar på switchen genom koden:

Kod: Markera allt

counter VAR BYTE 

IF porta.3 = 0 THEN
counter+1 
ENDIF 
Tanken är att varje gång switchen trycks ner ska en etta läggas till i variabeln "counter", men kompilatorn vill överhuvudtaget inte svälja koden.

Hur ska jag gå till väga? Jag har kikat i PBP manualen men inte hittat något.

Sen har jag försökt med COUNT kommandot med men den gör ju inget annat än räknar pulser under en given tidsperiod.

På Mitsubishi PLC finns det satans enkla räknarmoduler som gör livet enkelt, det finns inga motsvarighet på PIC som jag missat?

Jag har lyckats göra ett rinnande ljus med lookup kommandot nu iallafall. :D

Re: Mikroprocessor till reglersystem

Postat: 28 februari 2009, 17:36:18
av vfr
Men snälla, skriv vad du får för fel då, om du vill ha hjälp. Folk kan ju inte sitta och gissa.

Nu gissar jag iallafall.

Raden 'counter+1' borde nog vara 'counter = counter+1'. Annars vet inte kompilatorn vad den skall göra med resultatet av beräkningen.

Re: Mikroprocessor till reglersystem

Postat: 28 februari 2009, 17:57:59
av sodjan
> Om jag har förstått det rätt så läggs en spänning på MCLR då PICen programmeras,

Inte helt rätt.
Det läggs en spänning till MCLR pinnen (spänningen kallas Vpp och nivån framgår av
det aktuella databladet, det varierar lite) för att få processorn att gå över till
"programming mode". Det innebär inte att det händer någonting alls.
Sedan, när processorn befinner sig i "programming-mode" så får man skicka
olika kommandon till den för att *t.ex.* göra en "erase all", eller något annat.

Ditt försök att räkna knappnedtryckningar på "porta.3" har flera problem, det
största sannolikt att du inte tar hänsyn till kontaktstudsar. Du kommer att räkna
10-20 "steg" varje gång knappen trycks.