Sida 2 av 4
Postat: 7 januari 2007, 22:22:55
av sodjan
> ASM-filer blir ca 27 gånger större än BTC-filer.
Ja *filen* ja, men den innehåller (sannolikt) lika mycket ljud-data...
Dssutom, exakt *vad* har storleken på filen för betydelse !?
Vad är problemet med att visa 5-10 rader från ASM filen ??
(Soolo är antagligen på rätt spår, men det vet jag inte innan
jag har sett lite av filen. Och nej, jag tänker inte installerade
programvaran själv...

)
Ett litet urklipp ur asm filen...
Postat: 7 januari 2007, 23:12:01
av gurgalof
Kod: Markera allt
;------------------------- 0
retlw b'00001011' ; 0b
retlw b'10101010' ; aa
retlw b'10000100' ; 84
retlw b'10110000' ; b0
retlw b'11101101' ; ed
retlw b'10110010' ; b2
retlw b'10010010' ; 92
retlw b'00110110' ; 36
;------------------------- 8
retlw b'10110011' ; b3
retlw b'10000101' ; 85
retlw b'01000100' ; 44
retlw b'01010001' ; 51
retlw b'10110111' ; b7
retlw b'10110110' ; b6
retlw b'11001011' ; cb
retlw b'00000110' ; 06
;------------------------- 16
retlw b'00100110' ; 26
retlw b'00100101' ; 25
retlw b'00101011' ; 2b
retlw b'01011101' ; 5d
retlw b'11011101' ; dd
retlw b'11011011' ; db
retlw b'11010111' ; d7
retlw b'10110110' ; b6
;------------------------- 24
Så här ser det ut...
Postat: 7 januari 2007, 23:14:46
av JimmyAndersson
"Dssutom, exakt *vad* har storleken på filen för betydelse !?"
Jag vet inte om du känner till något magiskt knep, men jag kan inte få in en asm-fil på 500kB i en PIC.
En wav-fil på 22kHz som "renderas" till 1bit BTc6-finess (förklaring nedan) blir 512kB asm-kod.
En wav-fil på 15kHz blir 363kB med samma renderingsval som ovan.
*Finess:
The "fineness" factor determines the basic RC filter time constant. Lower values have faster transient response, allow playback of higher frequencies, and have more noise. High values of BTc fineness tend to give reduced transient response, lower frequency response and less overall noise.
"Vad är problemet med att visa 5-10 rader från ASM filen ?? "
Problemet är att ingen har frågat efter det.
Men såhär kan det se ut:
Kod: Markera allt
;=====================================================
; Bitstream data is in PIC .asm table format,
; in blocks of 256 bytes.
;
; Bits are played from left to right, from ms_bit to
; ls_bit.
;=====================================================
;---------------------------------------------------
org (1 *256) ; block = 1
;---------------------------------------------------
;------------------------- 0
retlw b'00011000' ; 18
retlw b'01000110' ; 46
retlw b'01101010' ; 6a
retlw b'10101010' ; aa
retlw b'10101010' ; aa
retlw b'10101010' ; aa
retlw b'10101010' ; aa
retlw b'10101010' ; aa
;------------------------- 8
retlw b'10101010' ; aa
retlw b'10101010' ; aa
retlw b'10101010' ; aa
retlw b'10101010' ; aa
retlw b'10101010' ; aa
retlw b'10101010' ; aa
retlw b'10101010' ; aa
retlw b'10101010' ; aa
;------------------------- 16
"nej, jag tänker inte installerade programvaran själv..."
Om du skulle bli nyfken: Man behöver inte installera programmet. Det är bara att packa upp zip-filen och köra direkt.
edit: Jahopp, där var Gurgalof snabb igen.

