FIGYELEM !!!!

Az fórumot a
http://forum.hobbycnc.hu
címen találjátok meg változatlan tartalommal!

Az átregisztrációhoz szükséges teendőkkel emailt küldtünk a regisztrált email címedre. Nézd meg a spam mappában is!!

Ha esetleg megváltozott a címed, ezen a fórumon még működik az üzenetküldés, írj egy üzenetet "moparman" felhasználónak.
(Fórum költözés topik, 309. hozzászólás, a nevére kattintva tudsz írni neki.)
Hobby CNC Fórum   >>   Fórum   >>   Az AVR és lehetőségei...
Rekalaca kezeli! :))

Ez a téma le van zárva!

Listázás időrendben


 © NewUser2016. aug. 19. 18:19 | Válasz | #1045 

 © Csuhás2016. aug. 19. 15:42 | Válasz | #1044 
Nincs valami jó táblázat amivel össze lehetne hasonlítani az xmega procik perifériáit?
Pl ilyen kérdésre keresem a választ melyik a legkisebb lábszámú xmega amiben van crypto engine (AES codec )?

 © cree22016. jún. 12. 13:19 | Válasz | #1043 
Akkor senki nem érti a modbus hibba jelenséget amit leirtam?

 © Csuhás2016. jún. 07. 12:08 | Válasz | #1042 
Időközben némi kutatással erre jutottam:

Atmega 128 lock bitek jelentése:
A bitek törlés után H értékűek, így semmilyen korlátozás sincs. Egy bit programozva egyről nullára vált.
A bitek az alsó helyi értéken az LB1-el indulnak. A legfelső két bit nincs használva.
Azaz a lockbyte felépítése: NC | NC | BLB12 | BLB11 | BLB02 | BLB01 | LB2 | LB1 (7->0 bit)

Az egész flash területre vonatkozó bitek:
LB1: Programozva akkor külső eszközzel nem írható a flash
LB2: Programozva akkor külső eszközzel nem olvasható a flash

Lehetőségek:
11: nincs védelem
01: értelmetlen
10: csak olvasni lehet
00: se írni se olvasni nem lehet

A boot területre vonatkozó bitek:

BLB01: Programozva a lodaer nem tudja írni a program flash területet
BLB02: Programozva a loader nem tudja olvasni a program flash területet

Lehetőségek:
11: nincs védelem a loader írhat olvashat ( ez kell a bootloaderhez )
01: nincs értelme
10: ennek sincs sok
00: se írni se olvasni nem lehet a loderből

BLB11: Programozva a alkalmazás nem tudja írni a boot flash területet
BLB12: Programozva az alkalmazás nem tudja olvasni boot területet

Lehetőségek:
11: nincs védelem az applikáció írhat olvashat a boot területen
01: nincs értelme
10: az applikáció olvashatja a boot területet ( pl crc számolhat a boot részről )
00: se írni se olvasni nem lehet az alkalmazásból a boot területet.

Mindent összevetve egy bootloaderes alkalmazás védelmére
10 11 00 azaz ECh érték alkalmas, ami tiltja a külső programozónál az írás olvasást
a loader írhat olvashat, az alkalmazás pedig csak olvashatja a loader területét.

A betöltött program eltulajdonítsa ellen ezen kívül még ki kell kapcsolni a jtag lehetőséget,
a bootloaderbe kell egy dekódolás ami az általad kódolva kiadott tartalmat a beégetés közben a chippen belül dekódolja.

Kérem hogy aki ért a témához ellenőrizze hogy jól gondolom-e a működést!

 © elektron2016. jún. 06. 21:34 | Válasz | #1041 
Hardveres gondod lesz szerintem, csináltam olyat, RS485 - ben, nagyon nem mindegy volt mikor adtam ki a jelet, hogy a zavarokat ne vegye ... nem modbus volt de az mindegy ebből a szempontból.

 © cree22016. jún. 06. 18:32 | Válasz | #1040 
Jó idö és pénz töltésmés költés az ilyen amikoz a kezedbe mibden eszköz már és nálam nem müköűdik persze akik meg fejleztik és beszélnek rola azoktol meg hiába kérdezel nem beszélnek veled ....

 © cree22016. jún. 06. 18:25 | Válasz | #1039 

 © cree22016. jún. 06. 18:18 | Válasz | #1038 
© lazi
© robroy007
köszönöm hgy be néztettek!
van 2 digitális teljesitmény mérö ami modbuszos adatokat tud is küldeni minden meg van hozzá az alap könyvtás és mintapéldák is sdm120 vanak konfigurálva!
Nekem sdm220 tipus van meg ez funkcioban is többet tud mérni és a kiolvasot regiszterek is megegyznek ugy 95% ba de amikor elkezdem monitorozni sdm220>>>serial1 porton atmgán keresztül akor csak egy paraméterezést bir kiolvasni az adot egy regiszter pl cos értéket ez mind modbus port sebeség 2400 baund tobbi érték nem ad mért adatokat v..a...w hz..kwh...stb!
ha felveszem a modbus baundot 9600 akor csak fekvencia regiszter ad vissza jó értéket!
nemtudom a kiolvasási érték sebeség késleltetési idök fügvénye enyire befolyásolja a modbus registereket kiolvasását?

arduino könyvtár:
https://github.com/peninquen/Modbus-Energy-Monitor-Arduino

csak ezel a kodal müködik a kiolvasás cos és a fekvencia:
https://github.com/peninquen/Modbus-Energy-Monitor-Arduino/tree/master/Stable%20version/Modbus-Energy-Monitor-max-min

