Het Elektor forum gaat sluiten. Zie ook deze link. Vanaf vrijdag 15 maart is het niet langer mogelijk om in te loggen op het forum. Wel blijft de inhoud van het forum nog zichtbaar tot het einde van de maand maart. Per 1 april gaat het forum definitief uit de lucht.

attiny

Ontwerpen en programmeren

Postby eriksl » Tue Jul 10, 2012 12:00 am

Na een lange zoektocht naar pwm-ic's en counters die op een i2c-bus aangesloten zouden kunnen worden, ben ik tot de conclusie gekomen dat die niet bestaan (in tegenstelling tot dac's, adc's, diverse sensors en i/o expanders).

Na diverse suggesties in die richting door mede-forummers ben ik er toch ook wel achter dat ik er niet aan ga ontkomen om met microcontrollers te gaan werken. In het verleden was dat er nooit van gekomen door een combinatie van tijdkrapte en te weinig motivatie Maar nu moet ik dus wel.

Ik heb nu even de tijd en rust gehad om uit te zoeken wat ik nodig ga hebben, ik ben benieuwd wat jullie ervan vinden.

Mijn eerste eis was dat ik niet ergens windows zou hoeven installeren. Volgens mij ben ik daar uitgekomen met avr-gcc en avrdude. Er schijnt zelfs ge-debugged en gesimuleerd te kunnen worden!

Zo kwam ik vanzelf uit bij avr, die uiteindelijk toch ook wel mijn voorkeur heeft. Mocht ik ooit nog eens stukjes zelf in assembly moeten schrijven, dan is dat met de avr cpus een stuk makkelijker.

Als programmer kwam ik uit bij de avr dragon, het grote voordeel daarvan is dat hij op diverse manieren kan programmeren, waaronder high voltage, waardoor ook de reset-lijn voor i/o is te gebruiken. Hij kan prima bestuurd worden door avrdude, en ook DebugWire werkt ermee (schijnt) + isp. N.b. de dragon is bij Conrad 92 euro, bij Farnell 64 en bij Digikey 46 euro (+ 18 euro verzendkosten)... Als je bij Digikey meteen wat andere spulletjes erbij bestelt is dat toch echt het goedkoopst.

Ik heb ook nog even naar arduino gekeken, maar die valt om twee redenen af. Ten eerste is programmeren in C (en zonodig assembly) geen probleem voor mij en ten tweede wil ik niet twinting arduino-boards gaat kopen voor allerlei plaatsen in huis, dan kan ik net zo goed de velleman-k8055's blijven gebruiken.

Een losse attiny, daarentegen, kost 1-2 euro, dat is nog eens interessant.

Wat ik wil gaan doen is met attiny85's (meeste geheugen en nauwelijks duurder dan de '25 en de '45) modulaire i2c blokken makken. Ik zat te denken aan:
- pwm output (voor verlichting, dus niet zo hoge eisen)
- tellers (op hardware, om kWh pulsen betrouwbaar te tellen)
- eventueel i/o expander (maar die heb ik ook nog als ic liggen)
- eventueel adc (idem)

Met de PWM zit ik even met het uitzoeken hoe dat in het werk gaat, de datasheet is niet 100% duidelijk. Maar op zich moet dat wel gaan lukken. Nadeel is wel dat je maar twee poorten kunt maken. Ik zit er aan te denken om e.e.a. in software te maken, op een timer interrupt. Dat is niet moeilijk en veel flexibeler. Er is een avr application note die ongeveer zoiets voorstelt. Ik kan dan alle poorten gebruiken.

Met de teller zit ik nog even dat ik echt zeker wil weten dat ik geen enkele puls mis. Ik had gehoopt dat de "counter" in een microcontroller ook geheel zelfstandig pulsen op een inputpin kon tellen, maar dat lijkt niet zo te zijn. Dat wordt dus een pcint (pin change int), helaas is er maar 1 interrupt voor alle i/o's, dus je moet in software (heel snel) na de interrupt gaan kijken welke poort de veroorzaker is. Jammer... Ik hoop dat dat snel genoeg gaat. Maar dat moet toch wel lukken met 1 Mhz klok...

