Fórum témák
» Több friss téma |
A projektből küldtem a fájlokat , csak egy szük kodrészletet tettem fel mert ott a bajom, a bánatom ugyanaz , hogy a pic által mért adatokat nem tudom megjeleníteni a weboldalon, max lehet rosszul írtam le.
Nagyon köszönöm az eddigi segítséget. 12f683Sziasztok!pic12f683 picet használok. A GPIO5 lábat kimenetként szeretném használni, de nem akar kimenetként működni. Igazából lóg a levegőben. A mainban lehet, hogy hiányzik valami.
A configuration bits-ben az oscillátor INTOSCIO-ra van állítva?
Szia! Ezt hol tudom állítani?
Fordítótól függően, például a config macroval:
vagy pragma-val:
Microc-ben programozok. Abban a macro ugye jó?
Ott nem tudom mi van, a fentiek xc8-ban használhatóak.
A microc Ben az osszcilátort a projekt tulajdonságoknál modosítható ,bvalamint az osscon és osctune byteok helyes beállításával.
GY21 cím kiolvasásNagyon régen programoztam PicbasicPro-ba és most kellene egy páratartalom mérő amihez GY21-et választottam de nem tudok még címet sem kiolvasni, 20Mhz -en 16f877-t használok. Mit csinálok rosszul? Valaki tudna segíteni?DEFINE OSC 20 DEFINE I2C_SLOW 1 SDA VAR PORTB.4 SCL VAR PORTB.0 TRISB.4 = 1 TRISB.0 = 1 OPTION_REG.7 = 0 address VAR BYTE ack VAR BYTE found VAR BYTE LCDOUT $FE, 1, "I2C kereses..." PAUSE 1000 found = 0 FOR address = $08 TO $7F ' I2CWRITE SDA, SCL, address, 0, ack IF ack = 0 THEN found = 1 LCDOUT $FE, $C0, "Cim: ", HEX2 address PAUSE 2000 ENDIF NEXT address IF found = 0 THEN LCDOUT $FE, $C0, "Nincs eszkoz!" ENDIF END
Szia!
Ehhez a programhoz nem értek, de nem világos minden nekem. Van logikai analizátorod? Az sokat segít ilyen esetben. De ha a PIC a master, és az adja ki az órajelet is, akkor annak a lábnak nem digitális kimenetnek kell lennie? Mert mintha most input lenne. IGEN, tévedtem, azok jók, bocsánat! De persze tévedhetek is, mert itt van ez: I2CWRITE Lehet ez a függvény beállít mindent, bár nem tudom hogy ebben a környezetben ez a lib hogy van meghívva. Illetve nem tudom, hogy minden regisztert beállít-e ez a függvény vagy sem. Nem lehetne C-ben? Mplab X-el megoldani a problémát? A hozzászólás módosítva: Márc 18, 2025
Mert elvileg itt egy jó leírása az egésznek, amiben kódok is vannak. A .h fájlokat meg kell csinálni és utána include-al berántani. A keresést meg ciklusba tenni.
Bővebben: Link
PIC16F877ASziasztok!Most kezdek PIC-el foglalkozni, de már is elakadtam. Lehet-e a PIC16F877A PIC EEPROM memoriáját előre beprogramozni karaktergenerátornak és, ha igen hogyan? Egy rövid leírás és egy program jól jönne! Köszönettel.
Szia!
Először is milyen nyelven írod a programot? Másodszor pedig, ha most kezdesz el a PIC programozással foglalkozni, szvsz nem pont az eeprom kezeléssel kellene kezdeni.
Ha nem tudom megoldani a karaktergenerátort nem is érdemes foglalkozni, hogy mely nyelven írom a programot! Amúgy minden tanácsot, segítséget örömmel fogadok.
A klasszikus karaktergenerátor ROM-ok azért voltak használva, mert megfelelő szervezés esetén a videokártya a processzor használata nélkül, sima logikai áramkörökkel meg tudta címezni a karakterekhez tartozó biteket. És persze a karakterkészletet a ROM-ok cseréjével meg lehetett változtatni.
Egy PIC-ben is lehet karakterek pontjait EEPROM-ban tárolni, de úgyis programozottan kell kiolvasnod és felhasználnod. Vagyis írni kell egy olyan függvényt, ami egy karakterkódot fogad, és a Flash-ből vagy akár az EEPROM-ból felolvasott képpontokat kiírja megfelelő sorrendben a megfelelő parancsokkal pl. egy grafikus LCD-re. Ha a karaktertábla vagy karaktertáblák elférnek a programmemóriában, akkor nincs értelme a karakterek bitjeit EEPROM-ba írni. Ha nem, akkor jöhetnek a mindenféle más tárolók, akár külsők is, pl. egy Flash memória valamilyen buszon át, és akkor akármennyi karakterkészlethez is lesz hely.
Idézet: Akkor legyen XC8-ra pár példa:„nem is érdemes foglalkozni, hogy mely nyelven írom a programot” Fordítás közben EEPROM tartalom készítése (egyszerűsített változat):
XC8 belső funckióit használva:
Igény szerint, saját funkció (PIC16F18426-hoz írtam):
Tényleg kellene pontosítani pár dolgot. Legfőképpen azt, milyen nyelven akarsz programozni, melyik fejlesztőkörnyezetet akarod használni. Milyen karakterket, milyen kijelzőhöz akarsz generálni? Biztos vagy, a műszaki szemmel nézve őskövület, PIC16F877A használatában? Ez utóbbi annyira nem kritikus meg talán jobb is egyszerűbbel kezdeni, de jó ha tudod, ma már eljárt felette az idő.
Köszönöm a választ. Valóban grafikus kijelzőhöz kell és olyan ami nem felejti el kikapcsolás után sem, tehát mint egy PROM, EPROM vagy EEPROM. Külső karaktergenerátort tudok készíteni EPROM
2732 -vel a gond hogyan kerül be a PIC -be? A PIC16F877A a kezdőknek ajánlott, elnyűhetetlen PIC alapján került képbe és a sok IO miatt!
Az EEPROM mérete nevezett PIC-ben 256 bájt. Ha egyre gondolunk, a 2732-es EPROM 4096 bájtot tud tárolni. Ha a PIC programmemóriáját is felhasználod, akkor 256 + 8192 bájtnyi területed van.
Bekerülni a már említett módon tud. Esetleg a programmemóriát használva (pl. egy CRC tábla DS18B20 hőmérő IC-hez):
Köszönöm a választ és az önzetlen segítséget! Én nem akarom mindkettőt ezért szeretném, ha már a PIC tartalmazná a karaktergenerátort. (A PIC EEPROM területe elegendő.) Említetted a PIC16F877 már elavult típus. Ha tudsz (szerintem igen) ajánlani modernebb hasonló tulajdonságokkal rendelkező típust tedd meg. (Még nincs kész tervem csak most alakul.) A programírást MPLAB x IDE (MPLAB-v.6.25) a feltöltést pickit3 segítségével gondoltam. (A pickit3 összes kisegítője megvan!) Ha továbbra is tudsz segíteni előre is köszönöm!
PIC16F877 helyett 16F877A, 16F887, 16F1937, 18F2620, 18F46Q84 stb.
Idézet: Nem teljesen értem ezt a részt. A karakter generálása és annak tárolása két külön dolog. Generálni azzal generálod, amivel neked egyszerű, akár papíron is meg lehet csinálni. Az EEPROM (és/vagy a programmemória) adatokat tud tárolni, a feltöltésre írtam pár példát.„szeretném, ha már a PIC tartalmazná a karaktergenerátort” 40 lábú PIC-ből van sok típus. Hacsak valami extra szolgáltatás nem kell, én PIC18F47Q43-at szoktam használni (EEPROM: 1024 bájt), az kb. mindenre elég, sőt. Nekem egyszerűbb így, mégha néha túl sokat is tud a feladathoz képest de nem kell megtanulnom 20 különböző adatlapot (és errata doksit), egyszerre többet véve általában van mennyiségi kedvezmény is. Csináltam már belőle három számjegyes nyomásmérőt is hétszegmenses kijelzővel. A tudásának kb. 0.2 %-a lett kihasználva de nem vacakoltam kisebb/régebbi kontrollerrel (eleve nagyon ügyes ADC van benne). PIC16F877A: 2800 Ft nettó PIC18F47Q43: 1200 Ft nettó
Érdemes lenne mindenféle megoldási próbálkozás előtt magát a feladatot teljesen tisztázni, sőt debugolni (...), különben garantált a célra nem vezető, később elvetett elképzelések kavalkádja, amiken feleslegesen és elhamarkodottan dolgoznak azok, akik ezt nem tartják szem előtt.
"Valóban grafikus kijelzőhöz kell és olyan ami nem felejti el kikapcsolás után sem, tehát mint egy PROM, EPROM vagy EEPROM." Akkor miért nem jó a PIC programmemóriája, miért nem lehet onnan felolvasni a képpontokat? Az nem igazán felejt, mivel az a dolga - Flash-nek hívják, és funkcióját tekintve ...ROM. Esetleg túl kicsi? Vagy könnyen átírhatónak kell lennie?
Jó meglátások, valahogy nem jutott eszembe a lista:
LED villogtatás, "Hello world!" stb.
Lehet előrébb jutnánk ha leírnád pontosan milyen célt szeretnél megvalósítani. Az eddigiekből én nem vagyok meggyőződve róla, hogy neked feltétlenül az eeprom-ra szükséged.
A perifériás mező a gyors mozgásokra van kihegyezve.
Ott a "sípoló" led is zavar hogy villog. Annak ellenére hogy az idegrendszer 40...60Hz-en ketyeg elvileg.
Lehet igazad van! Tehát kell egy 40 - ig számláló számláló és ezt az értéket megjeleníteni, PORTB (grafikus kijelzőn) és (PORTC) hex adatként kivezetni. A folyamat közben minden számváltás után a PORTC fennmaradó egyik kimenetén jelenjen meg egy beíró impulzus. (L). A számláló nullázza önmagát. (0-39) A számlálót PORTA (nyomógombról) léptetni előre-hátra. Ezért lenne jó, ha mindkettő (számláló és karaktergenerátor) PIC -en belül lenne. A fennmaradó 6 db PORTA bemenet nyomógomb lenne és mindig a számláló által kijelölt értéknél váltana L és H színt között. (A szint váltást én végezném.) Ez lenne a PORTD ( 6 db) kimenet. Ezt a kimenetet kell látni a PORTB kimeneten is. Röviden ennyi!
Kérlek csak akkor foglalkozz ezzel ha időd és energiád is van hozzá! Köszönettel.
Szia!
Meg tudnád itt mutatni, hogy milyen kijelzőre gondoltál pontosan? Milyen nyomógombra? A kimeneteknek hány biteseknek kell lennie?
Idézet: Tehét ha jól értem a PORTA valamelyik két lábára kötnél két nyomógombot, egyet az előre, egyet a hátra léptetéshez, ami egy számlálót 0-39-ig léptet. Ez eddig nem sima ügy. A grafikus kijelző kezelése már kicsit macerásabb, de az sem nagy gond (írtam cikket róla jópár éve). A HEX megjelenítése a PORTC-n részt nem egészen értem. Hogyan akarunk HEX adatot megjeleníteni egy 8 bites porton. Simán lehet, hogy én vagyok lemaradva valamiről, de ennek a megoldását nem igazán látom még. Jó lenne egy kapcsolási rajz is, hogy biztosan értsük a dolgot. „Tehát kell egy 40 - ig számláló számláló és ezt az értéket megjeleníteni, PORTB (grafikus kijelzőn) és (PORTC) hex adatként kivezetni.”
Először is köszönet Neked hogy ezzel foglalkozol!
Igen a rajz sokat segít a megértésben. Így elkészítettem az első változatot amely szerintem a FÓRUM tagok segítségével még változni fog. Remélve nem követtem el nagy hibákat így most feltöltöm.
Valami más formátumban vagy jobb minőségben kellene feltenni, mert alig kivehető rajta bármi is.
|
Bejelentkezés
Hirdetés |