Pc n az sdm220>>rs485/usb átalakitovan qModMaster szoftverel jo látszodank hogy a regiszter értékek változnak az eszköz probálná küldeni!

 © Csuhás2016. jún. 06. 15:51 | Válasz | #1037 
Nagyon ciki de nem igazán boldogulok el az atmega128 lock bitjeivel. Le tudná nekem valaki érthetően írni a három bitcsoport jelentését?
Illetve milyen beállítás kell, és miért az, a maximális védelemhez egy bootloaderrel működő eszközön?

 © robroy0072016. jún. 04. 21:15 | Válasz | #1036 
mi a kérdés pontosan?

mi és mi között kell modbussal kommunikálni
DS18B20-hoz betetted az ellenállást a lábak közzé??? nekem vagy 2 napom ment rá mire eszembe jutott

 © lazi2016. jún. 04. 20:12 | Válasz | #1035 
Írd le a problémádat. A lehető legtöbb hibával, minél nagyobb marhaságot kérdezel annál jobb. Ne aggódj, 5 - 6 nap érdektelenség után garantáltan megjelenik egy rakat ember aki 10 percen belül kioktat. Aztán ki kell szűrni a használható infókat a válaszokból.

 © cree22016. máj. 31. 21:07 | Válasz | #1034 
Senki?
Vagy modbus ismeret konroleres alapon?

 © cree22016. máj. 28. 13:55 | Válasz | #1033 
Valaki jártas itt modbus+arduino komunikációban?

 © Csuhás2016. máj. 28. 07:00 | Válasz | #1032 
Szerintem az árnyékolást csak a proci felőli oldalon kösd be panel tápfesz gnd pontjára

 © batesz2016. máj. 28. 06:41 | Válasz | #1031 
Sikerült árnyékolt vezetéket beszereznem: 3 ér, közös árnyékolás.
Abban kérem még a segítséget, hogyan kössem be az árnyékolást? Kondin keresztül, vagy direktbe kössem a GND-re?
A DS18B20-hoz +5V, GND és Adat vezetékek vannak bekötve.

 © random2016. máj. 27. 11:52 | Válasz | #1030 
Ha nem arnyekolt kabelrol van szo, itt az alkalom kiprobalni azzal.

 © Csuhás2016. máj. 27. 11:35 | Válasz | #1029 
Meg kellene nézni szkóppal a zavarjeleket. Majd rc taggal, vágó diódával, leválasztó inverterrel bevinni a jeleket a prociba.

 © batesz2016. máj. 27. 06:23 | Válasz | #1028 
Ami eddig elkerülte a figyelmem, az az, hogy a DS18B20 egy 10m hosszú UTP kábel végén kapott helyet, és az nincs zavarszűrve! Az a minimum, hogy egy ferritgyűrűt ráteszek, és megnézem az segít-e valamit.

 © batesz2016. máj. 26. 21:49 | Válasz | #1027 
Szia,

Diszkrét alkatrészekből fogom összerakni, nem akarok másik "zavarérzékeny" egységet hozzáfűzni.
Az az érdekes, hogy adott helyen hónapokig ment, hiba nélkül, utána történt valami, és elkezdett fagyogatni. Csak ott, azon a területen, de másik szabályzó is ugyanazt csinálja. A betáp 230V oldalon kapott EMI filtert, sokat nem segített.

 © random2016. máj. 26. 21:22 | Válasz | #1026 
Ha az EMI-tol megmakkan a mikrokontroller, akkor nyilvan csak a tapelvetel segit. Korlatozottan frappans megoldas egy masik, gyengebb PIC-et/AVR-t hasznalni, ami idonkent eletjelet kap a biztositando mikrokontrollertol, ennek elmaradasa eseten pedig kikapcs/bekapcs. Ez persze olcsobban is kivitelezheto diszkret alkatreszekkel, de ugy nagyobb lesz a pin count es kisebb a rugalmassag.

Tapasztalataim alapjan szokoevente egyszer meg rendes tap, korrekt arnyekolas es zavarvedelem eseten (tehat tkp. "csak ugy", indeterminisztikusan) is kepes elpihenni a MCU. Ettol fuggetlenul persze nem art szkoppal es/vagy spektrumanalizatorral beleszagolni a levegobe, mert par ora munkaval es egysegenkent 100 Ft pluszkoltseggel napi 10-rol evi 0,1-re csokkentheto a kifekvesek szama.

 © batesz2016. máj. 26. 20:52 | Válasz | #1025 
Szia,

A külső és belső RESET is működik, ha a program akad el. Ezt teszteltem.
Viszont előfordult már többször olyan, hogy csak a táp ki és bekapcsolása után éledt fel.
DS18B20 és 1602LCD van rajta, a kimenetre 5 db opto csatlakozik. Volt egy alkalom, amikor a programot is újra kellett töltenem, a táp ki-be sem segített rajta.
Megpróbálom egy olyan külső WDT-vel, ami a tápot indítja újra, hátha az segít.

 © Csuhás2016. máj. 26. 10:23 | Válasz | #1024 
Mit jelent hogy nem jött be? Nem resetrelt? Jól értem hogy a reset nem segített csak a táp ki-be kapcsolás? Nem lehet hogy nem a proci akad ki hanem valami periféria?

 © batesz2016. máj. 25. 22:22 | Válasz | #1023 
Sziasztok,

