ATTINY841 - tömeggyártás, árverseny és egyéb tanulságok

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 179
Csatlakozott: 2012. január 22. vasárnap, 7:00

ATTINY841 - tömeggyártás, árverseny és egyéb tanulságok

Hozzászólás Szerző: aaszabo »

Sziasztok!

Magánlevelezést kezdtem Róberttel, de annyi hasznos dolog derült ki belőle számomra, hogy azt gondoltam mást is érdekelhet, ezért közzé teszem ( Róbert beleegyezésével) az ott tanultakat.

Azzal a problémával kerestem fel Róbertet, hogy azok az IC-k amivel eddig dolgoztam (ATMEGA328p, vagy a nagy testvére a 1280, vagy 2560) drágák egy sorozatgyártáshoz készülő kapcsolásba. Találtam olyan IC-ket a piacon, amik majd egy nagyságrenddel olcsóbbak és tudják, ami nekem kell. De (és ezért kerestem Róbertet) nem szerettem volna elhagyni a már megszokott AVR és BASCOM környezetet. Újrakezdő vagyok és megint éveket fektettem abba, hogy képbe kerüljek és kialakítsam a fejlesztői környezetet.

A megoldandó feladat az, hogy az áramkör két UART-ot tudjon kezelni. Próbáltam a ATMEGA328p-t. Ez ugyan csak egy HW UART-tal rendelkezik, de SW UART-ot közben tud kezelni és még viszonylag olcsó az elterjedtsége miatt. De nem igazán jól működik a HW és SW UART egyszerre. És annyira azért nem is olcsó.
Két HW UART-os AVR-t pedig nem találtam 1000Ft alatt.
Viszont találtam 8051-es továbbfejlesztett klónt (EFM8BB22F16G) 2-300Ft-ért, ami tudja a két HW UART-t. Vanis hozzá komplett fejlesztői környezet, panel, ingyen programok, példák és fórumok. Ránézésre megvan hozzá minden támogatás, ami kell.
Szóval mi legyen váltsak más IC-re, vagy van megoldás, hogy maradjak az AVR-nél?
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 179
Csatlakozott: 2012. január 22. vasárnap, 7:00

Re: ATTINY841 - tömeggyártás, árverseny és egyéb tanulságok

Hozzászólás Szerző: aaszabo »

Azt a hibát követtem el, hogy egy régi Excel táblában keresgéltem, amit még talán a régi TAVIR oldalról töltöttem le. Ebben kerestem 2 UART-os IC-ket és néztem meg az árukat több helyen is. Ezek az IC-k drágák voltak.

Elkeseredésemben a Silicon Labs oldalán lévő fórumokba is kérdezgettem, próbáltam összelőni egy fejlesztői környezetet az ő eszközeikkel és megnézni az hogyan működne. Nem kicsit tűnt macerásnak. A legegyszerűbb LED villogtatáshoz tonna szám kellett az include fájlokat beemelni és ismeretlen szintaktikájú utasításokon keresztül kellet a lábak felprogramozását elvégezni. Messze nem olyan jó a fórum mint a TAVIR, vagy külföldi AVR-es fórumok. A BASCOM-os help és mintaprogramok, illetve Róbert példaprogramjai fényévekkel jobbak, mint amit a Silicon Labs oldalán találtam. Próbáltak a fórumon segíteni, de leginkább az volt a válasz, hogy ezt így kell csinálni és kész. Nem a C nyelvvel van a bajom, hanem azzal, hogy nem logikus és érthető, ahogy ott felépítették az egész fejlesztői környezetet. Ezért is féltem, hogy ha váltani kell AVR és BASCOM-ról, akkor bajban leszek.

Aztán Róbert ajánlotta az AVR parametric search oldalát. És én is ajánlom mindenki figyelmébe!
http://www.atmel.com/v2pfresults.aspx
Azért amikor Róbert az oldalt ajánlotta megjegyezte, hogy TINY-ben ritka a két HW UART. Ezért is lepett meg amit találtam.

