CCPR1L:CCP1CON<5:4> = ???
Re: CCPR1L:CCP1CON<5:4> = ???
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.
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> = ???
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:
Men skulle oxå kunna skrivas såhär:
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å?
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
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
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> = ???
> 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.
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> = ???
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?Erik M skrev:Vilket skulle kunna lösas med sju bitars upplösning, men då blir frekvensen för låg...
Re: CCPR1L:CCP1CON<5:4> = ???
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.
Men nu har jag dessa liggande...
Japp bearing, det vet jag. Och det funkar.
Re: CCPR1L:CCP1CON<5:4> = ???
> 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.
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> = ???
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...

Ökad kunskap och möjlighet uppskattas högeligen, så att säga...

Och du vet adressen sedan hyfsat långt tillbaka...

Senast redigerad av Erik M 15 juli 2015, 21:31:58, redigerad totalt 1 gång.
Re: CCPR1L:CCP1CON<5:4> = ???
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...
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> = ???
> 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...
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> = ???
Define är i det näsrmaste oanständigt kraftfull.
Det fungerar göra detta, verkar det som:
Är det verkligen så simpelt?
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
Re: CCPR1L:CCP1CON<5:4> = ???
Ja, men helt onödigt och gränsande till ganska dumt.
Det måste finnas viktigare programmeringsproblem
att lägga tid på...
Det måste finnas viktigare programmeringsproblem
att lägga tid på...
Re: CCPR1L:CCP1CON<5:4> = ???
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."
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> = ???
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.
Hur får man HEX-filen att "bita"?
Det händer flera gånger att PICkit 2'an inte verkar få över koden.