Zavarokkal teli, ipari környezetben működő szabályzóval vannak gondjaim: a program sok esetben megakad, a szabályzó lefagy. Belső WDT-vel próbálkoztam, nem jött be. A külső WDT sem hozza a várt eredményt. Zavarszűrő a táp előtt, és után is. Amikor a külső WDT sem működik, akkor a hardveres RESET sem segít, csak az újraindítás.
Találkoztatok már ilyen esettel?

 © cree22016. máj. 02. 21:32 | Válasz | #1022 
kültem privit!

 © GPeti2016. máj. 02. 20:58 | Válasz | #1021 
Persze, többen is itt vagyunk.

 © cree22016. máj. 02. 18:36 | Válasz | #1020 
sziasztok!

Valaki tud segiteni arduino programozásban?

 © lazi2016. ápr. 16. 14:29 | Válasz | #1019 
Órajel jó volt, 2561-nél a DIV8 okozhat problémát, de nem az volt.
A sim valóban átugorja, de az nem volt benne.
Kicsit prózaibb volt, nem volt feldugva egy jumper, azért nem ment a kijelző.


 © Csuhás2016. ápr. 15. 14:21 | Válasz | #1018 
Két ötlet:
Helyes a megadott órajel érték?
Mintha volna olyan fordítási opció ( $sim ) ami az időzítések átugrását állítja be a szimulátoros nyomkövetés érdekében.

 © lazi2016. ápr. 15. 13:53 | Válasz | #1017 
Üdv

BASCOM problémám adódott. A waitms parancs nem akar működni, a program lefut, beég a prociba, de az összes időzítés parancsot kihagyja, átlép rajta, sehol nincs várakozás.
Volt már ilyen nyűgöm, de a probléma megoldása után nem véstem fel a kalendáriumba a módszert, hanem jótékonyan elfelejtettem. Van valakinek hasonló emléke és megoldási módszere?

 © Csuhás2016. ápr. 13. 16:00 | Válasz | #1016 
No azt hiszem megoldódott! Üvölteni tudnék...
Bascom alatt fejlesztek és onnan is szoktam programozni ezért a libusb driver volt telepítve a gépemre.
Nos az emlegetett hibák mind ebből felállásból származnak.
Felrakva a jungo drivert, és avrstudióból nézve már olvasható a chip id, törölhető, programozható a chip.
Sajnos két napig ezt nem léptem meg és csak bascomból illetve avrdude programozó felületről próbálkoztam.
Szóval a jó édes nénikéjüket!

 © LZ2016. ápr. 12. 09:55 | Válasz | #1015 
Húha...

Ott van baj bőven. Gondolom a programozód másik panelen megy. VAgyis az kizárható.
Erősen HW hiba szagú a dolog, vagy nem úgy sikerült huzalozni a panelt vagy alkatrész hiba.
Pl az AVcc lábon lévő induktivitás nem szakadt-e.
Xmegának tudtommal egyáltalán nem kell külső órajel programozáshoz (nem lehet olyan állapotba tenni) tehát az biztos nem.
Nyák zárlat esetleg? Egyszer kaptam olyan nyákot hogy finom porszerűen rajta volt a réz a vezetősávok között.
Egyébként studióval próbálkozz szerintem. De ne a hetessel, mert az szegény nagyon gáz lett.

 © Csuhás2016. ápr. 11. 20:37 | Válasz | #1014 
A problémámat elfedte egy másik:
Történt hogy az egyik programozás után nem ment a bootloader. Vettem az avrisp mk2 programozót és beírtam újra a loadert. A programozáskor nem jelzett hibát de a fuse bitek írásánál volt hibajelzés. Viszont innentől kezdve tégla lett a xmega 256a3u prociból. Nem lehet írni mert nem tudja a chippet azonosítani mert ID-ként zérusokat olvas. Adtam neki külső órajelet de semmi változás. Kicseréltem a procit. Minden jó volt de az avrisp-vel való egyszeri programozás után ugyanaz a helyzet. Ugyanígy viselkedik bascom programozó felületről és avrdude alól is.
Ha bascomból rádugok egy másik panelt és felismertetem a procit akkor átdugva a döglött panelre akkor tudom olvasni a fuse biteket. Itt az első protected byte zérus azaz minden védelem be van kapcsolva, a többi config byte rendben van. Ha ilyenkor kiadok egy törlés parancsot akkor nincs hibajelzés, de a procit továbbra sem ismeri fel, de ha egy másik panelről felismertetve újra kiolvasok akkor látszik hogy a lock byte maradt zérus. Mi lehet a hiba, illetve mit lehetne méh kipróbálni?

 © LZ2016. ápr. 11. 07:59 | Válasz | #1013 
Csörgess már meg Attila mert nem találom a számod.
Megnéztem a programot...

 © LZ2016. ápr. 11. 07:50 | Válasz | #1012 
BOD be van kapcsolva?
Mert ha igen és az értéke is jó helyre van belőve, akkor teljesen mindegy milyen lassú a táp felfutásod.

 © Csuhás2016. ápr. 10. 20:21 | Válasz | #1011 
Az rendben van, ellenőriztem. No meg adatsérülés kizárólag ki/be kapcsoláskor van, egyébként hibátlanul működik.

 © cree22016. ápr. 10. 20:08 | Válasz | #1010 
hidegités...tuskék simitása proci tápfesznél...
vagy ami még jó elem..akku táprol inditasz cpu részt ....(alvo üzemodbol) pl

 © Csuhás2016. ápr. 10. 19:50 | Válasz | #1009 
Bootloader van. Elég összetett mert sd kártyára menti a fw és onnan tölti be, mert így lehet frissíteni a kártyára másolással is. Ráadásul a fw aes kódolt hogy nem lehessen lenyúlni. A táp felfutásra rámérek, mert többféle táp van a panelon. Feszültségeket, zajt mértem rajtuk, de felfutást azt eddig nem. Köszi az ötletet.

 © pbalazs2016. ápr. 10. 16:18 | Válasz | #1008 
