Fórum témák
» Több friss téma |
És egy másik kérdés a linkerrel kapcsolatban:
A fenti kódban az __EXTENSION és __PACKED nek mi a szerepe?
Jó lenne az a kép nagyobb méretbe, nem olvashatóak a hibaüzenetek. Általában elárulja önként, hogy mi baja a progiddal, csak el kell olvasni.
Az a gond hogy nekem valahogy nem.Windows-os környezetben sokat programoztam már és tudok is de egy Windows alá forditandó programnál a debug luxus a mikrokontrollerekez képest... számomra legalábbis érthetetlenek a hibaüzenetek.CCS még elment de az MPLAB kiveri a biztositékot.Ám valóban támogatja a CCS a PIC24et is.Köszönöm!
Az extension-ről egy post: Bővebben: Link
Magyarra fordítva a fejlesztői környezetükben gányoltak picit, aminek halom warning lett az eredménye, és azzal tudják eltüntetni. Nem a C nyelv eleme, nem csinál semmit, ne foglalkozz vele. Ha problémázik valamelyik fejlesztői környezet, simán töröld ki. A packed 8 bit fölötti környezetekben annyit csinál, hogy tömöred helyezi el az adatokat. Például egy 32 bites fordító elkövethet olya optimalizálás címszóval, hogy ha 1 byte-os mező van egy struktúrában, akkor azt 32 bitesre egészíti ki azért, hogy az utána következő elemek 32 bit határra kerüljenek a memóriába (gyorsabb a hozzáférés úgy). Ha csak nem nagyon cipőkanállal kiszámolt a memóriád, nem akarod kommunikációban felhasználni azt a struktúrát, vagy egyébként is 8 bites környezetben vagy, egyszerűen kitörölheted, és nem lesz baj belőle.
Copy paste bele szöveg file-ba, szöveg file betömörít winrarral, és rar állomány feltölt ide mellékletként.
Általában a legelső hibával érdemes elkezdeni, mert lehet, hogy ott annyira eltéved a fordítás menete, hogy utána már csak zagyvalékot reportol. Ha első hiba javítást kapott, fordítani újra. Ne lépd át az első hibát, muszáj azzal kezdeni.
Ellenben most egy olyan kérdésem lenne hogy szükséges e szintillesztés ha UART-al szeretnék komunikálni egy 5v-os és egy 3.3v-os mikrokontroller közt vagy boldogulnak egymással?
Milyen típusokról van szó? A 3.3V -os kontroller RxD lába 5V toleráns? Az 5V -os kontroller RxD lába a 3.3V -ot magas szintnek érzékeli?
Azzal kezdem természetesen.Sok esetben az első hiba okozza a utánna következő akár százat is.De mivel megy a CCS eszem ágában sincs MPLAB-hez nyúlni.De mindenesetre köszönöm a segitő szándékot
![]()
A kérdés oda vissza érvényes tehát tolerálja-e a 3.3v-os PIC a 5v-os TTL-t illetve elég-e a 3.3v a 5v-os PIC-nek UART-on.
E helyett inkább a két típust adtad volna meg...
Általában az 5V -os típusok RxD bemenete ST, így 0.8*Vdd a magas szinthez tartozó bemeneti feszültség minimális értéke. Ha tányleg 5.00V -ról megy, akor min. 4.00V kell, amihez kell szintillesztő. A hozzászólás módosítva: Jan 22, 2017
A packed -et láttam már korábban, de akkor ebben a szintaktikában volt használatos:
pl ebben a srukturában:
Lényegében csak az a különbség közöttük, hogy a char a __attribute__ ((packed)) -al adott struktúraváltozót lehet igazítani a struktúrában, míg a struct __PACKED -el pedig egy egész struktúrát (pl. egy Union ban) ? Kipróbáltam az alábbit is alátámasztandó a fentieket, nekem ez hibával fordult le:
A hozzászólás módosítva: Jan 22, 2017
Nekem is. És létrejön fordításkor a .hex file.
Még egy ötlet. Nem lehet, hogy ingyenes verziót használsz és a fordítandó kód nagyobb 2k nál?
Idézet: +1 „E helyett inkább a két típust adtad volna meg...” ![]() Ha adatlapozni nem akarsz, van univerzális megoldás is: -5v-os pic-ről a 3.3v irányába egyszerű ellenállás osztó. -3.3v pic-ről 5v irányába fetes szintillesztő, vagy npn tranzisztor dupla inverter.
Az a titokzatos 5V PIC miért nem mehet 3,3V tápról?
Ha 8 bites uC használsz nem tudsz packed szerkezetet létrehozni mivel a memóri 8 bites igy nem kell a "csomagolással" foglalkozni.
A __PACKED eegy define ami nézi, hogy a kód 8 biten van vagy nem ha 8 bites az uC akkor semmi kerül a __PACKED helyére ha 16 vagy 32 bites akkor az attribute kerül oda ha nem 8 bitet használsz és úzgy dob hibát vallami elírás van.
Mert rosszul irtam.Az 5V-os rész nem PIC csak a példa kedvéért irtam de mostmár értem a dolgot.Köszönöm mindenkinek
![]() A hozzászólás módosítva: Jan 23, 2017
Sziasztok!
Függöny gépi mozgatásán bütykölök. A mechanika lassan összeáll. A mozgatást ablaktörlő motorral tervezem. A vezérlést RF jeladó és egy PIC 16F628A végezné. A végálláskapcsolóval nem vagyok kibékülve. Nem szeretnék mechanikus kapcsolókat és sok-sok vezetéket. Arra gondoltam, hogy egy olyan áramkör kellene, ami figyeli a motor áramfelvételét, és ha az egy adott érték fölé megy, egy jelet küld a PIC megadott lábára. Ezt érzékelve a PIC leállítja a motort...stb. (A PIC-el már néhány feladatot megoldottam a ház körül. Úgy vélem ez is menne.) Kérdéseim: 1./ Az áramfelvétel figyelése a PIC-el megoldható-e? 2./ Milyen irányban kezdjek el kutakodni, hogy egy ilyen áramkört össze tudjak rakni. Üdv: picipic A hozzászólás módosítva: Jan 24, 2017
Komparátor esetleg? A motor áramfelvételét egy sorba kötött ellenállással tudod mérni. A rajta eső feszültség arányos az áramfelvétellel. A komparátor egyik bemenetére ezt a feszültséget kötöd. A másik bemenetre pedig egy ellenállás osztó és egy poti az állíthatóság kedvéért. Talán annyi baja lehet, hogy indulásnál is bebillen, de ezt mondjuk szoftverből meglehet oldani.
Ha van a PIC-nek analóg bemenete akkor a komparátor nem is kell ... negatív ágba a soros ellenállás, és azon figyeli a PIC az feszültségesést!
A 16F628A-nak nincs analóg bemenete, csak komparátora....
Inkább tegyél egy tárcsát a kihajtásra, és optokapukkal figyeld a forgását!
Azaz készíts hozzá egy kezdetleges encodert. Ezzel már könnyen feltaníthatod a véghelyzeteket, de akár köztes megállásokat is.
Mivel a kérdező 16f628-at említett...
Amúgy elgondolkodnék a 16f88-on. Abban van ADC.
Én a helyedben azt dönteném el először, akarsz-e galván kapcsolatot a mérő áramkör és a mért között, vagy sem. Ha nem, a soros ellenállás akkor is maradhat, de akkor egy optocsatolót rakj be abba a körbe. Mondjuk egy 0.5 ohm-os ellenálláson ha átfolyik 3A, akkor már 1.5V lesz a feszültség az ellenálláson, és a vele párhuzamos fotodióda kinyit. Optocsatolók adatlapjait nézegesd, milyen dióda feszültség milyen kimeneti áramot tud generálni. A kimeneti tranzisztorra rárakni egy munkaellenállás a kollektorra, ami csak normális áramnál húzzon annyit, hogy egy ST bemenet le tudjon billenni. De ha fontos, analóg mérést is csinálhatsz rajta, mert normális optocsatolóknál a karakterisztika viszonylag kicsi szórású, és kb 10-20 mA pontosan meg tudod mondani, mekkora áram folyik a motornál. Vagy ha még pontosabb kell, akkor csináld galván kapcsolattal, csak akkor figyelj rá, hogy ne kötögesd egybe azokat az áramköröket galván leválasztás nélkül, mert egy függönynél annyi lehet a sztatikus elektromosság, hogy simán kinyírja az eszközeidet valami földhurok.
Sziasztok!
PIC18F25J50 jószággal szeretnék SPI-t használni MPLAB-X és XC8 környezettel. A problémám, hogy nem találtam meg, hogyan lehetne definiálni, hogy az RP lábak melyike legyen felhasználva SDO, SCL lábaknak, így a WriteSPI() fv. nem azokat a lábakat mozgatja meg, amiket én szeretném.
Mi a megoldás erre?
Fel kell tölteni a PPS regisztereket. I/O portok környékén keresd.
I2C portbővítővel lehet olyat csinálni, mint a PIC-nél a BSF, BCF parancs, tehát, hogy csak az egyik bit állapotát változtatni vagy csak az egész regiszter újraírása lehetséges?
Köszönöm! Ez adott egy lökést, hogyan is kellene keresgélnem, s ráleltem erre az oldalra. Holnap ki fogom próbálni.
Sziasztok! Adott egy PIC16F877A mikrovezérlő, ami vezérelne egy dc motort pwm jel küldéssel, amit kézileg oldottam meg. A gond a következő: C-ben programozva (MikroC) egy while ciklusban van az egész program a gombok érzékelése miatt, ami azért probléma, mivel ha van mondjuk benne egy késleltetés, akkor addig nem ad pwm jelet a vezérlő. Mivel utána néztem és elvileg nem megoldható két while ciklus ezért javaslatokat szívesen fogadnék a probléma megoldásra. A cél az lenne, hogy függetlenítsem a fő programot a pwm vezérléstől. Előre is köszönöm!
877-ben szerintem van PWM modul. Azt kellene használni. Így a pwm jeled független lenne a főprogramodtól. A fűprogramban csak az értékét kell megadnod.
|
Bejelentkezés
Hirdetés |