Er is ook een mooie avr application note over hoe je een twi (i2c) SLAVE implementeert op een attiny. Dat gaat voor een aanmerkelijk deel in hardware, met interrupts. Wat dat betreft moet ik absoluut mijn eerdere uitspraken terugnemen, dat gaat zo prima werken (in principe).

Ik heb er al zin in, eerst als ik terug ben maar eens de spullen bestellen. Ik ben nog een beetje aan het twijfelen of er ik nog een paar '84s bij zal doen voor meer i/o poorten. Helaas is de verdelen van de extra functies over de i/o pinnen erg ongelukkig, de sda/scl lijnen zijn precies gedeeld met andere interessante functies.'
eriksl
 
Posts: 515
Joined: Thu Jan 02, 2014 3:28 pm

Postby jippie » Tue Jul 10, 2012 12:00 am

Toevallig heb ik afgelopen weekend een Proof of Concept in elkaar gedraaid voor ADC => PWM op een ATtiny13 en ik denk dat de code volledig compatible is met een ATtiny8x: http://wirespeed.xs4all.nl/mediawiki/index.php/Simpel_analog_to_PWM_converter_using_ATtiny13 Volgens mij heb ik het met commentaar in de code ook niet heel erg slecht gedaan, dus met de Atmel datasheet erbij moet je voor ADC en PWM een heel eind kunnen komen. De datasheet is sowieso best goed leesbaar.

Ik gebruik mijn Arduino(s) als handige testomgeving. Er zitten headers op, hangt rechtstreeks aan USB en ook de code voor ATmega's is betrekkelijk eenvoudig te porten naar ATtiny's *mits* het programma niet te groot wordt. Bovendien gebruik ik mijn Arduino als programmer voor de ATtiny's. Nadeel is dat debugWire niet gesupport wordt, maar dat heb ik ook nog niet echt nodig gehad.

Wat ik zelf heel interessant vind is het disassembleren van de code die de C++-compiler uitspuwt, daarmee heb ik toch een paar kleine foutjes/optimalisaties kunnen oplossen.'
jippie
 
Posts: 342
Joined: Thu Jan 02, 2014 3:28 pm

Postby eriksl » Wed Jul 11, 2012 12:00 am

Aan de hand van een paar tutorials op avrfreaks.com ben ik een heleboel wijzer geworden. O.a. hoe je met 1 timer meerdere pwm's maakt (meestal twee), met dezelfde frequentie maar onafhankelijke duty cycle.

De verschillende timer/pwm modes beginnen me nu ook langzamerhand duidelijjker te worden, met alleen de datasheet is dat niet echt duidelijk.

Ik heb intussen dit bordje gevonden: http://www.ecrostech.com/AtmelAvr/DragonRider/index.htm, dat is heel interessant in combinatie met een dragen. Het enige nadeel is dat er alleen 8-, 20- en 40-pins ats in kunnen, geen 14-pins

Ik zit nog heel erg te dubben tussen welke serie tinys ik wil gaan gebruiken. Degenen met meerdere pootjes hebben wel meer.... pootjes, maar de interessante functies zitten nog steeds heel onhandig gemultiplexed. Zodra je usi/twi/i2c gaat gebruiken mis je meteen twee functie-outputs.

Het lijkt er op dat avr wat meer systeem in hun tiny serie aan het aanbrengen is, je hebt nu de 24/44/84 met 14 pins, 25/45/85 met 8 pins en 261/461/861 met twintig pins. Het lijkt er ook dat al deze uitvoeringen grotendeels op dezelfde core gebaseerd zijn, ik zie weinig verschillen in i/o modules (lekker makkelijk).

