You are on page 1of 32

1

ISSUE 2 | NCVEMBER 2OO8 | CPEN SCURCE WWW.EMBEDDED-PRCJECTS.NET


2
www.ebeddedoroecs.ne
,our own oroecs
[EDITCRAL]
NO IDEAS ?
Neue Proee .u
nacnbauen und
weierenwicen
[PRCJECTS]
RFID TrmoduI
SimpIeCPU
Ein SeIbstbau-Mini-Prozessor
SD-KartenIeser
am Grasshopper {AVR32)
Open-Source MikrocontroIIer Kurs
JTAGICE-mkII-KIon
15 Ton MeIodiegenerator
USB-Stacks fr MicrocontroIIer
Ansteuerung Touchscreen
mit einem AVR
CapSense-Anwendungen
mit dem CapTooIKit
2
[ FLTOF/ ] BehedkL SauLer
WELCOME
Ausgabe 2 von Embedded-Projects JournaI
Mil dieser zveilen Ausgabe isl der eveis
erbracll: Wir sind eine LinlagsfIiege!
Die LinlagsfIiege (gr. Lplemeroplera) bIickl
vie ilr Name bereils vermulen Iassl - einer
selr kurzen Lebenservarlung enlgegen. Im
beslen IaII lal sie Iaul VoIksmund insge-
saml eine Wocle zu Ieben, da sie befIugeIl
bereils nacl ein paar Slunden oder spa-
leslens nacl einem Tag slirbl. Docl nacl
dem Mollo, aIIes lal Sinn isl es bei der
LinlagsfIiege ganz genauso. Muller Nalur
sorgl vie immer dafur, dass ein CIeiclge-
vicll zvisclen aII der VieIfaIl an Leben
auf der WeIl lerrscll und die eslen und
Slarkslen uberIeben. Aucl die LinlagsfIiege,
die es sclon seil uber 2OO MiIIionen }alren
gibl, gelorl dazu:
Die kIeine so bekannle und docl ansclei-
nend so unbekannle LinlagsfIiege fulrl
ein voIIslandig anderes Leben, vie so ofl
angenommen. elracllel man den Werde-
gang einer Lplemeroplera, so beginnl er
mil dem SclIupfen aIs Larve aus dem Li.
Dies gescliell in einem Zeilraum von 1O
Tagen bis zu einigen Monalen. Dass aucl
vir bereils erfoIgreicl gesclIupfl sind,
laben vir mil der erslen Ausgabe im }uni
beviesen. Im AnsclIuss daran beginnl die
Teenager-Zeil der kIeinen Larven - veIcle
aucl ganz eIeganl aIs Nymplen bezeiclnel
verden. In dieser Zeil gibl es verscliedene
Arlen von LinlagsfIiegen, die sicl enlve-
der sclvimmend, grabend oder krieclend
forlbevegen. Nur durcl diese VieIfaIl kann
gesiclerl verden, dass das CIeiclgevicll
in der Nalur erlaIlen bIeibl. So loffen aucl
vir, ein gules Speklrum an VieIfaIl anbielen
zu konnen. UngIaubIicle ein bis vier }alre
fur Inseklen geradezu eine Lvigkeil - kann
diese Hauplplase des Lebens andauern. In
dieser Zeil laulel sicl die Nymple bis zu
5O maI, denn durcl das Waclslum vird
regeImaig ilr Cevand zu eng und aucl
vir konnen sloIz verkunden, unsere ersle
Haulung voIIzogen zu laben, da die Sei-
lenanzalI der erslen Ausgabe bereils jelzl
gesprengl vurde.
Lrsl zum Lebensende lin enlslell durcl
Melamorplose die uns bekannle Linlags-
fIiege.
Die Ierfeklion der Lplemeroplera isl soveil
ausgepragl, dass sie sicl inslinkliv kurz vor
ilrer VervandIung gegen IIussricllung des
Cevassers bevegl. Und jeder, der elvas gro-
es erreiclen viII, muss sclon seil Urzeilen
gegen den Slrom ,sclvimmen.
Durcl die Melamorplose in ein Wesen mil
IIugeIn isl es der kIeinen IIiege endIicl mog-
Iicl, zum OIymp der Ireileil aufzusleigen.
Tausende Tiere slarlen synclron mil ilrer
VervandIung und biIden gemeinsam mil
vieIen anderen IIiegen Sclaren und gan-
ze WoIken, um ilren Hoclzeilslanz vor-
zufulren und ilre Weibclen zu begallen.
Sie geben in diesem Akl der Vermelrung
ilren genelisclen aupIan mil ALLLN
Informalionen verpackl in einem kIeinem
Li veiler an die NaclveIl, so vie vir an
Lucl mil unserem Hefl - frei, offen und
einfacl zugangIicl.
Isl die Lnergie verbraucll, faIIen die Lin-
lagsfIiegen lol zu oden. Und genau dieser
Irozess, die VoIIendung des Lebens, der e-
ginn einer neuen Ceneralion, isl es, der den
meislen Mensclen bekannl sein durfle.
Dass vir uns nun sclvimmend, grabend
oder krieclend der naclslen Ausgabe enl-
gegen bevegen konnen, verdanken vir vor
aIIem Lulz VoIIbracll, dem Cesclaflsfulrer
der Iirma ,IV - Lcllzeil- und Lmbedded
CmbH & Co. KC der aIs Hauplsponsor
die HaIfle der Koslen fur Druck und Iorlo
ubernommen lal!
An dieser SleIIe bedanken vir uns ebenso
bei den anderen Sponsoren.
Wir freuen uns auf die naclsle Ausgabe und
vunsclen vieI Spa beim Lesen.
und die slelig vaclsende Communi-
ly rund um dieses Open-Source Irojekl
Zeilsclrifl
Wir sind eine EintagsfIiege !?!
|1j hLLp://de.wkpeda.org/wk/EhLagsIegeh
|2j hLLp://de.wkpeda.org/wk/CpehSource
|3j hLLp://www.bv-augsburg.heL/
%HQHGLNW6DXWHU
sauler_embedded-projecls.nel
4
AbbiIdung 1: Aufgebauter RFID-Reader mit diversen Tags
Abb. 2: RFID
TrmoduI Oberseite
' / 'OO8 .OLFN/ FMEFLLFLPFO.FCTo.NFT
[ PFO.FCTo ] RFID Turnodu | SLeIah Seege
EinIeitung
RFID TrmoduI
Stefan SeegeI <post@seegeI-systeme.de>
|||D (|cic |rcqucncq |cntijiccticn) ist cin
Vcrjchrcn, un rcht- un ocrhrungs|cs z. 8.
Gcgcnstcnc ccr Ticrc zu icntijizicrcn ccr
zu crtcn. |inc Vcricntc cr |||D Tcchni| ist
ic I|-usjhrung (Icu |rcqucncq). Dicsc
ist schr prcisgnstig un ic I|-Trcnspcncr
ocn5tigcn |cinc cigcnc Strcntcrscrgung, c
icsc ocr cs |c| cs Icscrs nit |ncrgic
tcrscrgt ucrcn. Dcrcus crgiot sich cin orcitcs
nucnungsgcoict, z. 8. Zutrittssqstcnc,
Zcitcrjcssung, Icgisti|, u. t. n.. |n jc|gcncn
rti|c| uir cin |||D Icscr jr pcssitc 125
|Hz Trcnspcncr tcrgcstc||t.
Das RIID TurmoduI (Abb. 1) eignel sicl
aufgrund seiner Abmessung (Durclmesser
52 mm) fur den direklen Linbau in eine
Unlerpulzdose. Die Unlerpulzdose soIIle
am beslen an der inneren Seile der Tur
angebracll verden. An der Auenseile
kann z. . eine AcryIpIalle, veIcle die
Anlenne und oplionaI eine (Duo-) LLD
belerbergl, befesligl verden. Das ModuI
kann z. . direkl an einem KIingeIlrafo 8
V- belrieben verden, veIcler aucl gIeicl
einen eIeklrisclen Turoffner versorgen
kann. Lin ReIais um den eIeklrisclen
Turoffner zu sleuern befindel sicl mil auf
der IIaline. OplionaI kann die IIaline mil
einem RS485 IC besluckl verden, um z. .
eine Vernelzung oder erveilerle Sleuerung
zu ermogIiclen. Weilerlin isl auf der IIaline
IIalz fur ein I2C LLIROM, um aucl eine
groere AnzalI an Transpondern speiclern zu
konnen. SclaIlpIan und Soflvare slelen unler
|1j zur Verfugung.
Projekt
Ausstattung im berbIick
C ATMega8
ruckengIeiclricller und
SpannungsregIer 78MO5 on board
RIID Reader IC LM4O95
WagokIemme fur den AnsclIuss von
Slromversorgung, RIID Anlenne,
(Duo-) LLD und DalenIeilung (RS485)
WagokIemme fur den ReIaiskonlakl,
um z. . einen Turoffner zu sclaIlen
(ReIais on board)
Kurzlublasler, z. . zum
Iosclen von LLIROM
2 Iins des C (ID3, ID4)
mil SliflIeisle abgreifbar,
um z. . zusammen mil
dem ISI Sleckverbinder
ein RIM12 IunkmoduI
anbinden zu konnen
Funktionsbeschreibung
Die Slandardfirmvare (DovnIoadIink
unlen) uberprufl bei Lrkennung eines Tags
zunaclsl, ob bereils ein Tag im LLIROM
abgespeiclerl isl. IaIIs nicll (LLIROM
Ieer / Lrslinbelriebnalme) vird dieser
Tag im LLIROM abgeIegl und giIl von
nun an aIs ,Adminislralor-Tag. Wird ein
guIliger Tag erkannl, ziell das ReIais fur
ca. 2 s an, bevor es vieder abfaIIl um z. .
einen eIeklrisclen Turoffner anzusleuern.
HandeIl es sicl bei diesem Tag um den
Adminislralor Tag, konnen veilere guIlige
Tags angeIernl verden, venn diese an die
Anlenne gefulrl verden soIange das ReIais
Abb. 3: RFID
TrmoduI Unterseite
Abb. 4: Manchester-Codierung
5
Abb. 5: SchaItpIan
SLeIah Seege | RFID Turnodu [ PFO.FCT ]
SchaItungsbeschreibung
Softwarebeschreibung
angezogen isl. Wird der Kurzlublasler
auf der IIaline Ianger aIs zvei Sekunden
gedruckl, verden aIIe gespeiclerlen Tags
geIoscll. Der nacl einem Losclvorgang
aIs naclsles erkannle Tag vird vieder aIs
Adminislralorlag gespeiclerl. Uber die
RS485 SclnillsleIIe verden beim Lesen
eines Tags dessen Dalen nacl foIgendem
Iormal ausgegeben: <STX>R<+/-><5 yles
Tag lexadezimaI><LOT>. Das ,+' oder
,-' gibl an, ob der Tag im LLIROM
gefunden vurde und somil das
ReIais aklivierl vurde.
Der RIID IC LM4O95 |2j gibl konlinuierIicl
ein 125 kHz SignaI auf die SpuIenanlenne
aus. Wird ein Tag in das IeId der
Anlenne gebracll, versorgl sicl der
auszuIesende Tag daruber
mil Lnergie. CIeiclzeilig
sendel der Tag seine Dalen
in dem er dem Leser unler-
scliedIicl slark Lnergie
enlziell, so dass eine
AmpIiludenmoduIalion
enlslell. Das RIID IC LM4O95
gibl das demoduIierle und gefiI-
lerle SignaI auf einen inlerruplfaligen
Lingang des Mega8. ei diesem SignaI
landeIl es sicl um ein Manclesler-
codierles (siele AbbiIdung 4) SignaI
mil einer ilrale von einem 64leI der
Tragerfrequenz. Ausgelend von 125 kHz
Tragerfrequenz sind das knapp 2OOO bil/s. ei
jedem IegeIveclseI des manclesler-codierlen
SignaIs vird nun eine Inlerruplrouline im
C aufgerufen.
Trolz des kIeinen C vurde aIs
Irogrammierspracle C++ vervendel, da sicl
damil eine selr kompakle und ubersicllIicle
Slruklur erreiclen Iassl. Kernsluck der
Iirmvare biIdel die KIasse ,Rfid. ei jedem
Aufruf der INTO-Inlerruplrouline durcl das
SignaI des RIID-ICs vird die vergangene
Zeil zum vorlerigen IIankenveclseI
uberprufl, isl die Zeil kurzer aIs 3/4 der
ilzeil, vird die IIanke ausgebIendel und die
Rouline verIassen. AndernfaIIs vird eine
16-bil VariabIe um ein il nacl Iinks
gescloben und, faIIs der IegeI auf O Iiegl,
mil 1 veroderl. Nacl jedem eingeIesenen
il vird nun dieses IIIO-Regisler auf das
Vorlandensein eines Tagleaders (9x 1-ils)
uberprufl, und gegebenfaIIs ein ilzalIer
auf O geselzl. Isl ein ganzes yle voII, vird
dieses der RIID KIasse ubergeben. Nacldem
64 il eingeIesen vurden, verden zunaclsl
die SpaIlen- und ZeiIenparilalsbils uberprufl.
Sind aIIe Iarilalsbils korrekl, verden seIbige
ausgebIendel, so dass 4O ,Nellodalenbils
verbIeiben. Diese Transponderdalen verden
nun der KIasse ,Tagmanager ubergeben.
Dorl verden aus dem LLIROM immer 5
yle ausgeIesen und mil den dekodierlen
Dalen vergIiclen, soIange bis die Dalen
ubereinslimmen oder das Speiclerende
(OxIIIIIIIIII) erreicll vurde. HandeIl
es sicl beim dekodierlen Transponder um
den erslen SpeiclerpIalz im LLIROM, vird
nocl ein AdminislralorfIag geselzl, so dass
veilere Transponder linzugefugl verden
konnen. Das 64 kbil groe I2C-LLIROM
kann bis zu 1638 Transponder speiclern.
HEADER {9 x 1)
DO D1 D2 D8 ZP
D4 Db D6 D1 ZP
D8 D9 D1O D11 ZP
D12 D18 D14 D1b ZP
D16 D11 D18 D19 ZP
D2O D21 D22 D28 ZP
D24 D2b D26 D21 ZP
D28 D29 D8O D81 ZP
D82 D88 D84 D8b ZP
D86 D81 D88 D89 ZP
SP SP SP SP STOP
6
Abb. 6: BestckungsmoduI unten Abb. 7: BestckungsmoduI oben
[ PFO.FCTo ] RFID Turnodu | SLeIah Seege
Datenaufbau der Transponder
Links
Die vervendelen RIID-Transponder enllaIlen
eine eindeulige, 64-il Iange ilfoIge, die
foIgendermaen aufgebaul isl: die erslen neun
ils sind aIIe auf 1 geselzl und sleIIen den
Header dar. Dieses ilmusler kann aufgrund
der eingesclobenen Iarilalsbils nirgendvo
sonsl in den Dalen auflauclen, und kann so
zur Synclronisalion auf den Dalenanfang
benulzl verden. Nacl dem Header foIgen
1O x 4 Dalenbils, jeveiIs gefoIgl von einem
Iarilalsbil das aus den jeveiIs Ielzlen 4 ils
erreclnel vird (ZeiIenparilal, ZI). Nacl
diesen zeln Cruppen sclIieen sicl nocl
4 veilere Iarilalsbils an, veIcle aus den
4 SpaIlen der Dalenbils erreclnel verden
(SpaIlenparilalen, SI). Das Ielzle il isl das
Slopbil und isl fesl auf O geselzl.
Die Antenne
Line passende Leseanlenne fur das ModuI
kann selr einfacl seIbsl lergesleIIl verden.
Man nelme z. . O,2 mm KupferIackdrall,
von dem ca. 1OO Windungen auf einen runden
Korper mil ca. 45 mm Durclmesser gevickeIl
verden. Die Induklivilal der SpuIe Iassl sicl
dann mil HiIfe eines L-Melers oder aIlernaliv
mil einem Iunklionsgeneralor und einem
OsziIIoskop lerausfinden. Wer keine Anlenne
seIber vickeIn moclle, kann nalurIicl aucl
auf ferlige SpuIen zuruckgreifen |3j. In
jedem IaII mussen in der SclaIlung C1-C4
und R9 diese an die Anlenne angepassl
verden. C3 und C4 biIden zusammen mil
der AnlennenspuIe einen Seriensclvingkreis,
so dass sicl eine Resonanzfrequenz von
ca. 125 kHz ergibl. C1 und C2 dienen aIs
kapaziliver SpannungsleiIer, um das reIaliv
groe AnlennensignaI auf ein fur das IC
verlragIicle Ma zu verkIeinern. R9 dienl
dazu, bei selr niederolmigen Anlennen,
die Cule kunslIicl zu verkIeinern. Auf der
HersleIIerseile des RIID ICs findel sicl
eine LxceI-TabeIIe, die die ereclnung der
auleiIe elvas vereinfacll. Die Anlenne
kann in gevissen Crenzen mil einem KabeI
vom ModuI abgeselzl verden, olne dass
sicl die Resonanzfrequenz dramaliscl
anderl. In einem Versucl mil 7O cm O,5
mm DoppeIIilze zvisclen Anlenne und
ModuI ging die Resonanzfrequenz um ca.
1 kHz nacl unlen.
1. ArlikeI, SclaIlpIan und Soflvare bei mikroconlroIIer.nel hLLp://www.nkrocohLroer.heL/arLces/RFID_T%C8%BCrnodu
2. DalenbIaller zum RIID IC 4O95 und den Transpondern hLLp://www.enncroeecLrohc.con
3. Menling MikroeIeklrik CmbH & Co KC hLLp://www.spueh.con
4. Diskussion zum ArlikeI bei mikroconlroIIer.nel hLLp://www.nkrocohLroer.heL/Lopc/1O6299
7
Abb. 1:
CPLD Baustein -
PLCC-Gehuse
AbbiIdung 2: SRAM - DIP-Gehuse
EinIeitung
SimpIeCPU
Ein SeIbstbau-Mini-Prozessor aus der BasteIstube
MichaeI SchferIing <m.schaeferIing@t-onIine.de> | Benedikt Sauter <sauter@ixbat.de>
LinmaI seIbsl einen kIeinen Irozessor bauen,
veIcler sclIieIicl aucl in Iorm reaIer
Hardvare exislieren soII und anland dessen
der Aufbau und die Iunklionsveise eines
minimaIen Reclner-Syslems veransclauIicll
vird dies var die iniliaIe Idee zu diesem
kIeinen Irojekl.
Zunaclsl soII der Leser kurz in den
Aufbau und die Iunklionsveise eines
minimaIen Reclnersyslems eingefulrl
verden. Hierbei verden die benoliglen
Komponenlen vorgesleIIl und deren enl-
spreclende ReaIisierung in unserem Irojekl.
Im zveilen Sclrill soII fur unser Syslem
eine IIallform in Iorm eines Demo-oards
gesclaffen verden. Das lieraus resuIlierende
Design soIIle ubersicllIicl und einfacl
aufgebaul sein, damil es mil mogIiclsl venig
Aufvand und
aucl gunslig
naclgebaul
ve r de n
kann.
Mchae SchaIerhg & BehedkL SauLer | SnpeCPU [ PFO.FCT ]
Theorie: Was wird bentigt?
CIUs verricllen seil jeler ilre Arbeil aIs
zenlraIer eslandleiI eines jeden IC, vobei
die Leislungsfaligkeil eines Syslems meisl
am (bzv. an den) vervendelen Irozessor(en)
gemessen vird. Canz aIIgemein isl eine CIU
ein auleiI, veIcles Irogramme ausfulren
kann. Um ein Irogramm ausfulren zu konnen,
verden von der CIU Informalionen in Iorm
von Dalen und den darauf auszufulrenden
efelIen benoligl. Diese sind in einem
Dalenspeicler permanenl oder lemporar
gespeiclerl, in einem IC isl dieser Speicler
durcl die Speiclerlierarclie reaIisierl:
IeslpIalle, Arbeilsspeicler und Cacle Iiefern
lier die benoliglen Dalen. Um vernunflig mil
einem Compuler arbeilen zu konnen, finden
nalurIicl aucl Lin- und Ausgabegerale vie
Taslalur, Maus und Monilor ilren Linsalz
bei gangigen Syslemen. Docl veIcle der
soeben vorgesleIIlen Komponenlen verden
fur unser minimaIes Syslem lalsaclIicl
benoligl`
Der zenlraIe eslandleiI isl seIbslverslandIicl
eine CIU. Zudem benoligen vir elvas
Speicler, um efelIe und Dalen laIlen
zu konnen. Man konnle, sofern
das Syslem IedigIicl ein Irogramm
ausfulren soII und valrend des elriebs
keine enulzerinleraklion erforderl,
auf Lin- und Ausgabegerale verzicllen.
Vorausselzung lierfur isl, dass vor dem
Slarl des Syslems die noligen Informalionen
im Speicler bereilslelen. Hierfur isl eine
SclnillsleIIe vom IC aIs Debug- und
IrogrammiersclnillsleIIe direkl zum Speicler
des neuen Irozessors lin vunsclensverl,
da somil zu eginn die efelIe und Dalen
gesclrieben und nacl eendigung des
Irogramms, die Lrgebnisse aus dem Speicler
geIesen verden konnen.
Umsetzung
Lin ZieI unseres Irojekles isl es,
einen LinbIick in die Teclnik zu
erfalren, die linler den einzeInen
Komponenlen sleckl. Ls bielel sicl
aIso an, keine ferlige CIU (vie z..
einen AVR, ARM & Co.), sondern
eine freie, offene (und vomogIicl
in VHDL besclriebene) CIU zu
vervenden, die evenlueII aucl
nocl erveilerl verden kann. Iur
ein soIcles Vorlaben bielel sicl
konfigurierbare Logik aIs ,Trager
der CIU an. IaIIs der Leser nocl keine
Lrfalrung mil CILDs oder IICAs sammeIn
konnle, mocllen vir an dieser SleIIe auf den
ArlikeI ,XSVI IIayer vill USprog der
Ielzlen Ausgabe dieses }ournaIs verveisen.
Auf die Irage, veIcle CIU genau vir denn
nun in unserem Design arbeilen Iassen,
voIIen vir in einem spaleren Absclnill
dieses ArlikeIs eingelen.
Lin veileres AnIiegen
beim Design des oards
isl es, dass die Hardvare
mil venig Aufvand
seIbsl lerzusleIIen isl.
Aus diesem Crund
enlsclieden vir uns
fur die Vervendung
eines XC9572-CILDs von
XiIinx, da diese ausleine
in ILCC-auform er-
laIlIicl sind.
Diese ermogIicll einfacles Lolen der IC-
Iassung und Ieiclles Tausclen des CILDs,
faIIs docl maI elvas sclief gelen soIIle.
Weilerlin enlsclieden vir uns lier fur die
5VoIl-Varianle, da dies die Slromversorgung
und die Inleraklion mil dem vervendelen
RAM-auslein vereinfacll. IreisIicl sclIagl
diese Komponenle mil elva funf Luro zu ucle.
Somil sind vir sclon an der zveilen viclligen
Komponenle angeIangl, dem Speicler. Iur
Designs dieser Croe isl SRAM eine gule
WalI, da die Ansleuerung dieser Speiclerarl
mil selr venig Aufvand verbunden isl.
}edocl Iiegl der Ireis lier im VergIeicl zu
anderen Speiclervarianlen vesenlIicl loler.
Iur unsere Zvecke genugen jedocl 32Kyle
RAM, veIcles zur Zeil in DIL-auform
elvas knapp uber einen Luro koslel.
FMEFLLFLPFO.FCTo.NFT .OLFN/ ' / 'OO8
Bezeichnung Wert
C1, C2, C8, C4, Cb, C6, C8 1OOhF
C1 1OuF
D1 Dode 1N4OO1
IC1 Xhx XC9b12-PC44 (bV)
IC2 Spahhuhgsreger 18LOb
LED1, LED2, LED8, LED4 LeuchLdodeh
CC1 Cuarz 1.OOO_MHz
R1, R2, R8, R4 21O_Chn
Rb 41O_Chn
R6 1OK_Chn
S1 TasLer
U1 SRAM 82Kx8 DIL28
X1 HohsLecker-Buchse
X2 WahhehsLecker 1O-Po.
X8 WahhehsLecker 84-Po.
8
BestckungsIiste ,simpIeCPU"
AbbiIdung 3:
SchaItpIan ProzessorpIatine
[ PFO.FCT ] SnpeCPU | Mchae SchaIerhg & BehedkL SauLer
Die WahI der CPU
Nacldem vir nun vusslen, dass vir
eine CIU bauen mocllen, die aucl nocl
in einen CILD passl, macllen vir uns
zunaclsl einmaI auf die Sucle. Aufgrund
der venigen Logikgaller, die der gevalIle
CILD zur Verfugung sleIIl (72 MakrozeIIen
mil 16OO Callern), isl die AusvalI, an bereils
im QueIIcode vorlandenen CIUs, Ieider
nicll selr gro. Wir slieen jedocl auf ein
Irojekl, das uns direkl begeislern konnle:
ei opencores.org vurde von Tim osclke
eine minimaIe CIU (,MCIU A minimaI
CIU for a CILD) veroffenlIicll, die in
einem CILD mil 32 MakrozeIIen
IIalz findel |1j. Somil vurde mil
dieser ReaIisierung nocl ausrei-
clend IIalz fur den Speicler-
Irogrammer bIeiben, veIcler
ja ebenfaIIs im CILD reaIisierl
verden soIIle. Des Weileren isl
die MCIU bereils ausfulrIicl
geleslel (slell unler der CIL),
isl sovolI aIs VeriIog-, aIs aucl
aIs VHDL-Varianle erlaIlIicl
und zudem isl das Irojekl selr
gul dokumenlierl.
Die SchaItung
Nacldem nun aIIe Anforderungen de-
finierl sind, felIl nur nocl die passende
SclaIlung fur den Versuclsaufbau. Der
CILD- und SRAM-auslein biIden die
zenlraIen Komponenlen des Syslems. Wie
bereils ervalnl, verzicllen vir nicll auf
den Komforl einer Lin- und Ausgabeeinleil
und spendieren daler dem oard drei
Leuclldioden fur spalere Ausgaben.
Celaklel vird unser Irozessor von einem
einfaclen QuarzosziIIalor, vobei dieser
sleckbar monlierl vird, um den Irozessor
sclneIIer oder Iangsamer Iaufen Iassen
zu konnen. Die MaximaIgesclvindigkeil
vird spaler zum einem vom Design des
Irozessors und zum anderen von der
Leislungsfaligkeil des CILDs ab-
langig sein.
Iur das Irogrammieren des
CILD-ausleins und das spa-
lere Laden der Irogramme
befindel sicl ein 1O-poIiger
AnsclIuss auf der SclaIlung.
Die Irogrammierung des CILD-
ausleins kann auf diese Weise,
vie im ArlikeI ,XSVI IIayer
vill USprog besclrieben,
durclgefulrl verden. Iur das
Laden von eigenen Irogrammen
in die neue CIU vird es eine
eigene Iirmvare fur den freien
UniversaIprogrammierer
USprog geben. Neben ei-
nem 1O-poIigen AnsclIuss
befindel sicl auerdem ein 34-
poIiger Wannenslecker auf dem oard.
Hier konnen bequem aIIe Adress- und
DalenIeilungen abgegriffen verden. Der
Tasler S1 isl aIs ReselmogIiclkeil
fur den Irozessor gedacll.
9
Abb. 4:
PIatine
3D BiIder
Ober- und
Unterseite
FMEFLLFLPFO.FCTo.NFT .OLFN/ ' / 'OO8
AusbIick
Mchae SchaIerhg & BehedkL SauLer | SnpeCPU [ PFO.FCT ]
ZieI dieses ArlikeIs isl es, die Idee und
aIIe viclligen Komponenlen des Irojekls
simpIeCIU - die CIU, den AssembIer und
das Irogrammierinlerface - vorzusleIIen.
is zur naclslen Ausgabe gibl es fur uns
zvar nocl eine Menge zu lun, aber vir sind
nocl ganz guler Dinge. Iur Anregungen,
Ideen oder sonslige Kommenlare konnl Ilr
eucl gerne bei uns meIden.
Links
1. MCIU A minimaI CIU for a CILD
hLLp://opehcores.org/pro|ecLs.cg/web/
ncpu/overvew
2. USprog Irogrammer
hLLp://www.enbedded-pro|ecLs.heL/
usbprog
Zu guler Lelzl felIl nocl die Slromversorgung
der SclaIlung, veIcle mil einem einfaclen
SpannungsregIer vom Typ 78O5 reaIisierl
vorden isl. Die voIIendele IIaline soII in
elva derarl ausselen, vie in AbbiIdung 4
dargesleIIl.
10
${GRASSHOPPER}/build_avr32/linux-2.6.24-icnova/arch/avr32/boards/
icnova/icnova_base.c
Abb. 1:
SchaItpIan
Grasshopper
SD/MMC-
Karte
at32_add_device_mci(0, &mci0_data);
static struct mci_platform_data __initdata mci0_data = {
.detect_pin = GPIO_PIN_NONE,
.wp_pin = GPIO_PIN_NONE,
};
${GRASSHOPPER}/build_avr32/
linux-2.6.23-icnova/
make menuconh g
EinIeitung
SD-KartenIeser am Grasshopper {AVR32)
Wie man einen SD-KartenIeser anschIiet
MarceI BeItz <marceI@beItz.info>
[ PFO.FCT ] SD-KarLeheser an Crasshopper (AVR82) | Marce BeLz
AIs icl in der Ielzlen Ausgabe des ,Lmbedded
Irojecls }ournaI ein iId mil dem
dazugelorigen ArlikeI uber das
TIT-DispIay am Crasslopper (AVR32)
geselen labe, sland eindeulig fesl,
dass icl dies aucl naclbauen muss.
Da jedocl der AnsclIuss der SD-Karle nur
im Iolo sicllbar, jedocl nicll besclrieben
var maclle icl micl an die Arbeil um dies
lerauszusuclen und naclzubauen.
Hardware-ImpIementierung
Treiber aktivieren
Die Aklivierung der nolvendigen Treiber im KerneI isl kein Hexenverk. In der foIgenden
Dalei...
...muss nur die Slruklur vor der ,selup_board Iunklion eingefugl verden:
Der ,.delecl_pin und ,.vp_pin sind in dieser Varianle nicll angesclIossen, und deslaIb
auf CIIO_IIN_NONL geIegl. AnsclIieend muss nur nocl der Aufruf der Iunklion
innerlaIb der HaupliniliaIisierungsfunklion icnova_inil eingefugl verden. }elzl isl aIIes
nolvendige im KerneI aklivierl, damil dieser eine Kommunikalion mil der Karle im
KarlenlaIler aufbauen kann.
Um eine SD-Karle am Crasslopper anzu-
sclIieen (siele AbbiIdung 1), isl dabei das
Sclvierigsle, sicl einen SD-KarlenlaIler
zu besorgen. Daneben sind nur nocl ein
paar Widerslande nolig. Die Werle fur diese
Widerslande unlerscleiden sicl, je nacldem,
vo man im Inlernel danacl sucll. Icl labe
micl daler an den SclaIlpIan
des NCW1OO zu laIlen.
StckIiste
b x R1, R2, R8,
R4, Rb
41 KChn
1 x J1 SD-
KarLehhaLer
KerneI bersetzen
und starten
Vorausselzungen zum Slarlen und fur die
erslen Lxperimenle des KerneIs sind in
diesem IaII ein funklionierender TITI- und
NIS-Server zum Uberlragen des KerneIs
und der ModuIe. Im Inlernel findel man
genug QueIIen in denen besclrieben isl vie
man sicl soIcl Server inslaIIierl.
Nacldem die QueIIen angepassl vurden,
sind an der KerneI-Konfiguralion nur nocl
zvei kIeine Anderungen durclzufulren.
Dazu muss in das Verzeiclnis
geveclseIl und dorl
ausfulrl verden. An dieser SleIIe vird der
Supporl fur VIAT aklivierl, vas den Zugriff
auf SD-Karlen mil dem IAT-Daleisyslem
erIaubl. Die Sclrille im KerneImenu Iaulen
vie foIgl: ,IiIe Syslems --->, ,DOS/IAT,NT
IiIesyslems ---> veclseIn und das nolige
ModuI aklivieren (siele AbbiIdung 2).
' / 'OO8 .OLFN/ FMEFLLFLPFO.FCTo.NFT
11
AbbiIdung 2: VFAT
AbbiIdung 3: MMC/SD Treiber
make ARCH=avr32 CROSS_COMPILE=avr32-linux- INSTALL_MOD_PATH=${NFS}/module
modules_install
cp arch/avr32/boot/images/uImage /tftpboot
FMEFLLFLPFO.FCTo.NFT .OLFN/ ' / 'OO8
make ARCH=avr32 CROSS_COMPILE=avr32-linux- uImage
Marce BeLz | SD-KarLeheser an Crasshopper (AVR82) [ PFO.FCT ]
SclIieIicl muss nocl das ModuI fur die SD-Karlen aklivierl verden:
,Device Drivers --->, ,MMC/SD card supporl ---> (siele AbbiIdung 3).

Nun mil ,Lxil voIIslandig aus der Konfiguralion lerausgelen und vor dem eenden
speiclern. Der uiId-Vorgang vird mil
geslarlel. Da aIIe aIs ModuIe ausgevalIl vorden sind, bIeibl niclls anderes ubrig,
aIs nocl die ModuIe zu kompiIieren:
Dabei verden die ModuIe in das - durcl das NIS - freigegebene Verzeiclnis kopierl.
Der KerneI muss nocl in das TITI-Verzeiclnis kopierl verden, mil:
12
Thank you for using In-Circuit ICNova
icnova login: root
BusyBox v1.5.0 (2008-04-24 11:31:03 CEST) Built-in shell (ash)
Enter ,help` for a list of built-in commands.
# portmap
# mount -t nfs 192.168.x.x/${NFS} /mnt
# cp -a /mnt/module/* /
# modprobe atmel-mci
# modprobe mmc_block
# modprobe vfat
ICnova> setenv serverip 192.168.x.x #die IP Adresse des Servers
ICnova> setenv ipaddr 192.168.x.y #die IP Adresse des grasshoppers
ICnova> tftpboot 11000000 uImage
ICnova> bootm
AbbiIdung 4: BeispieIsession
}elzl den Crasslopper ansclIieen und boolen. Im u-bool den Vorgang mil ,SIACL
abbreclen und foIgende Kommandos eingeben:
Wenn das Syslem geboolel isl und man sicl angemeIdel lal, isl es erforderIicl, die neuen
ModuIe - via NIS - in das Syslem zu kopieren. Dazu:
(Der porlmap-efelI isl dazu da, um sicl auf den NIS-Server verbinden zu konnen)
}elzl soIIle eigenlIicl aIIes funklionieren und man kann die SD-Karle mounlen (siele
AbbiIdung 4).
' / 'OO8 .OLFN/ FMEFLLFLPFO.FCTo.NFT
[ PFO.FCT ] SD-KarLeheser an Crasshopper (AVR82) | Marce BeLz