Van bootloader? Arra gondolok, hogy induláskor esetleg butaságot csinál.
A másik gondolatom, hogy a nem megfelelő táp felfutás okoz gondot. Mérd meg a felfutási meredekséget, és vesd össze az adatlappal. uC-nél még nem találkoztam olyannal, hogy a nem megfelelő táp felfutás gondot okozna, de sok egyéb esetben már igen, amikor megbolondította a belső táp és reset áramköröket.

 © Gyárfás Attila2016. ápr. 10. 13:30 | Válasz | #1007 
Üdv
Egy kis sígítség kellene, arduinoban. Nem cnc,de hátha valaki profi ebben.
Van egy újabb óra projekt. Egy Adafruit Neopixel 60, Ws2812 led gyűrűből áll, rtc, és egy arduino nano-val. A lényeg.
A progi egy oldalról van, működik is rendesen. De egy gond van! Az ebay ről rendeltük a led gyűrűt,ami persze kinai koppintás. És sajnos a kis kinaiak elbaszták, mert az adat bemeneti jel pont rossz oldalon van. Ugy néz ki minha megtükrözték volna a nyákot. Ezért a programv(idő kijelzés) balra megy. A mellékelt linken látható a videón. És a fotókon is. A fekete nyák az eredeti, a kék nyák (ez van nekünk) a kinai. A kérdés, meg lehetne e a programot úgy módosítani,hogy a helyes irányba (jobbra) menjen a kijelzés?
A program is a linken mellékeltem.
ring clock
Ha tudna valaki segíteni, megköszönném.

 © Csuhás2016. ápr. 09. 21:54 | Válasz | #1006 
Ezt ismerem, de ide nem kell, normál estben hetek is eltelnek két konfiguráció változás között.

 © cree22016. ápr. 09. 21:48 | Válasz | #1005 
van olyan modszer ami kiméletes eeprom irási ciklus megnövelésében!
vagyis ha ugyan az az érték van eeprom értékben az uj érték meg egyezik nem irja ujra csak ha eltér a régi érték ez eeprom update....

 © Csuhás2016. ápr. 09. 21:30 | Válasz | #1004 
Az xmega adat eepromjában ritkán változó konfigurációs adatokat ( ip cim és hasonlók ) tárolom. Ezek ritkán változnak. Az egész területről van egy másolatom ugyanitt magasabb címen. Mindkét területnek van itt tárolva crc kódja. Minden bekapcsoláskor ezt újra számolom. A tapasztalat az hogy kb minden huszadik bekapcsoláskor az elsődleges területen nullázódik néhány byte. A terület elején, egymás utáni de adatszerkezet szerint nem összefüggő byteok. A másolt terület eddig még nem volt sérült. Ha hibát találok akkor a hibátlan crc-jű területről visszamásolom az adatokat. Hétfőn kipróbálom hogy az egészet hátrább tolom egy adatterületnyivel és megnézem hogy a véletlen nullázódások maradtak az eredeti címen vagy követték az adatblokkot. Errata nem rossz ötlet, megnézem. Eddig a fórumokat böngésztem, nem sok eredménnyel. Még annyi hogy Bascomban van a program, és abban azért akad néhány bug, pláne az xmega kezelésében.

 © pbalazs2016. ápr. 09. 20:58 | Válasz | #1003 
Mindig ugyanarra a területre mentesz elsődlegesen? Nem lehet, hogy túllépted az írási ciklust? Elsődleges mentés után csinálsz RAM-EEPROM összehasonlítást? (gondolom RAM-ban van a kiírandó adat) A másodlagos mentés is ugyanabban az EEPROM-ban van, csak más területen? Errata nem mond semmit?

 © Csuhás2016. ápr. 09. 19:01 | Válasz | #1002 
Mondjuk ez nem rossz ötlet, van a rendszerben sd kártya, arra mentem az adatokat lehetne oda is egy eeprom mentést készíteni. Mondjuk az eddigi tapasztalat alapján az elsődleges adat eeprom terület szokott sérülni, míg ugyanabban az eepromban levő másolat eddig még mindig ép maradt. Így onnan mindiig visszaállítható volt a konfiguráció.

 © cree22016. ápr. 09. 18:57 | Válasz | #1001 
külsö sd kártya lehet megbizhatobb lene ha sokszor kell menteni szenzor logolás pl még ha 1s ként is eeprom véges lesz rövid idön belül... vagy mentési ciklusra valami timeres figyelés beteni...

 © elektron2016. ápr. 08. 15:52 | Válasz | #1000 
Lehet jobb lenne, ha külső EEPROM-mal menne.

 © elektron2016. ápr. 08. 15:51 | Válasz | #999 
Gondolom a táp megkapása elengedése sem mindegy, hogy történik, lehet legjobb lenne, ha valami komparátor figyelésével kapna a processzor tápot, kikapcsolásnál is, lekapná a resetjét stb. hogy halálbiztos legyen a működése.

A sima megáknál is olvastam az EEPROM nem valami megbízható, csak ha valami kül9n védelemmel van felszerelve az áramkör, de azt meg nem szokták csinálni, ha az ember magának megoldja akkor lehet menne garantáltan.

 © Csuhás2016. ápr. 08. 15:45 | Válasz | #998 
