Fórum témák
» Több friss téma |
Fórum » MikroPascal kérdések
Témaindító: bozsokiandras, idő: Máj 15, 2006
Témakörök:
Köszi a választ!
És fordításnál készít teljes asm fájlt a fordító? Csak mert az előbb buildoltam egy példaprogramot, de csak egy része volt az asm fájlban, amiből hiányoztak még pl. a rutinok deklarálása. Viszont a fordításnál nem találtam "emészthető" include fájlokat..
Elég furcsán csinálja ezeket a dolgokat. Az asm-be csak az általad írt részt fordítja be, a teljes programot az lst fájlban lehet megnézni, de abban mindenféle más is van. Gondolom nem akartak újrafeldolgozható asm forrást. Az lst-ből azonban egy szövegszerkesztővel és némi rabszolgamunkával ki lehet csalni.
Helló Mindenkinek!
A következő probléma miatt szeretném a segítségetek kérni. Egy PIC16F886 és az alábbi szervo vezérlő IC Bővebben: Link között próbálok két napja I2C kommunikációt kialakítani, de az nem akar semmire sem reagálni. A dokumentációja alapján nem lenne bonyolult, hisz csak küldeni kell neki a megfelelő regiszterbe értékeket, de a leírtak alapján nem mozdulnak meg a szervo motorok. Az alábbi kóddal próbálkozom:
Leírom pontosan, hogy is néz ki az egész, és hogy eddig mivel próbálkoztam. Az IC címlábait egy 10kOhm-os ellenállással a GND-re kötöttem, így a címe 40(0x28) lett. Próbálkoztam ezzel a címmel először, de aztán rájöttem, hogy ebben nincs benne az írásra utasító bit, ezért ezt még hozzátettem, így lett belőle 80(0x50). A konfiguráláskor egy belső regiszter, a 60 értékét kell 1-re állítani, hogy megjelenjenek a jelek a kimeneten. A szervok regiszterei 0-11 ig vannak, az erre küldött értékek jelennek meg a megfelelő számú szervora kötött kimeneten. Végigpróbáltam ezeket a regisztereket, a 60-ra már küldtem 0x01 et, és 0xFF-et is, ennek a regiszter címét is megtoldottam már írásbittel, de semmi. Hiába foglalkoztam már egy iránytű modullal kapcsolatban ezzel a kommunikációval (és az könnyen, gyorsan, jól működött), itt nem tudom, mit ronthattam el, de az IC-re kötött szervók meg sem mozdulnak. Az IC valószínűleg működik, mert ha soros porton át, a PIC-en keresztül küldve a megfelelő bytokat bizonyos bytokat bizonyos sorrendbe bevesz, ha pedig nem a protokoll szerint járok el, akkor megáll a program a PIC-ben. A zavar ott van, hogy 40-es, és 80-as címen is beveszi ezeket a küldött értékeket. Egyszerűen tanácstalan vagyok, hogy hol a hiba. Valakinek valami ötlet esetleg, vagy valaki találkozott már hasonlóval? A válaszokat előre is köszönöm! Üdvözlettel: Egon
Szia!
Bár nincs tapasztalatom ennél a programnál de így biztosan jó az init? Idézet: „I2C1_Init(100000);” Ott a zárójelben mit adsz meg? Ha bináris formában adod meg, azt nem kéne valahogy jelölni, illetve mind a 8 bitet kiírni (még ha a legfelső 2 bit 0, akkor is)?
Helló!
Itt elvileg a zárójelben megadjuk az I2C kommunikáció sebességét frekvenciában (decimális számként), ami ebben az esetben 100kHz. Ez a már említett iránytűs programomban működött, szerintem máshol lesz a hiba. Üdv: Egon A hozzászólás módosítva: Feb 1, 2015
Helló Mindenkinek!
Végül sikerült megtalálni a hibát, ami csak részben volt szoftveres. A TRISC teljesen kimenetre volt állítva, miután erre rájöttem, a kommunikáció elindult a fent leírtak szerint. Azonban a szervók még mindig rángatóztak, nem akartak pontosan beállni, ráadásul a 0. kimenet nem is csinált semmit. Végül itt lett a másik hiba, ugyanis ez és a táp között egy szabad szemmel nem is látható rövidzárlat volt. Ez zavarta be az egész IC-t, miután megszüntettem, tökéletesen működik . Sőt, mivel kezelése egyszerű, ajánlom is az IC-t, ha valaki több szervót kíván egyszerre vezérelni. Üdvözlettel: Egon
Sziasztok!
Régen programoztam mikropascalban, sokat felejtettem. Kérek egy kis segítséget! Hivatkozhatok egy változó bitjére így pl: . . var kerdes:byte; kedes.0:=kerdes0; kerdes.1:=kerdes1; . . if kerdes1=0 then kerdes0:=1; Vagyis, ha a kerdes nevű változó első bitje 0, akkor a kerdes nevű változó nulladik bitje legyen 1.
A help-ből:
function TestBit(register, rbit : byte) : byte; procedure SetBit(var register : byte; rbit : byte); Üdv!
if (kerdes and 2)=0 then kerdes:=kerdes or 1;
var
kerdes : byte; kerdes0 : sbit at kerdes.0; kerdes1 : sbit at kerdes.1; if kerdes1=0 then kerdes0:=1; vagy ha nincs definiálva a bit: if kerdes.1=0 then kerdes.0:=1;
Szia!
Köszi az infót. Ezt fogom alkalmazni, hogy ne kelljen megjegyezni, hogy melyik bitet milyen jelzésre állítottam be.
Sziasztok!
Segítséget szeretnék kérni LCD-n menü megjelenítésére, illetve a menüpontok kiválasztásával, almenü megjelenítésére, a legkevesebb memória felhasználásával. Eddig úgy csináltam, hogy az egyes menüpontok között nyomógombokkal lépkedtem. Az aktuális menü pont pedig villogott. A megjelenítés while és case ciklussal történt, de zabálta a memóriát. Tudna valaki egy memória kímélőbb módszert?
Sziasztok!
HDD motor működtetésével kapcsolatban kértem segítséget az arra aktuális topicban, de mivel valószínűleg MikroPascal kód hiba állhat a sikertelenségem mögött, ezért ide is bemásolnál a topic hivatkozását: HDD motor beüzemelése mikropascal kóddal Az említett kód 16F628A PIC-hez, mely ULN2003-on keresztül vezérelné a motort:
Miért mit nem csinál? Ha nincs visszacsatolás a motor pozícióról (HALL, back EMF, enkóder) nem biztos hogy forogni fog.
Nem forog. A hdd motorokon nincs visszacsatolás.
Csak átmásolom ide is a teljes leírást: Idézet: „4 kivezetéses HDD motort szeretnék beüzemelni. Műszerrel kimértem a tekercsek közös pontját, majd egy ULN2003-as modulon keresztül próbálom meghajtani 16F628A PIC-el, melyen mikropascalban írt kód fut. A kódot 4 tekercsesre módosítva, teszteltem a modulhoz kapott 4 tekercses léptetőmotoron, mely mind a valóságban, mind proteuson tesztelve működik (bár hozzáteszem eléggé lassan). HDD motornál viszont csak lassú forgást, rángatódzást, ULN2003 melegedést sikerül elérnem. A mikropascal kódot próbáltam sokféleképpen variálni, netes leírásokra támaszkodva. (Egymás után léptetve a tekercseket, párosával léptetve a tekercseket, időzítéseken variálni, nyomógombbal csökkenteni az időközöket, ezzel gyorsítani folyamatában) A motor lábainak bekötése úgy gondolom rendben van, mivel a közös pontot kimértem, 3 tekecsnél pedig nem lehet sorrendet téveszteni. Vagy a modul gyenge a 12V-os motorhoz, vagy a kódban van a probléma...” ULN2003 modul A hozzászólás módosítva: Jan 24, 2018
Kell hogy legyen, a back emf módszerrel a motor tekercseinek feszültsége leosztva komparátorokat kapcsolgat, ebből lehet tudni hol áll a forgórész és melyik tekercsre kell feszültséget kapcsolni.
Akkor ez lényegesen bonyolultabb feladat mint ahogyan gondoltam.
Van bárkinek mikropascalban kódja ilyen vezérlésről?
Nincsen de készítettem hasonlót, rakj fel rá 3 hall IC-t (nézz uána hogyan lesz 60 vagy 120 fokos elhelyezés felhúzóellenállás kell a táp felé kösd bemenetre, nézd meg az mc33035 ic hogyan forgatja a motort, a pdf jében van igazságtáblázat, de a kimeneteket nem kapcsolgatni kell hanem pwm-mel kell változtatni a kitöltést hogy tudd a fordulatszámot változtatni.
Ez a project sem ma lesz készen
Hall szenzor nélkül is biztosan meg lehet oldani, mert a net tele van ilyen megoldásokkal, a PWM-ben viszont igazad lesz mert sok helyen említik, de egy kész áttekinthető megoldást nem találok. Találtam viszont kész modult a feladatra kínában: Hard Drive Controller
Repülő modell "szabályzó", "ESC" néven is kapsz modellboltban, meg kell egy szervó teszter meghajtani, de ott már erős motort is kapsz.
PIC kezdőknek topicban kértem segítséget egy 433MHz-es kapcsolással kapcsolatban.
Valószínűnek tartom, hogy szinkronizálási probléma van az adó és a vevő között. Az alábbi áramkör került megépítésre: Manchester Code Library Demo A probléma, hogy vezetékkel összekötve a két PIC-et rendben működik a program, viszont rádión, illetve a két PIC-et külön áramforrásról táplálva már csak hibakaraktereket kapok az LCD-n. Szinkronizálási problémára gyanakszok. Találkozott már valaki ezzel?
Szia!
Én is ki akarok próbálni egy ilyen modult. De azt olvastam az adatapján, hogy nem tud túl nagy adat sebességet. Én 2400 bps re emlékszem. Ja és a képen nem láttam rajta a 17cm körüli antennát. A hozzászólás módosítva: Feb 10, 2018
Van rajta antenna. Kipróbáltam többféle netes leírást, és volt ahol feltekerték. Itt is épp úgy lett tesztelve, de azóta már kiegyenesítettem
Kisebbre kellene vennem a PIC sebességét?
Nem a PIC -ét, hanem a komunikáció sebeségét.
Még nem néztem meg, hogy a MikroPascal Manchasterex fügvényei miként működnek.
Sziasztok.
Leszedtem a mikroPascal for PIC legújabb fejlesztő környezetét. Azt tapasztaltam, hogy a szögletes zárójel zárórészét, " ] " nem tudom írni. Csak ebben a programban nem működik. Nem billentyű hiba. Találkozott már valaki valami megoldással?
Sziaszok
12F683-al próbálok egy nyomógombos bemenetet, de sehogy se reagál, nem érzékeli bemenetként, pedig be van állítva:
Tehát a gpio 2 lenne a kimenet, a gpio4 pedig a bemenet. nem történik reakció, bárhova kötöm a bemenetet.
Alapból, reset után analógra áll be az összes portláb, ezért nem működik digitális bemenetként.
A hozzászólás módosítva: Márc 2, 2021
Ezen kellene állítani?
|
Bejelentkezés
Hirdetés |