Export to GitHub

the-bus-pirate - issue #71

V4 SPI_sniffer: wrong (1) and skipping every second read (or wrong reads) when using (2) macro


Posted on Apr 23, 2014 by Happy Dog

What steps will reproduce the problem?

  1. Use atmega32 (internal 8MHz) and compile following code

define F_CPU 8000000UL

include<avr/io.h>

include<util/delay.h>

void Inicjacja_spi(void) { DDRB = ( 1 << PB4 ) | ( 1 << PB5 ) | ( 1 << PB7 ); //MOSI, SCK, SS' jako wyjścia SPCR = ( 1 << SPE ) | ( 1 << MSTR ) | ( 1 << SPR1 ) | ( 1 << SPR0 ); //Włączamy SPI,

}

void Wyslij_spi(char bajt) { SPDR = bajt; while( ! bit_is_set( SPSR, SPIF ) ) }

int main(void) { char bajt = 0; Inicjacja_spi(); while(1) { Wyslij_spi(bajt); _delay_ms(250); _delay_ms(250); _delay_ms(250); _delay_ms(250); bajt++; } return 0; }

  1. Use (1) or (2) macro

What is the expected output? What do you see instead?

Print incremented value every 1s. Using (1) macro, few first reads are ok, after some random time i see 2s interval and wrong data are read from SPI bus, but when i hit enter and run macro again, it's again ok for some random time. When using (2) macro, sniffer skips every second byte.

What version of the product are you using? On what operating system?

Windows 7 - V4 firmware v6.1 r1676 (same thing happen on r2151)

Please provide any additional information below.

Terminal dump:

SPI>i Bus Pirate v4 Firmware v6.1 r1676 DEVID:0x1019 REVID:0x0004 (24FJ256GB106 UNK) http://dangerousprototypes.com CFG0: 0xFFFF CFG1:0xFFFF CFG2:0xFFFF ---------- Pinstates:

12 #11 #10 #09 #08 #07 #06 #05 #04 #03 #02 #01