Menet körben tudnom kell írni olvasni. A BOD 2.6V jelenleg ( az xmega 3.3V-os )
A működés során az eeprom írás után végzek egy olvasást a 0 címről hogy oda álljon a pointer, de az sem igazán segített. A program futása közben számolgattam a crc-t de nincs hiba csak a ki/be kapcsolás rontja az adatot az is csak a eeprom terület elején. Mindjárt hátrébb teszem próba célból az adatokat, csak épp megmakkant a procim vagy a programozóm: nem ismeri fel cpu-t (chip id: 0000 )

 © elektron2016. ápr. 08. 15:36 | Válasz | #997 
FUSE bitekkel esetleg, én sem tudom csak gyanítom, meg kell nézni. Lehet, hogy nem tudja, az EESAVE bit a chip erase-nél védia tartalmát, az lehet menet közben nem védi meg az írástól.

A BOD level biteket mindenképp 4.5V-ra érdemes tenni, az valamennyire megvédi, ha atáp megy lefele, akkor proci megáll így.

 © Csuhás2016. ápr. 08. 15:29 | Válasz | #996 
Lehet az adat eepromot írásvédettre kapcsolni?

 © elektron2016. ápr. 08. 15:27 | Válasz | #995 
EEPROM-ot írásvédettre programozni talán ?

 © Csuhás2016. ápr. 08. 14:49 | Válasz | #994 
Ötletet kérek.
Van egy elég nagy műszer vezérlő programom egy atxmega256-nak több mint felét megtölti. A beállításokat a belső adat eepromban tárolom, de mert volt adatvesztésem ezért a fontos területről másolatot készítek és az eredeti illetve a másolt részről is crc-t számítok.
Bekapcsoláskor ellenőrzöm és ha kell javítom. A tapasztalat azt mutatja hogy az elsődleges terület gyakran sérül, néhány, vagy akár egy tucatnyi byte is nullázódik. Kérdés mit lehet tenni áramkörileg vagy program oldalról a ki/be kapcsoláskori adatvesztés megelőzésére?

 © M.L.2016. ápr. 05. 18:00 | Válasz | #993 
Megjöttek a tranzisztorok, ki is cseréltem.
Sikerült megoldani, a programot is. Most működik 2 tolómérővel. A többi már könnyen fog menni. Köszönöm a segítséget.

 © M.L.2016. ápr. 03. 16:33 | Válasz | #992 
A program működik, egy tolómérőt kiír. A próbálgatások alatt két erősítőt megsütöttem. Nincs itthon több transisztorom. Vettem a neten. Talán kedden megjön. Addig építem a házat, a kijelzőnek. Köszönöm a segítséged.

 © hidroponi2016. ápr. 03. 11:23 | Válasz | #991 
ha kiszeded a decode rutinbol a kiiratast es a loop-ban a for zaro kapcsos zarojele utan iratod ki oket a results tomb-bol akkor egyszerre lathatod mindet.

 © M.L.2016. ápr. 03. 10:38 | Válasz | #990 
A program szintaktikailag jó. Működik is. :-)
egyelőre egy tolómérőt tudok kiíratni.

 © M.L.2016. ápr. 02. 19:25 | Válasz | #989 
Egyelöre hibaüzeneteket kapok. Megpróbálom kijavítani. Vagy ha Neked nincsenek hibaüzenetek, el tudnád küldeni e-mailben az .ino fájlt?


 © M.L.2016. ápr. 01. 21:14 | Válasz | #988 
A bekötés nem gond, azt a részét még érem is. :-)

 © M.L.2016. ápr. 01. 21:05 | Válasz | #987 
Csak annyi a bajom, hogy az esztergámhoz szeretnék digitális kijelzőt csinálni Arduino Uno-val. Van 3 tolómérőm. Azokat szeretném dekódolni. Kiírni egy LCD-re, hogy jobban lássam. A neten találtam egy programot ami 1 tolómérőt tud kiolvasni. Ezt a programot szeretném átalakítani, hogy tudjon 3 tolómérőt dekódolni. Röviden ennyi.

 © M.L.2016. ápr. 01. 20:59 | Válasz | #986 
Köszönöm, sajnos ma már nem tudom kipróbálni. Közbejött valami, de alig várom, hogy teszteljem.

 © hidroponi2016. ápr. 01. 17:19 | Válasz | #985 
koszi, odaraktam.

 © hidroponi2016. ápr. 01. 17:18 | Válasz | #984 


ide feltoltottem

ez csak annyit csinal, hogy 3 tolomero adatait
lekeri es kiirja. illetve csinaltam egy results tombot amibe bele is pakolja az egyes eszkozok eredmenyeit. szintaktikailag ugy nez ki jo. arra hogy jol mukodik is eszkozok hianyaban nem tudok garanciat vallalni.

(nem tudom mennyire vilagos, azt hogy az arduinod melyik digi bemenetere kototted a tolomeroidet azt a clockpin es datapin tombok ertekeivel tudod beallitani. most ugy nezki az elso mero a 4-5, a masodik a 6-7 es vegul 8-9)

sok sikert!

 © elektron2016. ápr. 01. 15:42 | Válasz | #983 
Mi is a bajod végül is , mi nem jó, vagy érthető ?

 © gab272016. ápr. 01. 07:27 | Válasz | #982 
Próbáld meg itt, sokaknak bevált az elmúlt bő 10 évben.

Így fog kinézni a kódrészlet, ha a C nyelvhez tartozó kiemelést választod.

 © M.L.2016. ápr. 01. 06:40 | Válasz | #981 
Az nagyon jó lenne. :-)

 © hidroponi2016. márc. 31. 21:59 | Válasz | #980 
