<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>machines | Blue Duck Valley Rd</title><link>https://juju.nz/michaelh/tags/machines/</link><atom:link href="https://juju.nz/michaelh/tags/machines/index.xml" rel="self" type="application/rss+xml"/><description>machines</description><generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><copyright>© 2017-2025 Michael Hope</copyright><lastBuildDate>Sun, 14 Feb 2016 00:00:00 +0000</lastBuildDate><image><url>img/map[gravatar:%!s(bool=false) shape:circle]</url><title>machines</title><link>https://juju.nz/michaelh/tags/machines/</link></image><item><title>ArduRover based nppilot log</title><link>https://juju.nz/michaelh/note/arduroverlog/</link><pubDate>Sun, 14 Feb 2016 00:00:00 +0000</pubDate><guid>https://juju.nz/michaelh/note/arduroverlog/</guid><description>&lt;h2 id="day-1">Day 1&lt;/h2>
&lt;p>Controller brownout when accelerating. I can reproduce this on the bench
by gunning the throttle with the wheels off the ground. The
documentation suggests that the power module is designed for 3S
batteries, not the 2S equivalent that my 7.2 V NiMH packs are. Powering
off just the cars BEC shows the same problem.&lt;/p>
&lt;p>Solution: remove the power module. Add a small LiPo with a switchmode
BEC to the controllers servo rails.&lt;/p>
&lt;p>Oversteering at a corner.&lt;/p>
&lt;h2 id="day-2">Day 2&lt;/h2>
&lt;p>Plan:&lt;/p>
&lt;ul>
&lt;li>Figure out how to restart the log.&lt;/li>
&lt;li>Profile the speed versus demand curve.&lt;/li>
&lt;li>Increase the standard speed to 4 m/s.&lt;/li>
&lt;li>Reduce the steering gain to reduce oversteering.&lt;/li>
&lt;li>Brake at the end of the run&lt;/li>
&lt;li>See how the throttle stick changes speed on Auto
&lt;ul>
&lt;li>Should be throttle_base + throttle_nudge + pid(speed error)&lt;/li>
&lt;li>PID is PID(speed error in m/s * 100) / 100&lt;/li>
&lt;li>Range is 0 .. 100&lt;/li>
&lt;li>Speed is from ground_speed, which is from either the EKF or
GPS.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Calibrate centre on the steering
&lt;ul>
&lt;li>startup_ground calls trim_radios at startup which stores the
steering trim (yay!)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Test the throttle range&lt;/li>
&lt;li>Check if the motor controller can be calibrated: seems not, but the
stick position on power on sets neutral.&lt;/li>
&lt;li>See if it can beep more&lt;/li>
&lt;li>See when the waypoints get cleared
&lt;ul>
&lt;li>Based on the trainer switch release.&lt;/li>
&lt;li>In manual, should log &amp;lsquo;Erasing waypoints&amp;rsquo;
&lt;ul>
&lt;li>If roll is full right then also sets home&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>In training, sets waypoint. Prints &amp;lsquo;Learning waypoint&amp;rsquo;&lt;/li>
&lt;li>In auto, goes to RTL (return to landing)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>See if the log can be restarted on a signal
&lt;ul>
&lt;li>Logs if log_bitmask &amp;amp; MASK_LOG_WHEN_DISARMED, but never
stops the log.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;h2 id="the-main-metrics-are">The main metrics are&lt;/h2>
&lt;/li>
&lt;/ul>
&lt;p>1650=4m/s span=1500-1900 Changes:&lt;/p>
&lt;ul>
&lt;li>Turn on COMPASS_LEARN&lt;/li>
&lt;li>Set GPS_NAVFILTER to Automotive&lt;/li>
&lt;/ul>
&lt;p>To investigate:&lt;/p>
&lt;ul>
&lt;li>GCS_PID_MASK: mask of PIDs to send PID_TUNING messages for
&lt;ul>
&lt;li>Defaults off&lt;/li>
&lt;li>No obvious speed version. Not obvious where the message is
defined.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Can arm / disarm using the rudder - right to arm, left to disarm;
while the throttle is in the deadzone&lt;/li>
&lt;/ul></description></item><item><title>NAZE32</title><link>https://juju.nz/michaelh/note/naze32/</link><pubDate>Sun, 12 Jul 2015 00:00:00 +0000</pubDate><guid>https://juju.nz/michaelh/note/naze32/</guid><description>&lt;p>The NAZE32 is a STM32 based flight controller. I own a rev5 version with
the baro and magnetic compass that would be a great sensor and
controller board for nppilot. This page has notes on the hardware
itself.&lt;/p>
&lt;p>The schematic is hard to find. The rev4 schematic is mirrored
&lt;a href="http://fpvwiki.com/images/7/70/Naze32_rev4_schematic.pdf" target="_blank" rel="noopener">here&lt;/a>. The
CPU is a STM32F103CBT6 in a 48 pin package.&lt;/p>
&lt;h2 id="basics">Basics&lt;/h2>
&lt;p>The two main connectors are the motor and receiver blocks. PPM input is
on RX1.&lt;/p>
&lt;h2 id="uarts">UARTs&lt;/h2>
&lt;ul>
&lt;li>UART1: pin 30, 31 to the CP2102&lt;/li>
&lt;li>UART2: pin 12, 13 to RC_CH3, RC_CH4&lt;/li>
&lt;li>UART3: pin 21, 21 mapped to SCL, SDA (so unusable)&lt;/li>
&lt;li>UART1: pin 42 (TX), 43 (RX) to PWM3, PWM4 (motor block)&lt;/li>
&lt;/ul>
&lt;p>The other remaps aren&amp;rsquo;t brought out on the 48 pin chip.&lt;/p></description></item><item><title>Citizen</title><link>https://juju.nz/michaelh/project/citizen/</link><pubDate>Sun, 02 Nov 2014 00:00:00 +0000</pubDate><guid>https://juju.nz/michaelh/project/citizen/</guid><description>&lt;p>A balancing robot written in Go and running on ARM Linux.&lt;/p>
&lt;h2 id="mod-list">Mod list&lt;/h2>
&lt;p>Changes to make:&lt;/p>
&lt;ul>
&lt;li>Move the gyro down between the wheels. Reduces the acceleration seen
due to falling.&lt;/li>
&lt;/ul>
&lt;h2 id="other-robots">Other robots&lt;/h2>
&lt;p>There&amp;rsquo;s a ton out there.&lt;/p>
&lt;ul>
&lt;li>lil-bot uses the same motors (MG-6-48) but with encoders. 7xAA so
8.4 V to 10.5 V. 100 Hz control loop. MPU-6050 with 2 %
complementary filter. Has a err**2 term as well.&lt;/li>
&lt;/ul>
&lt;h2 id="v1">v1&lt;/h2>
&lt;p>v1 can balance but poorly. The big differences were:&lt;/p>
&lt;ul>
&lt;li>Better pitch measurement through a complementary filter. Gives the
absolutes of the accelerometers and noise rejection of the gyros.&lt;/li>
&lt;li>Integral control to respond quicker to small offsets.&lt;/li>
&lt;/ul>
&lt;p>Things I also changed:&lt;/p>
&lt;ul>
&lt;li>PWM rate up to 10 kHz&lt;/li>
&lt;li>Control loop up to 100 Hz&lt;/li>
&lt;li>Gyro bias removal. The gyro had a 0.34 deg/s bias.&lt;/li>
&lt;/ul>
&lt;p>Things to check:&lt;/p>
&lt;ul>
&lt;li>The gyro scale might be wrong and might be over reporting the angle.&lt;/li>
&lt;li>The deadband on the motors is quite bad and is probably hurting the
small tilt response. I might be able to kick the motors to start
things turning then return to the demanded speed.&lt;/li>
&lt;li>Is the gyro saturating?&lt;/li>
&lt;li>I2C speed&lt;/li>
&lt;li>Add voltage compensation?&lt;/li>
&lt;/ul>
&lt;h2 id="v0">v0&lt;/h2>
&lt;p>v0 is done but doesn&amp;rsquo;t really work. Issues:&lt;/p>
&lt;ul>
&lt;li>The motors have a high deadband and are too high speed.&lt;/li>
&lt;li>The pitch is based off the accelerometers only and seems very noisy.&lt;/li>
&lt;li>The motors are independant, so at low drive sometimes one will start
and the other stay still.&lt;/li>
&lt;/ul>
&lt;p>Next steps:&lt;/p>
&lt;ul>
&lt;li>Measure the CPU load&lt;/li>
&lt;li>Measure the pitch while standing upright and steady&lt;/li>
&lt;li>Investigate complementry filters to combine the gyro and
accelerometers&lt;/li>
&lt;li>Investigate the IMUs advanced features to see if it already gives a
good pitch&lt;/li>
&lt;li>Profile the motors to see if I can lower the deadband (dither?)&lt;/li>
&lt;li>Check I2C rate is 100 kHz or higher.&lt;/li>
&lt;/ul>
&lt;p>Notes:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>The 20 ms timer fires at ~16 ms and ~24 ms. HZ is 128. Turn on TCB
as a clock source, switch to low latency, switch to tickless.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>IMU has:&lt;/p>
&lt;/li>
&lt;li>
&lt;p>DLPF, a low pass filter. Use to filter accelerometers?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Default accelerometer range is +-2G (as the default reading is
~16000)&lt;/p>
&lt;/li>
&lt;li>&lt;/li>
&lt;/ul></description></item><item><title>CopterControl</title><link>https://juju.nz/michaelh/note/coptercontrol/</link><pubDate>Sat, 29 Jun 2013 00:00:00 +0000</pubDate><guid>https://juju.nz/michaelh/note/coptercontrol/</guid><description>&lt;p>&lt;code>TCHAIN_PREFIX = arm-none-eabi-&lt;/code>&lt;/p>
&lt;p>&lt;code>export CODE_SOURCERY = NO&lt;/code> to skip -fpromote-loop-indicies&lt;/p>
&lt;h2 id="command-line-programming">Command line programming&lt;/h2>
&lt;p>There&amp;rsquo;s an experimental command line programmer in
&lt;code>ground/openpilotgcs/src/experimental/USB_UPLOAD_TOOL&lt;/code>. Use
&lt;a href="http://juju.net.nz/src/pilot-hacks.git/tree/opuploadtool.mk" target="_blank" rel="noopener">http://juju.net.nz/src/pilot-hacks.git/tree/opuploadtool.mk&lt;/a> to build it.&lt;/p>
&lt;h2 id="custom-code">Custom code&lt;/h2>
&lt;p>The link command is&lt;/p>
&lt;pre>&lt;code>arm-none-eabi-gcc ... $defines $includes $objs
--output foo.elf -nostartfiles -Wl,-Map=foo.map,--cref,--gc-sections
-lc -lm -lgcc
-T../PiOS/STM32F10x/link_STM32103CB_CC_Rev1_memory.ld
-T../PiOS/STM32F10x/link_STM32103CB_CC_Rev1_sections.ld
&lt;/code>&lt;/pre>
&lt;p>The firmware image has a 100 byte header generated by:&lt;/p>
&lt;pre>&lt;code>python $openpilot/make/scripts/version-info.py
--path=$openpilot
--template=$openpilot/make/templates/firmwareinfotemplate.c
--outfile=$openpilot/build/fw_coptercontrol/fw_coptercontrol.bin.firmwareinfo.c
--image=$openpilot/build/fw_coptercontrol/fw_coptercontrol.bin
--type=0x04 --revision=0x02
&lt;/code>&lt;/pre>
&lt;p>According to the linker script:&lt;/p>
&lt;ul>
&lt;li>BL_FLASH is 0x08000000 to +0x2f7f&lt;/li>
&lt;li>BD_INFO is 0x08002f80 to +0x80&lt;/li>
&lt;li>FLASH is 0x08003000 onwards to (128 - 12) k&lt;/li>
&lt;li>SRAM is 0x20000000 to +20 k&lt;/li>
&lt;/ul>
&lt;p>Vectors are at the start of user flash (&amp;hellip;3000), live in .isr_vectors,
and are from &lt;code>startup_stm32f10x_MD_CC.S&lt;/code>.&lt;/p>
&lt;p>Bootloader checks the blob at &lt;code>pios_board_info_blob&lt;/code> (0x08002f80):&lt;/p>
&lt;pre>&lt;code>struct pios_board_info {
uint32_t magic;
uint8_t board_type;
uint8_t board_rev;
uint8_t bl_rev;
uint8_t hw_type;
uint32_t fw_base;
uint32_t fw_size;
uint32_t desc_base;
uint32_t desc_size;
uint32_t ee_base;
uint32_t ee_size;
} __attribute__((packed));
&lt;/code>&lt;/pre>
&lt;p>for &lt;code>bdinfo-&amp;gt;fw_base &amp;amp; 0x2FFE0000 == 0x20000000&lt;/code>. Sets SP to
fw_base[0] and jumps to *fw_base[1]. Ah, so checks that the SP is
valid.&lt;/p>
&lt;p>What does the image look like? The command line flasher just takes a
binary file and programs it to 0x08003000.&lt;/p>
&lt;h2 id="hardware">Hardware&lt;/h2>
&lt;p>The status LED is on PA6. Crystal is 8 MHz.
&lt;a href="http://juju.net.nz/src/pilot-hacks.git/tree/blink.c" target="_blank" rel="noopener">Blink
it!&lt;/a>.&lt;/p>
&lt;p>Schematic is at
&lt;a href="http://wiki.openpilot.org/download/attachments/12386767/CopterControl%20Schematic.pdf" target="_blank" rel="noopener">http://wiki.openpilot.org/download/attachments/12386767/CopterControl%20Schematic.pdf&lt;/a>&lt;/p>
&lt;p>Ports:&lt;/p>
&lt;ul>
&lt;li>USART connectors are GND / PWR / TX / RX&lt;/li>
&lt;li>CONN2 is USART1 on PA9 &amp;amp; PA10 with an invert select on PB2&lt;/li>
&lt;li>CONN3 (Flexi) is USART3 on PB10 &amp;amp; PB11&lt;/li>
&lt;/ul></description></item><item><title>Solar power for my office</title><link>https://juju.nz/michaelh/project/solar/</link><pubDate>Thu, 29 Mar 2012 00:00:00 +0000</pubDate><guid>https://juju.nz/michaelh/project/solar/</guid><description>&lt;p>I&amp;rsquo;m getting a 10 square metre office built in the garden. Let&amp;rsquo;s solar
power it! This page has notes.&lt;/p>
&lt;p>Most bits are from Jaycar.&lt;/p>
&lt;p>A 380 W pure sine wave inverter. The fan stays off under normal &amp;lt; 100 W
draw use. No inverter noise. Not hot. Thumbs up!&lt;/p>
&lt;p>Started with a single 80 W 12 V Chinese monocrystaline panel. Peaks at 5
A. Peak power at ~16 V. Comes with waterproof connectors.&lt;/p>
&lt;p>Started with a PWM charge controller. Pick 20 A for future capacity.
Developed a peak of around 60 W (12 V @ 5 A). Changing to a MPPT gives
an extra ~30 % (16 V = +4 V @ 5 A).&lt;/p>
&lt;p>20 A mains flex is fine. Not UV proof though.&lt;/p>
&lt;p>Added a second panel.&lt;/p>
&lt;p>Thinkpad R500 laptop with Ubuntu Precise takes 40 W @ 240 V with the
screen on, 60 W peak. Charge controller said it was delivering 50 W so
10 W loss + error in the inverter. Power factor is nasty.&lt;/p>
&lt;p>Single small spare car battery gives OK storage. Only really needed for
bridging. Probably won&amp;rsquo;t last.&lt;/p>
&lt;p>Mild cloud cover reduces output to ~1/3. Surprising.&lt;/p>
&lt;p>Point the panel north, your latitude from the ground. I was surprised
with how accurate this is at the start of Autum. Measured the altitude
of the sun using my shadow and it matched well.
&lt;a href="http://solarelectricityhandbook.com/solar-angle-calculator.html" target="_blank" rel="noopener">Solar angle
calculator&lt;/a>
says 70 degrees in summer, 46 in autumn, and 22 in winter, and winter is
coming&amp;hellip;&lt;/p>
&lt;p>Going for best winter performance (31 degrees) gives 2.81 kWh/m2/day at
worst, 4.54 in summer. Best summer gives 2.30 to 5.64. Best winter gives
22 % more energy at the most needed time.&lt;/p>
&lt;p>(Panel is 1210 x 540 = 0.65 m2. 80 W and ~1 kW/m2 gives ~12 % efficient)&lt;/p>
&lt;p>8 hours with 2 x 15 W lights, 50 W laptop, 10 W loss = 90 W * 8 hours =
0.72 kWh. 0.65 x 2 m2 of panels @ 12 % @ 2.81 hWh/m2/day = 0.44 hWh = 61
% of needed.&lt;/p>
&lt;p>Azimuth of the sun changes by 90 degrees during the day.&lt;/p>
&lt;p>Use a 230 V relay for automatic changeover. Draws &amp;lt; 1 W. Change in &amp;lt;
16 ms.&lt;/p>
&lt;h2 id="parts">Parts&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Catalogue&lt;/th>
&lt;th>Name&lt;/th>
&lt;th>Price&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>MP3735&lt;/td>
&lt;td>12V/24V 30A MPPT Solar Charge Controller&lt;/td>
&lt;td>309&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ZM9300&lt;/td>
&lt;td>80W Recreational Solar Package Deal&lt;/td>
&lt;td>375&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MP-3128&lt;/td>
&lt;td>Solar Charging Controller&lt;/td>
&lt;td>-43.9&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ZM9097&lt;/td>
&lt;td>Powertech Monocrystalline Solar Panel - 80W&lt;/td>
&lt;td>359&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MI5162&lt;/td>
&lt;td>380 Watt 12VDC to 230VAC Pure Sine Wave Inverter&lt;/td>
&lt;td>312&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;/td>
&lt;td>12 V car battery&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>WB1568&lt;/td>
&lt;td>5 m 20 A mains flex&lt;/td>
&lt;td>24.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;/td>
&lt;td>Hobby box&lt;/td>
&lt;td>5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;/td>
&lt;td>M4 x 12&lt;/td>
&lt;td>6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;/td>
&lt;td>M6 x 15&lt;/td>
&lt;td>6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;/td>
&lt;td>5 m aluminium channel&lt;/td>
&lt;td>60&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Total is $1400. Too much.&lt;/p>
&lt;h2 id="pictures">Pictures&lt;/h2>
&lt;p>&lt;img src="front.jpg" alt="Prototype on the back lawn">&lt;/p>
&lt;p>&lt;img src="top.jpg" alt="Chair happens to set the panel at the right angle">&lt;/p>
&lt;p>&lt;img src="box.jpg" alt="Box upside down showing charge controller and inverter">&lt;/p>
&lt;h2 id="further">Further&lt;/h2>
&lt;p>We have gas hot water and a heat pump. Consumption is 6500 kWh/year @
20.44 c/kWh = $1335 / year. Peak is July at 22 kWh/day. Summer is 10
kWh/day.&lt;/p>
&lt;p>The June 2009 Motukiekie Island ECEA study says 2.72 kWp cost $17 k.
Batteries $12 k, inverters $13 k.&lt;/p>
&lt;p>$17 k / 2.72 kWp = $6.25/Wh. A 80 W panel would be $500. Difference must
be framing and installation.&lt;/p>
&lt;p>Solarbuzz says the average price per Wp is $2.29 US for the module.
Gives $7800 for the same system.&lt;/p>
&lt;p>Guess and say we need a 3 kW inverter. $0.711 US/kW ~= $3000.&lt;/p>
&lt;p>Auckland and Christchurch get 2050 sunshine h/year. 3.1 kWp ideally to
cover it.&lt;/p>
&lt;p>The iMiEV has a 16 kWh battery and can do 160 km. 20 km/day ~= 2kWh.&lt;/p></description></item><item><title>nppilot</title><link>https://juju.nz/michaelh/project/nppilot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://juju.nz/michaelh/project/nppilot/</guid><description>&lt;p>Some things to try as part of fiddling:&lt;/p>
&lt;ul>
&lt;li>Using golang as the main language&lt;/li>
&lt;li>Using libmaple instead of the ST libraries&lt;/li>
&lt;/ul>
&lt;h2 id="investigation-stages">Investigation stages&lt;/h2>
&lt;p>[[nppilot/boottime]]&lt;/p>
&lt;h2 id="parts">Parts&lt;/h2>
&lt;ul>
&lt;li>CPU: Arietta
&lt;a href="http://www.atmel.com/devices/SAM9G25.aspx" target="_blank" rel="noopener">G25&lt;/a>
&lt;ul>
&lt;li>3.3 V only.&lt;/li>
&lt;li>GPIO pins are 8 mA up to 3.6 V&lt;/li>
&lt;li>85 mA @ 5 V&lt;/li>
&lt;li>On board NCP1529 as 5 V regulator. Specified 2.7 to 5.5 V&lt;/li>
&lt;li>Watchdog&lt;/li>
&lt;li>Serial: +3V, 5V, RX, TX, WKP, GND&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>GPS: Sparkfun
&lt;a href="https://www.sparkfun.com/products/8975" target="_blank" rel="noopener">LS20031&lt;/a> (MC-1513)&lt;/li>
&lt;li>IMU: Drotek
&lt;a href="http://www.drotek.fr/shop/en/home/42-mpu6050-gyro-accelerometer.html" target="_blank" rel="noopener">MPU6050&lt;/a>
&lt;ul>
&lt;li>3.3 V, I2C, drivers/iio/imu/inv_mpu6050&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Receiver: FrSky
&lt;a href="http://www.frsky-rc.com/product/pro.php?pro_id=64" target="_blank" rel="noopener">TFR4&lt;/a>
&lt;ul>
&lt;li>5 V+. PPM output. G25 I/O lines can interrupt on change.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>LCD:
&lt;a href="https://www.olimex.com/Products/Modules/LCD/MOD-LCD3310/open-source-hardware" target="_blank" rel="noopener">MOD-LCD3310&lt;/a>
&lt;ul>
&lt;li>3.3 V, SPI + control,
&lt;a href="https://github.com/notro/fbtft" target="_blank" rel="noopener">driver&lt;/a>&lt;/li>
&lt;li>pcd8544 based? Or more recent?&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Serial: Sparkfun
&lt;a href="https://www.sparkfun.com/products/9717" target="_blank" rel="noopener">FTDI&lt;/a>
&lt;ul>
&lt;li>GND CTS VCC TXD RXD RTX&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Unknown&lt;/p>
&lt;ul>
&lt;li>Arietta power supply&lt;/li>
&lt;/ul>
&lt;h1 id="at91g25-tc-unit">AT91G25 TC unit&lt;/h1>
&lt;p>There&amp;rsquo;s bits of a driver under &lt;code>drivers/misc/atmel_tclib.c&lt;/code> and &lt;code>include/linux/atmel_tc.h&lt;/code>.&lt;/p>
&lt;p>Counter mode has two capture registers that can trigger from a TIOAn line. They are:&lt;/p>
&lt;ul>
&lt;li>TIOA0: PA21&lt;/li>
&lt;li>TIOA1: PA22&lt;/li>
&lt;li>TIOA2: PA23&lt;/li>
&lt;li>TIOA3: PC2&lt;/li>
&lt;li>TIOA4: PC5&lt;/li>
&lt;li>TIOA5: PC12&lt;/li>
&lt;/ul>
&lt;h2 id="development-environment">Development environment&lt;/h2>
&lt;ul>
&lt;li>&lt;del>GCC 4.8 with gccgo for arm-none-eabi&lt;/del>&lt;/li>
&lt;li>&lt;del>OpenOCD works inside VMWare&lt;/del>&lt;/li>
&lt;li>&lt;del>OpenOCD plus Signalyzer Lite works&lt;/del>&lt;/li>
&lt;/ul>
&lt;p>CopterControl basics:&lt;/p>
&lt;ul>
&lt;li>CopterControl programmer works&lt;/li>
&lt;li>Serial to JSC cable built&lt;/li>
&lt;li>Send and receive serial over the main port&lt;/li>
&lt;/ul>
&lt;p>Command:&lt;/p>
&lt;ul>
&lt;li>Can build and run Mini XPlus kernel&lt;/li>
&lt;/ul>
&lt;p>Communications:&lt;/p>
&lt;ul>
&lt;li>STM32-H103 shows as a USB CDC device&lt;/li>
&lt;li>Measure latency and jitter against x86&lt;/li>
&lt;li>Measure latency and jitter against XPlus&lt;/li>
&lt;/ul>
&lt;p>Using golang:&lt;/p>
&lt;ul>
&lt;li>&lt;del>Build for arm-none-eabi&lt;/del>&lt;/li>
&lt;li>Interfacing with C functions&lt;/li>
&lt;li>Interfacing with C types&lt;/li>
&lt;li>When the runtime is needed&lt;/li>
&lt;/ul>
&lt;h2 id="third-party-components">Third party components&lt;/h2>
&lt;p>Qualities for third party components:&lt;/p>
&lt;ul>
&lt;li>Open license&lt;/li>
&lt;li>Takes patches&lt;/li>
&lt;li>Healthy community?&lt;/li>
&lt;/ul>
&lt;p>RTOS:&lt;/p>
&lt;ul>
&lt;li>NuttX (BSD)&lt;/li>
&lt;li>ChibiOS (GPLv3)&lt;/li>
&lt;li>TNKernel (BSD-like?)&lt;/li>
&lt;/ul>
&lt;p>HAL:&lt;/p>
&lt;ul>
&lt;li>ChibiOS&lt;/li>
&lt;li>libmaple&lt;/li>
&lt;/ul>
&lt;p>Drivers and flight:&lt;/p>
&lt;ul>
&lt;li>CoperControl / OpenPilot&lt;/li>
&lt;li>CrazyFlie&lt;/li>
&lt;li>Ardupilot&lt;/li>
&lt;/ul></description></item></channel></rss>