Sida 4 av 7
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 15 juli 2015, 13:27:47
av Erik M
Tack Janne.
Det är en modul till slotracing, så hög frekvens på PWM är av nöden, för att motorerna inte ska gå varma.
Jo, jag skulle föredra att låta DC1B vara.
Dvs vara '00', och därmed följa med max och noll CCPR1L.
Med bara sex bitars upplösning blir det dock inte görligt, det kommer krävas minst 32 (fem bitar) olika hastighetsnivåer när man stoppar handtaget i näven på någon som Mikael Landerud....
Vilket skulle kunna lösas med sju bitars upplösning, men då blir frekvensen för låg...
Det går iofs att bara komma att använda de fyra, av sex totalt, MSB...
..."upplösningen" är ju då nominella 64 diskreta hastigheter.
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 15 juli 2015, 13:50:58
av Erik M
Nästa sak att lösa ut är att mäta en ADC om 6 bitar och sedan öka på den med 25% (helst 20%, men låt oss följa det binära...).
Har jag förstått rätt så ser den vanliga koden för ADC ut såhär:
Kod: Markera allt
BSF ADCON0,ADON
BSF ADCON0,GO
BTFSS ADCON0,GO
GOTO $-1
Men skulle oxå kunna skrivas såhär:
Kod: Markera allt
stepADC equ 0x20
...
movlw 0xA
movwf stepADC
BSF ADCON0,ADFM
BSF ADCON0,ADON
BSF ADCON0,GO
get_step:
NOP
DECFSZ stepADC
GOTO get_step
Och om så, då skulle ett initialt stepADC om 0x6 ge oss en ADC om sex bitar, korrekt?
Men... Det bygger på att varje upprepning ger en bit av ADC...
Om Fosc är 8MHz och ADCS är '101', dvs Fosc/16 så ska varje Tad vara 2µs.
Så varje get_step ovan måste ta 2µs, dvs fyra instructionscycler.
Vilket den oxå ganska precis gör, med den tillagda NOP.
Blir det rätt så?
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 15 juli 2015, 14:12:55
av sodjan
> Vilket skulle kunna lösas med sju bitars upplösning, men då blir frekvensen för låg...
Jag skulle byta till PIC12F1840 (eller någon annan PIC12F1xxx). Då får du en
internt osc på 32 MHz (istället för 8 Mhz) och ett par extra bitars PWM upplösning
vid samma PWM frekvens på köpet. Samt en modernare processor rent allmänt.
Verkar ge 10 bitar vid 17 KHz, d.v.s att alla 8 bitar i CCPR1L kan användas och
DC1B bitarna kan hållas som "00".
När det gäller ADCn så fattar jag inte vad du gör. ADC modulen är 10 bitar
och ger alltid ett 10 bitars resultat.
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 15 juli 2015, 14:16:51
av bearing
Erik M skrev:Vilket skulle kunna lösas med sju bitars upplösning, men då blir frekvensen för låg...
8Mhz / 128 = 62,5kHz. Är du medveten om vilka krav du stället på hårdvaran ifall du tänker använda så hög frekvens?
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 15 juli 2015, 14:41:17
av Erik M
Det är nog bra om jag gör det Janne, byter upp mig.
Men nu har jag dessa liggande...
Japp bearing, det vet jag. Och det funkar.
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 15 juli 2015, 14:49:17
av sodjan
> Men nu har jag dessa liggande...
Jo, så brukar det ju vara...

Jag har nog några 12F1840 liggandes på kontoret.
Jag kan skicka över ett per st. ifall du vill testa i alla fall.
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 15 juli 2015, 14:51:56
av bearing
Kul att det funkar. Lycka till med resten av programmet.
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 15 juli 2015, 21:07:42
av Erik M
Du känner igen fenomenet...
Ökad kunskap och möjlighet uppskattas högeligen, så att säga...
Och du vet adressen sedan hyfsat långt tillbaka...

Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 15 juli 2015, 21:16:11
av Erik M
Tack bearing, det är hjälp med MC's idéer som behövs. De är inte alltid, någonsin, speciellt funktionella..
Utan att nu vilja reta upp någon och efter ett antal glas vin och mindre Jägermeister vill jag påstå att BTFSS och BTFSC skulle fungera otroligt mycket mer lättillgängligt om de formulerades som BTFDS & BTFDC.
Dvs bit test file do If set och bit test do If clear...
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 15 juli 2015, 23:44:36
av sodjan
> Och du vet adressen sedan hyfsat långt tillbaka...
OK.
Jag antar att det är samma som i april i år.
Jag kollar på torsdag ifall jag hittar några...
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 16 juli 2015, 12:33:43
av Erik M
Define är i det näsrmaste oanständigt kraftfull.
Det fungerar göra detta, verkar det som:
Kod: Markera allt
#define BTFDS BTFSC ; Bit Test File Do if Set
#define BTFDC BTFSS ; Bit Test File Do if Clear
Är det verkligen så simpelt?
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 16 juli 2015, 12:42:35
av sodjan
Ja, men helt onödigt och gränsande till ganska dumt.
Det måste finnas viktigare programmeringsproblem
att lägga tid på...
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 16 juli 2015, 16:18:51
av Erik M
Eftersom det därmed är löst är tiden redan lagd - och väl använd därtill.
Den formulering som används, BTFSS/SC, är i grunden en negation.
Vilket leder till en kedja av negationer - något som mycket snabbt blir tre stycken och därmed ej möjlig lösa.
Genom att ta bort den första blir det aldrig mer än en negation att hantera.
Ändringen att tänka, "då skall jag göra så", istället för "då skall jag låta bli göra så", gör att formulering blir direkt kompatibel med vårt sätt att tänka.
"Och där, uppe i vänstra hörnet, sitter det ingen apa. Inte ens en skinnlapp."
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 16 juli 2015, 16:21:24
av Erik M
Men nu är det löst - och jag har ett programmeringsproblem.
Hur får man HEX-filen att "bita"?
Det händer flera gånger att PICkit 2'an inte verkar få över koden.
Re: CCPR1L:CCP1CON<5:4> = ???
Postat: 16 juli 2015, 16:24:20
av TomasL
Tja, det beror väl på vilka felmeddelanden du får.