holnap ha lesz egy kis idom, megprobalom leirni..

 © M.L.2016. márc. 31. 21:00 | Válasz | #979 
Így kellet volna?
[code]
int i;
int s;
int sign[] = {0,1,2};
long value[] = {0,1,2};
float result[] = {0,1};
int clockpin[] = {4,6,8};
int datapin[] = {5,7,9};
unsigned long tempmicros;
[/code]

 © M.L.2016. márc. 31. 20:37 | Válasz | #978 
Dehogynem
a 7. és 8. sor pl.
Aztán a Serial.begin után
A void loopután is az áll amit javasoltál.
A mult héten kezdtem a programozással foglalkozni. Tudom ez nem kezdő feladat, de erre lenne szükségem.

 © hidroponi2016. márc. 31. 20:31 | Válasz | #977 
nem latom, hogy alkalmaztad volna azokat a dolgokat, amiket emlitettem.

a pin beallitasokkor nem hivatkozol a tomb adott elemere es a hasznalatkor sem.

 © M.L.2016. márc. 31. 20:14 | Válasz | #976 
úgy gondolom, már csak a decode rész ami nincs rendben. Legalább is remélem.

 © M.L.2016. márc. 31. 20:11 | Válasz | #975 
Jól elszúrtam a topicot

 © M.L.2016. márc. 31. 20:09 | Válasz | #974 
[code]
int i;
int s;
int sign;
long value;
float result0;
float result1;
int clockpin[] = {4,6,8};
int datapin[] = {5,7,9};
unsigned long tempmicros;

void setup() {
Serial.begin(9600);
for(i=0; i < sizeof(datapin); i++) {

pinMode(clockpin, INPUT);

pinMode(datapin, INPUT);

}

}

void loop() {

for(i=0; i < sizeof(datapin); i++) {

pinMode(clockpin, INPUT);
pinMode(datapin, INPUT);
}

while (digitalRead(clockpin)==HIGH) {} //if clock is LOW wait until it turns to HIGH

tempmicros=micros();

while (digitalRead(clockpin)==LOW) {} //wait for the end of the HIGH pulse

if ((micros()-tempmicros)>500) { //if the HIGH pulse was longer than 500 micros we are at the start of a new bit sequence

decode(); //decode the bit sequence

}

}

void decode() {

sign=1;

value=0;

for (s=0;s<23;s++) {

while (digitalRead(clockpin)==HIGH) { } //wait until clock returns to HIGH- the first bit is not needed

while (digitalRead(clockpin)==LOW) {} //wait until clock returns to LOW

if (digitalRead(datapin)==LOW) {

if (i<20) {

value|= 1<<i;

}

if (i==20) {

sign=-1;

}

}

}

result0=(value*sign)/100.00;
result1=(value*sign)/100.00;

Serial.print(result0,2);
Serial.println(result1,2);
delay(1000);

}

[/code]

 © M.L.2016. márc. 31. 20:08 | Válasz | #973 
[code]int i;
int s;
int sign;
long value;
float result0;
float result1;
int clockpin[] = {4,6,8};
int datapin[] = {5,7,9};
unsigned long tempmicros;

void setup() {
Serial.begin(9600);
for(i=0; i < sizeof(datapin); i++) {

pinMode(clockpin, INPUT);

pinMode(datapin, INPUT);

}

}

void loop() {

for(i=0; i < sizeof(datapin); i++) {

pinMode(clockpin, INPUT);
pinMode(datapin, INPUT);
}

while (digitalRead(clockpin)==HIGH) {} //if clock is LOW wait until it turns to HIGH

tempmicros=micros();

while (digitalRead(clockpin)==LOW) {} //wait for the end of the HIGH pulse

if ((micros()-tempmicros)>500) { //if the HIGH pulse was longer than 500 micros we are at the start of a new bit sequence

decode(); //decode the bit sequence

}

}

void decode() {

sign=1;

value=0;

for (s=0;s<23;s++) {

while (digitalRead(clockpin)==HIGH) { } //wait until clock returns to HIGH- the first bit is not needed

while (digitalRead(clockpin)==LOW) {} //wait until clock returns to LOW

if (digitalRead(datapin)==LOW) {

if (i<20) {

value|= 1<<i;

}

if (i==20) {

sign=-1;

}

}

}

result0=(value*sign)/100.00;
result1=(value*sign)/100.00;

Serial.print(result0,2);
Serial.println(result1,2);
delay(1000);

}


[/code]

 © hidroponi2016. márc. 31. 19:45 | Válasz | #972 
tedd [code] és [/code] köze a programot

 © M.L.2016. márc. 31. 19:23 | Válasz | #971 
Nekem is kiszedte a szögletes zárójeleket az i-vel együtt. Van valamilyen megoldás arra, hogy feltegyem a programot?

 © M.L.2016. márc. 31. 19:19 | Válasz | #970 
Ahogy olvastam, egyszerűnek tünt, de most, hogy próbálom megírni, nem megy.
Itt elakadtam:

int i;
int s;
int sign;
long value;
float result0;
float result1;
int clockpin[] = {4,6,8};
int datapin[] = {5,7,9};
unsigned long tempmicros;

void setup() {
Serial.begin(9600);
for(i=0; i < sizeof(datapin); i++) {

pinMode(clockpin, INPUT);

pinMode(datapin, INPUT);

}

}

