Fórum témák

» Több friss téma
Fórum » Bascom-AVR
 
Témaindító: puli122, idő: Ápr 11, 2010
Lapozás: OK   15 / 15
(#) kalmi.kalmi válasza kalmi.kalmi hozzászólására (») Aug 31, 2020 /
 
Azt tudom, hogy timer-t kell beállítani. Az elgondolásom, hogy egy változó értéke 1 mp-enként 1-re billenne. Azt felhasználnám belső számlálóban ill. kiíratnám.
De azt sem tudom, hogy jól gondolom-e ?
(#) pont válasza kalmi.kalmi hozzászólására (») Aug 31, 2020 /
 
Nem igazán érthető mit szeretnél. Mi fogja az 1 -ről elváltoztatni a változót, hogy újra 1-re kelljen állítani? Lehet ha azt mondanád mihez kell, jobban tudnánk ötletelni.
(#) kalmi.kalmi válasza pont hozzászólására (») Aug 31, 2020 /
 
Sejtettem, hogy nem érthető.
Készítettem egy visszaszámláló áramkört atmega8-al. 3 multiplexelt 7 szegmenses kijelzőt hajt meg. Ha megnyomom a gombot akkor visszaszámol 3:00-tól és kikapcsolja a relét.
Megy is, de egy oszcihoz kötött egy-másodperces időalapot szeretném hozzá rendelni a programhoz.
Most x=x+1 :if x=102 then ....de ez így nem jó ! Megy de nem pontos, és hiába variálok a ciklusokban össze vissza jár. 10perc alatt +- 10mp a hiba.
(#) pont válasza kalmi.kalmi hozzászólására (») Aug 31, 2020 /
 
Mondjuk így sem értem mi szerepe lenne egy változónak, de ha arra figyelsz, úgy lesz megírva a program, hogy minden ciklus azonos ideig tartson, a fő do loop -ban, akkor csak egy késleltetéssel ki kell egészíteni egy mp-re. Ez lehet wait, vagy üres ciklus, egy üres for next-el elég pontosan lehet időzíteni, csinálsz egy próbát, és vissza kell arányosítani, tehát ha pl. egy 1000 -es ciklus 10%-ot téved, akkor át kell írni 900-ra és jó lesz.
(#) kalmi.kalmi válasza pont hozzászólására (») Aug 31, 2020 /
 
Igen, így ügyeskednék. De már abban sem vagyok biztos, hogy az online stopper jól mér.
(#) Sipy válasza kalmi.kalmi hozzászólására (») Szept 9, 2020 /
 
Én úgy szoktam hogy :
Waitms 1000
Így vár 1000 ms-ot (1 másodperc). Persze az 1000 helyett lehet használni változót is.
(#) Sipy hozzászólása Szept 9, 2020 /
 
Új kérdés : a bascom tud gyököt vonni valahogy? Pitagoras tételt akarom alkalmazni.
(#) GPeti1977 válasza Sipy hozzászólására (») Szept 9, 2020 /
 
var = SQR( source )
(#) Sipy válasza GPeti1977 hozzászólására (») Szept 9, 2020 /
 
Köszönöm a gyors választ otthon kipróbálom.
(#) Thowra hozzászólása Szept 16, 2020 /
 
Üdv!
Egy program fejlesztésénél elakadtam a megszakításokkal.
Atmega328 (Arduino nano) D12 lábának változását PCINT el figyelem.
A főprogram végzi a dolgát. Ha a megszakítás bekövetkezik és elvégezte feladatát, vissza kellene ugrani a program elejére, nem pedig a megszakítás hívásának helyére.
Próbáltam kigotozni belőle de nem lett jó, és gondolom nem is ez a korrekt megoldás.
Van esetleg valakinek ötlete?
(#) wbt válasza Thowra hozzászólására (») Szept 17, 2020 /
 
Indítsd el a Watchdog-ot, az majd resetel.
(#) Bakman válasza Thowra hozzászólására (») Szept 17, 2020 /
 
A megszakítás-kezelés utolsó utasítása legyen egy Reset utasítás.
(#) jefflynn válasza Thowra hozzászólására (») Szept 17, 2020 /
 
A megszakítás így működik, oda ugrik vissza ahonnan elugrott a megszakítás kezelő rutinba. Ezzel nem tudsz semmit csinálni, és ez így van jól. Amit az előttem szólók írtak, az tulajdonképpen megoldja a problémádat, mert reseteli a processzort, tehát garantáltan elölről indul a program, de ennek egyrészt vannak mellékhatásai, másrészt ha te a szakmailag korrekt megoldást keresed, akkor ez biztos nem az... Ezt úgy szokták, hogy a megszakításban beállítasz egy változót, amit a főprogramban vizsgálsz, és az alapján oda ugrasz ahova kell.
(#) Thowra válasza wbt hozzászólására (») Szept 17, 2020 /
 
Jelenleg így üzemel. A megszakítás végén elmenti a belső eepromba a szükséges változókat, wdt 16ms re állítva elindít és utána egy végtelen ciklus. 16ms után resetel, betölti az eepromból a változók értékét. Sajnos így folyamatosan "koptatja" az eepromot.
(#) Thowra válasza Bakman hozzászólására (») Szept 17, 2020 /
 
Olyan Reset utasítást nem találtam ami az avrt resetelné, arra használom most a wdt t. (Feltéve ha erre gondoltál).
(#) Bakman válasza Thowra hozzászólására (») Szept 17, 2020 /
 
Ha kicsit bővebben leírnád mi a cél, többet tudnánk segíteni.
(#) Thowra válasza jefflynn hozzászólására (») Szept 17, 2020 /
 
Jelenleg elég inkorrekt a megoldásom, főleg eeprom terén. A főprogram nagyon hosszú, kb 3 másodperc alatt ér körbe. Ha az elején esik be a megszakítás, ez nagyon hosszú reakció idő.
(#) Bakman válasza Thowra hozzászólására (») Szept 17, 2020 /
 
Mi tart ennyi ideig?
(#) Thowra válasza Bakman hozzászólására (») Szept 17, 2020 /
 
A program még több darabra van bontva az egyes részek tesztelése miatt, ezért nem tettem be forrást. A főprogram WS2812 legeket vezérel (többféle effekt egymás után). Az arduino egy rádió vevővel van összekötve, a dekódolás kívül történik, 4 adatbit és "jött adat" jel kerül csak be az Atmegába. Alapból a fényeffektek mennek de a távirányítóval vezérlek motorokat is. Fontos, hogy a gomb megnyomásakor a motor azonnal menjen. Amíg nyomom a gombot jön "jött adat" jel, addig megy a motor. A fény ilyenkor nem érdekes. Ha a gombot elengedem vissza kell ugrami a program elejére mert 2 adatvonal binárisan van kezelve és 0-3 értéke lehet. Ettől függően változik a további működés.
(#) Bakman válasza Thowra hozzászólására (») Szept 17, 2020 /
 
Amikor elengeded a gombot, a szükséges változókat és/vagy kimeneteket átírod és mehet minden tovább. Vagy nem?
(#) Thowra válasza Bakman hozzászólására (») Szept 17, 2020 /
 
Többféle effekt van amit kombinálni is kell. Először a várakozások helyett "Jött adat" jel figyelést tettem ciklusban. Ez működött ha viszonylag hosszú ideig volt "jött adat jel". Sajnos így előfordult, hogy mire ránéztem a bemenetre más nem volt meg és elmaradt a motor indítás vagy más fontos művelet. Ezért került a képbe a megszakítás.
(#) Thowra válasza Bakman hozzászólására (») Szept 17, 2020 /
 
A gomb elengedésekor több dolog is következhet (ha változik a 4 adatvonal akkor is elmegy a jel egy pillanatra). Előfordulhat, hogy a főprogram elején beesik egy megszakítás és indul az 1. motor. Ha megszűnik a jel, már egy másik fényeffektre van szükség. A program ilyenkor visszatér a megszakítás hívás helyére, befejezi a főprogramot (a hibás fénnyel) kiolvassa az effektszám változót és utána kezdi a jó effektet. Ideális esetben a gomb elengedése után azonnal a jót kezdené.
Következő: »»   15 / 15
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem