Ugrabio sam juce malo vremena da eksperimentisem malo sa svojim prvim generatorom f-ja koji mi je pao saka (DG1022Z) i pokusao da napravim *.RAF fajl koji bi predstavljao arbirtrarnu f-ju digitalnog signala (UART).
Pre nego nastavim, znam da je upotrebna vrednost ovoga mala, mozda i nikakva u praksi, ali cisto za edukativnu svrhu (bar meni) mislim da je koristno.
Dakle, za poruku "HELLO" koju zelim da predstavim arb f-jom prvo sto treba da uradimo je da transformisemo ovo u binarni oblik karakter po karakter.
HELLO = 01001000 01000101 01001100 01001100 01001111
Nakon ovoga, treba da odradimo tzv. little-endian formatiranje, dakle da less significant bit prebacimo na pocetak a most significant prebacimo na kraj, dakle prosto receno da invertujemo bitove u svakom od gornjih byte-ova.
Sto znaci dobijemo ovo:
00010010 10100010 00110010 00110010 11110010
E sad, treba da odradimo UART transformaciju:
- Dodamo start bit
- Nadovezemo gore dobivenim bitovima koji predstavljaju samu poruku (5-9 bita, ali se najcesce koriste 8)
- Opciono dodamo parity bitove (da ne komplikujem nisam ih dodavao u ovom primeru)
- Zavrsimo poruku adekvatnim stop bitom (1 ili 2 stop bita).
Dakle za primer gde imamo 8 bita za poruku, iskljucen parity bit i 2 stop bita onda dobijemo ovo:
00001001011 01010001011 00011001011 00011001011 01111001011
(Opet odvojeno za svako slovo iz grupe "H E L L O")
DG1022Z ima skalu od 0 do 16383 koliko sam video iz dokumentacije za peek to peek vrednosti (20v).
Znaci ako premapiramo sad ovo na napon onda dobijemo ovo:
0 vrednost na skali = -10V
8192 na skali = 0V
16383 = +10V
Za nas UART signal (TTL 5V) znaci mi treba da transformisemo 0 i 1 u njima adekvatne napone, znaci da koristimo 8192 kao binarnu 0 i 12287 kao binarnu 1, i posto treba da koristimo hex vrednosti za *.RAF fajl koji generisemo, to mu dodje dakle 0x2000 i 0x3000.
Znaci nas hex fajl na kraju izgleda ovako:
![[Image: d6aa7db85d184d3f978a1c35e2b6297e.png]](http://image.prntscr.com/image/d6aa7db85d184d3f978a1c35e2b6297e.png)
20002000200020003000200020003000200030003000 20003000200030002000200020003000200030003000 20002000200030003000200020003000200030003000 20002000200030003000200020003000200030003000 20003000300030003000200020003000200030003000
(...nadam se da ce se videti ok formatiranje, odvojeno zbog preglednosti opet da svaka grupa predstavlja po jedan karakter "H E L L O")
I u teoriji isti princip za RS232 moze da se primeni samo se uzmu adekvatne vrednosti za napon koji zelimo.
E sad, ovako dobijen *.RAF fajl, prebacimo na FAT\FAT32 formatiran USB i mozemo da ucitamo ovu arbirtrarnu f-ju na samom uredjaju.
(...podesimo dodatno V High\Low level na koliko nam treba takodje i sl.)
Nakon sto je zakacen osciloskop i izabran npr. baud od 9600 na generatoru moramo da stavimo frekvenciju od 9600Hz.
E sad, ovaj deo je meni problematican, zbog malog sample rate-a signal koji se dobije nece imati digitalni (square) oblik.
Da bi dobio digitalni oblik, morali bi da gore dobivene 1 i 0 "dupliramo x puta" (koliki bit rate izaberemo) i onda bi dobili adekvatan oblik signala ("kvalitetniji" oblik koji bi osciloskop ili drugi instrument mogao da ocita).
Npr. evo sta se dobija u oba slucaja uporedo:
![[Image: 3fe6eb0ef9c946cf89bef88d70f7f3f5.png]](http://image.prntscr.com/image/3fe6eb0ef9c946cf89bef88d70f7f3f5.png)
PS, jos uvek sam newbie pa ako sam nesto ispustio ne zamerite![Smile Smile](https://forum.yu3ma.net/images/smilies/smile.gif)
Svaka preporuka dobrodosla
Pre nego nastavim, znam da je upotrebna vrednost ovoga mala, mozda i nikakva u praksi, ali cisto za edukativnu svrhu (bar meni) mislim da je koristno.
Dakle, za poruku "HELLO" koju zelim da predstavim arb f-jom prvo sto treba da uradimo je da transformisemo ovo u binarni oblik karakter po karakter.
HELLO = 01001000 01000101 01001100 01001100 01001111
Nakon ovoga, treba da odradimo tzv. little-endian formatiranje, dakle da less significant bit prebacimo na pocetak a most significant prebacimo na kraj, dakle prosto receno da invertujemo bitove u svakom od gornjih byte-ova.
Sto znaci dobijemo ovo:
00010010 10100010 00110010 00110010 11110010
E sad, treba da odradimo UART transformaciju:
- Dodamo start bit
- Nadovezemo gore dobivenim bitovima koji predstavljaju samu poruku (5-9 bita, ali se najcesce koriste 8)
- Opciono dodamo parity bitove (da ne komplikujem nisam ih dodavao u ovom primeru)
- Zavrsimo poruku adekvatnim stop bitom (1 ili 2 stop bita).
Dakle za primer gde imamo 8 bita za poruku, iskljucen parity bit i 2 stop bita onda dobijemo ovo:
00001001011 01010001011 00011001011 00011001011 01111001011
(Opet odvojeno za svako slovo iz grupe "H E L L O")
DG1022Z ima skalu od 0 do 16383 koliko sam video iz dokumentacije za peek to peek vrednosti (20v).
Znaci ako premapiramo sad ovo na napon onda dobijemo ovo:
0 vrednost na skali = -10V
8192 na skali = 0V
16383 = +10V
Za nas UART signal (TTL 5V) znaci mi treba da transformisemo 0 i 1 u njima adekvatne napone, znaci da koristimo 8192 kao binarnu 0 i 12287 kao binarnu 1, i posto treba da koristimo hex vrednosti za *.RAF fajl koji generisemo, to mu dodje dakle 0x2000 i 0x3000.
Znaci nas hex fajl na kraju izgleda ovako:
![[Image: d6aa7db85d184d3f978a1c35e2b6297e.png]](http://image.prntscr.com/image/d6aa7db85d184d3f978a1c35e2b6297e.png)
20002000200020003000200020003000200030003000 20003000200030002000200020003000200030003000 20002000200030003000200020003000200030003000 20002000200030003000200020003000200030003000 20003000300030003000200020003000200030003000
(...nadam se da ce se videti ok formatiranje, odvojeno zbog preglednosti opet da svaka grupa predstavlja po jedan karakter "H E L L O")
I u teoriji isti princip za RS232 moze da se primeni samo se uzmu adekvatne vrednosti za napon koji zelimo.
E sad, ovako dobijen *.RAF fajl, prebacimo na FAT\FAT32 formatiran USB i mozemo da ucitamo ovu arbirtrarnu f-ju na samom uredjaju.
(...podesimo dodatno V High\Low level na koliko nam treba takodje i sl.)
Nakon sto je zakacen osciloskop i izabran npr. baud od 9600 na generatoru moramo da stavimo frekvenciju od 9600Hz.
E sad, ovaj deo je meni problematican, zbog malog sample rate-a signal koji se dobije nece imati digitalni (square) oblik.
Da bi dobio digitalni oblik, morali bi da gore dobivene 1 i 0 "dupliramo x puta" (koliki bit rate izaberemo) i onda bi dobili adekvatan oblik signala ("kvalitetniji" oblik koji bi osciloskop ili drugi instrument mogao da ocita).
Npr. evo sta se dobija u oba slucaja uporedo:
![[Image: 3fe6eb0ef9c946cf89bef88d70f7f3f5.png]](http://image.prntscr.com/image/3fe6eb0ef9c946cf89bef88d70f7f3f5.png)
PS, jos uvek sam newbie pa ako sam nesto ispustio ne zamerite
![Smile Smile](https://forum.yu3ma.net/images/smilies/smile.gif)
Svaka preporuka dobrodosla
![Smile Smile](https://forum.yu3ma.net/images/smilies/smile.gif)