Wat ik me nou afvraag, als je een 8/14/20 pins tiny nodig hebt, waarom zou je dan nog een andere dan uit deze serie kiezen? De mogelijkheden lijken gelijk of zelfs beperkter. Toch zie ik heel vaak de 2313 en de opvolgers daarvan, wat is daarvan de toegevoegde waarde?'
eriksl
 
Posts: 515
Joined: Thu Jan 02, 2014 3:28 pm

Postby jippie » Wed Jul 11, 2012 12:00 am

erikslWat ik me nou afvraag, als je een 8/14/20 pins tiny nodig hebt, waarom zou je dan nog een andere dan uit deze serie kiezen? De mogelijkheden lijken gelijk of zelfs beperkter. Toch zie ik heel vaak de 2313 en de opvolgers daarvan, wat is daarvan de toegevoegde waarde?


Prijs, beschikbaarheid. Ik koos een 2313 omdat dat de goedkoopste DIL-versie was die mijn elektronicashopje-op-de-hoek op voorraad had.

Intussen gebruik ik meestal 13 of 45 in SOIC8 eventueel met een converterprintje, omdat die op hun beurt weer goedkoper en goed beschikbaar waren bij mijn webshopje.
jippie
 
Posts: 342
Joined: Thu Jan 02, 2014 3:28 pm

Postby eriksl » Thu Jul 12, 2012 12:00 am

Ja, precies, duidelijk. De shop verkoopt het liefst spullen die goed gaan, dus die zullen niet altijd het nieuwste van het nieuwste hebben of die maken liever eerst de voorraad op.

Het grappige is dat als je bij digikey gaat kijken, de prijzen van de verschillende tiny's nauwelijks verschilt (aantal pootjes, ram, flash, eprom), het is allemaal tussen de 1.80 en 2.50. Aangezien je digikey meteen een hele berg moet kopen om het rendabel te maken (18 euro verzendkosten...) wil ik daar de programmer (dragon) + nog meteen een hele berg chips kopen. Ik zit alleen nog steeds heel erg te twijfelen over welke uitvoering ik zal nemen.

De '85 (8 pins) is heel mooi klein, er zit best veel in voor zo'n kleintje, maar het aantal pootjes wat je overhoudt is wel erg klein (2 stuks voeding, 2 stuks i2c, 1 pin dw/isp/reset, houd je er drie over )

De 84 (14 pins) is al weer een stuk groter maar heeft op zich niet meer functionaliteit dan de '85, alleen meer pootjes. Waarbij de speciale functies dan nog steeds over een heel klein aantal pootjes verdeeld is, dat is wel een nadeel. Nog een nadeel, hij wordt niet ondersteund door de Dragon Rider (hoewel daar misschien nog wel een mouw aan te passen is).

De '861 (20 pins) is dan nog weer groter, iets uitgebreidere timer, maar niet heel erg veel. Ook hier geldt weer dat de speciale functies weer over een paar pinnen zijn verdeeld, waardoor je allerlei dingen niet samen kunt gebruiken.

De prijs is zoals gezegd niet echt een criterium. Ik heb al gezien dat je voor hobby-gebruik echt niet hoeft te bezuinigen op ram/flash/eprom of aantal pins.

Jippie, gebruik jij nou een arduino-board om je mc's te programmeren?'
eriksl
 
Posts: 515
Joined: Thu Jan 02, 2014 3:28 pm

Postby schueler » Thu Jul 12, 2012 12:00 am

erikslJippie, gebruik jij nou een arduino-board om je mc's te programmeren?


De Arduino kan ook als programmer ingezet worden.
Het programma wat je schrijft met behulp van de arduino compiler kun je dan eenvoudig via een arduino board op een attiny84/85 zetten, maar ook op de andere avr's die door de arduino compiler ondersteund worden. Op de website van High-Low Tech hoe dat kunt doen en wat de mogelijkheden zijn evenals de pin naam beschrijving voor de arduino compiler.
Onderaan de pagina staat ook een link naar de arduino site waar beschreven wordt hoe je de i2c library kunt gebruiken.

