unsigned long s_start = 0; unsigned long s_stop = 0; unsigned long extime = 0; byte readDDRAfirst = 0; byte readDDRAsecond = 0; byte readDDRAthird = 0; byte readDDRAfourth = 0; byte readPORTAfirst = 0; byte readPORTAsecond = 0; byte readPORTAthird = 0; byte readPORTAfourth = 0; byte readPINAfirst = 0; byte readPINAsecond = 0; byte readPINAthird = 0; byte readPINAfourth = 0; char* b2s(byte var) { static char Str[8]; byte mask = 0b10000000; for(int i = 0; i<8; i++){ Str[i]='0'; if(((mask >> i) & var) == (mask>>i)){Str[i]='1'; } } Str[8] = '\0'; return Str; } void setup() { while(!Serial); Serial.begin(115200); Serial.println("Arduino ready for SDS7"); //pin 29-22 DDRA = DDRA | 0b00000000; //0=output 1=input PORTA = 0; DDRA = DDRA | 0b11111111; //0=output 1=input } void loop() { s_start = micros(); //Set port A to inputs in high-impedance state //pin 29-22 DDRA = 0b11111111; //0=output 1=input readDDRAfirst = DDRA; readPORTAfirst = PORTA; readPINAfirst = PINA; //Set port A to output and alter some pins //pin 29-22 DDRA = 0b00000000; //0=output 1=input PORTA = B00111010; readDDRAsecond = DDRA; readPORTAsecond = PORTA; readPINAsecond = PINA; //Set port A back to high-impedance input state and read //pin 29-22 DDRA = 0b11111111; //0=output 1=input readDDRAthird = DDRA; readPORTAthird = PORTA; readPINAthird = PINA; //Try to reset port while set to input PORTA = 0; readDDRAfourth = DDRA; readPORTAfourth = PORTA; readPINAfourth = PINA; s_stop = micros(); extime = s_stop - s_start; Serial.println("------------------------------------"); Serial.print("Execution time: "); Serial.print(extime); Serial.println(" micro seconds"); Serial.println("------------------------------------"); Serial.println(" DDRA PORTA PINA"); Serial.print("Input: "); Serial.print(b2s(readDDRAfirst)); Serial.print(" "); Serial.print(b2s(readPORTAfirst)); Serial.print(" "); Serial.println(b2s(readPINAfirst)); Serial.print("Output: "); Serial.print(b2s(readDDRAsecond)); Serial.print(" "); Serial.print(b2s(readPORTAsecond)); Serial.print(" "); Serial.println(b2s(readPINAsecond)); Serial.print("Input: "); Serial.print(b2s(readDDRAthird)); Serial.print(" "); Serial.print(b2s(readPORTAthird)); Serial.print(" "); Serial.println(b2s(readPINAthird)); Serial.print("Input: "); Serial.print(b2s(readDDRAfourth)); Serial.print(" "); Serial.print(b2s(readPORTAfourth)); Serial.print(" "); Serial.println(b2s(readPINAfourth)); Serial.println(""); Serial.println("1th Port A is set to high-impedance inputs"); Serial.println("2th Port direction is set to outputs and some pins altered"); Serial.println("3th Port is back to inputs, but as seen no longer in"); Serial.println("high-impedance. It seams port sets pull-ups and leave "); Serial.println("them even when DDR (data direction register) change"); Serial.println("4th same as 3th but PORTA=0 turns off all pull-ups"); Serial.println(""); delay(3000); }