Difference between revisions of "Arduino"
m |
m |
||
Line 12: | Line 12: | ||
| memory = ATmega168: 532 (or lower), ATmega328: 1024 (or lower), ATmega2560: 7168 (or lower) | | memory = ATmega168: 532 (or lower), ATmega328: 1024 (or lower), ATmega2560: 7168 (or lower) | ||
| compression = RLE | | compression = RLE | ||
| price = $1 - $35 | |||
| website = [https://github.com/gillham/logic_analyzer github.com/gillham/logic_analyzer] | | website = [https://github.com/gillham/logic_analyzer github.com/gillham/logic_analyzer] | ||
}} | }} |
Revision as of 14:16, 30 June 2019
Status | in progress |
---|---|
Source code | ols |
Channels | 6 |
Samplerate | 4MHz |
Samplerate (state) | — |
Triggers | none (SW-only) |
Min/max voltage | -0.5V — 5.5V |
Threshold voltage | Fixed: VIH=3.0V—5V, VIL=0V—1.5V |
Memory | ATmega168: 532 (or lower), ATmega328: 1024 (or lower), ATmega2560: 7168 (or lower) |
Compression | RLE |
Price range | $1 - $35 |
Website | github.com/gillham/logic_analyzer |
SUMP protocol implementation for Arduino. Basic functionality is present, but we need someone to fix the details to make things nice and usefull.
Hardware
- Main chip: Atmel ATmega168/328/2560
- Input pins: With optional internal pullups (currently has to be modified at compile-time)
- Input protection: While Arduino is relatively rugged device, keep in mind it relies solely on internal protection of ATmega chips, so without additional protection it will not handle heavy abuse, overvoltage, etc...
- 3.3V and 5V output: 3.3V, 5V
- 16MHz crystal: 16.000
Photos
Protocol
- This uses the extended SUMP protocol as implemented by sigrok in ols driver.
Problems
Everything looks almost fine, device loads in pulseview, but there are still some cosmetic issues left to tackle:
- Buffer is currently sent or parsed backwards (time goes from right to left/zero)!!! (not sure if problem lays in arduino code or sigrok)
- RLE (=continuous capture) is not properly implemented in sigrok/ols driver, therefore capture length is limited by device memory
- Maximum supported samplerate is reported by device and received by sigrok, but not reflected in pulseview GUI
- Triggering is still a work in progress, but generally works for samples below 1MHz. over 1MHz works for a basic busy wait trigger that doesn't store until after the trigger fires.
Oportunities
- Arduino has couple of ADC enabled pins. ADC is not very fast, but i guess we can add some basic analog input capabilities for low samplerate modes. (1kHz analog sampling should be more than doable).
- Add way to enable/disable input pullups through sigrok and pulseview GUI
- Configure arduino PWM on some unused pin to work as clock and calibration source
- Add way to control output pins or provide signal generator controlled by pulseview GUI
FTDI-LA (alternative approach)
Note that some older arduino designs and arduino clones feature FTDI usb-serial chip, which might be used as logic analyzer as well using FTDI-LA. This has nothing to do with OLS driver described on this page and i mention it just for completeness. Both Arduino/SUMP and FTDI-LA approaches have some pitfalls, so you might prefer one or the another.
Also note that Arduino boards wire FTDI to ATmega chips and that might cause you some troubles. If atmega pins connected to FTDI are configured as outputs or pullups, it can mess up the measurements or even damage the ATmega (given you apply voltage to it). So make sure you know what are you doing. In best case scenario you have arduino board with DIP socket, which allows you to remove atmega completely from board when you use it with FTDI-LA driver.