Zo zou je dus zeer snel een iets in elkaar kunnen zetten. Als de 8 io pinnen van de 45/85 een probleem is zou je de 44/84 kunnen nemen. Deze heeft er een paar meer ( 14 + voeding ).


Ben'
schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby schueler » Thu Jul 12, 2012 12:00 am

Er zijn wel wat nederlandse website die deze ic verkopen, maar die heb je zelf denk ik ook al wel gevonden...

iPrototype.nl
Conrad.nl
etc...


Ben'
schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby jippie » Thu Jul 12, 2012 12:00 am

erikslJippie, gebruik jij nou een arduino-board om je mc's te programmeren?


Ik gebruik inderdaad een kleine Arduino als programmer

http://hlt.media.mit.edu/?p=1229

en soms ook als ontwikkelomgeving. Dat laatste kan omdat de ATmega en de ATtiny een grote gemeenschappelijke factor hebben waardoor libraries vrij eenvoudig te hergebruiken zijn. Nogmaals het voordeel van de Aruiduino is dat hij net even wat handiger te programmeren is middels USB en je hoeft dus niet steeds op en neer te prikken. Ik gebruik voor het ontwikkelen van ATtiny code overigens gewoon een eenvoudige tekst editor (vi, ik zit op Linux) en command line interface voor het compileren en programmeren. Eigenlijk moet ik er nog eens een nette Makefile van maken, maar ik weet nog niet hoe dat moet. Nu gebruik ik onderstaand script.

#!/bin/bashfreq=9600000/8baud=19200src=main.cppavr=attiny13dev=/dev/ttyUSB003avr-gcc -g -DF_CPU=$freq -Wall -Os -mmcu=$avr -c -o tmp.o $src &&avr-gcc -g -DF_CPU=$freq -Wall -Os -mmcu=$avr -o tmp.elf tmp.o &&avr-objcopy -j .text -j .data -O ihex tmp.elf tmp.hex &&avrdude -p $avr -cstk500v1 -P$dev -b$baud -v -U flash:w:tmp.hexavr-objdump -d tmp.elf
jippie
 
Posts: 342
Joined: Thu Jan 02, 2014 3:28 pm

Postby nieuw 2 » Thu Jul 12, 2012 12:00 am

Al eens aan Eclipse gedacht als IDE? Ik schrijf mijn AVR programma's allemaal in Eclipse Galileo voor Windows. Volgens mij bestaat dit ook voor Linux. Er is alleszins een tutorial hoe je Eclipse Galileo op Linux moet installeren.

Geen scriptje of make file meer nodig. Fuses zetten, uitlezen en programmeren gaat bij mij zonder problemen. Alleen debuggen heb ik nog niet geprobeerd. Lijkt me ook niet handig als je bepaalde data binnen krijgt via interrupt en deze moet decoderen.

Als eenvoudige teksteditor gebruik ik Notepad++. Weet niet of het bestaat voor Linux. Handig is alleszins de syntax highlighting .'
nieuw 2
 
Posts: 124
Joined: Thu Jan 02, 2014 3:28 pm

Postby jippie » Thu Jul 12, 2012 12:00 am

Nieuw 2Al eens aan Eclipse gedacht als IDE?

Wel eens geprobeerd, maar ik vond het ingewikkeld en vooral traag. Het duurt een eeuwigheid om die hele IDE te laden (en ik heb geen flauwe PC) en vi staat gewoon meteen op het scherm.

Nieuw 2Als eenvoudige teksteditor gebruik ik Notepad++. Weet niet of het bestaat voor Linux. Handig is alleszins de syntax highlighting .

vi doet ook syntax highlighting hoor en met mijn Unix/Linux achtergrond kan ik ermee lezen en schrijven:wq
jippie
 
Posts: 342
Joined: Thu Jan 02, 2014 3:28 pm

Next

Return to Microcontrollers

Who is online

Users browsing this forum: No registered users and 1 guest