Fórum témák
» Több friss téma |
Sziasztok!
Miért van az,hogy a main függvény végére írva a return;-t lefordítódik,de viszont már a return 0;-val már nem?
Itt van hex 16F886-hoz, az szerintem jó hozzá.
Sziasztok!
Egy kis segítségre lenne szükségem egy feladat megoldásában. Adott egy léptetőmotor aminek 24 meghatározott pozícióba kell megállnia. A pozíciók az órán nézve 9 óránál indul 0-ról és az óra járásának megfelelően van beszámozva. A kérdés az lenne, hogy miként lehet azt megoldani, hogy mindig a rövidebb úton induljon el? Tehát ha mondjuk éppen a 4-es állában van és a 21-es állásba kell mennie akkor nem menjen teljesen körbe, hanem "visszafelé" induljon.
Itt lehet hamarabb kapsz választ: Léptetőmotorok (vezérlése)
Szerk.: most nézem, ott már írtál, szóval akkor a PIC oldali részre vagy kíváncsi.. A hozzászólás módosítva: Nov 27, 2016
Szia!
A main függvény visszatérési értéke void , tehát nem kell visszatérési érték.Ráadásul a main függvény végtelenítve van,abból a kontrollernél nem szokás kilépni, tehát nincs is ami feldolgozná a nulla visszatérési értéket.
Persze! Nem magával a vezérléssel van gondom, mert tudom vezérelni a motor rendesen, csak a pozíciók egymáshoz viszonyított helyzete a kérdés.
Erre legeszerűbb megoldás a táblázatos módszer. Start pozíció, stop pozíció -> irány + lépés. Kicsit olyan ez, mint a szélirány átlagolása (0° mellett a 359° van).
Enkóderrel? Ez pl. (meg egy csomó ilyen) elvileg 24 jelet ad: Bővebben: Link. Aztán már csak számolgatni kell, hogy mennyit tett meg a tengely. Esetleg még egy abszolút referenciapont (pl. optokapuval), ahonnan számolsz (ez esetben "9 óránál").
Ez nem segít sajnos. A pozíciók értékét tárolom, tehát azt mindig tudom, hogy éppen hol vagyok. Csak az a kérdés, hogy jobbra vagy balra indulva lesz-e rövidebb az út.
Próbálom értelmezni Bakman ötletét, de még nem látom a megoldást.
Kifejtenéd? PIC vezérli, ezért is kérdezem itt!
Ha a következő pozícióhoz 12-nél többet kell lépni, a másik irány közelebb van.
Basszus, beelőztél, most akartam én is leírni.
Tényleg! Basszus! Mióta gyötröm itt magam rajta és ilyen pofon egyszerű a megoldás! Köszönöm!
Szóval, a hova akarsz menni a "B", a honnan az "A". Kivonod a B-ből az A-t, és ha nagyobb, mint 12, akkor balra mész, egyébként jobbra.
Ha a kivonásnál negatív számot kapsz, akkor ennek a fordítottja.
Nem kell ide táblázat csak kivonás:
Legyen k egy körbefordulás lépésszáma, p a jelenlegi pozíció lépésszáma a kezdőponttól. Továbbá legyen u az új pozíció lépésszáma a kezdőponttól. Képezzük a p-u -t. Ha u-p == 0, megérkeztünk.... Ha u-p > 0 és u-p < k/2, előre indulunk és megteszünk u-p lépést. Ha u-p > 0 de u-p > k/2, visszafelé indulunk és meg p + k - u lépést Ha u-p < 0 és abs(u-p) < k/2, visszafelé indulunk és megteszünk p-u lépést Ha u-p < 0 de abs(u-p) > k/2, előre indulunk és meg k - p + u lépést Jól írtam?
A táblázat egy része a mellékletben. Tudod a start pozíciót, kiválasztod az oszlopot, tudod a cél pozíciót, kiválasztod a megfelelő cellát. A cellában az irány (Előre, Hátra) és a lépésszám van. Kitöltesz egy 24 x 24 -es táblázatot és lefordítod a kontroller nyelvére. Akkor van némi trükk, amikor 180° -ot kell fordulni, akkor mindkét irány megfelelő, de gondolom majd választasz magadnak egy helyes utat.
Akkor szinte felesleges megpróbálnom ha jól értem...
Azt hittem elég ha a lábak funkciót módosítom a 16F887 esetében,mert ugye az többet tud....
Ha nem tudom módosítani,akkor megpróbálom ezt, De sajnos elég homályos a kép, nehéz kivenni mi mi akar lenni, illetve csak hex-kód van hozzá, ezt hogy töltöm fel a PIC-re? Elnézést ha egyértelműnek tűnő dolgot kérdeztem, de nem vagyok túl járatos PIC-ek terén.
Utólag lassan beugrott nálam, a topicból következik, hogy pic-es. Én jobbra balra számoltam volna mennyi, és a rövidebb a választott. De jobbat írtak itt mások a 12-vel.
Jó estét!
Sajnos nem sikerült megoldani a problémát. Utánanéztem és a két PIC teljesen hasonló, legalábbis ami a kódban használt portokat illeti. Átírtam a változók címét,mert arra szükség volt. Van ötlet hogy hol kell még módosítani? Idézet: Nem néztél jól utána.„Utánanéztem és a két PIC teljesen hasonló...” Idézet: Kevés olyan kód van, ami nem használja a portokat, már ha jól értem a felvetést. „...legalábbis ami a kódban használt portokat illeti”
Nem jól értetted!
Én úgy értettem, hogy ugyan azok a portok amelyeket a PIC16F84-es használ mind a két PIC-ben megvannak.
Véletlen volt, ne haragudj. Majd ha gépnél leszek eltávolítom.
Sőt, minden PIC mikrokontrollerben hasonló módon nevezik el a portokat. Általános az is, hogy az azonos lábszmú kontrollereken azonos lábkiosztások láthatóak (családon belül). PIC16F84 és PIC16F887 között van bőven különbség. PIC18F46K22 is rendelkezik olyan portokkal, mint a PIC16F84-es, mégsem lehet őket egy lapon említeni.
Ebben az esetben természetesen nem egyezik a lábkiosztás,de ilyet én nem is állítottam, csak hogy a portok és a regiszterek egyeznek, az adott regiszterek amik a programban használatosak azonos bankokban vannak.
Nem a potoknál van az eltérés, hanem számtalan egyéb helyen:
- A 16F887 rendelkezik A/D -vel és komparátorral, ezért a portbitek egy része analóg módban van a reset után. Át kell állítani digitális I/O mórda. - A 16F88x -ben az általános célú RAM 0x20 -címen kezdődik, a 16F84 -ben 0x0C -n - A 16F84 -ben, ha az 1. lapon levő RAM területet (0x8C .. 0xCF) használod, a 0. lapon levő területet éred el, a 16F887 -ben ez két külön adatterület. A többi különbség nem számít (azt hiszem) ha csak ezt a programot nézzük. Mégiscsak el kellene olvasni ezt a két adatlapot... A hozzászólás módosítva: Dec 1, 2016
Ehhez a kapcsoláshoz rengeteg program van 16F628(A) -ra is.
A hozzászólás módosítva: Dec 1, 2016
Sziasztok!
Teljesen kezdőként kérdeznem: PIC configbitjeinek beállítását egy C projektben mplab generátora assemblyben dobta ki. Beletehetem az assembly configot a C source fájlba, vagy írjam át C-re? Válaszokat köszönöm.
Kérem mondja meg Valaki, hogy Picall programozó szoftverrel Juhász féle (mechatronika) égetőben elhelyezett 16F628 as Pic hex fájlait hogyan lehet kiolvasni, törölni esetleg módosítani? Nagyon köszönöm előre is!!
|
Bejelentkezés
Hirdetés |