elmondom, mit értettem én meg eddig az atmel 328P működéséből, ami ide vonatkozik. ha téveek, kérlek javíts ki: - a kontroller indulhat a 00 címről (ez a leggyorsabb, azonnal végrehajtja, az én programomat) - indulhat a bootloader megadott címéről, ami a memória felső részében van, ennél 4 változat van, attól függően, mekkora bootloadert akarok használni, ezt a FUSE-okkal állítom be, tehát az ISP-n keresztül. - a flash memóriába ennél a kontrollernél csak blokk módban tudok írni - legalábbis nekem az AVRDUDE csak 00 címről tud indulni - ha csak a bootloadert töltöm be, akkor is végigmegy az egészen. Ha a saját programomat, ami ugye a 00 címtől indul, akkor az rövid folyamat. - az ISP programozásnak van egy sebessége - én erre úgy gondolnám, az ISP programozó adja meg az általam beállított órajellel. Feltételezem hogy minél lassabb, annál biztosabb az átvitel.
- ha egy működő kontrollerből kiolvasom a tartalmat (ezúttal a bootloader miatt, de amúgy a teljes tartalmat), akkor azt át tudom írni egy másik, ugyanolyan hardverbe (értem ezen, egy UNO bootloadere nem biztos, hogy működik egy Nanon, még ha azonos CH340-es USB interfész van is rajta, de ha különböző, akkor biztosan nem.
- az ISP programozó kap egy hexa fájlt, miben benne van a sor elején hogy hány byteot tartalmaz, mondjuk 10 ha 16 darabot, 20 ha 32 darabot, majd a cím maga 2 byton, ezzel ugye 0000-FFFF-ig 64Kbyte fedhető le, majd valamiért van benne egy 00 byte, jönnek az adatbytok, majd a kontrollösszeg.
":1001C000F0E098E1908380830895EDDF803219F0AC"
Hát ezt leküldeni az egyik kontrollerből (programozó) a másikba (amit programozok) nem tűnik annyira bonyolult feladatnak. Ok, kell vigyázni arra, hogy a jelek ne torzuljanak, visszaverődés, parazita kapacitás stb miatt. Ezt hardverből az ISP programozónak me kell oldania, meg nyilván a protokoll szerint olyan időzítések sötöbö.
na de mi a rák tud oylan hibát okozni, amitől összevissza téveszt, de nem is mindig ugyanott?!
ráadásul ugyanezt a hulladék programozót használtam korábban is, ugyanúgy az automatikus átviteli paraméterekkel.
a programozó és a nano kööztt egy kb 30 centis szalagkábel van. vágjam le 10 centire? nem fogom közben, leteszem az asztalra. 5,15 volt van a programozón, az a port speciel egy USB3-as (persze az usb 2 kábellel), szóval van teljesítménye is.
nyilván most van az a 3 nap az életemben, amikor nem tudok elmenni egy boltba, hogy vegyek egy új Nanot....
Aha... Nos, ennek így semmi értelme. Normális minőségű, gyárinak megfelelő minőségű alkatrészekből szerelt klónokat lehet kapni komoly 3-4 kollárét. És nem kell vele trükközni.
ez ugye egy olyan klón, amit a gyártó szerint USBTiny-ként kell használni. Intefészt vegyek az Adafruitról (onnan vettem), egyébként meg hajrá. Kb. ez volt a terméktámogatás. (mindezt ugye kb 950 forintért...)
Úgy néz ki, az ISP programozóm... khmmm, nem igazán megbízható. Ez a szar hol felírja az adatokat, hol nem. Igazából az ISP-programzónál lehet változtatni órajelet meg átviteli sebességet - de ez az interfész gyakorlatilag semmire sem reagál. Na és amikor éppen sikerül neki, akkor utána elindul a bootloader, és tudok usb-n adatot föltenni.
Ajánlanátok egy megfizethető, és többé-kevésbé megbízható ISP programozót?
igazából az a chat szerű beszélgetés csak azért nemjó, mert élőszóban nyilván két mondatban el tudnám magyarázni az okokat.
Szóval: az egész "betűzhető", cserélhető Nano-s dolgot azért találtam ki, hogy ha valakinek odaadom ezt a kis kütyüt (PWM generátor, meg befecskendező-szelep meghajtó ilyesmik), de utólag módosítani kell, akkor csak ezt kelljen utaztatni egy borítékban, a felhasználó nem programoz, kap egy másik modult, bedugja a helyére és kész. Természetesen normálisan nem is lenne szándékomban programozni, mint a végleges verziót az ISP-n, ha kell a plusz hely, vagy éppen le akarom zárni, de amúgy nincs helyhiányom, tehát teljesen jó lenne nekem az USB-s, beépített lehetőség. Még a késleltetett indulás sem probléma. Mondjuk nem volt 90 fokos tüskesorom, de muszáj volt beépítenem a panelt, így aztán az USB-hez egszerűen nem fértem hozzá :)
Most viszont behalt az USB, valamit csinálnom kellett vele. Nyilván nem vagyok profi programozó, ugyanakkor azért valami fogalmam van róla - és nem ebből élek. Ha úgy tetszik, nem sakkozom, nem dohányzom, tehát ez okoz valamiféle szellemi kihívást, illetve a kiégett modulra el tudom verni z el nem füstölt pénzt.
Nekem kimondottan érdekes kivakarni a datasheetből, hogy hogyan működik at Atmel proci, szkópom van 8egy picoscope 4 csatornás), tudom is használni - sokkal izgalmasabb, mint az arduino könyvtárakat variálni.
Amit ajánlottál, megfogadtam, betettem két 10 kohmos ellenállást a D2 és D3-ra, illetve leválasztottam a (kényszerűségből) összekapcsolt D2 és B5 bemeneteket. Ja igen, és kerestem 90 fokos tüskesort. Ehhez szét kellett szednem az egész dobozt - na ezt nem tudtam megtenni tegnap éjjel.
na igen, nem akarom a más forrásódját visszafordítani, bár nem teljesen idegen, mert anno a z80-ast kicsit tanulmányoztam, a logikája pedig ugyanaz.
A bootloader gyakorlatilag egy OS-szerű kódrészlet, amely a külön programozót helyettesíti és megoldja, hogy a soros vonalon (vagy bárhol) érkező kódot közvetlenül (nyilván a megfelelő címtől) a futtatható memóriába írja. Mivel reset után két dolog történhet, vagy a program futtatása vagy az új kód betöltése, így minden reset után van némi (kb. 1 mp) késleltetés, amíg a bootloader gondolkodik, hogy most mi legyen.
Ha van külső programozód, akkor nincs szükség a bootloaderre, mert akár az IDE-ből, akár egy erre alkalmas másik szoftverből közvetlenül fel tudod tölteni a fordított gépi kódú fájlt, ráadásul egyből oda, ahol lennie kell. Ezzel spórolsz tárhelyet és spórolsz reset utáni indulást (kb. 500 ms-tól 1 mp-ig).
Namost. Ha nem tudod, hogy pontosan mit és miért csinálsz, akkor lehetőleg a direkt, usb-meghajtós IDE-s, bootloader-es megoldást alkalmazd, mert egykönnyen úgy találhatod magad, hogy van egy papírnehezéked, amivel semmit nem tudsz csinálni (én eljátszottam, bár máshol rontottam el a folyamatot).
Flash-t nem tudom minek olvasni. Jobbára annak kell rajta lennie, amit rátöltöttél. Ha nem az van, és/vagy másvalaki kódjába akarsz belenézni, akkor a gépi kódról forrásra visszafordított kóddal nem sokra fogsz menni, mert maximum assemblyben lesz nagyjából érthető, de ha az assemblyt vágod, akkor nem szórakoznál itt bootloaderrel.
Szerintem olyan helyen kószálsz próbálgatás címszóval, ami potenciálisan sok kukázható MCU-t eredményezhet.
úgy értem, az ISP-n olvasom ki a chip flash tartalmát.
még régebben skerült működő Nano-ról egy véletlenül töröltre áttenni a bootloadert.
a hex fájlban, remélem jól gondolom, egy adott sorrendben ott vannak előbb a címek, azután az adat, majd végül a kontrollösszeg.
ha a programot írom át (vagyis a végrehajtandót), akkor minden rendben, működik a nano, viszont amikor a bootloader részt, akkor hibát ad.
úgyhogy most kísérletezem.
Régebben PIC-et használtam ugyanilyen egyszerű dolgokra. Ott pl egy hőlégfúvós forrasztás után csinált olyat a 12F690-es, hogy működött, de egyes memóriacímek hibáztak. Ráment egy fél napom. aztán új chip - és minden helyrejött.
annyi újdonság van még, hogy az isp programozás rendszeresen hibás lesz - mégpedig a bootloader program első elemét is rosszul írja fel.
még adok egy esélyt, ezzel a bitburnerrel tudok közvetlenül 1 bytot is javítani a chipben. ha elfogadja, akkor lehet szoftver. ha nem, akkor halott a chip - és akkor átforrasztom a 328p -t, mert van tartalékom
A bemenetre kapcsolt belső felhúzó ilyetén való viselkedéséhez nem tudok hozzáfűzni semmi érdemlegeset.
Bootloader: 1. Ha van Windows a környékeden, akkor a legújabb Arduino IDE-t letöltöd, felinstallálod, úgyszintén hozzácsapod a CH340 USB meghajtót, mert valószerűtlen, hogy a kínai klónokon bármi más lenne, mint az.
2. Van egy leírás, hogy hogyan kell összedrótozni a "mester" és a "slave" lapot. A mesterre felrakod a szoftvert, amivel kvázi programozóként használhatod.
3. Van egy "burn bootloader" funkció az Arduino IDE-ben, amivel megfelelő beállításokkal (Arduino as ISP, illetve a megfelelő a programozni kívánt eszköz a végén, ez esetben Nano 328p) lehet új bootloadert telepíteni.
Ez kábelezéssel, mindennel együtt kb. fél órás művelet.
De.
Ha ISP-n keresztül programozol, akkor nem kell bootloader. Ezzel az indulás is kicsit gyosabb lesz és a memóriát sem pazarlod annyira. Cserébe onnantól csak úgy lehet, simán USB-n keresztül nem.
Az okát nem tudom, soha nem foglalkoztam vele, de a különböző arduino lapok, hiába ugyanaz az MCU, máshogy osztják ki a memóriát.
Annó NANO-NANO viszonylatban tudtam klónozni, bármilyen más viszonylatban nem (Nano-ból volt sok).
hehe, gondoltam, hogy nem jó ötlet feltenni a kapcsolási rajzot, mert már olvastam néhány hozzászólásodat :)
viszont te a szabadidődből segítesz nekem, szavam nem lehet :)
az a helyzet, hogy mivel én csak nagyon mellékhobbiból játszom ezzel, pont csak annyira tanultam meg használni ezt az express pcb nevű kapcs rajz tervezőt, amennyire muszáj volt, másrészt vitathatatlanul van rajta csomó minden, ami hibás vagy értelmezhetetlen - pl egy R20 0R0, aminek annyi a szerepe, hogy ha nem kell nekem egy plusz 5 voltos táp egy periféria miatt, akkor egyszerűen a nano tápját hozza KIFELÉ - vagyis ott most nincs alkatrész.
az a bizonyos zener/tekercs sincs beültetve, szóval semmit sem okoz (csak annyi a szerepe, hogy egy konkrét alkalmazásnál egy vezetéken kialakuló impulzust érzékel (egy kis ferrites cstaolón keresztül), az ad egy triggerjelet - de itt most nem szükséges).
programozni a beépített (gyári) ISP csatin keresztül szoktam, tehát azon a 6pólusú tüskesoron.
amit a felhúzóellenállással nem értek, az az, hogy ha a D3-nál rendesen felhúzza 5 voltra, akkor a D2-nél miért nem ugyanúgy oda. Alacsony jelszintnek látja egyébként, nem is működik az interrup.
*********************
egy gyors kérdésem lehet még?
van két nano-m, mindkettőből sikerült kinyírnom valahogyan a bootloadert, meg 2 UNO-m - abban működik, vahogy újra kellene írnom a Nanokat is. Van is régi lementett tartalmam.
ha ISP-n kiolvasom (AVRDUDE-alapú program, BitBurner, hozzám hasonló nem DOS-agyú egyszerű embereknek), egyértelműen látszik, hogy az UNO-ban a 3F00 címnél kellene lennie a bootloadernek, na ott pont nincs semmi, mert ha kiolvasom a teljes tartalmat, akkor 7F00-nál kezdődik bármi.
A Nano-ból még régebben olvastam ki, abban elvleg 3C00 - de nyilván ott sem volt semmi. Gondolom itt valami címeltolás, vagy lapkezdet offszetérték lehet az oka, ha tudod, világosíts már fel, mert a datasheet olvasásától lassal kifolik a szemem..
Nézzük sorban. 1. Hogy mivel programozod, rajtad áll. Ha regiszterek szintjén akarsz turkászni, akkor azt bármelyik IDE-vel megcsinálhatod. Viszont ha már nem Arduino, akkor az Atmega MCU-khoz van saját ingyenes fejlesztői környezet, abban kicsit egyszerűbb minden, a debug is. 2. Lábat lábra direktbe NEM kötünk, mert amíg éled az MCU, addig simán ki tudja nyírni magát azáltal, hogy a lebegésből átmegy aktív magasba amíg a másik láb csak úgy semmit nem csinál. Ezt javaslom konvertálni szakadássá (PD2/PB5). 3. Amit kiszúrtam: Az Arduino Nano kap tápot +5V-ról és 10V-ról is. Attól függően, hogy melyik éled előbb, úgy fog zárni valamelyik dióda, ennek megfelelően előfordulhat, hogy keresztben mennek dolgok. Ettől lehet a derengés simán. 4. Az eredeti (3474 számú) posztban írtad, hogy ha ISP-n programozod. Na NANO, akkor szerintem húzd ki, dugd rá USB-n a gépre, told fel rá a programot a szokásos megoldással, aztán húzd le a gépről és told vissza a helyére. Igen, macerás, de az kb. 100%-osan működni fog. Ha az ISP-n tolod, akkor a fenti ide-oda kapcsolgatás miatt lehetnek meglepetések. De a galiba nem ez, hanem az, hogy bár azt mondod, hogy az LCD egy "külső 5 V-os tápon van", valójában a rendszer 5 V-os táphálóján csücsül, amibe nagyon keményen beleszól a Nano saját tápja is. Ha a rajzba beteszed konkrétan a Nano tápellátásért felelős részeit (MCU nélkül), akkor azt fogod látni, hogy két stab IC-d lesz párhuzamosan, az U3 és a Nano-ban lévő másik. Ha a rendszernek a programozó (ISP) felől adsz +5V-ot, akkor minden részre adsz, így nyilván az LCD-nek is (akkor is, ha nem akarsz). Ha nem a felhúzós-lehúzós eljárást csinálod, akkor azt javaslom, hogy az R20-at (lásd alább) kiszeded, csinálsz belőle egy szakadást. A Nano-t pedig NEM a nyákon lévő (P6) porton keresztül, hanem a "fedélzeti" ISP tüskesoron keresztül programozod. Ha ugyanis a P6-ot használod, akkor is tápfeszt adsz a rendszer 5V-os hálójának, ha nem akarsz, és ezt a számítógép esetleg gyenguska USB-s tápja plusz a programozó eszköz szintén gyenguska belső stabja nem fogja szeretni (pláne, hogy ahogy elnézem, elég méretes LCD-t gondoltál a rendszerbe integrálni).
5. ISP-re praktikus kirakni az RST-t is, ez most a P6 csatlakozón nincs rajta. Ha ezen keresztül tolod, lehetnek gondok (és ez lehet oka a hibás programozásnak).
6. Mi a kóchengeres elektroncsőnek kell az R20 rövidzár +5V bemenetre? 7. Atmel/Microchip Atmega 328p datasheet, 258. oldal, 28.2 DC Characteristics. Input low: 0,3 Vcc maximum (5 V tápfesznél ez ugye 1,5 V). Input high: 0,6 Vcc minimum (ez 5 V tápfesz esetén 3 V). Ha az input pull-up 1,7 V-ra húzza (mérve!), akkor bemenet állapotának fixen alacsony jelszintet kellene adnia, ezt egy borzasztó egyszer kóddal (Arduino keretrendszerben Serial.println(digitalRead(d2)); delay(20);a loop-ba, Setup-ban kell a Serial.begin(9600); pinMode(D2,INPUT_PULLUP);) lehet ellenőrizni kb. 2 mp alatt. De itt is az van, hogy ha nálad a Port.D2 = PD2 láb, akkor tisztelettel emlékeztetnélek, hogy azt egy tekercsen (L(trig) keresztül földre húzod, és hiába van ott a 4,7 V-os Zener és az 1 k-s ellenállás, az a belső pull-up ellenállással szép feszültségosztót csinál, és mivel a belső pull-up valahol 20 és 50 kOhm körül van... Alapból valahol 0,1-0,25 V közötti feszültséget kapsz a bemenetre. Ez a forgatókönyv nem számol a Zenerrel és a tekerccsel (utóbbi rövidzárnak tekinthető). Ilyen esetekben én mindig függetlenítem magam a belső pull-up-októl, mert különösen határközeli helyzetekben több meglepetést tudnak okozni. Az L(trig) mögé én inkább betennék egy egyszerű és gyors komparátort, akkor megszűnnek a meglepetések, ráadásul azokból eleve digitális jel jönne ki, amivel nem kell kínlódni. +1. Gyalázatos ez a kapcsolási rajz.
A rajzhoz tartozik egy kis magyarázat, mert egy általánosabb célú nyákhoz készült. Autóakkuról (is) kell működnie, ezért a bemenetet a fordított polaritás elleni védelem. A step-up konverter táp pedig szintén nincs benne.
A nyák nincs teljesen betelepítve, pl a PD2 bemeneten nincs semmi más, csak össze van kapcsolva a PB5 bemenettel (mert az van kivezetve egy tüskesorra, viszont a PB5 nem tud INT0-t...
Az LCD a PortC 0-5 kimenetekre van kapcsolva (ahol a tervben a LED-es kijelző van).
a pullup-os lábon SEMMI NINCS, ez a furcsa. ez a két láb az INT0 és az INT1, pont ezért használnám. az egyik működik, másik nem. és nincs zárlatban, mert kimenetként működik.
nem az arduinoval programozom, hanem egy szerb fickó programjával, regiszternevek/bitek alapján. lehet, hogy a szoftver lenne hibás?!
Egy kapcsolási rajzot, ha volnál szíves. A derengő kijelzőre az van, hogy ha nem megfelelő sorrendben kap tápfeszt a rendszer, akkor pl. dióda nyitva maradhat akkor is, amikor nem kellene. A pull-up kérdéskör érdekes, ez attól függ, van-e rákötve valami. Illetve a datasheet sokat tud ilyenkor segíteni.
van nekem egy saját kis "shield"-m, ami két fet-et tud meghajtani, meg egy LCD-t, illetve encodert, nyomógombot fogadni. Egy Nano-t kell beletenni. Igen, kínai klónt. Minden rendben lenne, csakhogy:
- ha ISP-n akarom programozni, akkor elég sokszor bukik az újraellenőrzésen, hibás tartalommal. néhány kísérlet után működik.
- beépített állapotban többször nem működik az ISP, mint igen, közben kicsit dereng az LCD fénye, ami azért furcsa, mert pont az LCD egy külön külső 5 voltos tápon van... (a panelt 12 voltról hajtom, egy 10 voltos stabi adja a feszültséget a fet drivernek meg a Nanonak (amink ugye saját belső stabija van), meg van egy 5 voltos külső stabi, pl, az LCD-nek). Az adatlábakon kapna visszafelé tápot? Mert akkor is ez van, ha a LCD tápját, illetve GND-jét lehúzom.
A legdühítőbb: ha beállítom a portD.3 lábat bemenetnek, és internal pullupot kérek rá, akkor rendben megteszi, megjelenik az 5 volt.
Ha ugyanezt a portD.2-re kérem, akkor kb 1,7 volt alakul ki rajta.... Kimenetként deklarálva a portD.2-t, ott van az 5 volt.... (net szerint másnak is volt ilyen). Másik Nano ugyanaezt csinálja.... magyarázat?
(nyilván tudok rá forrasztani egy 10kohms ellenállást, de nem értem)
Először nézd meg, hogy a fejlesztő lapkán milyen illesztő IC van. Ez a második legnagyobb a sorban és közel van az USB csatlakozóhoz. Alapvetően három eset lehetséges, vagy Atmel (a gyári, eredeti Arduino paneleken), FTDI a jobb klónokon és a régebbi gyári Arduino paneleken vagy CH340. Ezekből az első kettőhöz az Arduino IDE tartalmazza a gyári meghajtó szoftvert, a harmadikhoz nem. Ehhez: https://sparks.gogo.co.nz/ch340.html
Az eszközkezelőben mindenképp látnod kell magát a kártyát vagy a portot. Ha tehát ott nem látod, akkor az USB-csatolóval van baj.
Letöltöttem az Arduinohoz a szoftverjét egy Win 8.1-re. Sajnos nem lehet kiválasztani a prtot, mert az a menüpont nem aktiv. Mit lehet tenni szerintetek?
Legelőször kellene a kód, anélkül nem sokra fogunk menni. (és ne copy-paste, hanem codeshare vagy valami hasonló kódmegosztó és ide csak a linket illeszd be)
Az elképesztő (értékelhetetlenül) kis képen annyit vélek felfedezni, hogy a két shift register négy-négy külön lábra van kötve, tehát nagy eséllyel a kódban is két eltérő lábcsoport, illetve "shift out" objektum van definiálva. Az egyik a kijelzőket, a másik meg a bemeneti választokat kezeli. Valószínűnek tartom, hogy a kódban itt van a galiba. Arduino viszonylatban a 595 kicsit háklis az időzítésre és a sorba kötésre sajnos. Ez 3-nál lényegtelen, 5-öt sorba kötve már előfordulhatnak (bár valószerűtlenek) galibák.
Szóval, először kód, szerintem, utána tudunk bármi hasznosat mondani.
Szia, Ahogy szabadabada is írta, kissé más megközelítésben, ami a facebookos linken van, az ipar-5 szintű kollaboratív automatizálás. Ez most a mechatronikai ipar csúcsa, a jelenlegi automatizálási fejlesztések ebben és az AI alapú önállóság témakörében folynak (lásd pl. Tesla "önvezető" funkció). Ha ilyet akarsz, akkor kezd azzal a megvalósíthatósági tervet, hogy felírsz egy 8, inkább 9 számjegyű kezdeti beruházási igényt (forintban) és nagyjából 24 hónapot a megvalósításra. Az, hogy pontosan mit kérsz, 2-3 A/4-es oldalon sorolva kellene első körben leírni, majd ezt követően a fejlesztés lehetőségei (elsődorban a rendelkezésre álló idő, a megadott cél, a humán és műszaki erőforrások adta korlátok) összefésülése után jön ki, hogy mikorra és mennyiért lehet ezt megvalósítani. Elvben van olyan applikáció, amihez egy "Arduino" elég és az itt összegyűlt tudás és tapasztalat megfelelő mennyisége összpontosul egy olyan embernél, akinek ideje és lelkesedése is van ezt megcsinálni. Én most egy fejlesztés kellős közepén vagyok, az első modultesztek után az éles tesztet készítjük elő. 2-3 hónap múlva, ha nem jön folytatás a mostani megbízótól, elvben rá fogok érni. De ha olyasmit akarsz, ami a filmen van, azt én biztos nem tudom megcsinálni (a fórumban valószínűleg más sem), és nagy valószínűséggel nem a néhány százezres kategória lesz.
Természetesen az ajánlat díjazás ellenében értendő. Tisztában vagyok az árakkal és ezért is bátorkodtam kiírni, hogy szakit keressek, mert nincs időm kísérletezni. A feladatokat igyekszem minden esetben előre pontosan meghatározni. Amennyiben sikerült egy projektet pontosan megfogalmazni, hogy mindkettőnk számára érthető, akkor egy árajánlatot kérek. Így a projektbe be tudom építeni az ajánlatba foglalt árat és minden a helyén van. Az eszköz (arduino) kiegészítő alkalmazás vezérlés, mint pozicionáló, lengető egység, biztonsági felügyelet, stb. Talán így érthetőbb: https://www.facebook.com/autocobot/
Az ugye megvan, hogy ez a feladat valódi, a leírásból nem tisztán kideríthető bonyolultságától függően százezer forintos nagyságrend is lehet, már ami a díjazást illeti?!
Felprogramozott arduinora lenne szükségem. A programozás néhány egyszerűbb, mint bejövő jel nagyságától (energiájától) függően adott számú impulzus jel kiadása és hasonlók. Bonyolultabb, mint szervo motor mozgatása több változtatható paraméter alapján. Ebben kérném a segítségeteket, hogy van e valaki, aki tudná vállalni a fent említett feladatokat, Ezek a feladatok ismétlődőek, és mint minden esetben a fejlesztés sosem áll meg, tehát bele kell nyúlni esetenként az aktuális igények miatt az „előző” programba.