Create a "counter" directory, and add captures from UART communication with the number of data bits in the range from 5 to 9. Parity/stopbit is identical across all captures, as other dumps already provide those variants. This set is useful to test how decoders cope with various numbers of databits, while the samples cover all possible bit patterns. The ATmega firmware which generates the UART frames is included.
Signed-off-by: Gerhard Sittig <gerhard.sit...@gmx.net> --- uart/counter/README | 36 ++++++++++ uart/counter/generator.c | 123 +++++++++++++++++++++++++++++++++++ uart/counter/uart-count-19200-5n1.sr | Bin 0 -> 829 bytes uart/counter/uart-count-19200-6n1.sr | Bin 0 -> 881 bytes uart/counter/uart-count-19200-7n1.sr | Bin 0 -> 1286 bytes uart/counter/uart-count-19200-8n1.sr | Bin 0 -> 2798 bytes uart/counter/uart-count-19200-9n1.sr | Bin 0 -> 4066 bytes 7 files changed, 159 insertions(+) create mode 100644 uart/counter/README create mode 100644 uart/counter/generator.c create mode 100644 uart/counter/uart-count-19200-5n1.sr create mode 100644 uart/counter/uart-count-19200-6n1.sr create mode 100644 uart/counter/uart-count-19200-7n1.sr create mode 100644 uart/counter/uart-count-19200-8n1.sr create mode 100644 uart/counter/uart-count-19200-9n1.sr diff --git a/uart/counter/README b/uart/counter/README new file mode 100644 index 000000000000..d08ac852d2fe --- /dev/null +++ b/uart/counter/README @@ -0,0 +1,36 @@ +------------------------------------------------------------------------------- +UART traffic, 5-9 data bits, counter values in data bits +------------------------------------------------------------------------------- + +This is a collection of example UART communication (TX only). The +data bits in the UART frame contain numeric values from a counter. +There are dumps for various numbers of data bits in the UART frames. + +Logic analyzer setup +-------------------- + +The capture was taken with an ASIX Sigma2 logic analyzer at a sample +rate of 500kHz. The first three channels were enabled: + + Probe UART + ---------------- + 1 UART TX (counter values) + 2 UART RX (always idle) + 3 high for active UART frames + +Data +---- + +The hardware sending the data is an Atmel ATmega328P. The bitrate is +always 19200, the frame format is 5n1, 6n1, 7n1, 8n1, 9n1 respectively. + +There is a pause between each UART frame (idle TX line for a few hundred +microseconds), such that decoders will immediately "lock in" to the +content, and manual inspection is simplified. + +Capture was arranged such that at least one full counter period is +covered and all possible data bit patterns are seen. + +The ATmega firmware asserts a GPIO line when an UART frame is being +sent. This is not essential for UART communication, but again is useful +for human inspection, and verification of protocol decoders. diff --git a/uart/counter/generator.c b/uart/counter/generator.c new file mode 100644 index 000000000000..1f524f189294 --- /dev/null +++ b/uart/counter/generator.c @@ -0,0 +1,123 @@ +/* ----- generator.c ----------------------------------------- */ +/* + * generator for UART communication data patterns, + * development support for sigrok protocol decoder research + * + * targets ATmega328P, uses AVR GCC features + */ + +#include <avr/io.h> +#include <util/delay.h> + +#define LED_PIN 5 + +#define UART_BITRATE 19200UL +#define UART_BITCOUNT 9 + +static void led_setup(void) { + /* turn the LED pin into an output */ + DDRB |= _BV(LED_PIN); +} + +static void led_on(void) { + PORTB |= _BV(LED_PIN); +} + +static void led_off(void) { + PORTB &= ~_BV(LED_PIN); +} + +static void uart_setup(void) { + uint8_t ucsz; + + /* setup frame format */ + switch (UART_BITCOUNT) { + case 5: ucsz = 0b000; break; + case 6: ucsz = 0b001; break; + case 7: ucsz = 0b010; break; + case 8: ucsz = 0b011; break; + case 9: ucsz = 0b111; break; + default: return; + } + if (ucsz & 0b100) + UCSR0B |= _BV(UCSZ02); + else + UCSR0B &= ~_BV(UCSZ02); + if (ucsz & 0b010) + UCSR0C |= _BV(UCSZ01); + else + UCSR0C &= ~_BV(UCSZ01); + if (ucsz & 0b001) + UCSR0C |= _BV(UCSZ00); + else + UCSR0C &= ~_BV(UCSZ00); + + /* setup timing for bit rate */ +#define BAUD UART_BITRATE +#include <util/setbaud.h> + UBRR0H = UBRRH_VALUE; + UBRR0L = UBRRL_VALUE; +#undef UBRRH_VALUE +#undef UBRRL_VALUE +#undef BAUD +#if USE_2X + UCSR0A |= _BV(U2X0); +#else + UCSR0A &= ~_BV(U2X0); +#endif + + /* enable transmission (will mux pins, too) */ + UCSR0B |= _BV(TXEN0); +} + +static void uart_send_val(uint16_t v) { + + /* wait for the transmit register to become available + * (shall always immediately succeed since it was drained before) */ + loop_until_bit_is_set(UCSR0A, UDRE0); + + /* split off 9th bit, it's communicated via a control register + * _before_ filling the TX data register */ + if (UART_BITCOUNT > 8) { + if (v & 0x0100) + UCSR0B |= _BV(TXB80); + else + UCSR0B &= ~_BV(TXB80); + } + + /* fill in the TX data register */ + UDR0 = v & 0xff; + + /* wait for "transmission complete", clear the flag */ + loop_until_bit_is_set(UCSR0A, TXC0); + UCSR0A |= _BV(TXC0); +} + +static void uart_send(uint16_t b) { + + /* send the UART frame, accompanied by the LED, + * separated by a period of idle UART line */ + led_on(); + uart_send_val(b); + led_off(); + _delay_us(500); +} + +void main(void) { + uint16_t b; + + led_setup(); + uart_setup(); + + b = 0; + while (1) { + /* have a UART frame transmitted */ + uart_send(b); + + /* advance to the next value */ + b++; + b %= (1 << UART_BITCOUNT); + } +} + +/* ----- E O F ----------------------------------------------- */ diff --git a/uart/counter/uart-count-19200-5n1.sr b/uart/counter/uart-count-19200-5n1.sr new file mode 100644 index 0000000000000000000000000000000000000000..a735b3d587abf0b47be4dc66a8fb0861a47f8aab GIT binary patch literal 829 zcmWIWW@Zs#U|`^2=wIyP$-D2W6f=;=2*m6_T$Wl?oSC0z%)}6YqVAfg<hypD{3;;k z0OH)#lEjq6l0@Cpj(p7u0uC4d&S~P#a99+3c3-)H9-Gyr&JdmjnKrevuicH`W8XGI z<|t=Z%N()N0=-FLS90&aQuD}NllqpetoZ(2hGXpVk0NJs+T@m=xA9Kt(d@|Qxe}te zN>}|j>sf}@xacQ7Q#W3Z(*6EfY0IVWj=c8S8}|Lbnz--OqWVMoymX6<%04inIyQCI zyoH@WA3b`(z`zM~Y)*c9X0ooKuHoCe7kLjT@Gu9eEZOw`*xg3`$2NDlY%N!M-^}iR zu;zVNv$vUBQMQ!bGDVY%JC2!cQ?;KtiC1^s)BNn5=9I~8&pfu|=FUA<`R&Z4nVt%F z748;I%-OK>Yi@PU;V;{C@0%Yp>|+(;i!wjvc&KuI=De0?Z$%&5R6jd8Z_T8<3wt*9 z=H?W~oy`o&xO+=2#$WDs&DHa!8Mkk+oqVRPv+bay`Aat6=*P2bK+Mf5IeEqVLmx_> z-*Y@&+9Y=p?<}+1;<q38NMBA!o}D-Q`8giV#WUF6N}W##E`HaW=~4Orgy}X<)ASoE z(m624W?a9M#>_jrUSmUV?zs&!RTGPg{iV-LTzh*;N%Jw^Lyd*+GLvOY^50!+C;>{` z|8R=!xS5Cf_boG3ANI_yS8{$03;|Em_^+FJZ<(D0y7IU1Hpk0qcN2;~e=pir=<A$2 zt!3HSzfu>rRBk_EW^wzN*^L`Fj+quOx!aw2VN)S*(Al}cKF!5BKFw)oZF3E*&siTn zW|nd7PS+1R`v7l7CI$xF$q*Q6NC28B(KVr`NrVm!AQP5C(RHCG4ur0&Kqfq?1bDNu Rfuxv$a1oGh1-h4k0RS-cKivQT literal 0 HcmV?d00001 diff --git a/uart/counter/uart-count-19200-6n1.sr b/uart/counter/uart-count-19200-6n1.sr new file mode 100644 index 0000000000000000000000000000000000000000..b21f17b6cd795f436d3c02c4cff114fe872d8562 GIT binary patch literal 881 zcmWIWW@Zs#U|`^2uw3Hf$-D2W6f=;=2*m6_T$Wl?oSC0z%)}6YqVAfg<hypD{3;;k z0OH)#lEjq6l0@Cpj(p7u0uC4d&S~P#a99+3c3-)H9-Gyr&JdmjnKrevuicH`W8XGI z<|t=Z%N()N0=-FLS90&aQuD}NllqpetoZ(2hGXpVk0NJs+T@m=xA9Kt(d@|Qxe}te zN>}|j>sf}@xacQ7Q#W3Z(*6EfY0IVWj=c8S8}|Lbnz--OqWVMoymX6<%04inIyQR7 z*SftxALVf}GH?PNo0FfOnXGH5Yxwr=!QP_=Jj@pv*dG0}_LDkc$mVG4!&v=MN7wsT z<n=@9zjrOZSyAYhzH4WH)Zu_OB~x3=W4?1XOg4Pu^6IXb`v2vYD<>ImewU(QFFC8) zNb*!b-Lq@+{-kI)-}c+g()upF>U(gPQ`atO@4yu<Ala(U!sD$hsVhZXzu8O_SDWS( zex+7i=j~n2sfz;oi$c1b(nGoqbq7AK({NtMch$G_c<Z^0)l1K<u73AsCX*+ZXO^Dl zBqdwVv#J|Kb}jx}-@VdjuAQ-p??UfWLDQU;Z!zCEH?-}RPNL?O#c3b+N;xhMnRICN z#P?lBBCi7bHi?vZEY&D+pFMHG1<6q5;>mNrxl3|=T|T#<&B;8Z$w@urosmdZKwr_6 zrD?Y$xinAtw>hbADV4eynY!ZDgrx!Pzfy&P4i1^*lz!zszh~eI_sCO$Hw05PmaM1+ zDox*FeRpo~dY5k}C4h!%+O-|(Tfx%GV%mNr;6=-(DU0K}eAo>|f~L&pY4yvvFVkB5 zs_yr8MqpT#IH_u=tjL<QFrfZdny~fFm+MaXzi4QhyMg_b?+TlT+P7y!m4BMNkY_8i zmgB<DCj;7?o?n(Nm*NlbW@KVuz@2n~5sd_(2^n1zdOAkv&;T-FsTy4udV)gex(Z~% XlUIN@D;r3P83-2v>779LGB5xD@~=c0 literal 0 HcmV?d00001 diff --git a/uart/counter/uart-count-19200-7n1.sr b/uart/counter/uart-count-19200-7n1.sr new file mode 100644 index 0000000000000000000000000000000000000000..1f6a2340825ed660cff51e2dd30555593aeb0497 GIT binary patch literal 1286 zcmWIWW@Zs#U|`^2XkX&v$-D2W6f=;=2*m6_T$Wl?oSC0z%)}6YqVAfg<hypD{3;;k z0OH)#lEjq6l0@Cpj(p7u0uC4d&S~P#a99+3c3-)H9-Gyr&JdmjnKrevuicH`W8XGI z<|t=Z%N()N0=-FLS90&aQuD}NllqpetoZ(2hGXpVk0NJs+T@m=xA9Kt(d@|Qxe}te zN>}|j>sf}@xacQ7Q#W3Z(*6EfY0IVWj=c8S8}|Lbnz--OqWVMoymX6<%04inI(7-; z-m^hKUrmr@V&DWiHYYzlGg;SA*YNG#M$QHU9+$v{3E%GD5M*(b*6-inbU%BR%k_-~ z-m>Z0T>T$QjDO``jyRjS=Y5H1jGMDp^LdH67k+%pdHizP1>4sdbBd&V-|ybbsbczT z-roJIIe+S`TxcA-=Gm4deQ*4XXWzVJwc7b?X4qz{wccm5{H&X+|EZd)l;#)DIGde0 zH$!^!Ox=y2^Y&Mq%}Kkxa@w^5zVmlhO}jSX+OMQbQqRsroXuLX`s<N7`xh3U&51ia zrQ-<O=FRVytD4=JHPb)YOyygAO|cyNZr}M{xgKxrzbsZYn~}RJChG8+NXyU0(yy|A zE1i3I;bfZG`b6gFsOGE6=dJ)vJ(p9lN$S$9%jX^hM9z+zeq}@B+3d8#YD<o^NgLni zNHtU0_FmSa+j;8Qyp_DtH}<5Ny-D!S+2MG(GYKfAQYzQ(HM?+<bXIPjcixMf>h2Fx zyVEb;IGeX(d+qia*Du^mGuxc#Tz$%1%J$)!ZBu8aZ%e=PcII2%H0Pw*OwUb2Zv4tR z(<U|hcHV^rlYxFpe*Z^u^Gx2-ZRLE+7Xk&+4yS!<(K;A>E@yj!kaXJlIV&T1znZSE z<Q3hv|HCG!Z5u4lW`*6}e{PTZhn(G-pZjydoV}{~3#7EN!Zu5pt*cG#yn10J(8G79 z-Q1dHx@4<;VzHD~_En433)ej}-MlavWaar9kd<Gz?&mF#vbugI%`7Kkw<+`L+NCZ* zhkIt`nS<4?2L*ZB;cZ{H=&z_cwexL@&gR5hJ%w-Du9(%H%3iT`=GmMZ2fw|y4?8UO zO=Yv~<Gk~C3XP?OW}EM6<GRf&yL#b1kbTX-I8Q#Brm;Fwcjd%yai4RHZ~f1W<kfuZ z&9kO0&vdnA@0^=PmshT7n>FkDo;E+z)seiL<MK`)$cq0r?TSJ0Gw(%b+IHOv@2=pD z%}z6xHd~_(^1rupCU0??Rq~p)EzeArFWgktm0*$+Q9SGFnr+RhD--vfi2?dy-ZksT zCLveB-UCW)NY-8XaGTHdnHMKq%G+egE4sDVWOd@|S(n$ez4Wy^%sUgvRb0CBWcrF_ z2QzLgxR#!7viR>(tFu|>x8FAWzcLM&XfLsuE?>B4+B>jo^G+{tetSo6?Zw(@Jy+MX z`E50}UOvANnDH2y7#MJuC&1i?1fZo0x+e6(1))O&$b=O&=(^BzIYQS}AQPVF1H4(; PKvK*=xClu5v4D600$(sR literal 0 HcmV?d00001 diff --git a/uart/counter/uart-count-19200-8n1.sr b/uart/counter/uart-count-19200-8n1.sr new file mode 100644 index 0000000000000000000000000000000000000000..78c15d12e8417a1c30eb209b59d7905b0a812df2 GIT binary patch literal 2798 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 PlAj{ryB~T(82|JiL_O<6 literal 0 HcmV?d00001 diff --git a/uart/counter/uart-count-19200-9n1.sr b/uart/counter/uart-count-19200-9n1.sr new file mode 100644 index 0000000000000000000000000000000000000000..9d8ce44a94b98142e9e2c67f40b1ba9de77f7e24 GIT binary patch literal 4066 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 OM26oy_&bk@fBP4JH-SL_ literal 0 HcmV?d00001 -- 1.9.1 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ sigrok-devel mailing list sigrok-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sigrok-devel