defragster
Senior Member+
It's here (in Mass)! I'm assembling as we speak...
Hoping you have good results this time DerekR!
Friday delivery here looks good : In Transit, Arriving On Time
It's here (in Mass)! I'm assembling as we speak...
...
A few more comments on the build:
>0): the 2x2 socket needs just 3 pins per silkscreen outline : "I also shaved down the 2x2 socket with an Xacto knife and the cable slipped into its socket right away."
1) There was absolutely no issue with soldering around the battery holder. Just watch the direction of the iron as you solder.
2) The SD socket was much easier to solder than beta 1, as was the flex-cable socket ...
3) The flex-cable was MUCH easier to solder (with no damage as far as I can see).
4) The socket kit is great. My only comment is that I have some low-profile female headers that allow the male pins to be inserted more deeply than the ones in the kit. (Not sure where I got them, either Adafruit or You-Do-It).
5) My construction order was a) SMT devices on both sides of the board, b) switches, etc, c) flex-cable, USB & SDA sockets, d) battery socket. Then the headers....
6) Look closely at how you will solder the pins on the sockets to the pcb, and which one you will solder first. Use the supplied solder pads to solder the metal enclosures of the sockets to the pcb (for strain relief).
I'll post photos tomorrow after I've built up the new T4, and "blinked" all the pins.
Derek
Dan asked us to stress USB_Host stuff in our testing, but I have a small confession: I have never dealt with USB_Host software, and don't really know anything about it. Nor have I dealt with CANbus Can anybody point me at a sketch, or some examples, that I could look at to help reduce my ignorance a smidge?
#if defined(__IMXRT1062__)
extern "C" uint32_t set_arm_clock(uint32_t frequency);
#endif
void setup() {
Serial.begin(115200);
while (!Serial && millis() < 4000 );
Serial.println("Compile Time:: " __FILE__ " " __DATE__ " " __TIME__);
#if defined(__IMXRT1062__)
Serial.printf("\t\t F_CPU=%u", F_CPU_ACTUAL );
Serial.printf( "\tdeg C=%u\n" , (uint32_t)tempmonGetTemp() );
set_arm_clock(24000000); // comment here to get full speed
Serial.printf("\t\t F_CPU=%u", F_CPU_ACTUAL );
#else
Serial.printf("\t\t F_CPU=%u", F_CPU );
#endif
while ( Serial.available()) Serial.read();
testForShorts();
Serial.println("Adjacent pin short test complete"); // ... Send Serial to continue");
}
uint32_t cnt = 0;
void loop() {
cnt++;
allPinTest( cnt );
}
uint32_t pinLast[NUM_DIGITAL_PINS];
void allPinTest( uint32_t cnt ) {
uint32_t ii, SET;
Serial.print("PULLDOWN Start Vals:\n ");
SET = 0;
Serial.print("PULLDOWN :: TEST to 3.3V\t");
Serial.print(" << USB Send Enter to Toggle Up/Down Test \n");
for ( ii = 0; ii < NUM_DIGITAL_PINS; ii++) {
pinMode( ii, INPUT_PULLDOWN );
delayMicroseconds( 5 );
pinLast[ii] = digitalReadFast( ii );
if (pinLast[ii]) {
Serial.print("\nd#=");
Serial.print( ii );
Serial.print( " val=" );
}
Serial.print( pinLast[ii] );
Serial.print(',');
}
Serial.println();
Serial.println();
while ( 1 ) {
uint32_t jj, dd = 0, cc = 0, ee = 4;
cc = 0;
for ( ii = 0; ii < NUM_DIGITAL_PINS; ii++) {
jj = digitalReadFast( ii );
if ( jj != pinLast[ii] ) {
dd = 1;
cc++;
pinLast[ii] = jj;
Serial.print("d#=");
Serial.print( ii );
if ( pinLast[ii] ) Serial.print( "\t" );
Serial.print( " val=" );
Serial.print( pinLast[ii] );
Serial.print(',');
}
if ( cc > 1 && ee ) {
Serial.println(">>> MULTI CHANGE !!");
ee--;
}
if ( Serial.available() ) {
testForShorts();
#if defined(__IMXRT1062__)
Serial.printf( "\tdeg C=%u\n" , (uint32_t)tempmonGetTemp() );
#endif
while ( Serial.available() ) Serial.read();
if ( 0 == SET ) {
SET = 1;
Serial.print("PULLUP :: TEST TO GND\t");
}
else {
SET = 0;
Serial.print("PULLDOWN :: TEST to 3.3V\t");
}
Serial.print(" << USB Send Enter to Toggle Up/Down Test \n");
for ( ii = 0; ii < NUM_DIGITAL_PINS; ii++) {
if ( 0 == SET )
pinMode( ii, INPUT_PULLDOWN );
else
pinMode( ii, INPUT_PULLUP );
delayMicroseconds( 20 );
pinLast[ii] = digitalReadFast( ii );
if (SET != pinLast[ii]) {
Serial.print("d#=");
Serial.print( ii );
Serial.print( " val=" );
Serial.println( pinLast[ii] );
}
}
}
}
if ( dd ) {
dd = 0;
Serial.println();
delay( 50 );
}
}
}
void testForShorts() {
uint32_t ii;
for ( ii = 0; ii < NUM_DIGITAL_PINS; ii++) pinMode( ii, INPUT_PULLDOWN );
Serial.print("\nShow pins HIGH when set PULLDOWN: --> ");
delayMicroseconds( 5 );
for ( ii = 0; ii < NUM_DIGITAL_PINS; ii++) {
if (digitalRead(ii)) {
Serial.printf("%d ", ii);
}
}
Serial.printf(" <-- :pins shown report HIGH with internal PULLDOWN\n");
Serial.print("\tTest for Shorts to adjacent PULLDOWN to see if the next one follows:\n\t");
for ( ii = 0; ii < NUM_DIGITAL_PINS - 1; ii++) {
pinMode( ii + 1, INPUT_PULLDOWN );
pinMode( ii, OUTPUT);
digitalWrite(ii, HIGH);
delayMicroseconds( 5 );
if (digitalRead(ii + 1)) {
Serial.printf("%d:%d {other? Enter to Toggle}", ii, ii + 1);
}
pinMode( ii, INPUT_PULLDOWN );
}
Serial.print("\nShow pins LOW when set PULLUP: -->");
for ( ii = 0; ii < NUM_DIGITAL_PINS; ii++) pinMode( ii, INPUT_PULLUP );
delayMicroseconds( 5 );
for ( ii = 0; ii < NUM_DIGITAL_PINS; ii++) {
if (!digitalRead(ii)) {
Serial.printf("%d ", ii);
}
}
Serial.printf(" <-- :pins shown report LOW with internal PULLUP\n");
Serial.println("\tTest for Shorts to adjacent PULLUP to see if setting low follow:\n\t");
for ( ii = 0; ii < NUM_DIGITAL_PINS - 1; ii++) {
pinMode( ii + 1, INPUT_PULLUP );
pinMode( ii, OUTPUT);
digitalWrite(ii, LOW);
delayMicroseconds( 5 );
if (!digitalRead(ii + 1)) {
Serial.printf("%d:%d {other? Enter to Toggle}", ii, ii + 1);
}
pinMode( ii + 1, INPUT_PULLUP );
}
Serial.println();
}
#include <SD.h>
#include <SPI.h>
Sd2Card card;
SdVolume volume;
SdFile root;
void setup() {
Serial.begin(9600);
while (!Serial) {;}
Serial.print("\nInitializing SD card...\n");
for (int chipSelect = 0; chipSelect <40; chipSelect++){
delay(100);
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.print("No SD card detected at CS = "); Serial.println(chipSelect);
} else {
Serial.print("A card is present at CS = "); Serial.println(chipSelect);
break;
}
}
}
//
void loop() {}
SdFat version: 2.0.0
Assuming an SDIO interface.
ype any character to start
init time: 231 ms
Card type: SDHC
Manufacturer ID: 0X3
OEM ID: SD
Product: ACLCD
Version: 8.0
Serial number: 0XA33D2B88
Manufacturing date: 7/2011
cardSize: 31914.98 MB (MB = 1,000,000 bytes)
flashEraseSize: 128 blocks
eraseSingleBlock: true
OCR: 0XC0FF8000
SD Partition Table
part,boot,bgnCHS[3],type,endCHS[3],start,length
1,0X0,0X1,0X1,0X0,0XC,0XFE,0XFF,0XFF,8192,62325760
2,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0,0
3,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0,0
4,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0,0
Scanning FAT, please wait.
Volume is FAT32
sectorsPerCluster: 64
clusterCount: 973584
freeClusterCount: 973566
fatStartSector: 9362
dataStartSector: 24576
partition0 is a 98Gb exFat
partition1 is a 14GB FAT32
Test diskio
uSDFS_VER:30_Jun_19_07_17
Disk initialize Status: STA_OK
Disk read Result: FR_OK
33 c0 8e d0 bc 00 7c 8e c0 8e d8 be 00 7c bf 00
06 b9 00 02 fc f3 a4 50 68 1c 06 cb fb b9 04 00
bd be 07 80 7e 00 00 7c 0b 0f 85 0e 01 83 c5 10
e2 f1 cd 18 88 56 00 55 c6 46 11 05 c6 46 10 00
b4 41 bb aa 55 cd 13 5d 72 0f 81 fb 55 aa 75 09
f7 c1 01 00 74 03 fe 46 10 66 60 80 7e 10 00 74
26 66 68 00 00 00 00 66 ff 76 08 68 00 00 68 00
7c 68 01 00 68 10 00 b4 42 8a 56 00 8b f4 cd 13
9f 83 c4 10 9e eb 14 b8 01 02 bb 00 7c 8a 56 00
8a 76 01 8a 4e 02 8a 6e 03 cd 13 66 61 73 1c fe
4e 11 75 0c 80 7e 00 80 0f 84 8a 00 b2 80 eb 84
55 32 e4 8a 56 00 cd 13 5d eb 9e 81 3e fe 7d 55
aa 75 6e ff 76 00 e8 8d 00 75 17 fa b0 d1 e6 64
e8 83 00 b0 df e6 60 e8 7c 00 b0 ff e6 64 e8 75
00 fb b8 00 bb cd 1a 66 23 c0 75 3b 66 81 fb 54
43 50 41 75 32 81 f9 02 01 72 2c 66 68 07 bb 00
00 66 68 00 02 00 00 66 68 08 00 00 00 66 53 66
53 66 55 66 68 00 00 00 00 66 68 00 7c 00 00 66
61 68 00 00 07 cd 1a 5a 32 f6 ea 00 7c 00 00 cd
18 a0 b7 07 eb 08 a0 b6 07 eb 03 a0 b5 07 32 e4
05 00 07 8b f0 ac 3c 00 74 09 bb 07 00 b4 0e cd
10 eb f2 f4 eb fd 2b c9 e4 64 eb 00 24 02 e0 f8
24 02 c3 49 6e 76 61 6c 69 64 20 70 61 72 74 69
74 69 6f 6e 20 74 61 62 6c 65 00 45 72 72 6f 72
20 6c 6f 61 64 69 6e 67 20 6f 70 65 72 61 74 69
6e 67 20 73 79 73 74 65 6d 00 4d 69 73 73 69 6e
67 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74
65 6d 00 00 00 63 7b 9a 09 dc 4f 48 00 00 00 20
21 00 07 fe ff ff 00 08 00 00 00 00 35 0c 00 fe
ff ff 0c fe ff ff 00 08 35 0c 00 30 c4 01 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa
Master Boot Record
Partition: 0 first Sector: 2048 total Sectors: 204800000
Partition: 1 first Sector: 204802048 total Sectors: 29634560
Partition: 2 first Sector: 0 total Sectors: 0
Partition: 3 first Sector: 0 total Sectors: 0
First partition Sector
Disk read Result: FR_OK
eb 76 90 45 58 46 41 54 20 20 20 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 08 00 00 00 00 00 00 00 00 35 0c 00 00 00 00
00 08 00 00 00 19 00 00 00 28 00 00 d8 34 0c 00
04 00 00 00 e1 88 df 18 00 01 00 00 09 08 01 80
21 00 00 00 00 00 00 00 33 c9 8e d1 8e c1 8e d9
bc d0 7b bd 00 7c 88 16 6f 7c b4 41 bb aa 55 cd
13 72 69 81 fb 55 aa 75 63 f6 c1 01 74 5e fe 06
02 7c 66 50 b0 65 e8 a6 00 66 58 66 b8 01 00 00
00 8a 0e 6d 7c 66 d3 e0 66 89 46 e8 66 b8 01 00
00 00 8a 0e 6c 7c 66 d3 e0 66 89 46 d8 66 a1 40
7c 66 40 bb 00 7e b9 01 00 66 50 e8 41 00 66 58
66 40 bb 00 80 b9 01 00 e8 34 00 66 50 b0 78 e8
5d 00 66 58 e9 09 01 a0 fc 7d eb 05 a0 fb 7d eb
00 b4 7d 8b f0 ac 98 40 74 0c 48 74 0e b4 0e bb
07 00 cd 10 eb ef a0 fd 7d eb e6 cd 16 cd 19 66
60 66 6a 00 66 50 06 53 66 68 10 00 01 00 b4 42
b2 80 8a 16 6f 7c 8b f4 cd 13 66 58 66 58 66 58
66 58 66 61 72 b1 03 5e d8 66 40 49 75 d1 c3 66
60 b4 0e bb 07 00 b9 01 00 cd 10 66 61 c3 42 00
4f 00 4f 00 54 00 4d 00 47 00 52 00 0d 0a 52 65
6d 6f 76 65 20 64 69 73 6b 73 20 6f 72 20 6f 74
68 65 72 20 6d 65 64 69 61 2e ff 0d 0a 44 69 73
6b 20 65 72 72 6f 72 ff 0d 0a 50 72 65 73 73 20
61 6e 79 20 6b 65 79 20 74 6f 20 72 65 73 74 61
72 74 0d 0a 00 00 00 00 00 00 00 00 00 00 ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff 6c 8b 98 55 aa
First partition Sector
Well, that was easy!!! I just specified the CS as BUILTIN_SDCARD and everything started working on both breakouts. Thanks. So it's back to the grandkids...
I also shaved down the 2x2 socket with an Xacto knife and the cable slipped into its socket right away.
@defragster et al
Here's what I think was my order of assembly of the SMD components:
C5 -> C3 -> C2 -> U2 -> C4 -> U1 -> R1 -> tiny tactile SW -> flex-cable socket -> SDcard socket -> C1 .
Then the other components are easy, I did: USB socket -> 2 slide switches -> battery holder.
There is, of course, a lot of flexibility in the order. You should look at the board carefully and decide what is right for you. (I take no responsibility if this doesn't work for you )
Remember: "Solder-Wick" is your friend when working with small SMD components. Have plenty of good quality wick on hand. If you bridge connections - it's not a disaster, you can (usually) fix it easily with solder wick.