void loop() {

for(i=0; i < sizeof(datapin); i++) {

pinMode(clockpin, INPUT);
pinMode(datapin, INPUT);
}

while (digitalRead(clockpin)==HIGH) {} //if clock is LOW wait until it turns to HIGH

tempmicros=micros();

while (digitalRead(clockpin)==LOW) {} //wait for the end of the HIGH pulse

if ((micros()-tempmicros)>500) { //if the HIGH pulse was longer than 500 micros we are at the start of a new bit sequence

decode(); //decode the bit sequence

}

}

void decode() {

sign=1;

value=0;

for (s=0;s<23;s++) {

while (digitalRead(clockpin)==HIGH) { } //wait until clock returns to HIGH- the first bit is not needed

while (digitalRead(clockpin)==LOW) {} //wait until clock returns to LOW

if (digitalRead(datapin)==LOW) {

if (i<20) {

value|= 1<<i;

}

if (i==20) {

sign=-1;

}

}

}

result0=(value*sign)/100.00;
result1=(value*sign)/100.00;

Serial.print(result0,2);
Serial.println(result1,2);
delay(1000);

}

 © VViktor2016. márc. 31. 19:11 | Válasz | #969 
Köszönöm mindenkinek ;)

 © hidroponi2016. márc. 31. 15:11 | Válasz | #968 
[code]

for(i=0; i < sizeof(datapin); i++) {
pinMode(clockpin[i], INPUT);
pinMode(datapin[i], INPUT);
}

[/code]

asszem most mar jo(bb)..

 © hidroponi2016. márc. 31. 14:30 | Válasz | #967 
koszonom a moderatornak hogy probalta kijavitani de csak rosszabb lett, mert fontos reszek maradtak ki a javitas miatt belole..

 © RogerCo2016. márc. 31. 10:59 | Válasz | #966 
Én azért még így kiegészíteném:
for(i=0, ipinMode(clockpin[i], INPUT);
pinMode(datapin[i], INPUT);
}

 © hidroponi2016. márc. 31. 10:55 | Válasz | #964 
oops. most vagy a forummotor kiszedte a lenyeget vagy en felejtettem el..

szoval helyesen:


for(i=0, i pinMode(clockpin[i], INPUT);
pinMode(datapin[i], INPUT);
}

 © M.L.2016. márc. 31. 10:50 | Válasz | #963 
Köszönöm. Délután kipróbálom.
Remélm sikerül, mivel kezdö vagyok a programozásban.

 © hidroponi2016. márc. 31. 10:22 | Válasz | #962 
a merok pinjeit tombe rakod.

pl.
int clockpin[] = {4,6,8};
int datapin[] = {5,7,9};

es mindenhol ahol hasznalja irsz egy for ciklust ami vegig szalad az osszes meron
es az adott mero tombbeli hivatkozasat hasznalja.

pl. a setup()-ban:

for(i=0, i pinMode(clockpin[i], INPUT);
pinMode(datapin[i], INPUT);
}

ugyanezt eljatszod a loop es a decode -nal is ertelemszeruen..

 © M.L.2016. márc. 31. 09:04 | Válasz | #961 
Nekem elég lesz, ha ki tudom olvasni a 2 vagy 3 tolóméröt. Esetleg még majd kibövitem szerszám tárolóval. Az is elég lenne, ha tudnék 4-5 szerszámot tárolni.

 © M.L.2016. márc. 31. 09:01 | Válasz | #960 
Itttaláltam.

 © Csuhás2016. márc. 31. 08:16 | Válasz | #959 
Nem akarsz nagyobbat álmodni? Android DRO

 © ebalint2016. márc. 31. 08:03 | Válasz | #958 
Ha nem is pont ez, de Itt is

 © VViktor2016. márc. 31. 05:47 | Válasz | #957 
Szia. Linkelnéd az oldalt ahol ezt találtad meg?

 © M.L.2016. márc. 30. 21:16 | Válasz | #956 
Nem értem minek kellene bármit is átkapcsolni? Ez így most működik. A programot kellen átírni hogy, pl. az 5, 6, 7, és 8-as pin-en bejövő jelet is dekódolja. Én kezdő vagyok a programozásban, de biztos meg lehet oldani.

 © GPeti2016. márc. 30. 19:49 | Válasz | #955 
Csak úgy tudod ha a két vonalat átkapcsolod egy külön IC-vel például 2 darab CD4052, keress rá az adatlapjára látni fogod hogyan működik.

 © M.L.2016. márc. 30. 19:41 | Válasz | #954 
Szevasztok!
Az esztergámhoz szeretnék digitális kijelzőt csinálni Arduino Uno-val.
Idáig ott artok, hogy ki tudom írni egy tolómérő jeleit LCD-re. Itt meg állt a tudományom. A program magját a neten találtam. Így néz ki:

int i;

int sign;

long value;

float result;

int clockpin = 4;

int datapin = 5;

unsigned long tempmicros;





void setup() {

Serial.begin(9600);

pinMode(clockpin, INPUT);

pinMode(datapin, INPUT);

}



void loop () {

while (digitalRead(clockpin)==HIGH) {} //if clock is LOW wait until it turns to HIGH

tempmicros=micros();

while (digitalRead(clockpin)==LOW) {} //wait for the end of the HIGH pulse

if ((micros()-tempmicros)>500) { //if the HIGH pulse was longer than 500 micros we are at the start of a new bit sequence

decode(); //decode the bit sequence

}

}



void decode() {

sign=1;

value=0;

for (i=0;i<23;i++) {

while (digitalRead(clockpin)==HIGH) { } //wait until clock returns to HIGH- the first bit is not needed

while (digitalRead(clockpin)==LOW) {} //wait until clock returns to LOW

if (digitalRead(datapin)==LOW) {

if (i<20) {

value|= 1<<i;

}

if (i==20) {

sign=-1;

}

}

}

result=(value*sign)/100.00;

Serial.println(result,2); //print result with 2 decimals

delay(1000);

}