Végül is az ATTINY441, illetve az ATTINY841 (több memóriával és program területtel) maradtak fent a rostán.
Jó kis IC! Annak ellenére, hogy ATTINY vonal tagja két HW UART van benne és még olcsó is.
Nagyon örültem neki, mert ha beválik nem kell átváltanom 8051-re. Ami nem csak az áramkör áttervezését jelentette volna, hanem újabb sok idő tanulást és környezet kialakítást.

Rendeltem is gyorsan párat, hogy kipróbálhassam.
Még azt is meg kellet oldanom, hogy SOIC tokos, ezért nem tudtam azonnal a dugdosós panelon felhasználni. Nem vagyok otthon NYÁK gyártásra berendezkedve, ezért a páka és vékony drótok, meg egyéb eszközök kreatív felhasználásával dugdosópanel kompatibilissé tettem egy IC-t. Nem tudtam kivárni, amíg a megrendelt átalakító NYÁK-ok megérkeznek.

Rendben, összeraktam a minimum felépítést ISP programozáshoz és egy LED-et villogtatáshoz. Jöhet a programozás.
A program gyorsan elkészült, mert a Toggle LED és Waitms 500 utasításokból állott csak.
Viszont nem ismerte a BASCOM példányom az ATTINY841-t.
Akkor most hogyan tovább?
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 179
Csatlakozott: 2012. január 22. vasárnap, 7:00

Re: ATTINY841 - tömeggyártás, árverseny és egyéb tanulságok

Hozzászólás Szerző: aaszabo »

Olvasgattam a BASCOM oldalát (mcselect.com), hogy mi tudható az ATTINY841 támogatásról. A letölthető DEMO verzió a 2.0.7.5 verzió volt. Valahol azt olvastam, hogy ehhez nem elég csak a 841-es DAT fájlt odamásolni, mert a programban is kell módosítás, hogy a 841-et kezelni tudja a BASCOM. Nem próbáltam ki, más megoldást választottam.

Rég óta terveztem hogy véget vetek a kalózkodásnak és megveszem a BASCOM-ot. Nem vagyok híve a Torrent világnak. Arra jó, hogy sok mindent kipróbáljon az ember és utána megalapozott döntést tudjon hozni, de ha már komoly a szándék, akkor legyen korrekt az eszköz is. Illetve a jó eszköz megérdemli, hogy ha már tényleg használom, akkor támogassam a fejlesztését azzal, hogy fizetek érte. Az is közre játszott, hogy éppen éjfélkor akadtam el ezzel a problémával, de tovább akartam menni, mert a 3 napos hétvégének még csak az első éjszakáján voltam, de mindenképpen a 3. nap végére tudni szerettem volna hogy működik a két HW UART. Szerencsére a BASCOM oldalán van azonnali WEB-es vásárlási és letöltési lehetőség. Gyakorlatilag percek alatt megvolt a legális, legújabb 2.0.7.8 BASCOM példányom és benne a ATTINY841 támogatás.

Szuper!
Gyerünk töltsük le a programot.
Van egy USB-s AVRISP programozóm. Ennek az életre lehelése sem ment rögtön, de leginkább én néztem el dolgokat és ezért sikerült csak harmadszorra működésre bírni. Elvesztem a driver telepítés és FLIP-es Firmware csere útvesztőjében.
Végül is meglett a programozó. Töltsük le a programot.
Program fordítás. Rendben
Programozó eszköz kiválaszt. Rendben
Programozó felület indítása. Rendben
IC felismertetése. Semmi eredmény

Na megint mi lehet a gond? Miért nem ismeri fel az IC-t?
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 179
Csatlakozott: 2012. január 22. vasárnap, 7:00

Re: ATTINY841 - tömeggyártás, árverseny és egyéb tanulságok

Hozzászólás Szerző: aaszabo »

Mivel nem ismerte fel az ATTINY841-t arra gondoltam, hogy az új IC-vel lehet gond. Természetesen a lábakat átnéztem és az összekötéseket rendben találtam.
Jó, akkor nézzünk egy olyan IC-t, amit már korábban sikerült így ISP programozással életre keltenem. Még benne is volt egy kis dugdosó panelban egy ATTINY2313. LED-et erre is ráraktam az ISP-s minimum kialakítás mellé.
Programban IC hivatkozást kicseréltem.
Fordítás. Rendben
Programozó indítása. Rendben.
IC felismertetése. Rendben.
Letöltés. Rendben.
A program működött, de lassabban villogott a LED mint gondoltam volna. Ez akkor feltűnt, de nem foglalkoztam vele. Sokkal inkább az érdekelt, hogy miért nem megy a másik. Ez így azt jelentette, hogy a programozó működik, tehát az ATTINY841 a probléma forrása. Persze nem az volt. Hogy is lehetne? Szerencsétlen az teszi, amire felprogramozzák, nem azt, amit gondolnak, hogy tennie kéne. Régi tanulság.

Közben Róbert megint segített. Az SPI használható BASCOM alól tetszőleges lábakon, de az ISP-hez kötött, hogy hol használod. OK, akkor az adatlapon kiadottak szerinti MOSI, MISO lábak használhatók.

Még egyszer megnéztem a lábakat. Ekkor tűnt fel, hogy az adatlap szerint is az IC-n több MOSI, MISO lehetőség is van, de az egyik az alapértelmezett. Természetesen sikerült nem a Default kialakítás szerintiekre rákötni az ISP programozót. Ezért nem ment az IC felismerése sem.
Miután átkötöttem a lábakat és az alapértelmezés szerinti lábakon voltak az ISP funkciók, már működött az IC felismerése.
Hurrá!
Működött a letöltés is.
Viszont ezen is fele olyan szaporán villogott a LED, mint a másik ATTINY2313 IC-n. Nem másodpercenként kétszer változik, amit az 500ms előírna.
Ezen is a másikon is. Mi a franc lehet ez?
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 179
Csatlakozott: 2012. január 22. vasárnap, 7:00

Re: ATTINY841 - tömeggyártás, árverseny és egyéb tanulságok

Hozzászólás Szerző: aaszabo »

Róbert megint segített.
Eddig többnyire Arduino paneleket használtam. Ha nem panelt használtam, akkor ugyan olyan kialakítást és ott felprogramozott IC-t.
Ezért számomra az órajel frekvencia beállítás rejtélyei ismeretlenek voltak. A BASCOM-ban megadom, hogy $crystal= és kész. Persze nem.

Az ATTINY alapban 8MHz belső oszcillátorról megy, ami egy 8-as előosztó után lesz az órajel. Ez így 1MHz-t jelent alapból. Ez a gyári beállítás.
Az IC adatlapja szépen leírja az órajel megadás lehetőségeit. Van több belső és lehet külsőt ráakasztani többféleképen. A belsőt egy osztóval lehet tovább változtatni. Azt, hogy melyik az órajel forrás és milyen osztóval lesz változtatva a Fuse bitekkel kell megadni. Ez a programozóban egy külön fülön van. Az ott beállított értékeket alapján (CKSEL3..0 a forrás kiválasztása a CKDIV az osztó) áll elő a tényleges órajel. Az ott beállítot FUSE bit értékeket a programozó felületén egy gombnyomásra beilleszti a BASCOM a forrás programba $prog direktívaként. Az így kialakított órajel értéket kell a BASCOM program elején a $crystal sorban megadni. A $crystal-ban megadott érték segíti a fordított az időzítéses utasítások fordításában. Ha az itt megadott érték és a Fuse-n keresztül beállítottak nem stimmelnek, akkor az időzítéses utasítások, mint a Waitms nem fognak jól működni.
És láss csodát, amint összehoztam a jó értékeket a LED szaporábban villogott. Pont úgy, ahogy az 500ms előírta.

Róbert azt írta, hogy nem szereti a BASCOM-nak ezt a megoldását, hogy az átírt FUSE bit a BASCOM prgramban $prog direktívaként bekerül. Jobb szereti kézzel állítani ezeket.
Ez még nem tudom mit jelent. Lehet valahogy csak a FUSE biteket átállítani a programozó segítségével?
Válasz küldése