/e /rie in diese .ourna senen uner


der reien Creaiv Coons i.en.. Lie Tee
duren wie beann von Ooenoource o
dii.ier und in die eiene /rbei i aue
noen werden. Lie ein.ie Eedinun is.
dass der neue Te ebenas wieder uner
der eicnen i.en.. uner der dieses He
sen. veroenicn werden uss. und .u
sa.icn au den oriinaen /uor verwiesen
werden uss.
/usenoen Firen und Fienwerbun.
Fceo wnere onerwise noed.
nis wor is icensed under
no.//creaivecoons.or/icenses/b,/o.O/
/usenoen Firen und Fienwerbun.
Enbedded Pro|ecLs:
Dp.-IhI. (FH) BehedkL SauLer
AuI den Kreuz 2O
D-861b2 Augsburg
TeeIoh: +49 821 81946-28
TeeIax: +49 821 81946-24
Ma: |ourha@enbedded-pro|ecLs.heL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AhzegengchkeLeh
uhd PressLe auI AhIrage
va Ma.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Herausgeber:
BehedkL SauLer
CesLaLuhg/LayouL/SaLz:
Das-MedehkoekLv.de
ArLkeIoLos:
Cauda LehhdorIer
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VerIIehLchuhg: 4x / Jahr
AusgabeIornaLe: PDF / PrhL
AuIage PrhL: 2bOO SLk.
EhzeverkauIspres: 1,OO EUR
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Des sL eh Cpeh-Source Pro|ekL.
We deses Magazh abohherL
werdeh kahh sL auI der IhLerheLseLe
beschrebeh.
www.enbedded-pro|ecLs.heL/|ourha
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FP. Foonacnweise
Tie. endi naa. sooinsudios
/n.eie. Faona Hei.Niceone,. dio
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
[ MPFFooLM ]
13
Das Vorhaben und die Idee
AIIer Anfang ist schwer
AktueIIer Stand des Projektes
BauteiIe Wert Beschreibung Bauform
C1,C2 22p KohdehsaLor SMD C12O6
C8,C4,Cb 1OOh KohdehsaLor SMD C12O6
IC1 AVR ATMECA16 ALne AVR TCFP44
JP2-JP9 - PINHEAD 1XO8
JP11 - PINHEAD 1XO2
JP12-JP14 - PINHEAD 1XO1
JP1 - AVR-JTAC-1O Ph 2XOb
JP1O - AVR-ISP-1O Ph 2XO4
L1 1OuH Spue 22OO-1b.24
C1 16 Mhz CRYSTAL HC49U-V
R1 1OK WdersLahd SMD R12O6
S1 - TasLer -
Im Ralmen des Lmbedded-Irojecls }our-
naIs soII ein freier MikroconlroIIerkurs
saml UnlerIagen vie eispieIqueIIlexle,
ScluIungsunlerIagen und einem passenden
HardvarepooI enslelen. Der Kurs vird von
der MikroconlroIIer Irojeklgruppe (mcIC)
des Augsburger Compulerforums geIeilel
und loffenlIicl finden sicl beim Lesen
des ArlikeIs nocl vieIe Inleressenlen, die
dieses Irojekl in irgendeiner Arl und
Weise unlerslulzen und daran milvir-
ken voIIen. In den foIgenden Ausgaben
des }ournaIs vird uber das Irojekl und die
Lrgebnisse veilerlin bericllel.
ZieI isl IelzlendIicl, dass eine gule
SammIung saml passendem
,Handbucl fur den Linslieg
in die MikroconroIIer-WeIl, frei
zum DovnIoad angebolen
verden kann.
eleimalel isl das Irojekl
lier: hLLp://www.nkrocoh-
Lroerkurs.de
Open-Source MikrocontroIIer Kurs
ArtikeIreihe MikrocontroIIer Projektgruppe {mcPG) des Augsburger Computerforums
MkrocohLroer Pro|ekLgruppe (ncPC) | Cpeh-Source MkrocohLroer Kurs [ PFO.FCT ]
Ofl isl der Zugang in die WeIl der kIeinen
HeIfer sclvierig. AIIein die groe Aus-
valI an Anbielern und deren Lnlvick-
Iungsboards isl fur den Anfanger sclver
zu durclsclauen. So bielen nicll nur die
HersleIIer |1,2j ilre eigenen Losungen an.
Linige HersleIIer laben sicl spezieII auf
LnlvickIungsboards speziaIisierl |3j. Aucl
vieIe LIeklroniklandIer |4j laben eigene
SclaIlungen im Irogramm. Die meisl pro-
prielaren Losungen bielen ofl kompIexe
oards an. SinnvoIIe augruppen auf ei-
nem LnlvickIungsboard, die fur zukunflige
Ausbauslufen vorgeselen sind, konnen am
Anfang eler vervirrend sein.
Crade der Linsleiger vei aber gar nicll,
vas er genau braucll. Die ricllige Aus-
valI im DsclungeI der Angebole zu lref-
fen, isl deslaIb fur iln sclver. ei seiner
AusvalI kann man aIs Linsleiger kaum
beurleiIen, vas virkIicl sinnvoII isl. Ls
vare aIso vunsclensverl, dass man mil
einem selr einfaclen Linslieg beginnl. Die
nolvendige Hardvare soIIle aber spaler
aucl zu groeren SclaIlungen ausgebaul
verden konnen.
Line Losung versucll die Mikrocon-
lroIIer Irojeklgruppe (mcIC) des Augs-
burger Compulerforums (ACI) |5j nun zu
enlvickeIn. ZieI der LnlvickIung sind slan-
dardisierle Iunklionseinleilen aIs ModuIe
fur Sleckbreller |6j. Dabei vird zu jedem
Hardvare-ModuI aucl das passende Sofl-
vare-ModuI enlvickeIl. Die Kombinalion
erIaubl es dem enulzer, seine SclaIlung
vie bei einem Lego-Syslem sclneII auf-
zubauen und milleIs der Soflvare Sclrill-
fur-Sclrill zu leslen. ei diesem ileraliven
Vorgelen konnen IelIer in der Hardvare
sclneII isoIierl und beloben verden.
In diesem ArlikeI soII zunaclsl das Mi-
kroconlroIIer-ModuI naler vorgesleIIl
verden. Die veileren ModuIe foIgen in
den naclslen Ausgaben des ,Lmbedded-
Irojecls }ournaIs.
Das CIU ModuI vurde mogIiclsl einfacl
aufgebaul (s. auleiIeIisle). Um IIalz zu
sparen, vird ein AVR Almega16 im TQII44
Celause vervendel. is zur endguIligen
Verabscliedung des ModuIs vird er unler
Umslanden gegen einen IIN-kompalibIen
Almega32 ausgelauscll. Die VCC und CND
Iins sind mil einem AbbIockkondensalor
(1OOnI) slabiIisierl. Der exlerne Quarz laklel
mil 16 MHz. SamlIicle Iorls (IO Ausgange)
sind jeveiIs fur das Sleckbrell nacl unlen
milleIs SliflIeislen ausgefulrl. Damil isl die
Konlaklierung sicler gesleIIl und das Mo-
duI slell fesl auf dem Unlergrund.
Um die Messung und VerkabeIung der I/
O-Iins zu erIeicllern, sind auf der Ober-
seile uclsenIeislen angebracll. Lin Resel
FMEFLLFLPFO.FCTo.NFT .OLFN/ ' / 'OO8
Open-Source OnIine-MikrocontroIIer-Kurs
/ 'OO8 .OLFN/ FMEFLLFLPFO.FCTo.NFT
[ PFO.FCT ] Cpeh-Source MkrocohLroer Kurs | MkrocohLroer Pro|ekLgruppe (ncPC)
SclaIler ermogIicll den Neuslarl der AlmeI
CIU. Die Lnlslorung des ADC (AnaIog
DigilaI WandIer) vurde mil einer koslen-
gunsligen SpuIe reaIisierl. Zur Irogram-
mierung (IIaslen) isl eine ISI- und }TAC
SclnillsleIIe vorlanden. KIeinleiIe vie Wi-
derslande und Kondensaloren kompIellie-
ren den Aufbau. Melr isl auf dem ModuI
nicll vorlanden.
is zur naclslen Ausgabe des ,Lmbedded-
Irojecls }ournaI im Dezember 2OO8 vird
das Design nocl veiler verfeinerl. Iur
VerbesserungsvorsclIage isl die Mikrocon-
lroIIer-Cruppe immer dankbar.
Wie bereils ervalnl vird in Zusammenarbeil
mil dem ,Lmbedded-Irojecls }ournaI und
dem ACI vird dieser OnIine-Kurs fur den
Linslieg in die MikroconlroIIer-WeIl enlvi-
ckeIl. Inleressierle TeiInelmer und Leule die
den Kurs mil geslaIlen voIIen, konnen sicl
unler hLLp://www.nkrocohLroerkurs.de
meIden. Arbeil gibl es genug :-).
Die nolvendige Hardvare vird spaler
ebenfaIIs uber die Inlernelseile angebolen.
Durcl den einfaclen Aufbau kann der
Ireis niedrig gelaIlen verden, um aucl
ScluIern und Sludenlen den Zugang nicll
zu verbauen.
QueIIen:
1 - hLLp://www.ncrochp.con/
2 - hLLp://www.aLne.con/producLs/AVR/
3 - hLLp://www.onex.con/
4 - hLLp://www.poh.de/ ATMEL EvauaLohs-
Board Versoh 2.O.1 BausaLz
5 - hLLp://www.augusLa.de/AC/ncro/
6 - hLLp://de.wkpeda.org/wk/Breadboard
7 - hLLp://www.nkrocohLroerkurs.de
15
JTAGICE-mkII-KIon
Zwischenbericht zur aktueIIen EntwickIung
Martin Lang <martin.Iang@rwth-aachen.de>
MarLh Lahg | JTACICE-nkII-Koh [ PFO.FCT ]
Die }TACICL-mkII-KIon Iirmvare fur den
USprog Adapler ermogIicll den Zugriff
auf MikroconlroIIer der AVR IamiIie uber
deren }TAC SclnillsleIIe. Walrend die
meislen anderen Naclbaulen der AlmeI
}TAC Adapler einen Naclbau der Hard-
vare darsleIIen, der mil der originaI AlmeI
Iirmvare belrieben vird, isl dieser Ansalz
fur den USprog nicll mogIicl.
Die enlvickeIle Iirmvare sleIIl somil
eine kompIelle LigenenlvickIung dar.
Da durcl AlmeI IedigIicl das Irogram-
mierinlerface und nicll
das Debugginginlerface
dokumenlierl isl, slulzl
sicl die LnlvickIung der
Debuggingfunklionen
auf Reverse Lngineering
und die venigen OnIine
verfugbaren Informali-
onen.
Von der Seile des IC aus
geselen, beslell das ZieI
darin, das VerlaIlen eines
}TACICL-mkII naclzu-
bauen, so dass IelzlIicl
eine enulzung mil aIIen
verbreilelen Werkzeugen
fur AVR MikroconlroIIer
mogIicl isl. Die Iirmvare
befindel sicl derzeil nocl
in einem LnlvickIungs-
zusland und vird volI
nocl einige Zeil bis zu
ilrer IerligsleIIung be-
noligen. Wir laben uns
lrolzdem enlsclieden
ein venig daruber zu
bericllen, um elvas In-
leresse an dem Irojekl
zu vecken.
Zum jelzigen Zeilpunkl verden im e-
lasladium das Irogrammieren via }TAC,
sovie grundIegende Debugfunklionen
unlerslulzl. Dies umfassl das Slarlen und
Sloppen des ConlroIIers, die Nulzung der
vier inlegrierlen Hardvarebreakpoinls
aIs Irogramm- oder DalenlaIlepunkl,
sovie das AusIesen und esclreiben von
Regislern, RAM und LLIROM. Daruber
linaus sind das AusIesen des Irogramm-
speiclers valrend des elriebs und die
Ausfulrung von einzeInen Inslruklionen
(SingIe-Slep) impIemenlierl. Die MogIicl-
keil zum esclreiben des IIasl valrend
des IrogrammabIaufs befindel sicl nocl
in der LnlvickIung. Somil sind nocl keine
Soflvarebreakpoinls mogIicl.
Die aklueIIe Tesl- und LnlvickIungs-
umgebung beslell aus einem einfaclen
LnlvickIungsboard mil einem ATMega16
ConlroIIer. Die Verbindung des 1OpoI-Sle-
ckers am USprog mil einem Mega16/32
vird in obiger Crafik gezeigl. Auf dem
IC vervende icl Linux, sovie
avrdude zum Tesl der Iro-
grammierfunklionaIilalen und
avarice zusammen mil avr-gdb
zum Tesl der Debuggingfunkli-
onen. Hierbei fungierl avarice
aIs Remole-CD, der die CD-
efelIe in das IrolokoII des
}TACICL umselzl.
In der enulzung mil avrdude
unlerscleidel sicl der }TA-
CICL-KIon kaum von anderen
bekannlen Irogrammierad-
aplern. Ls isl IedigIicl im ,-
c-Iarameler ,jlag2 aIs Iro-
grammiergeral anzugeben.
Lin eispieIaufruf von avrdude
zum IIaslen des Mega16 in
meiner Teslumgebung isl in
Code 2 zu finden. Leider sind in
der momenlanen LnlvickIungs-
plase nocl keine MogIiclkeilen
gesclaffen, die }TAC-Taklrale
durcl Iarameler zu verringern,
so dass ein fabrikneuer Mikro-
conlroIIer vorler auf andere Arl
und Weise auf einen exlernen
Quarz mil lolerer Irequenz
umgesclaIlel verden muss.
Iunklionieren soIIle es ab einer
Taklrale des Irozessors von
8MHz - der Teslaufbau nulzl
16MHz.
#include <avr/io.h>
unsigned char var;
const unsigned char __attribute__((__progmem__)) evar = 5;
void Testfunktion() {
var++;
var++;
var++;
var++;
var++;
}
int main() {
uint16_t test;
uint8_t counter = 0;


// initialisierung der LED`s
DDRD = (1<<5) | (1<<6) | (1<<7);
PORTD = (1<<5);

while (1) {
// delay
for (test = 0; test < 0xFFFF; ++test);
for (test = 0; test < 0xFFFF; ++test);
// led togglen
PORTD ^= (1<<5);
PORTD ^= (1<<6);

Testfunktion();
++counter;
}
return 0;
}
$ avrdude -c jtag2 -P usb -p m16 -U H ash:w:testprog.bin
avrdude: usb_open(): cannot read serial number ,No error
avrdude: usb_open(): cannot read product name ,No error
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.16s
avrdude: Device signature = 0x1e9403
avrdude: NOTE: FLASH memory has been specih ed, an erase cycle will be per-
formed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input h le ,testprog.bin
avrdude: input h le testprog.bin auto detected as raw binary
avrdude: writing H ash (272 bytes):
Writing | ################################################## | 100% 0.60s
avrdude: 272 bytes of H ash written
avrdude: verifying H ash memory against testprog.bin:
avrdude: load data H ash data from input h le testprog.bin:
avrdude: input h le testprog.bin auto detected as raw binary
avrdude: input h le testprog.bin contains 272 bytes
avrdude: reading on-chip H ash data:
Reading | ################################################## | 100% 0.33s
avrdude: verifying ...
avrdude: 272 bytes of H ash verih ed
avrdude: safemode: Fuses OK
avrdude done. Thank you.
16
Code 2: avrdude fIasht unter Nutzung des JTAGICE
Code 1: Programmausschnitt eines Testprogramms
' / 'OO8 .OLFN/ FMEFLLFLPFO.FCTo.NFT
[ PFO.FCT ] JTACICE-nkII-Koh | MarLh Lahg
FIashen
Soveil sleIIl das jedocl keine Uberra-
sclung dar - immerlin konnen vir die
gIeicle IunklionaIilal bei der Nulzung
der ISI SclnillsleIIe mil dem AVRISImkII-
KIon erreiclen.
Der VorleiI bei der Nulzung von }TAC
im VergIeicl zur ISI SclnillsleIIe Iiegl im
OnClipDebug-Modus der AVR-MCUs.
Um einen kIeinen AusbIick zum ZieI der
Iirmvare zu ermogIiclen, moclle icl an
17
$ ./avarice -2 --jtag usb :4242
AVaRICE version 2.7.20071102, Mar 21 2008 15:51:47
Defaulting JTAG bitrate to 1 MHz. Make sure that the target
frequency is at least 4 MHz or you will likely encounter failures
controlling the target.
JTAG conh g starting.
Found a device: JTAGICEmkII
Serial number: 00:a0:00:00:0d:3f
Reported JTAG device ID: 0x9403
Conh gured for device ID: 0x9403 atmega16
JTAG conh g complete.
Preparing the target device for On Chip Debugging.
Disabling lock bits:
LockBits -> 0xff
Enabling on-chip debugging:
Extended Fuse byte -> 0xff
High Fuse byte -> 0x19
Low Fuse byte -> 0xff
Waiting for connection on port 4242.
Connection opened by host 127.0.0.1, port 58441.
$ avr-gdb testprog.elf
GNU gdb 6.7.1
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type ,show copying
and ,show warranty for details.
This GDB was conh gured as ,--host=i686-pc-linux-gnu --target=avr...
(gdb) target remote :4242
Remote debugging using :4242
0x00000000 in __vectors ()
(gdb) break test.c:28
Breakpoint 1 at 0x126: h le test.c, line 28.
(gdb) break test.c:7
Breakpoint 2 at 0x9c: h le test.c, line 7.
(gdb) c
Continuing.
Breakpoint 1, main () at test.c:28
28 PORTD ^= (1<<5);
(gdb) c
Continuing.
Breakpoint 2, Testfunktion () at test.c:7
7 var++;
(gdb) c
Continuing.
Breakpoint 1, main () at test.c:28
28 PORTD ^= (1<<5);
(gdb) c
Continuing.
Breakpoint 2, Testfunktion () at test.c:7
7 var++;
(gdb) print var
$1 = 191 ,`
(gdb) c
Continuing.
Breakpoint 1, main () at test.c:28
28 PORTD ^= (1<<5);
(gdb) print counter
$2 = 2 ,\002`
(gdb) c
Continuing.
Breakpoint 2, Testfunktion () at test.c:7
7 var++;
(gdb) c
Continuing.
Breakpoint 1, main () at test.c:28
28 PORTD ^= (1<<5);
(gdb) print counter
$3 = 3 ,\003`
(gdb) delete breakpoints
Delete all breakpoints? (y or n) y
(gdb) c
Continuing.
Program received signal SIGINT, Interrupt.
0x000000fa in main () at test.c:25
25 for (test = 0; test < 0xFFFF; ++test);
(gdb)
MarLh Lahg | JTACICE-nkII-Koh [ PFO.FCT ]
dieser SleIIe bereils einige grundIe-
gende IunklionaIilalen vorsleIIen, die
icl erfoIgreicl leslen konnle. AIs erslen
viclligen Sclrill muss man dazu das
OCD-Iuse im MikroconlroIIer selzen.
AnsclIieend kann man mil avarice eine
Verbindung zum }TACICL aufbauen.
Hierbei ubergibl man avarice den Iorl,
auf veIclem es auf eingelende CD
Verbindungen varlen soII, durcl z. .
,:4242. Nacl dem Slarl von avarice laIl
der }TACICL das Iaufende Irogramm an
und resellel den ConlroIIer.
Debuggen
An diesem Iunkl angeIangl kann man nun
den avr-gdb slarlen und das LLI-inary
mil Debuginformalionen zum Irogramm
Iaden. Durcl Lingabe des efelIs ,largel
remole :4242 verbindel man nun den
Debugger mil avarice, vorauflin sicl
diese synclronisieren. Der Debugger zeigl
nun an, dass sicl das Irogramm am
Slarlveklor (Adresse O) befindel. Zur
Demonslralion der Anvendung
nulze icl die CeIegenleil und Iege
einen HaIlepunkl innerlaIb der Irogramm-
sclIeife sovie in der Teslfunklion fesl.
Slarlel man nun das Irogramm, so zeigl
der Debugger kurz darauf vieder an, dass
es am HaIlepunkl angelaIlen lal. Nun isl
es mogIicl, sicl die Werle der VariabIen
anzusclauen und im LinzeIsclrillmodus
durcl das Irogramm zu gelen. Lin kIeiner
Aussclnill der MogIiclkeilen isl lier abge-
druckl. SoIIle dies euer Inleresse geveckl
laben und ilr Lusl bekommen labl, die
veilere LnlvickIung zu unlerslulzen oder
venn einfacl nur Iragen sleIIen voIIl,
dann konnl ilr micl gerne konlaklieren.
Links
1. SVN Reposilory
hLLp://svh.beros.de/svhrooL/repos/us-
bprog/Lruhk/|Lagcenk2koh/
2. Iirmvare inary
hLLp://svh.beros.de/svhrooL/repos/us-
bprog/Lruhk/|Lagcenk2koh/
|Lagce2.bh
3. oolIoader fur USprog
hLLp://svh.beros.de/svhrooL/repos/us-
bprog/Lruhk/usbprog_base/
Irnware/usbprog_base.hex
4. Infos Rund um die Iirmvare
hLLp://www.enbedded-pro|ecLs.heL/
hdex.php?page_d=168
18
AbbiIdung 1: SchaItpIan
Cuee, aus der de Idee
uhd Tee der SchaLuhg
ehLhonneh wurdeh:
KIaus SchIenzig und
WoIfgang StammIer
,EIektronikbasteIn im
Wohnbereich" MLar-
verag der DDR 1984
' / 'OO8 .OLFN/ FMEFLLFLPFO.FCTo.NFT
[ PFO.FCT ] MeodegeheraLor | Juus Weber
EinIeitung
15 Ton MeIodiegenerator
JuIius Weber
Icl moclle in diesem ArlikeI eine SclaIlung
vorsleIIen, die besonders gul fur Anfanger
geeignel isl, da sie olne MicroconlroIIer
auskomml. Der MeIodiegeneralor kann
z.. aIs HauslurkIingeI eingeselzl verden,
vobei jedocl beacllel verden muss, dass
die Leilung zum ,KIingeIknopf gesclirml
sein soIIle, um mogIicle SloreinfIusse bei
Iangeren Slrecken zu vermeiden.
Wer sclon einmaI einen einfaclen
Tongeneralor oder eine Sirene gebaul
lal vei, dass eine lorbare Irequenz
erzeugl vird, die verslarkl und
durcl einen Laulsprecler aus-
gegeben vird. Die Irequenz isl
durcl einen Kondensalor oder
einen Widersland veranderbar. In
unserem IaII sind es Widerslande,
die die Irequenz beslimmen.
Lin einfacler Tongeneralor mil
einer feslen Irequenz kann Iogisclerveise
nur einen Ton viedergeben. Wir voIIen aber
15 Tone nacleinander viedergeben, aIso
brauclen vir aucl 15 Irequenzen. Um die
Irequenzen zu andern, vurde man bei einem
einfaclen Tongeneralor den Widersland oder
das Ioli ausveclseIn, veIcles die Irequenz
beslimml. Wir nelmen aIso 15 Iolis, damil
vir die Irequenzen spaler bequem fur jeden
Ton einzeIn einsleIIen
konnen. Der
Tongeneralor seIbsl muss nicll veiler
erkIarl verden. Was man vissen muss, isl,
dass er aus einem 74OO beslell und dass
eine Sinus-Irequenz erzeugl vird. Der
vervendele Tongeneralor verfugl nur uber
einen Transislor der aIs Verslarker dienl. Line
LaulslarkeregeIung isl nicll vorgeselen. Sie
isl aber fur den forlgesclrillenen Anfanger
Ieicll mil einem regeIbaren OIV mogIicl.
Da dies nun gekIarl isl, sleIIl sicl nun die
Irage, vie die Tone nacleinander abgespieIl
verden bzv. die Iolis ausgeveclseIl
verden. Iur dieses IrobIem komml
ein ZalIer zum Linsalz. Da ein
inarzalIer benulzl vird, mussen
seine Ausgange dekodierl verden.
Iur diese Aufgabe isl der 1 aus 16
Decoder 74154 angedacll. An
seine Ausgange sind die Iolis
angesclIossen. Ls isl nun mogIicl
verscliedene Tone auszugeben,
da die Widerslandsverle durcl
den ZalIer umgesclaIlel verden
und so verscliedene Irequenzen im
Tongeneralor enlslelen. Docl voler
komml die Irequenz, die der ZalIer
zalIl` Sie komml von einem Taklgeneralor,
der nacl elaligen des Taslers beginnl,
ein RecllecksignaI abzugeben und nacl
Abgeben des SlopsignaIs vom Decoder
verslumml. Wie locl die Irequenz des
Taklgeneralors isl, beslimml spaler vie
sclneII die MeIodie abgespieIl vird. Die
Cesclvindigkeil kann mil dem 1kU Ioli
eingesleIIl verden. Wer die SclaIlung
belracllel lal vird feslsleIIen, dass der
Decoder 74154 16 Ausgange lal, vir aber
nur 15 verscliedene Tone erzeugen. Wir
konnlen nalurIicl 16 Tone erzeugen, aber vir
brauclen einen Ausgang, der das SlopsignaI
selzl, veIcles den Taklgeneralor deaklivierl
und somil den Irozess des AbspieIens der
MeIodie beendel. Man viII ja sclIieIicl
nicll, dass die MeIodie unendIicl Iange
abgespieIl vird, sondern nur einmaI durcl-
Iaufl und dann verslumml. Wer melr Tone
laben moclle, kann nalurIicl den ZalIer
erveilern und einen 2 (oder melr) ZalIer
vom Typ 74193 mil dem gIeiclen Decoder
linzufugen. Der Uberlrag vom 1. 74193
vird lierzu einfacl an den Takleingang
des 2. ZalIers geIegl. Das Irinzip isl immer
dasseIbe. AIs Slromversorgung kann eine
allerie oder ein Transformalor mil slabi-
Iisierler CIeiclspannung benulzl verden.
AbsclIieend isl nocl zu sagen, dass um
reIaliv gul kIingende Tone zu erzeugen
die Croe vom Kondensalor C3 von 1-3f
zu variieren isl.
SchaItungs- und
Funktionsbeschreibung
19
Baustein Projekt Funktionsweise
LPC2148 Lpcusb
hLLp://wk.skkeh.h/
hdex.php?LLe=LPCUSB
MkrocohLroer hk. USB-SchhLLsLee
(ARM1)
USBN96O4 Usbh2nc
hLLp://usbh2nc.beros.de
USB-Brdge (ahsLeuerbar per SPI,
Parae-Bus uhd DMA)
AT9OUSB1281 AT9OUSB_Irnware
hLLp://www.ssaewsk.de/
Msc.hLn.de
MkrocohLroer hk. USB-SchhLLsLee
(AVR)
ATnega8 AVR-USB
hLLp://www.obdev.aL/producLs/
avrusb/hdex-de.hLn
USB-SLack baserehd auI zwe IC-PorLs
des ATMega8
BehedkL SauLer | USB n prakLscheh EhsaLz [ PFO.FCT ]
EinIeitung
USB im praktischen Einsatz
Benedikt Sauter <sauter@ixbat.de>
In der erslen Augsgabe des Lmbedded-
Irojecls }ournaIs (Ausgabe 1/2OO8) gab
es bereils einen US-Crundkurs.
Darauflin fraglen einige Leser nacl,
ob es vieIIeicll im naclslen Hefl
einen ArlikeI geben konnle, in dem
konkrel gezeigl vird, vie man sicl
eine US-SclnillsleIIe programmierl.
Aus diesem Crund moclle icl lier
eine kIeine Linfulrung in US-Slacks fur
MicroconlroIIer geben.
Was ist ein USB-Stack?
Iur die Kommunikalion zvisclen Compuler
und US-Ceral mussen diverse Zuslande,
Anfragen und Anlvorlen vervaIlel ver-
den. Da die US-Kommunikalion vesenl-
Iicl aufvandiger, aIs beispieIsveise eine
einfacle UART Verbindung isl, verden
daler auf der Treiberseile im Compuler
und in der Iirmvare auf einem US-Ceral
vesenlIicl melr VervaIlungsaufgaben
erIedigl verden mussen. Im Compuler isl
dafur das US-Subsyslem zuslandig und
im US-Ceral ein fur die US-SclnillsleIIe
passender Slack.
Walrend der Lnumeralion mussen
Anfragen im US-Ceral abgearbeilel und
Dalenslrukluren fur die IIusskonlroIIe
sovie Dalenuberlragung vervaIlel verden.
}edes US-Ceral muss auf diese Weise die
Aufgaben eines nacl der US-Spezifikalion
definierlen Cerales ordnungsgema erfuI-
Ien. Ablangig vom eingeselzlen auslein
Iieferl dieser melr oder veniger die US-
InleIIigenz mil.
Meislens isl es jedocl so, dass die US-
ausleine nur die unlersle IrolokoIIebene
von US bearbeilen konnen. AIIes andere
muss in einer SoflvarebibIiollek von
einem MikroconlroIIer erIedigl verden.
Diese SoflvarebibIiollek nennl man im
AIIgemeinen US-Slack.
VorsteIIung der
einzeInen Stacks
Zuersl muss ein passender auslein aus-
gevalIl verden, der die US-SclnillsleIIe
anbielel. Im WesenlIiclen gibl es lier zvei
grundsalzIicle Cesclvindigkeilsunlerscliede:
Der auslein kann mil Lov- (1,5Mbil/s)
und IuIIspeed (12 Mbil/s) Cesclvindigkeil
arbeilen, oder er kann sogar zusalzIicl
Higlspeed (48OMbil/s) Dalen ververlen.
Die zuIelzl genannlen sind jedocl fur
einfacle MikroconlroIIersysleme veniger
inleressanl und eler seIlen verfugbar, da bei
48O Mbil/s jeder einfacle MikroconlroIIer
keine Clance lalle, mil dem Verarbeilen
der Dalen linlerler zu kommen.
Isl der auslein ausgevalIl, vird vie bereils
ervalnl, ein passender US-Slack beno-
ligl. Ofl Iiefern HersleIIer seIbsl passende
ibIiolleken. Iur Open-Source Irojekle
faIIen soIcle jedocl aus, da sicl die Lizenzen
meislens nicll sinnvoII mil freien Lizenzen
verbinden Iassen. An dieser SleIIe isl nocl
kurz zu ervalnen, dass es daruber linaus
ein paar Iirmen gibl, die aussclIieIicl
von der LnlvickIung und Vermarklung
von US-Slacks fur MikroconlroIIer Ieben.
Im veileren VerIauf verden vir aber nur
offene und freie Slacks belracllen.
Nun verden Slacks, die icl am inleressan-
leslen finde (siele TabeIIe 1), vorgesleIIl.
Die Slacks soIIen nicll direkl mileinander
vergIiclen verden, sondern es soIIen
Slarken und Sclvaclen gezeigl verden.
Um dennocl ein einleilIicles Lrgebnis
zu erlaIlen, verden zu jedem Slack die
foIgenden Iunkle belracllel:
enoligle Daleien (bzv. Daleislruklur)
Konfiguralion eines eigenen Cerales
Linbindung in eine beslelende Soflvare
und Iorlierbarkeil auf andere Sysleme
Wie bekommt man USB in das eigene Projekt?
FMEFLLFLPFO.FCTo.NFT .OLFN/ ' / 'OO8
20
static const U8 abDescriptors [] =
{
// Device descriptor
0x12,
DESC_DEVICE,
LE_WORD(0x0200), // bcdUSB
0x00, // bDeviceClass
0x00, // bDeviceSubClass
0x00, // bDeviceProtocol
MAX_PACKET_SIZE0, // bMaxPacketSize
LE_WORD(0xFFFF), // idVendor
LE_WORD(0x0005), // idProduct
LE_WORD(0x0100), // bcdDevice
0x01, // iManufacturer
0x02, // iProduct
0x03, // iSerialNumber
0x01, // bNumConh gurations

// Conh guration descriptor
0x09,
DESC_CONFIGURATION,
LE_WORD(31), // wTotalLength
0x02, // bNumInterfaces
0x01, // bConh gurationValue
0x00, // iConh guration
0xC0, // bmAttributes
0x32, // bMaxPower

// Data class interface descriptor

0x09,
DESC_INTERFACE,
0x01, // bInterfaceNumber
0x00, // bAlternateSetting
0x02, // bNumEndPoints
0x0A, // bInterfaceClass = data
0x00, // bInterfaceSubClass
0x00, // bInterfaceProtocol
0x00, // iInterface

// Data EP OUT

0x07,
DESC_ENDPOINT,
BULK_OUT_EP, // bEndpointAddress
0x02, // bmAttributes = bulk
LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize
0x00, // bInterval

// Data EP in

0x07,
DESC_ENDPOINT,
BULK_IN_EP, // bEndpointAddress
0x02, // bmAttributes = bulk
LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize
0x00, // bInterval

// String descriptors

0x04,
DESC_STRING,
LE_WORD(0x0409),
0x10,
DESC_STRING,
,O`, 0, ,t`, 0, ,o`, 0, , ,, 0, ,U`, 0, ,S`, 0, ,B`, 0,
0x16,
DESC_STRING,
,U`, 0, ,S`, 0, ,B`, 0,` ,,0, ,G`, 0, ,e`, 0, ,r`, 0, ,a`, 0, ,e`, 0, ,t`, 0
0x12,
DESC_STRING,
,2`, 0, ,0`, 0, ,0`, 0, ,8`, 0, ,0`, 0, ,8`, 0, ,0`, 0, ,6`, 0,
// Terminating zero
0 };
Datei Beschreibung
Lype.h DaLehLypeh
usbcohLro.c TrahsIer Iur EhdpuhkL O /
CeraLe Erkehhuhg, eLc.
usbhL.c IhLaseruhg USB-Hard-
ware uhd -SLack
usbhw_pc.c /
usbhw_pc.h
Hardware Layer
usbsLrucL.h DeIhLoh DaLehLypeh Iur
USB-SLrukLureh
pc214x.h Header-DaLe Iur LPC2148
usbap.h USB-API Iur Ahwehduhg
usbdebug.h Debugausgabeh Makro
usbsLdreq.c SLahdardahIrageh aus
KapLe 9 der USB-Spez-
IkaLoh
sLarLup.c /
sLarLup.h
IhLaseruhg Prozessor,
PLL, IhLerrupLs
[ PFO.FCT ] USB n prakLscheh EhsaLz | BehedkL SauLer
Inlernelseile: hLLp://wk.skkeh.h/
hdex.php?LLe=LPCUSB
Olne parleiiscl zu verden, kann icl gIeicl
sagen, dass dieser Slack am meislen ausge-
reifl und am benulzerfreundIiclslen isl. Lr
isl selr sauber und ubersicllIicl program-
mierl vorden, zudem gibl es eine Menge
ferliger eispieIe im QueIIlexlarcliv fur
verscliedensle US-Cerale (virlueIIe serieIIe
SclnillsleIIe, Massenspeicler-Ceral, HID-
Ceral, elc.). Der Slack kann genauso gul fur
eine ,slandaIone-Anvendung sovie aIs
US-Subsyslem in einem MikroconlroIIer
elriebssyslem (z.. IreeRTOS & Co.)
vervendel verden.
Bent|gte Date|en (bzw. Date|struktur):
Die benoliglen Daleien konnen einfacl in
den Uberselzungsprozess inlegrierl ver-
den. Die Slruklur isl selr einfacl gelaIlen
und daler mussen Ablangigkeilen kaum
beacllel verden. Dadurcl isl eine selr
Ieiclle Inlegralion in ein beslelendes
Irojekl mogIicl. In der foIgenden TabeIIe
sind aIIe Daleien, veIcle fur den elrieb
nolvendig sind, aufgeIislel und kurz
besclrieben.
LPC2148 - Der Knig unter den USB-Stacks: Ipcusb
' / 'OO8 .OLFN/ FMEFLLFLPFO.FCTo.NFT
usbRegisterHandlers ();
usbRegisterDescriptors (abDescriptors);
usbHardwareRegisterEPIntHandler (BULK_IN_EP, usbcomBulkIn); //Callback fr ausgehende Daten
usbHardwareRegisterEPIntHandler (BULK_OUT_EP, usbcomBulkOut); //Callback fr eingehende Daten
usbHardwareNakIntEnable (INACK_BI);
usbSetupInterruptHandler ();
usbHardwareConnect (TRUE);
static int usbcomBulkOut (U8 bEP, U8 bEPStatus __attribute__ ((unused)))
{
int i;
int iLen;
portBASE_TYPE xTaskWokenByPost = pdFALSE;
iLen = usbHardwareEndpointRead (bEP, abBulkBuf, sizeof (abBulkBuf));
for (i = 0; i < iLen; i++)
xTaskWokenByPost = xQueueSendFromISR (xUSBRXQueue, &abBulkBuf [i], xTaskWokenBy-
Post);
return xTaskWokenByPost;
}
BehedkL SauLer | USB n prakLscheh EhsaLz [ PFO.FCT ]
Konf|gurat|on des e|genen Certes:
Die Deskriploren verden uber einfacle
Arrays angeIegl. Das isl bei der Definilon
von aufvandigeren US-SclnillsleIIen von
VorleiI, jedocl bedeulel dies immer,
dass man sicl elvas in die US-
Spezifikalion einarbeilen muss, um
die Dalenslrukluren (siele Lisling
abDescriplor) ersleIIen zu konnen. Im
erslen Absalz des foIgenden Lislings verden
die geralespezifisclen Dalenslrukluren und
die fur die inlernen US-Dalenslrukluren
vicllige Informalionen und Verknupfungen
angegeben. Man nennl diesen ereicl aucl
Ceraledeskriplor. Direkl im AnsclIuss
findel man den Konfiguralionsdeskriplor,
veIcler im WesenlIiclen die Ligensclaflen
bzgI. der Slromversorgung enllaIl. Die
virkIicle Kommunikalion gescliell dann
vie bereils im US-Crundkurs ausfulrIicl
besclrieben uber die Inlerfaces mil ilren
,LndpunklbundeIn. Lin Inlerface besclreibl
die AnzalI der zugelorigen Lndpunkle.
Und ein Lndpunkl besclreibl, mil veIclem
Uberlragungsverfalren (Inlerrupl, uIk oder
Isoclron) uberlragen vird, und vie vieIe
Dalen aufgenommen verden konnen. Zu
guler Lelzl sind nocl die Slringdeskriploren
angegeben, veIcle dem US-Ceral ein
Namen im elriebssyslem geben konnen. So
kann jedes elriebssyslem - olne das Ceral
zu kennen - dem enulzer sagen, veIcles
Ceral angesleckl vorden isl.
Isl die SclnillsleIIe uber die ,abDescriplor
Dalenslruklur besclrieben vorden, mussen
nur nocl die passenden Iunklionsaufrufe
fur die IniliaIisierung durclgefulrl
verden.
E|nb|ndung |n e|ne
bestehende Softwarearch|tektur:
Wenn Dalen vom IC empfangen verden,
vird aulomaliscl die regislrierle Iunklion
aufgerufen. Hier vurde usbcomuIkOul
definierl. Inlern in dieser Iunklion mussen
nur die Dalen aus den US-IIIO-Speicler
ausgeIesen verden.
22
static int usbcomBulkIn (U8 bEP, U8 bEPStatus __attribute__ ((unused)))
{
int i;
portBASE_TYPE xTaskWoken = pdFALSE;
for (i = 0; i < MAX_PACKET_SIZE; i++)
if (!xQueueReceiveFromISR (xUSBTXQueue, &abBulkBuf [i], &xTaskWoken))
break;
if (i > 0)
usbHardwareEndpointWrite (bEP, abBulkBuf, i);
return xTaskWoken;
}
Datei Beschreibung
usb11spec.h USB DaLehsLrukLureh
usbh96Oxreg.h RegsLer des USBN96O4
usbh96Ox.c /
usbh96Ox.h
SLeuerIuhkLoheh Iur
USBN96O4
usbhap.c /
usbhap.h
USB ZugrIIs-API Iur
egehe Frnware
usbh2nc.c /
usbh2nc.h
Hardware-ZugrII auI
USBN96O4
USBNDeviceVendorID(0x1234);
USBNDeviceProductID(0x9876);
conf = USBNAddConh guration();
USBNConh gurationName(,xyz);
USBNConh gurationPower(50); // Power in mA
USBNDeviceManufacture(,My little h rm);
USBNDeviceProduct(,My device);
USBNSerialNumber(,rev 1.0);
interf = USBNAddInterface(conf,0);w
USBNInterfaceName(conf,interf,usblp);
USBNAddInEndpoint(conf,interf,1,1,BULK,64,&TransferReady);
USBNAddOutEndpoint(conf,interf,1,2,BULK,64,&PrintOnLCD);
[ PFO.FCT ] USB n prakLscheh EhsaLz | BehedkL SauLer
Iur ausgelende Dalen siell der Zugriff
alnIicl aus. }edesmaI, venn Dalen vom
IC aus empfangen verden konnen, vird
die foIgende Iunklion auf Crund der
Regislrierung aIs CaIIback aufgerufen.
Hierbei verden die zu versendenden
Dalen aus inlernen Dalenslrukluren in die
US-IIIO-Speicler uberlragen.
Port|erbarke|t:
Dieser Slack vurde fur den MikroconlroIIer
LIC2148 gesclrieben. Line Iorlierung auf
einen anderen MikroconlroIIer oder eine
andere US-SclnillsleIIe isl volI nicll an
einem Naclmillag erIedigl.
Inlernelseile: hLLp://usbh2nc.beros.de/
Bent|gte Date|en (bzw. Date|struktur):
hLLp://www.ssaewsk.de/
AT9OUSB_Irnware.hLn.de
Dieser auslein isl ideaI fur kIeine 8- und 32-il
Irozessoren olne eigene US-SclnillsleIIe.
Angesleuerl verden kann er uber eine
IaraIIeIe 8-il SclnillsleIIe per DMA oder
sogar uber SII. VieI auleiIe braucll die
SclaIlung Rund um den USN96O4 nicll.
Lin veilerer IIuspunkl isl auerdem, dass
es den auslein aIs SO Celause (Absland
ca. 1 mm) gibl, veIcles die Lolarbeilen
drasliscl vereinfacll. Iur den USN96O4
gibl es vieIe ibIiolleken im Inlernel. Line
davon isl USN2MC. Hinler der ibIiollek
sleckl die Idee, US ganz einfacl ,inlegrier-
bar in eigene Anvendungen zu maclen.
Von USN2MC gibl es zvei Versionen.
LinmaI die sogenannle ,main-Version,
veIcle ein selr bequemes Konfigurieren
des US-Cerals erIaubl, jedocl mil dem
Speicler enlspreclend versclvenderiscl
umgell. Und die Version ,liny. Hierbei
kann einiges an Speicler- und CodepIalz
eingesparl verden, dafur muss man sicl
aber inlensiver mil US auskennen, um ein
Ceral erfoIgreicl definieren zu konnen.
Leider isl seil ca. einem }alr der auslein aIs
,nicll melr LmpfolIen fur neue SclaIlungen
markierl. Der US96O4 auslein vird
aber dennocl produzierl. Ls vurde volI
nur die LnlvickIungsableiIung fur diesen
ConlroIIer aufgeIosl. Da er aber nocl selr
gul verfugbar isl (ebenso bei ReicleIl &
Co.) isl er meiner Meinung nacl keiner
SclaIlung zu sclade.
Konf|gurat|on des e|genen Certes:
In der ,main-Version verden fur die US-
ibIiollek ca. 6K Irogrammspeicler und
5OO yle Arbeilsspeicler benoligl.
Angabe des HersleIIer- und Irodukl-ID:
Definilion der Namen, mil veIclen sicl das
Ceral am elriebssyslem anmeIden soII:
Hinzufugen einer Konfiguralion:
Hinzufulen eines Inlerfaces:
Und zuIelzl - Definilon der Lndpunkle:
Der Ielzle Iarameler gibl den CaIIback an,
veIcler aufgerufen vird, venn Dalen vom
IC empfangen bzv. versendel verden.
E|nb|ndung |n e|ne bestehende
Softwarearch|tektur:
Die Inlegralion in eine beslelende
Soflvarearclileklur kann enlveder per
Inlerrupl oder IoIIingbelrieb gesclelen.
Isl die InlerruplIeilung des USN96O4 mil
dem ZieIprozessor, auf dem der Slack Iaufl,
verbunden, so kann in der Inlerruplrouline
einfacl die Iunklion USNInlerrupl() auf-
gerufen verden. AIIes veilere vird dann
vom Slack erIedigl. Isl keine InlerruplIeilung
verbunden, kann die Iunklion ebenso in
einer LndIossclIeife regeImaig aufgerufen
verden.
Port|erbarke|t:
Der US-Slack USN2MC isl in reinem
C gesclrieben. Da die Anbindung enl-
veder uber einfacle CIIO-Iorls oder SII
erfoIgl, kann US an eine groe AnzalI von
MikroconlroIIern angebracll verden.
' / 'OO8 .OLFN/ FMEFLLFLPFO.FCTo.NFT
USBN9604 - Die Ieider abgekndigte universeIIe USB-Bridge
23
Abb. 1:
SchaItpIan
Low-Speed
USB
FMEFLLFLPFO.FCTo.NFT .OLFN/ ' / 'OO8
BehedkL SauLer | USB n prakLscheh EhsaLz [ PFO.FCT ]
AT90USB1287 - Die Zukunft fr AVR-Fans
Inlernelseile: hLLp://www.ssaewsk.de/
AT9OUSB_Irnware.hLn.de
Dieser Clip gelorl zu einer kIeinen neuen
IroduklfamiIie von AlmeI. Hier isl US
direkl aIs Linleil in den Irozessor inlegrierl.
Zvar bielel AlmeI ebenso C-eispieIe fur
den Zugriff auf US an, aber lier felIl die
freie Lizenz. Die AT9OUS Iirmvare von
Slefan SaIevski lingegen isl dank CIL
frei fur jeden verfugbar und einselzbar.
Im Cesamlen benoligl die US-Logik ca.
13O K IIalz im IIaslspeicler. Auf der
Inlernelseile findel man ein ferliges funkli-
onsfaliges eispieI saml eigener SclaIlung
und Teslprogramm fur den IC.
AVR-USB - USB fr Arme {SoftwareimpIentierung)
Inlernelseile: hLLp://
www.obdev.aL/
producLs/avrusb/
hdex-de.hLn
An dieser SleIIe isl foIgende Losung ebenfaIIs
nocl zu ervalnen. Ls vird ein US-Lov-
Speed Ceral mil einem einfaclen AVR erzeugl.
Dabei verden die Leilungen von US direkl
ausgeverlel, vas aucl erkIarl, vieso eine
maximaIe Uberlragungsgesclvindigkeil
von 1,5 Mbil/s mogIicl isl. In AbbiIdung
1 siell man, vie einfacl die SclaIlung isl.
Iur ersle US Tesls isl dies siclerIicl eine
feine SclaIlung. Ob man dieses Konslrukl
jedocl fur viclligere Saclen einselzen
soIIle, muss jeder seIbsl enlscleiden.
Dies var nur ein selr kIeiner UberbIick uber
mogIicle freie US-SclnillsleIIen. Dennocl
loffe icl, dass der eine oder andere eine
nulzIicle Informalion daraus zielen kann.
Fazit Links
1. LICUS1 hLLp://wk.skkeh.h/hdex.php?LLe=LPCUSB
2. USN2MC hLLp://usbh2nc.beros.de/
3. AT9OUS1278 hLLp://www.ssaewsk.de/AT9OUSB_Irnware.hLn.de
4 AVR-US hLLp://www.obdev.aL/producLs/avrusb/hdex-de.hLn
24
Abb.1:Schematischer Aufbau eines
anaIog resistiven Touchscreens
Abb.2: RechenbeispieI:
Abb.3
die schneII
zusammen-
geschusterte
SchaItung
Abb.2: RechenbeispieI:
[ PFO.FCT ] Toucnscreensanseuerun i /\F | Micnae Harann
Motivation
Touclscreens verden sclon seil vieIen
}alren fur die Sleuerung von Ceralen vie
Karlen- oder SpieIeaulomalen vervendel.
Aucl in IDAs und TabIel-ICs verden sie
seil geraumer Zeil eingeselzl. Ilren groen
Durclbrucl verdanken sie aber AppIes
iIod Toucl und dem iIlone.
Touclscreens bielen im VergIeicl zu konven-
lioneIIen Lingabegeralen deulIicle VorleiIe.
Iur den enulzer isl die Sleuerung per
Iinger inluiliver und einfacler aIs per
Taslen. Aber aucl der LnlvickIer
profilierl von der IIexibiIilal
eines Touclscreens. WiII
er nacllragIicl die
edienung des
Cerals veran-
dern, so muss
er nur die Soflvare
anpassen. Line Anpas-
sung der Hardvare,
vie sie z.. beim
Hinzufugen einer
veileren Tasle nol-
vendig vare, enlfaIIl.
Zudem sind Touclscreens
pIalzsparend, selr slabiI und
besilzen je nacl QuaIilal eine Le-
bensdauer von bis zu drei MiIIionen
erulrungen.
Ansteuerung Touchscreen
mit einem AVR
MichaeI Hartmann <michaeI@speicherIeck.de>
Prinzip
Cunslige Touclscreens sind in der RegeI anaIog
resislive Touclscreens mil 4-Wire-Syslem.
Diese Touclscreens beslelen aus zvei
gegenuberIiegenden, Ieilfaligen Sclicllen
zvisclen denen sicl vieIe kIeine Abslands-
laIler, so genannle Spacer-Dols befinden.
Durcl erulrung enlslell beim
Druckpunkl ein Konlakl zvisclen den
beiden Sclicllen.
Um eine Koordinale des Druckpunkles
zu bereclnen, verden an den beiden
Lnden einer Sclicll zvei (un-
lerscliedIicle) bekannle
Spannungen angeIegl
und an einem
beIiebigen
Lnde der
anderen
S c l i c l l
loclolmig
die resuI-
lierende
Spannung
gemessen.
Aus der gemes-
senen Spannung Iassl
sicl das VerlaIlnis der
Widerslande und damil die Iosi-
lion der Koordinale bereclnen (siele
AbbiIdung 2 ReclenbeispieI).
LegL nah ah ehe Spahhuhg
voh uhd ah ehe
Spahhuhg voh ah, so ergbL sch Iur
das VerhaLhs der WdersLahde:
MssL nah huh Iur eheh WerL
voh ,ergbL sch daraus:
Das VerhaLhs gbL de PosLoh h
[-RchLuhg ah. Be der Messuhg
Iur de PosLoh h \-RchLuhg wrd
ah uhd Spahhuhgeh
ahgeegL uhd ah oder
hochohng genesseh.
Durch das VerhaLhs der WdersLahde
ehLsLehL ah |eden PuhkL ehe uhLer-
schedche Spahhuhg, de nah zur
Berechhuhg der [- uhd \-KoordhaLe
huLzeh kahh.
Aufbau der SchaItung
Zur Sleuerung vird ein Almega32 vervendel.
Die vier KabeI des Touclscreens verden
mil den Iins ADCO bis ADC3 verbunden.
Dabei sind die IINs ADCO und ADC1 mil
der Sclicll fur die x-Koordinale, ADC2
und ADC3 mil der Sclicll fur die y-Koor-
dinale verbunden. Im DalenbIall soIIlen
sicl fur die vier Dralle des Touclscreens
enlspreclende ezeiclnungen vie YU
(Y-Koordinale, oben), YD (Y-Koordinale,
unlen), XL (X-Koordinale, Iinks) und XR
(X-Koordinale, reclls) finden.
Cemessen vird an ADCO und ADC2. Um
einen definierlen Werl zu messen, venn
keine erulrung vorIiegl und daler keine
Spannung anIiegl, mussen diese beiden
Iins nocl loclolmig mil Masse
verbunden verden. Lin Wider-
sland von je
soIIle ausreiclen,
um in diesem IaII die
Spannung auf
zu zielen.
[...]
while(1)
{
double Ux, Uy;
/* x */
DDRA |= (1 << PA1); // PA0: +5V
DDRA |= (1 << PA0); // PA1: 0V
PORTA |= (1 << PA0);
_delay_ms(16);
// adc(PORT) liefert gemessene Spannung in V
Uy = adc(PA2);
PORTA &= ~(1 << PA0); // PA0 und
DDRA &= ~(1 << PA0); // PA1 wieder
DDRA &= ~(1 << PA1); // Eingang
/* y */
DDRA |= (1 << PA3); // PA2: +5V
DDRA |= (1 << PA2); // PA3: 0V
PORTA |= (1 << PA2);
_delay_ms(16);
Ux = adc(PA0);
PORTA &= ~(1 << PA2); // PA1 und
DDRA &= ~(1 << PA2); // PA2 wieder
DDRA &= ~(1 << PA3); // Eingang
_delay_ms(500);
}
[...]
#deh ne HEIGHT 160
#deh ne WIDTH 220
#deh ne Uy1 0.78
#deh ne Uy2 4.15
#deh ne Ux1 0.27
#deh ne Ux2 4.71
while(1)
{
double Ux, Uy;
int x,y;
// Ux und Uy messen
[...]
x = (Ux-Ux1)/(Ux2-Ux1) * WIDTH ;
y = (Uy-Uy1)/(Uy2-Uy1) * HEIGHT;
_delay_ms(500);
}
Die Spannung ist direkt proportionaIo
zum Abstand des Druckpunktes.
Mit ein bisschen Rechnen kommt man
dann auch auf die richtige Koordinate.
QueIItext 2:
QueIItext 1:
Abb.4
SchaItpIan eines
Touchscreencont-
roIIers mit einem
Atmega32.
25
Micnae Harann | Toucnscreensanseuerun i /\F [ PFO.FCT ]
Ier Soflvare Iegl man nun an IDO und
ID1 Spannung an und missl an ID2.
Lrveilerl man QueIIlexl 1 nocl um eine
Debugging-Ausgabe und lragl die beiden
Spannungen in Ablangigkeil von der
Iosilion an, erlaIl man fur die x- und
y-Koordinale je einen Crapl (z.. Crapl
1 fur die x-Koordinale).
Wie sclon aus der eispieIreclnung, kann
man aus den Craplen erkennen, dass die
Spannung Iinear zum Absland zunimml.
Aus den Craplen erkennl man nun aucl
die Lxlremverle, demnacl die maximaIe
und minimaIe Spannung, die man fur einen
x-Werl (Iinker und recller Rand, Ux1 und
Ux2) und y-Werl (oberer und unlerer Rand,
Uy1 und Uy2) bekomml.
Der Quolienl aus dem Unlersclied zvisclen
der gemessenen Spannung und der Mini-
maIspannung, und der Differenz zvisclen
MaximaIspannung und MinimaIspannung,
enlspricll dem VerlaIlnis vom Anfang zum
Druckpunkl (a) und vom Anfang zum Lnde
des Touclpads (b). Dalinler verbirgl sicl der
zveile SlralIensalz. MuIlipIizierl mil der
Hole bzv. reile des Touclpads ergibl sicl
daraus die enlspreclende Koordinale.
Ansteuerung per Software
AusbIick
Die MogIiclkeilen sind lier nalurIicl Iangsl
nicll ausgesclopfl. Zum einen Iassl sicl die
Soflvare von IoIIing nocl auf Inlerrupls
umsleIIen, zum anderen kann man aufbauend
auf der Lrkennung einfacler Taslendrucke
eine ibIiollek mil Iunklionen fur ullons,
ScroIIbars, Drag `n Drop ... aufbauen. Den
VorsleIIungen sind kaum Crenzen geselzl,
nur melrere erulrungen, vie sie AppIes
iIlone verarbeilen kann, unlerslulzen anaIog
resislive Touclscreens Ieider nicll.
Damil durfle dem eigenen asleIvergnugen
niclls melr im Wege slelen.
VieI Spa!
26
AbbiIdung 1: CapBoard
AbbiIdung 2: Sensor
Am IlysikaIiscl-Teclnisclen Inslilul
Sl.Ielersburg sleIIle der russiscle Ilysik-
professor Leon Tleremin im }alre 192O
ein merkvurdiges Musikinslrumenl vor
- einen Kaslen aus dem zvei Anlennen
raglen. Indem er seine Hande diesen bei-
den Anlennen nalerle, konnle er Hole
und Laulslarke des erzeuglen Tons
andern. AIs Musikinslrumenl fulrl
das Tleremin inzvisclen ein (selr
IangIebiges) Sclallendasein. Das
zugrunde Iiegende Irinzip findel
sicl aber vieIfacl in leuligen
kapaziliven Sensoren vieder.
Lin kapaziliver Sensor missl
die Kapazilal zvisclen
einer Anlenne und seiner
UmveIl. }e naler man ein
geerdeles, Ieilendes Objekl
an die Anlenne bringl, deslo
loler vird die Kapazilal des
so gebiIdelen Kondensalors.
Auf diese Weise kann man den
Absland zvisclen Sensor und
Objekl messen. Dies funklionierl
mil melaIIenen Objeklen, IIussig-
keilen und vieIen anderen Maleri-
aIien. Aucl mensclIicle Korper oder
Hande konnen mil kapaziliven Sensoren
gelrackl verden.
ObvolI das zugrunde Iiegende Irinzip selr
einfacl isl, sind kaum brauclbare Sensoren
verfugbar. Wenn nur erulrung erkannl
verden soII, sind evenlueII die QIrox-
Sensoren nulzIicl. Sensoren fur groere
Abslande sind aber nicll verfugbar bzv.
laben eine selr niedrige LmpfindIiclkeil.
Aus diesem Crund labe icl im Ralmen
meiner DipIomarbeil ein TooIkil enlvickeIl,
das es ermogIicll, einfacl und sclneII kapa-
zilive Sensoren in eigene Irololypen zu
inlegrieren. Dieses TooIkil - sinnigerveise
CapTooIKil genannl - isl Open-Source und
umfassl Hardvare, Iirmvare, Soflvare und
Dokumenlalion. Icl enlvickIe es inzvisclen
seil zvei }alren veiler und vervende es
fur eigene Irojekle.
Kernsluck des CapTooIKils isl das Cap-
oard (siele AbbiIdung 1). Dieses dienl
aIs ConlroIIer fur bis zu 8 Sensoren. Lin
IIC 18f255O sleuerl die Sensoren (siele
AbbiIdung 2) an und Iiesl deren Werle
(freuqenz-enkodierl). Die Werle verden
im IIC gefiIlerl und aufbereilel. Auerdem
sleuerl er aucl die 8 frei vervendbaren
I/O-Iins an. Die Kommunikalion mil dem
Hosl-IC erfoIgl uber RS-232 (TTL) und ein
KIarlexl-IrolokoII. Die Sensoren basieren
auf dem ,Tleremin Vision II-Design von
Terry Irilz |1j. Kernsluck des Sensors isl
ein LMC555 Timer-IC. Dessen Irequenz
langl ab von der Kapazilal, die die Anlenne
Iieferl. Der LMC555 vurde gevalIl, veiI
die ubrigen 555-Varianlen nur bis 5OO kHz
gelen. }e loler aber die
Irequenz, deslo loler die
AufIosung. Sie bevegl
sicl (je nacl Absland)
zvisclen einigen 1OO
kHz und 1,8 MHz. Die
Irequenz vird durcl einen
Hardvare-Counler im IIC
gemessen. Lin genereIIes
IrobIem von kapaziliven
Sensoren isl ilre LmpfindIiclkeil gegenuber
Slorungen. Kapazilive Sensoren sind slark
lemperalurablangig. Lin groeres IrobIem
sind aber unervunsclle Kapazilalen, ler-
vorgerufen z. . durcl vorbeigelende Ier-
sonen oder groe melaIIene Objekle. Hier
isl eine Absclirmung des Sensors und der
Anlenne vicllig. Diese Absclirmung muss
aber immer auf dem gIeiclen Spannungs-
niveau gelaIlen verden vie die Anlenne,
olne dass diese eIeklriscl mileinander ver-
bunden sind. Zu diesem Zveck vervendel
man einen SpannungsfoIger |2j. Da die
Irequenz des SignaIs reIaliv locl isl, muss
aucl der Operalionsverslarker, der den
SpannungsfoIger impIemenlierl, eine
lole Irequenz durclIeilen. Um die
Dampfung des SignaIs mogIiclsl
niedrig zu laIlen vurde ein
MAX4453 vervendel. Dieser
lal sicl in umfangreiclen Tesls
bevalrl. Liner der beiden inle-
grierlen Operalionsverslarker
lreibl die Absclirmung der
Anlenne. Der andere Opera-
lionsverslarker sclirml die
SignaIIeilung ab.
WeIcle Reiclveile lal nun so
ein Sensor` Dies isl sclver zu
sagen, da diese von der Anlen-
nengroe, UmveIlbedingungen und Mess-
dauer ablangl. Slandardmaig missl das
CapTooIKil die Irequenz jedes Sensors 15
ms Iang. Mil einer Anlenne aus WeibIecl
von 4Ox4O mm Iassen sicl dann evegun-
gen im MiIIimeler-ereicl auf ca. 2O cm
Lnlfernung sicler erkennen. Aber aucl
ganz olne zusalzIicle Anlenne Iassen sicl
evegungen im Absland von venigen
Zenlimelern erkennen. Das Lolpad auf
dem Sensor reicll lierfur aIs Anlenne aus.
Irazisere Ricllverle fur die Reiclveile der
Sensoren verden in Kurze auf der CapTooI-
Kil-Webseile verfugbar sein.
Die 8 Sensor-Iorls des Capoard sind aIs
US-A-uclsen ausgefulrl. VCC und CND
sind dabei vie bei US beIegl. Die anderen
beiden Konlakle dienen dazu, den Sensor
zu aklivieren, bzv. um seine Messverle zu
empfangen. Iur die meislen Anvendungen
empfielIl es sicl, ein IIaclbandkabeI an den
Sensor zu Iolen und an dessen anderen Lnde
einen US-A-Slecker anzubringen. Dadurcl
Iassl sicl der Sensor fIexibeI posilionieren.
AIlernaliv kann man aucl einfacl ein US-
VerIangerungskabeI vervenden.
CapSense-Anwendungen
Prototyping von CapSense-Anwendungen mit dem CapTooIKit
RaphaeI Wimmer <raphaeI.wimmer@ifi.Imu.de >
Kapazitive Sensoren
[ PFO.FCT ] Proo,oin von CapSehse-Ahwehduhgeh nL CapTooKL | Raphae Wnner
' / 'OO8 .OLFN/ FMEFLLFLPFO.FCTo.NFT
27
#!/usr/bin/python
import capboard
cb = capboard.CapBoard()
a = capboard.Analyzer(cb)
AbbiIdung 3: AnaIyzer zeigt grafisch die Sensorwerte der einzeInen KanIe
+ 0 (aktiviere Sensor 0)
REPLY,0,+,OK,80349
- 1 (deaktiviere Sensor 1)
REPLY,0,-,OK,82037
F 3 (Filter 3, Lowpass)
REPLY,0,F,OK,84766
T 20 (setze Messdauer auf 20ms pro Sen-
sor)
REPLY,0,T,OK,85928
A (starte Messung)
REPLY,0,A,OK,0
VALUE,0,1,59705,8
VALUE,0,1,59702,23
VALUE,0,1,59701,36
VALUE,0,1,59699,49
...
Z (stoppe Messung)
REPLY,0,Z,OK,2269
S (speichere Einstellungen im EEPROM)
REPLY,0,S,OK,22072
! (Reset)
<device_id>
<channel>
<value>
<timestamp>
Raphae Wnner | Proo,oin von CapSehse-Ahwehduhgeh nL CapTooKL [ PFO.FCT ]
Einfacher
Funktionstest
Zum Teslen des Capoard kann man vie
foIgl vorgelen:
Linen oder melrere Sensoren in
beIiebige Iorls slecken.
Das TTL232R-US-SerieII-KabeI an
die abgevinkeIle uclsenIeisle des
Capoard slecken - sclvarzer Drall
(CND) Iinks.
Den US-Slecker in den Reclner
slecken, CegebenenfaIIs die
ITDI-Treiber inslaIIieren.
Nun kann man z.. die Iyllon-AII
vervenden, um darauf zuzugreifen:
Der AnaIyzer zeigl grafiscl die
Sensorverle der einzeInen KanaIe an

KommunikationsprotokoII
Capoard erkennl beim Slarl aulomaliscl
die angesclIossenen Sensoren und gibl
deren Messverle aus. Die Ausgabe erfoIgl
im Iormal ,VALUL, <device_id>,<clanne
I>,<vaIue>,<limeslamp>
Die einzeInen Komponenlen:
dienl dazu, melrere angesclIossene Capoards
zu unlerscleiden. Slandardmaig O.
gibl an, von veIclem Sensor der Messverl
komml
isl der Messverl (16 bil).
isl die verslriclene Zeil in MiIIisekunden
seil eginn der Messung.
Das Capoard verslell aucl einige einfacle
efelIe. Die kompIelle Dokumenlalion fin-
den Sie auf der CTK-Websile. }eder efelI
vird durcl eine kurze SlalusmeIdung
beslaligl. Hier ein eispieI:
28
#!/usr/bin/python
# simple proximity sensor using CapBoard
# see capsense.org
# Public Domain
import capboard, time
THRESHOLD = 5 # some value > 0
acb.reset() # auto-detects sensors, starts CapBoard
baseline = cb.vals[0] # the current sensor value for channel 0
while True:
if cb.vals[0] - baseline > THRESHOLD:
print ,sensor triggered!
else:
print ,
time.sleep(0.1)
[ PFO.FCT ] Proo,oin von CapSehse-Ahwehduhgeh nL CapTooKL | Raphae Wnner
APIs und TooIs
IrinzipieII kann man auf das Capoard
mil jeder beIiebigen Irogrammierspracle
zugreifen - sofern diese von der serieIIen
SclnillsleIIe Iesen kann. Wenn man nur
sclneII maI eine einfacle Anvendung
sclreiben viII, isl eine AII aber ziemIicl
liIfreicl. Iur das CapTooIKil gibl es eine
Iyllon-AII und eine }ava-/Irocessing-
AII. Diese kapseIn die Kommunikalion
mil dem Capoard und bielen einige HiIfs-
funklionen. Mil der Iyllon-AII kann man
selr sclneII z.. einen Nalerungssensor
impIemenlieren.
ZusalzIicl gibl
es z.. TooI, das
die Dalen vom
Capoard uber
TCI/II ver-
sclickl. Damil
kann man aucl
von beIiebigen
Reclnern auf
das Capoard
zugreifen.
Links & Bezug
SclaIlpIane, Soflvare, Dokumenlalion und
veilere Informalionen zum CapTooIKil
finden Sie auf CapSense.de |3j.
Weilerfulrende Informalionen zu den
Crundprinzipien und Anvendungsmog-
Iiclkeilen von kapaziliven Sensoren finden
Sie auf den Webseilen von Larry K. axler
|4j und }oslua R. Smill |5j. Da sclon bei
den Vorgangerversionen des CapTooIKil
regeImaig Anfragen kamen, ob icl denn
aucl ferlige Hardvare verkaufen vurde,
labe icl micl fur CTK 2.O mil enedikl
Sauler von Lmbedded-Irojecls.nel zusam-
mengelan. Lin ausalz fur das CapTooIKil
isl im OnIine-Slop von Lmbedded-Irojecls.
nel verfugbar.
RaplaeI Wimmer |6j besclafligl sicl seil
2OO5 mil kapaziliven Sensoren. Lr promo-
vierl am LelrslulI fur Medieninformalik
an der Ludvig-MaximiIians-Universilal
Munclen. In seinem Iog |7j sclreibl er
ab und zu aucl uber Lmbedded-Irojekle.
1. TlereminVision II Design von Terry
Irilz hLLp://Lherenhvsoh.con/
versoh-2/TV-II-hdex.hLn
2. SpannungsfoIger hLLp://de.wkpeda.
org/wk/SpahhuhgsIoger
3. Informalionen zum CapTooIKil
hLLp://capsehse.de
4. Larry K. axler
hLLp://www.capsehse.con/
5. }oslua R. Smill
hLLp://web.neda.nL.edu/-|rs/
6. RaplaeI Wimmer hLLp://www.nedeh.
I.nu.de/Lean/raphae.wnner/
7. Iog von RaplaeI Wimmer
hLLp://ny.opera.con/raphnah/bog/
29 FMEFLLFLPFO.FCTo.NFT .OLFN/ ' / 'OO8
ArtikeIwettbewerb
MikrocontroIIer.net ArtikeIwettbewerb - die Ergebnisse
Andreas Schwarz <wettbewerb@mikrocontroIIer.net>
www.nrkrocohLroer.heL | ArLkeweLLbewerb [ /LFFLF ]
InderlelzlenAusgabedesImbedded
Iro|ecls}ournalvurdederMikrocon
lrollernelArlikelvebeverbangekn
digl|elzlislerbeendelAbschlieend
kannmansagenesvareinvollerIrfolg
ferligeArlikelvurdeneingereichl
IrdieGevinnerslandenIreiseimGe
samlverlvonberzurVerfgung
DieIrgebnissedesWebeverbsunddie
ArlikelsindberhLLp://www.nkrocoh-
Lroer.heL/weLLbewerberreichbarDie
HaulgevinnerverdenimIolgenden
kurzvorgeslelll
DerGevinnerdeserslenIlalzes
undeinesHighIndMullimelers
vonVollcraimWerlvon
islMichaeI Wittmannmilseiner
eschreibungeinesIOIxanders
frdenUSIorlDasGerl
basierlaufeinemITDIChi
undeinemAVRundbesilzl
eineVielzahlvonanalogenund
digilalenIinundAusgngen
DazugibleseineinQTC
geschriebeneICibliolhekund
GUIAnvendungDerArlikel
virdindernchslenAusgabe
desImbeddedIro|ecls}ournal
abgedruckl
VonAndr F.slammldieserelek
lronischerNachbaudesbekannlen
RubiksCubeMilaufvendiger
HolzkonslruklionICSovare
undzurAbvechslungmaleinem
HCSMikroconlrollerbelegl
diesesausgefalleneIro|eklden
zveilenIlalzundgevinnlein
AVRGrasshoeroard
DerdrieIlalzgehlanAxeI
Jerominfrdieeschreibung
derAnsleuerungeinesDreh
slromAsynchronmolorsVon
derWellenformerzeugunger
AVRbiszurLeislungseleklro
nikislallesIigenbauundaus
fhrlichbeschriebenAuchfr
diesenIlalzgibleseinAVR
Grasshoeroard
MileinemAVRbasierlenRIID
TrnerbeleglStefan SeegeI
dendrienIlalzunderhlleinen
IlalinengulscheinvonLeilonim
WerlvonIininleressanler
IunklbeidiesemIro|eklisl
dassdieAVRSovareinC
geschriebenvurde
[ sehe ArLke SeLe 4 - 6 ]
PIatz 1:
USB IO-Expander
PIatz 4:
RFID TrmoduI
PIatz 2:
EIektronischer
ZauberwrfeI
PIatz 3:
Frequenzumrichter
mit Raumzeiger-
moduIation
NebendenHaulgevinnernvurden
nochvieleveilereArlikeleingereichlvon
deneneinenIreisgevonnenhabenDa
diesderersleArlikelvebeverbvarhaben
auchalleNichlGevinneralsDankeschn
frdieTeilnahmeeinenIlalinen
gulscheinerhallenDankeanallefrdie
TeilnahmeundanalleNichlTeilnehmer
oderNichlGevinnervielleichlklals|a
beimnchslenMaldenneinesislsicher
dasvarnichlderlelzleWebeverb
Und der Rest?
Der Wettbewerb
Sie suchen?
Hier werden Sie gefunden!
SteIIenanzeigen
n Enbedded Pro|ecLs Jourha
Werbuhg - zegerchLeL
IhIos: www.enbedded-pro|ecLs.heL
Das Motto: Von der Community fr die Community!
Das Magazin ist ein Open-Source Projekt.
FaIIs Du Lust hast, Dich an der Zeitschrift durch einen
Beitrag zu beteiIigen, wrden wir uns darber sehr freu-
en. Schreibe Deine Idee an:
sauter@embedded-projects.net
Wir werden dann gemeinsam sehen, was wir daraus ma-
chen knnen.
Werdet aktiv!
RegeImig Iesen!
Die Zeitschrift wird ber mehrere KanIe verteiIt. Der
erste KanaI ist der DownIoad aIs PDF-Datei. AIIe Ausga-
ben sind auf der Internetseite {1] verfgbar. Diejenigen,
die Iieber eine Papierversion erhaIten mchten, knnen
den zweiten KanaI whIen. Man kann sich dort auf einer
Internetseite {1] in eine Liste fr die gesponserten Abos
eintragen. Beim Erscheinen einer neuen Ausgabe wird
dank SponsorengeIdern an jeden auf der Liste eine Aus-
gabe des aktueIIen JournaI versendet. FaIIs man den Ver-
sandtermin verpasst hat, kann man das Heft auch zum
Preis von einem Euro ber einen OnIine-Shop {2] bezie-
hen.
1. Internetseite {AnmeIdeformuIar gesponserte Abos)
http://www.embedded-projects.net/journaI
2. OnIine-Shop fr JournaI {Preis 1 EUR + Versand)
http://www.eproo.de/journaI
Damit wir weiterhin diese Zeitschrift fr jeden frei be-
reitsteIIen knnen, suchen wir dringend Sponsoren fr
Werbe- und SteIIenanzeigen. Bei Interesse meIdet Euch
bitte unter foIgender TeIefonnummer: 0821/5081581 oder
sendet eine E-MaiI an die oben genannte Adresse.
Sponsoren gesucht!