Tudna valaki segíteni abban, hogyan lehet ezt a részt úgy átalakítani, hogy 3 tolómérőt dekódoljon.
Előre is köszönöm.

 © elektron2015. okt. 13. 21:41 | Válasz | #953 
A bootloaderes ATMega2560 panelt mikor megnyitom PC felől a soros portját, az úgy látom reseteli, ezt lehetne arra használni, ha az USB kommunikáció elszáll, akkor így újraindítani és akkor megy tovább, mert elég megbízhatatlanok ezek ugye általában azt tapasztalom.

 © elektron2015. szept. 11. 12:43 | Válasz | #952 

 © elektron2015. szept. 11. 12:42 | Válasz | #951 
Tegnap megoldottam a távcső vezérló PIC proci kimenetének a közvetlen tekercskapcsoló jeleiből való Step-Dir átalakítást, ami ugye a a 4 unipoláris tekercs megfelelő sorrendben való kapcsolgatása eredetileg.

Mivel ez a cuccom már megvan összerakva és a léptető motor lépegetése miatt túl sok rezgés ment át a képbe, így szervóra fogom cserélni, ami nem fog ilyen durván lépkedni, meg jó nagy sebességet is el tudok vele érni, gyorsan tekerje a csövet, ezáltal.

Ma a szervó panelt is bekötöm, ami elvileg már OK, és egy szervó motor mozgatást megtesztelek még a szobában, az idő amúgy is elég felhős, az átalakító kód a következő:

#define INPUT0_PIN A0
#define INPUT1_PIN A1
#define INPUT2_PIN A2
#define INPUT3_PIN A3

#define OUTPUT_STEP A4
#define OUTPUT_DIR A5

#define INPUT0 digitalRead(INPUT0_PIN)
#define INPUT1 digitalRead(INPUT1_PIN)
#define INPUT2 digitalRead(INPUT2_PIN)
#define INPUT3 digitalRead(INPUT3_PIN)


int prev_stat=3; // 0b00000011
int curr_stat=0;

int new_stat() {
return (INPUT3<<3)|(INPUT2<<2)|(INPUT1<<1)|(INPUT0<<0);
}

int up_stat() {
prev_stat+=prev_stat&0x0F;
}

void step_up() {

digitalWrite(OUTPUT_DIR, HIGH);
digitalWrite(OUTPUT_STEP, HIGH);
digitalWrite(OUTPUT_STEP, LOW);

}

void step_dn() {

digitalWrite(OUTPUT_DIR, LOW);
digitalWrite(OUTPUT_STEP, HIGH);
digitalWrite(OUTPUT_STEP, LOW);

}


void setup(void) {

pinMode(OUTPUT_STEP, OUTPUT);
pinMode(OUTPUT_DIR, OUTPUT);
pinMode(INPUT0_PIN, INPUT);
pinMode(INPUT1_PIN, INPUT);
pinMode(INPUT2_PIN, INPUT);
pinMode(INPUT3_PIN, INPUT);
digitalWrite(OUTPUT_DIR, LOW);
digitalWrite(OUTPUT_STEP, LOW);
prev_stat=new_stat();

}


void loop () {

while (1) {

curr_stat=new_stat();

if (curr_stat!=prev_stat) {

if (curr_stat==up_stat()) step_up();
else step_dn();

prev_stat=curr_stat;
}

}
}


A képen látható a step jel, az eredeti tekercsjelek felett, az oszcilloszkópon.

http://kepfeltoltes.hu/150911/PICT2743_kicsi_www.kepfeltoltes.hu_.jpg

 © Csuhás2015. szept. 04. 07:05 | Válasz | #950 
Picit hasonló hibával én is szívtam már. A jtag debuggot sem célszerű véletlenül bekapcsolni a konfigban mert az érintett lábak furcsán kezdenek viselkedni.

 © elektron2015. szept. 04. 03:26 | Válasz | #949 
Megtaláltam a hibát, az adott lába a procinak kimenetnek volt definiálva és azért nem tudott rajta megjelenni a potiból e jel, csak oylan 0.09V ... én meg a programban a rutinokban kerestem hogy mi lehet a hiba, de ott nem volt hiba azért is akartam már megzakkanni lassan, na de most már ujjé van.

 © elektron2015. szept. 04. 01:23 | Válasz | #948 
Atmega168 processzorból szeretnék egy ADC adatot kiolvasni, de nem megy, C-ben megy, assemblerben kellene, valami tuti működő kis példa, ami sorosra esetleg ki is írná, ha valaki tud ilyet, megköszönném. 2 napja kinlódok vele már, kezdem unni.

 © cree2015. aug. 21. 18:07 | Válasz | #947 
Én maximum arduino szinten vagyok csak c vel kapcsolatba arduino ide környezetben...

 © NewUser2015. aug. 21. 11:34 | Válasz | #946 
Ez a módszer, csak akkor működik, ha külső órajel forrás lett kiválasztva a fusebitekkel. A HVSP macerásabb, de mindent alaphelyzetbe lehet vele állítani.

 © lazi2015. aug. 21. 11:12 | Válasz | #945 
Nekem fordításnál jelzi a laphatár átlépést. Lebegőpontos változónál problémázott, ha van olyanod azt nézd át.


[1] 2 3 4 5 ... Utolsó

Ugrás a tetejére

Tárhely és domain a MediaCentertől

Untitled Document Fórumtagok ftp könyvtára: cnctar.hunbay.com