Monthly Archives: November 2017

Arduino Timer

TimerOne & TimerThree Libraries
github.com/PaulStoffregen/TimerOne, TimerOne Library with optimization and expanded hardware support
github.com/PaulStoffregen/TimerThree, TimerThree Library with optimization and expanded hardware support
playground.arduino.cc/Code/Timer1 (alt?!)

Timer, Counter und Interrupts

World of Timers

Ein Arduino weist nicht nur einen einzelnen Timer sondern mehrere Timer auf. Kein Wunder, sind Timer doch essenzielle Grundkomponenten für verschiedene Aufgaben eines Mikrocontrollers.

  • Timer 0 ( 8 Bit) Verwendet für Funktionen wie delay(), millis(), micros()
  • Timer 1 ( 16 Bit) Verwendet von der Servo-Bibliothek
  • Timer 2 ( 8 Bit) Verwendet von der Tone-Bibliothek
  • Timer 3 (16 Bit) Nur Mega
  • Timer 4 (16 Bit) Nur Mega
  • Timer 5 (16 Bit) Nur Mega

Die genannten Timer finden auch für die Umsetzung von “Pulse Width Modulation” Verwendung, wobei folgende Zuordnung herrscht.

Beim Arduino:

  • PWM Pins 5 und 6 kontrolliert durch Timer 0
  • PWM Pins 9 und 10 kontrolliert durch Timer 1
  • PWM Pins 3 und 11 kontrolliert durch Timer 2

Arduino/AVR Atomic Instruction / Mutex / Semaphore

Arduino\hardware\arduino\avr\cores\arduino\Arduino.h
sei()  ==> interrupts()
cli()  ==> noInterrupts()

oder über das Macro:

ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
{
  // Do some atomic operation inside here
}

avr-libc

avr/interrupt.h: Interrupts
util/atomic.h: Atomically and Non-Atomically Executed Code Blocks

Arduino

attachInterrupt()
noInterrupts()
interrupts()
ow to “Multithread” an Arduino (Protothreading Tutorial)

Portable

github.com/wizard97/SimplyAtomic: Simple Arduino portable atomic macros (Portable: AVR, ARM, ESP8266, ESP32)

learn.adafruit.com

Multi-tasking the Arduino – Part 1
Multi-tasking the Arduino – Part 2
Multi-tasking the Arduino – Part 3

Questions

Do interrupts interrupt other interrupts on Arduino?

occam-pi

occam-pi in a nutshell
occam (programming language), concurrent programming language that builds on the communicating sequential processes (CSP) process algebra
concurrency.cc – Parallel programming for the rest of us

KiCAD Python Console

cd /c/Users/bachman0/Documents/ZHAW_Module/PA/kicad/python/svg2mod
python svg2mod.py -i ../../images/PA17_bmat_6_V1.svg -o test1 --format pretty
Parsing SVG...
No handler for element {http://www.w3.org/2000/svg}defs
No handler for element {http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd}namedview
No handler for element {http://www.w3.org/2000/svg}metadata
transform: translate [0.0, -295.7]
transform: translate [-2.0552455, 280.43471]
Writing module file: test1.kicad_mod

sys.path.append('');
os.chdir('');

sys.argv = ['arg1', 'arg2']
execfile('');

subprocess.call(['./abc.py', arg1, arg2])

# 
execfile('C:\Users\bachman0\Documents\ZHAW_Module\PA\kicad\python\test1.py')
# Traceback (most recent call last):
#   File "<input>", line 1, in <module>
# IOError: [Errno 2] No such file or directory: 'C:\\Users\x08achman0\\Documents\\ZHAW_Module\\PA\\kicad\\python\test1.py'

execfile('C:Users/bachman0/Documents/ZHAW_Module/PA/kicad/python/test1.py')
# Traceback (most recent call last):
#   File "<input>", line 1, in <module>
# IOError: [Errno 2] No such file or directory: 'C:Users/bachman0/Documents/ZHAW_Module/PA/kicad/python/test1.py'

print sys.path
# ['C:\\Program Files\\KiCad\\lib\\python27.zip', 'C:\\Program Files\\KiCad\\lib\\python2.7', 'C:\\Program Files\\KiCad\\lib\\python2.7\\plat-win32', 'C:\\Program
# Files\\KiCad\\lib\\python2.7\\lib-tk', 'C:\\Program Files\\KiCad\\lib\\python2.7\\lib-old', 'C:\\Program Files\\KiCad\\lib\\python2.7\\lib-dynload', 'C:\\building
# \\msys64\\mingw64', 'C:\\Program Files\\KiCad\\lib\\python2.7\\site-packages', 'C:\\Program Files\\KiCad\\lib\\python2.7\\site-packages\\wx-3.0-msw', '.', 
# 'C:/Program Files/KiCad/bin/../share/kicad/scripting/plugins']

execfile('C:/Users/bachman0/Documents/ZHAW_Module/PA/kicad/python/test1.py')
# 0 F.Cu
# [...]

# ex.

import sys
sys.path.append("/home/user/path/to/kicad-python/")
execfile("/home/user/path/to/kicad-python/examples/pcbannotate.py")

os.chdir('C:/Users/bachman0/Documents/ZHAW_Module/PA/kicad/python/svg2mod/')
execfile('svg2mod.py')

subprocess.call(['svg2mod.py', '-h'])
# Traceback (most recent call last):
#   File "<input>", line 1, in <module>
#   File "C:\Program Files\KiCad\lib\python2.7/subprocess.py", line 169, in call
#     return Popen(*popenargs, **kwargs).wait()
#   File "C:\Program Files\KiCad\lib\python2.7/subprocess.py", line 321, in __init__
#     errread, errwrite)
#   File "C:\Program Files\KiCad\lib\python2.7/subprocess.py", line 571, in _execute_child
#     startupinfo)
# WindowsError: [Error 193] %1 ist keine zulässige Win32-Anwendung

print sys.executable
# C:/Program Files/KiCad/bin/kicad.exe

subprocess.call([sys.executable, 'svg2mod.py', '-h'])
# not a good idea

subprocess.call(['python', 'svg2mod.py', '-h'])
# not a good idea

KiCad PCB EDA Suite – Python Plugin Development for Pcbnew

Welcome to KiCad Python API’s documentation!

KiCAD on OS X – How to use python scripts? [solved]

Kicad Scripting Table of Contents
The basics of scripting in pcbnew
modifying pcbnew layout from python

Scripts

github.com/KiCad/kicad-library-utils: KiCad utilities
PCB back annotation in KiCAD with Python

802.1X Authentifizierung in Rechnernetzen

Wikipedia: IEEE 802.1X

Windows

802.1x Authentifizierung am kabelgebundenen Netz

 

Linux

802.1X Port-Based Authentication HOWTO
Mit IEEE 802.1X und Zertifikaten Network Access Control implementieren
How can I quickly set up a lab with 802.1x wired authentication? (without a switch)

Console

Network802.1xAuthentication

Network Manager

How to configure wired 802.1X for Linux with Network Manager

Raspberry PI

802.1x Authentication on Wired Ethernet on Raspbian
connecting to 802.1x network
802.1X Authentifizierung Raspberry Pi bzw. Debian