Postat: 7 januari 2007, 23:18:54
av gurgalof
JimmyAndersson: Du kanske inte har tänkt på det, men när du kompilerar asm filen, så får du ut en såå mkt mindre hex fil.
Postat: 7 januari 2007, 23:19:59
av sodjan
OK, som jag gissade. Inte det mest optimala, så så bra man kan på en PIC16.
Bara att kopiera in.
Jag antar att Roman även har kodexempel för att "läsa" detta.
På en PIC18 kan man packa det bättre och köra med TBL-instruktionerna
för att läsa det. Men då måste man antingen själv skriva något som
konverterar binär filen, eller justera programvaran för att generera
"data" direktiv till MPASMisitäller för RETLW (minns inte på rak arm om det är
DA, DB eller något annat...).
> men jag kan inte få in en asm-fil på 500kB i en PIC.
Hur vet du det ?
Jag kan enkelt skapa en ASM fil på flera MB som inte innehåller någon kod alls.
Alltså, storleken på *ASM* filen har inget med hur mycket plats det tar i processorn !
Postat: 7 januari 2007, 23:22:19
av bengt-re
Jag menar, man kan ju kommentera med hela bibeln likssom....
Postat: 7 januari 2007, 23:28:18
av sodjan
Ett bra exemepl på en massivt kommenterad kod :
http://redrival.com/mcgahee/picuart.zip
Det är en komplett tutorial för PIC-USART skriven som
en 100% ASM fil. Säkert över 95% kommentarrader...
Man kan i princip använda den direkt som den är.
Anses nog som den bästa PIC-USART tutorialen som
är skriven.
Postat: 8 januari 2007, 00:34:23
av JimmyAndersson
Jag har försökt, men nu kan jag inte hålla mig längre...
Hur kul ser detta ut egentligen:
Nja, du har alltså lyckats få ut en ASM fil !!??
_ _ _
Dssutom, exakt *vad* har storleken på filen för betydelse !?
_ _ _
Vad är problemet med att visa 5-10 rader från ASM filen ??
_ _ _
Hur vet du det ?
Jag kan enkelt skapa en ASM fil på flera MB som inte innehåller någon kod alls.
Alltså, storleken på *ASM* filen har inget med hur mycket plats det tar i processorn !
För att citera en annan tråd så skrev du (sodjan) :
"Lite mer "rak" och "kort" är jag vid gratis support och speciellt när
frågeställaren inte har gjort sin "hemläxa"."
I denna tråd finns det ingen "hemläxa" att göra, så det finns ingen anledning att vara "rak och kort" mot mig.
Är vi överrens?

Postat: 8 januari 2007, 01:07:09
av sodjan
Ja, visst blev det lite tjatigt innan det kom ett exempel på
vilken ASM kod som programmet genererade.
Och vi är allså överens om att storleken på ASM filen i princip
saknar någon större betydelse ? Bra !
Postat: 8 januari 2007, 02:10:55
av JimmyAndersson
Postat: 8 januari 2007, 18:00:01
av Soolo
Lite trist att man inte kan utnytja programminne till bara data ut på en PIC16.. , endast 75%. För att programbredden är ju som dom flesta vet 14 bitar var av 6 bitar är operanden och resten 8 bitar är ju data .
Det är nog lättare med PIC18.. som sodjan föreslår eller att köpa en speciell ljudkrets som som sodjan också har nämnt.
Med då försvinner ju poängen med alltihop som vanligt att kunna lösa det med det man har

Man ska inte vara rädd för att använda en lägre frekvens och tid konstant för det ska låta bättre i PICEN än förhandsljudet i BTc programmet.
Senare har jag planer spela upp toner. vilket jag tror blir lättare.
Soolo
Postat: 8 januari 2007, 19:16:59
av JimmyAndersson
Litet tips om man använder låg ljudkvalité / hård komprimering / och liknande:
Ljud som låter bäst är de ljud som i "orginal" är så lite verklighetsbaserade som möjligt. Dvs ett synthljud blir bättre än ett pianoljud. Om orginalljudet har mest ljud i det låga och/eller höga frekvensområdet så kommer det låta lite sämre än om det mesta ljudet finns i mellanregistret.
Postat: 8 januari 2007, 19:49:57
av sodjan
Att bara 8 av 14 bitar används till "data" gäller när man använder RETLW
som i det aktuella fallet. De PIC16 som kan skriva och läsa till eget Flash-minne
kan lagra 14 användbara bitar per program-ord. Om dessa ska representera
"bytes" så blir det lite pyssel för att pussla ihop varje byte efteråt, men i
just detta fall är det ju en 1-bits ström där det inte finns något begrepp
"byte". Så på dessa PIC16 kan man packa in 14 databitar/program-ord och
modifiera läsrutinen lite.
Å andra sidan fungrar RETLW på *alla* PIC16...
Sen är ju lösningen inte tänkt för att lagra röster eller fraser, snarare
pling och plong ljud...
Behöver man mer minne får det nog bli ett externt eeprom eller fram.
Postat: 8 januari 2007, 21:41:26
av Soolo
Jag tror inte jag kan läsa och skriva data till programminne på en PIC16F877 ?
Känns lite jobbigt att lära sig för mig ny PIC18 krets. Jag får kolla om det går att lösa i C med microC och låta kompilatorn gör jobbet

Postat: 8 januari 2007, 22:57:48
av vfr
Jo, 877:an kan det!