Fórum témák
» Több friss téma |
Milyen sokan és milyen sokszor mondták, hogy használjuk a 18F -eket, mert nem kell a bankváltásokkal törődni. Lesz itt is gond a bankokkal, csak elég nagy kontrollert kell használni...
Idézet: Kész röhej, hogy egyes gyártók 8 bites mikrovezérlőkbe akarnak bezsúfolni mindent, mások meg 8 lábú, 4kB flash/1kB RAM kaliberű 32 bites ARM Cortex M0+ vezérlőt dobnak piacra (LPC810). „Lesz itt is gond a bankokkal, csak elég nagy kontrollert kell használni...”
PIC18F87K90 - Original data sheet for PIC18F87K90 family devices - September 2009
LPC81XM v.1 20121112 Objective data sheet Csak három év ...
Ezt a 3 évet nem emlegetném, mert az ARM Cortex-M0 és M0+ valójában egy új vonulat, és egyfajta visszalépésnek tekinthető (hiszen korábban jött ki a nagyob tudású M3 és M4 is!).
Sőt, a Microchipnek is volt már 32 bites mikrovezérlője akkor (2009-ben), hiszen Lucio di Jasio: Programming 32-bit Microcontrollers in C: Exploring the PIC32 c. könyve is 2008 tavaszán jelent meg. A PIC32MX3XX/4XX adatlap rev E. pedig 2008 júniusi dátumú.
Sziasztok! Egy kis segítséget szeretnék kérni PWM ügyben. Tehát van a18F67K90-es PIC-em, amelynek az adatlap szerint van 7 CCP modulja és 3 ECCP. Nekem 4 HW es PWM re lenne szükségem, de csak 1-et tudok sikeresen beállítani. Timer2-vel tudom használni a CCP4-et, viszont már azt sem értem hogy a CCPTMRS1 (timer select reg) ben beállítom, hogy CCP4 hez Timer6 tartozzon, akkor is Timer2-ről megy. Watch-ban figyelem az összes használt regisztert, de csak a T2+CCP4 kombó billegeti a kimenetet.. Hiába bűvölöm az adatlapot, nem jövök rá a jó megoldásra
Megoldódott! Timer2 közös, csak a különböző kitöltéseket kell megadni CCPx-enként.
Uraim, szégyen, de nem tudom hogy tudok LCD-re kiíratni egy változót. (HD44780)
PHP-ben csak egy dollár előtagot ($változó) kell beírjak a változóneve elé és megy, de itt pfff nem tudom. Köszönöm előre is a segítő szándékot.
Így nem is fog menni, mindenképp kell egy tömb amibe a kiírandó szöveget tárolod. Ebbe az sprintf függvénnyel tudsz hasonló módon számot konvertálni. A hátránya ennek a függvénynek a memóriazabálása és a sebessége. Valamivel gyorsabb és kevésbé memóriapazarló az itoa és társai szám->string átalakító függvények használata.
Van egy szam változom amit deklarálok a program elején és nullára állítom.
Aztán egy nyomógomb hatására ezt a szam változót illetve annak értékét növelem 1-el.
Minden változásnál kiíratom az LCD kijelzőre a szam értékét, vagy is ki akarom íratni
Ez hogy tehetem meg? Mindenképpen ehhez is kell egy tömb? A hozzászólás módosítva: Márc 2, 2014
pl:
Az itoa paraméterezése fordítónként eltérhet (csak hogy ne legyen annyira egyszerű az élet), az általad használt verzió használatát nézd meg a fordító dokumentációjában. A hozzászólás módosítva: Márc 2, 2014
C18-al fordítok és elvileg a manuál szerint jó a paraméterezése még is hiba jön.
Mit nézek be Uram? (ha gány a kód ne akadjatok ki rajta, erősen próbálkozom még ha bénán is, de legalább az akarat megvan ) A hozzászólás módosítva: Márc 2, 2014
Lehet, hogy az lcd_write_pgm csak ROM-ban tárolt konstans stringet tud kiiratni, ha van sima lcd_write azzal kellene a RAM-ban tárolt stringet.
Jaja azzal próbálkozom most.
Nem egyszerű ez a C, de csak megtanulom a használatát.
így már kiírja a változót csak duplán ad hozzá. De ez már tuti valami növelési hiba. Meg is van a számolási hiba:
Köszi a segítséget.. A hozzászólás módosítva: Márc 2, 2014
PIC = P18F4550
Mire használom: semmire, gyakorlom az egyes funkciókat. Uraim, mi arra a bevett gyakorlat, hogy ha 1 porton belül csak 1 kimondott lábat akarok kapcsolgatni? Addig jutottan, hogy egy adott porton belül 1 lábat tudok kapcsolni, de ha egy-azon porton belül 2 lábat akarok felkapcsolni az nem megy. Pl: ez a B port 0-ás lábát kapcsolja be, (ebbe nem vagyok biztos "kimenetre"):
Ez így rendben van. De, ha így adom meg akkor csak az utolsó utasítás fog lefutni, vagy is a B port 1-es lábát kapcsolja be és a 0-ást nem kapcsolja be:
Tudom, hogy ezen utasítással ez megoldható, de ezzel meg az a bajom, hogy ha már egy lábat bekacsolok akkor azt egy következő utasítás felülírja:
Az hogy így adjam meg:
Számomra nem jó megoldás mert programon belül jó lenne egy-egy lábra hivatkozni és nem állandóan az összesre. Van erre megoldás vagy mindig csak az utóbbi és annak figyelésével lehet megoldani? A hozzászólás módosítva: Márc 2, 2014
Szia!
Milyen PIC-et használsz, és kb. mire? Beállítottad kimenetnek az RB0-t? 18F-nél a PORTB-ről olvasni szoktunk, a kimenet állítására a LATB-t használjuk. Tehát:
A hozzászólás módosítva: Márc 2, 2014
Thanks, tökéletes megoldás
őőőőő Kimenetre az RB0-át? Nem hiszem... Csak próbálgatom mikor mit csinál a PIC (P18F4550) Hogy kell beállítani ki és bemenetre? Ezt deklarálni kell az elején? Esetleg van valami kimondottan illyes fajta doksi amiben a PIC lábainak lekérdezése és utasításokat írják le? A hozzászólás módosítva: Márc 2, 2014
Használhatsz logikai függvényeket is:
Pl PORTB |= 0b11000000. Ekkor a két láb magasra kerül, a többi nem változik. Vagy PORTB &= 0b00111111. Ekkor a két láb alacsonyra kerül, a többi nem változik. (Ez a két láb nem az RB0 és RB1 lesz). A fő problémát viszont gondolom az okozza, hogy ha a PORT regisztert módosítod a bitenkénti utasítással, akkor azt úgy csinálja meg a PIC, hogy a lábak pillanatnyi állapotát beolvassa, majd módosítja a kívánt értékre és utána visszaírja. Ehelyett neked vagy a LAT regisztert kell használnod, vagy ha nincs ilyen, akkor kell csinálni egy változót, abban módosítani a kimenetet ahogy szeretnéd, majd azt kirakni a PORTB-re.
TRISx regiszterrel lehet az irányt beállítani. Ha az értéke egy biten egyes, akkor az láb bemenet, ha 0, akkor kimenet.
Igen ebben az esetben ezt már megadtam a program elején:
A hozzászólás módosítva: Márc 2, 2014
Igen, csak a komment nem igaz, ami mellette van.
Hivatkozás egy port (PORTB) bitre:
if (PORTBbits.RB0) ... vagy if ((PORTB & 0x08) == 0x00) ... if ((PORTB & 0x08) == 0x08) ... Egy portbit beállítása: LATBbits.LA0 = 0; Egy porton mind a 8 bit baállításaa (a bemeneteknek állított bitekre nem hat): LATB = 0x01; Egy porton több bit átállítása, de nem az összes: LATB ^= (LATB ^ ertek) & mask; ahol ertek a beállítandó minta, mask azokon a biteken 1, amelyeket változtatni szeretnénk.
Szia!
Most akkor melyik kimenetet akarod kapcsolgatni? A port irányát a TRISx regiszterrel tudod beállítani. Amelyik bit 1-es, az ahhoz tartotó láb bemenet, egyébként kimenet lesz. Egy kis olvasmány, ebből mindent megtudsz: Bővebben: Link
Köszönöm.
zenetom válasza tökéletesen jól teszi a dolgát. A logikai függvényt még hagynám így is teljes káosz van a fejembe. Állandóan a PHP és JS utasítás készletét használom.. Néha be is jön
A válaszod jó volt azt tudtam használni egyből.
A Piccolo-t olvastam, de akkor még nem kezdtem el gyakorolni most beleolvasván sokkal érthetőbb a leírtak. Köszi. Kösz mindenkinek a segítséget. Sokat tanulok belőle. A hozzászólás módosítva: Márc 2, 2014
Idézet: Hát persze, hogy van! Csak ezt a fejezetet kell fellapoznod. A mai kérdéseidre megtalálod benne a válaszokat. „Esetleg van valami kimondottan illyes fajta doksi amiben a PIC lábainak lekérdezése és utasításokat írják le?”
Igen ezt olvasgatom már 2napja egyfolytában
Már golyóznak a szemeim. Most ép egy virtuálisan megépített k típusú szenzort kötöttem a P18F4550 A0-ás lábára és ezen jeleket akarom beolvasni és értelmezni és a hőfokot kiíratni a kijelzőmre. Feltételezve, hogy ez az áramkör analóg jellé alakítja a K típusú szenzorból jövő jeleket. Bővebben: Link Az analóg portok beállítását és azok használatát olvasgatom már vagy 2 órája, de egyszerűen nem értem. Lényegében azzal kísérletezem, hogy a szenzor által mért hőmérsékletet kiírja nekem a program. Nem értem vagy nem jó irányban mozdultam el...
Tenyleg nem szeretnelek megserteni, de nem celszerubb, hogyha valaki most tanulja a PIC-et, akkor nem egybol atomreaktort akar vele fuzzy logic-kal vezerelni?
Hagyd a virtualis izet a fenebe es koss oda egy mondjuk 4K7-s potmetert, a poti egyik laba a foldon, masik a PIC tapon, a kozepso meg az A0-ra. Beallitasnal a ref-eket ugy bealitani, hogy a teteje tapfeszen, az alja meg foldon. Es csavargatni, valtozik-e a beolvasott ertek. Aztan ha ez megy, akkor johet majd a K tipusu talalkozas Ha tul sok valtozot viszel bele az aramkorbe , akkor nem fogod tudni, mitol nem mukodik megfeleloen. Az analog portot az egyik ADCON regiszternel tudod beallitani a referenciakat es hogy ne digitalis, hanem analog legyen, a masik ADCON adja a csatornat, engedelyezi az AD-t es vegul inditja az AD-t, amit ugyanazzal a GO/-DONE bittel tudsz ellenorizni, hogy lefutott-e mar (az elejen celszeru csak sima vegtelen ciklussal ellenorizni), utana meg a also es a felso byte-ot masik ket regiszterbol olvashatod ki - ADRES es ADRESH. A PIC adatlapja mindent reszletesen leir, peldak is vannak. A hozzászólás módosítva: Márc 2, 2014
Tudnátok nekem ajánlani olyan picet ami legalább 16bites széria , kezeli a pickit 2, és pdip tokozású és minnél több használható lábszámú? Hasonló érdekelne mint a 18f4550 , de az csak 12mips-es de nekem egy ennél két háromszor erősebb proci kellene pdip tokozásban.
|
Bejelentkezés
Hirdetés |