The impatients of you just download the sketch here: [GitHub] and enter the test sequence "\a2/a3ir10" into the Arduino serial monitor.
The MiniPirate is heavily inspired by the much small and powerful "Bus Pirate" of Ian Lesnet and even uses a small part of it's code.
Please vote for the Arduino contest (top right of this page). The oscilloscope will improve the further developments.
Step 1: (optional) Wiring and power-up (only for DS1307 breakout)
The power will be supplied over the pins A2/A3:
- Download [GitHub] and Unzip
- Rename the directory to "MiniPirate"
- Compile and download the sketch on you Arduino
- Open the Serial Monitor in your Arduino IDE ("Tools -> Serial Monitor")
After opening the monitor the help and the first prompt should be displayed. Now we execute the first command. Just type 'p' and hit <enter> in the top line of the Serial Monitor. This will show the current configuration of all ports (INPUT and Floating values).
To set A2 to Ground and A3 to Vcc wie execute: \a2/a3 <enter> and control the result with 'p'. As we don't want to repeat this again and again, we save it with 'x'.
Now we can plug in the module as described above.
Step 2: I2C Scan, Read and Write
D1. Type 'i' Tt check the devices currently connected. This will list the addresses of all devices on the bus (thanks to Krodal). In my case 0x50 is the EEPROM, 0x68 is the DS1307 real-time clock. The last address will be autoselected for the next operations.
D2. Type 'w0' to set DS1307 register access pointer to zero according to the specification
D3. Type 'r10 to read the first 10 registers
To be faster you can copy-paste this 'iw0r10' and all commands will be executed.
E1. type 'i' to scan the bus again (optinal)
E2. Type '0' to switch to the EEPROM on the breakout
E3. Type 'w 0 0' to select position zero of the EEPROM
E4. Type 'r20' to read 20 bytes
E5. Type 'w 0 0 0xff 0xee 0xab 0x12' to write some values.
E6. Type 'w 0 0 r 20' to verify this values.
To be faster you can copy-paste this 'i0w00r20w0 0 0xff 0xee 0xee 0xab 0x12w0 0r20' and all commands will be executed.
Step 3: I2C Write the time in DS1307
According to the specification we will write 13:45:56 on 30.12.2014 to the system.
'w 0 0x56 0x45 0x13 30 0x12 0x14'
Enjoy it and please vote for it on the Arduino contest if you like it.