GND 5.0V 3.3V VPU ADC AUX2 AUX1 AUX CS MISO CLK MOSI P P P I I I I I O I O O GND 0.00V 0.00V 0.00V 0.00V L L L L L L H POWER SUPPLIES OFF, Pull-up resistors OFF, Open drain outputs (H=Hi-Z, L=GND) MSB set: MOST sig bit first, Number of bits read/write: 8 a/A/@ controls CS pin SPI (spd ckp ske smp csl hiz)=( 4 0 1 0 1 1 ) ---------- SPI>(1) Sniffer Any key to exit [0x00(0x00)0x01(0x00)0x02(0x00)0x03(0x00)0x04(0x00)0x05(0x00)0x06(0x00)0x07(0x00)0x08(0x00)0x09(0x00)0x0A(0x00)0x0B(0x00)0x0C(0x00)0x0D(0x00)0x0E(0x00)0x0F(0x00)0x10(0x00)0x11(0x00)0x12(0x00)0x13(0x00)0x14(0x00)0x15(0x00)0x16(0x00)0x17(0x00)0x18(0x00)0x19(0x00)0x1A(0x00)0x1B(0x00)0x1C(0x00)0x1D(0x00)0x1E(0x00)0x1F(0x00)0x20(0x00)0x21(0x00)0x22(0x00)0x23(0x00)0x24(0x00)0x25(0x00)0x26(0x00)0x27(0x00)0x28(0x00)0x29(0x00)0x2A(0x00)0x2B(0x00)0x2C(0x00)0x2D(0x00)0x2E(0x00)0x2F(0x00)0x30(0x00)0x31(0x00)0x32(0x00)0x33(0x00)0x34(0x00)0x35(0x00)0x36(0x00)0x37(0x00)0x38(0x00)0x39(0x00)0x3A(0x00)0x3B(0x00)0x3C(0x00)0x3D(0x00)0x3E(0x00)0x3F(0x00)0x40(0x00)0x41(0x00)0x42(0x00)0x43(0x00)0x44(0x00)0x45(0x00)0x46(0x00)0x47(0x00)0x48(0x00)0x49(0x00)0x4A(0x00)0x4B(0x00)0x4C(0x00)0x4D(0x00)0x4E(0x00)0x4F(0x00)0x50(0x00)0x51(0x00)0x52(0x00)0x53(0x00)0x54(0x00)0x55(0x00)0x56(0x00)0x57(0x00)0x58(0x00)0x59(0x00)0x5A(0x00)0x5B(0x00)0x5C(0x00)0x5D(0x00)0x5E(0x00)0x5F(0x00)0x60(0x00)0x61(0x00)0x62(0x00)0x63(0x00)0x64(0x00)0x65(0x00)0x66(0x00)0x67(0x00)0x68(0x00)0x69(0x00)0x6A(0x00)0x6B(0x00)0x6C(0x00)0x6D(0x00)0x6E(0x00)0x6F(0x00)0x70(0x00)0x71(0x00)0x72(0x00)0x73(0x00)0x74(0x00)0x75(0x00)0x76(0x00)0x77(0x00)0x78(0x00)0x79(0x00)0x7A(0x00)0x7B(0x00)0x7C(0x00)0x7D(0x00)0x7E(0x00)0x7F(0x00)0x80(0x00)0x81(0x00)0x82(0x00)0x83(0x00)0x84(0x00)0x85(0x00)0x86(0x00)0x87(0x00)0x88(0x00)0x89(0x00)0x8A(0x00)0x8B(0x00)0x8C(0x00)0x8D(0x00)0x8E(0x00)0x8F(0x00)0x90(0x00)0x91(0x00)0x92(0x00)0x93(0x00)0x94(0x00)0x95(0x00)0x96(0x00)0x97(0x00)0x98(0x00)0x99(0x00)0x9A(0x00)0x9B(0x00)0x9C(0x00)0x9D(0x00)0x9E(0x00)0x9F(0x00)0xA0(0x00)0xA1(0x00)0xA2(0x00)0xA3(0x00)0xA4(0x00)0xA5(0x00)0xA6(0x00)0xA7(0x00)0xA8(0x00)0xA9(0x00)0xAA(0x00)0xAB(0x00)0xAC(0x00)0xAD(0x00)0xAE(0x00)0xAF(0x00)0xB0(0x00)0xB1(0x00)0xB2(0x00)0xB3(0x00)0xB4(0x00)0xB5(0x00)0xB6(0x00)0xB7(0x00)0xB8(0x00)0xB9(0x00)0xBA(0x00)0xBB(0x00)0xBC(0x00)0xBD(0x00)0xBE(0x00)0xBF(0x00)0xC0(0x00)0xC1(0x00)0xC2(0x00)0xC3(0x00)0xC4(0x00)0xC5(0x00)0xC6(0x00)0xC7(0x00)0xC8(0x00)0xC9(0x00)0xCA(0x00)0xCB(0x00)0xCC(0x00)0xCD(0x00)0xCE(0x00)0xCF(0x00)0xD0(0x00)0xD1(0x00)0xD2(0x00)0xD3(0x00)0xD4(0x00)0xD5(0x00)0xD6(0x00)0xD7(0x00)0xD8(0x00)0xD9(0x00)0xDA(0x00)0xDB(0x00)0xDC(0x00)0xDD(0x00)0xDE(0x00)0xDF(0x00)0xE0(0x00)0xE1(0x00)0xE2(0x00)0xE3(0x00)0xE4(0x00)0xE5(0x00)0xE6(0x00)0xE7(0x00)0xE8(0x00)0xE9(0x00)0xEA(0x00)0xEB(0x00)0xEC(0x00)0xED(0x00)0x77(0x00)0x7F(0x00)0x87(0x00)0x8F(0x00)0x97(0x00)0x9F(0x00)0xA7(0x00)0xAF(0x00)0xB7(0x00)0xBF(0x00)0xC7(0x00)0xCF(0x00)0xD7(0x00)0xDF(0x00)0xE7(0x00)0xEF(0x00)0xF7(0x00)0xF8(0x00)0x00(0x00)0x08(0x00)0x10(0x00)0x18(0x00)0x20(0x00)0x28(0x00)0x30(0x00)0x38(0x00)0x40(0x00)0x48(0x00)0x50(0x00)0x58(0x00)0x60(0x00)0x68(0x00)0x70(0x00)0x78(0x00)0x80(0x00)0x88(0x00)0x90(0x00)0x98(0x00)0xA0(0x00)

SPI>(1) Sniffer Any key to exit [0x17(0x00)0x18(0x00)0x19(0x00)0x1A(0x00)0x1B(0x00)0x1C(0x00)0x1D(0x00)0x1E(0x00)0x1F(0x00)0x20(0x00)0x21(0x00)0x22(0x00)0x23(0x00)0x24(0x00)0x25(0x00)0x26(0x00)0x27(0x00)0x28(0x00)0x29(0x00)0x2A(0x00)0x2B(0x00)0x2C(0x00)0x2D(0x00)0x2E(0x00)0x2F(0x00)0x03(0x00)0x13(0x00)0x23(0x00)0x33(0x00)0x43(0x00)0x53(0x00)0x63(0x00)

SPI>(2) Sniffer Any key to exit [0x76(0x00)0x78(0x00)0x7A(0x00)0x7C(0x00)0x7E(0x00)0x80(0x00)0x82(0x00)0x84(0x00)0x86(0x00)0x88(0x00)0x8A(0x00)

Status: New

Labels:
Type-Defect Priority-Medium