Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok!
MCC18 alatt szeretnék létrehozni egy struktúra tömböt, amelyben a strúktúra stringekből épül fel. Ezt hogyan tehetem meg? Korábban már csináltam ilyen tömböt, csak akkor a struktúrban int típusok voltak. Igazából a szintaktikájával nem vagyok igazán tisztában. Tudnátok segíteni? Köszi és üdv. Zoli
Üdv megint!
Még egy kérdésem felmerült (bocsi a sok kérdésért mostanában, de most van időm vele játszani) Szóval a PORTB-n és PORTD-n vidáman villogank a LED-eim. Ugyen azt elkövettem a PORTE vel, de ott meg sem nyikkannak a ledek. Van valami érdekessége a PORTE-nek amit nem találok? (16f877es proci) Köszi sokadjára
Van. A PIC adatlapjában az IO Ports alatt a PORTE résznél nézelődj.
Potyo #293051 tudnál valamitt mondani erre? Mindent szabályosan csinálltam.
Idézet: Többek között az I/O ports, Parallel Slave Port és az ADC konfigurálása tanulmányozandó gondosan. Pl. mit írtál az ADCON1 regiszterbe? ebben a programodban pl. ezzel a két sor„Van valami érdekessége a PORTE-nek amit nem találok?”
analóg bemenetnek állítottad be az A és az E portot. A PIC16F877 adatlapja itt található. A szükséges információkat ebben találod meg.
Nem egeszen ertem pontosan mire van szugseged, valami ilyesmire gondolsz?
Annyira nem ismerem a stimulust, hogy erre biztosat tudjak mondani, de talán: ha tartósan magas szintet akarsz, akkor ne clock-ot használj, hanem állítsd magasra a lábat.
Be kell állítani, hogy egy adott időpontban 1 legyen a bemenet a Pin/Register Actions fülön. Attól fogva úgy marad.
Most hogyan próbálod?
A megoldás Applay ha rá katt működik pfff de buta vagyok......
Üdv!
Köszi a segitséget. A netes keresgélések közpette akadtam erre a jó kis oldalra. Nekem sokat segitett. Ha még nem ismeritek nézzétek meg. PIC könyv (english)
Idáig asm-ben nyektettem a PIC-eket, de elég lassan haladtam egy-egy probléma megoldásával, de azért volt pár sikerélményem.
Most kipróbáltam a MikroC-t és vele párhuzamosan a MikroBasic-et. Összehasonlítgattam őket igazából. Mindkettőhöz van szép leírás kapcsolási rajzokkal, példa programokkal. Vannak előre elkészített algoritmusok, gyakorlatilag majdnem minden csatlakoztatható eszközre. Pl.: usb, ps2, mmc card, lcd, keyboard, usart, rs485.... De!!! Már második napja szívok az LCD-vel. Úgy használom, ahogy le van írva, mindent megcsináltam már, de nem megy.... Van valakinek egy működö kapcsolási rajza, meg hozzá egy program bármelyik nyelven a kettő között? vagy értelemes magyarázat esetleg... Lehet, hogy valami egyértelmű beállítást nem állítottam be. A config biteket beállítottam... Idézet: „Úgy használom, ahogy le van írva, mindent megcsináltam már, de nem megy...” Van egy kapcsolásom, és nem akar működni az áramkör. Mi a hiba? Segítsetek megoldani! Érzed, hol a hiányosság?
A mellékletben a "kapcsolási rajz" és a programkód. Az Lcd_Config (&PORTD,1,2,0,3,5,4,6); is benne van persze.
Aki már csinált ilyet és működik, az kérem írjon. Közben jut eszembe, hogy az "Lcd_Library" fájlt nem kell esetleg betallózni valahová, még a programozó felületen belül?
Az inicializálási időket növeld meg a megadottakhoz képest, illetve valószinüleg észrevetted, hogy 2x csinálja meg...
Oké, ez már jó út. Csak nem értem amit mondasz. Hogy tudom megnövelni az inicializálási időt és hol csinálja kétszer? Köszi Vicsys!
Szervusztok!
Keresgéltem a fórumok között, de nem találtam semmit, ami a problémámra megoldást adna, ezért nyitottam ezt a topic-ot. A problémám a következő: - van egy PIC16F877A, PORTD lábakra 1-1 LED kötve, ellenállás nélkül... az igaz, de szerintem ez esetben mindegy. ez a kód fut benne: banksel TRISE bcf TRISE,PSPMODE ;biztos ami biztos... banksel TRISD clrf TRISD ;mind kimenet banksel PORTD clrf PORTD ;mind nulla legyen bsf PORTD,2 ;2-esen a LED bekapcsol bsf PORTD,3 ;3-ason a LED bekapcsol ÉS a 2-esen KIKAPCSOL!!! bsf PORTD,2 ;2-es ON, 3-as ON MARAD!!! bsf PORTD,3 ;2-es OFF, 3-as ON a pic lábaira semmi nincs kötve, csak a LED-ek. ugyan ez van a 0 es 1-es lábakon is. ha bsf PORTD,0 bsf PORTD,1 bsf PORTD,0 bsf PORTD,1 fut, akkor a ket LED szepen villog felvaltva Urak, mit rontottam el? a PORTD jo, mert egy LCD-t hasznaltam rajta, 8bites modban, igaz az adatokat ott 8bitesen irtam, tehat a teljes PORTD-t irtam mindig, ugy mukodott. Előre is köszi a válaszokat! Fixer_SH
Probalj nem a PORTD-re, hanem a LATHD-re irni.
A peldadban csak bsf szerepelt, de gondolom minden masodikat bcf-nek kell erteni...
Hello
Szerintem mielőtt kiiratnál valamit az LCD_OUT utasítással az LCD-re, iktass be egy LCD_CMD(LCD_TURN_ON) utasítást, hogy kapcsoljon be az LCD. Üdv.
nem, épp ettől érdekes, hogy folyamatosan bSf van, tehát folyamatosan csak bekapcsolgatom a biteket és mégis kikapcsolódik a többi, kivéve a PORTD,3, mert az úgy marad.
0,1,2,3-at próbáltam eddig, 4-7 még nem, de mindegy is, mert ezt a működést akkor sem értem. a pic adatlapjában sem találtam semmit a PSPMODE-on kívül, ami alapján a PORTD-t speciálisan kellene kezelni. lehet, hogy rakok be egy másik IC-t, de nem hiszem, hogy elromlott volna a PIC, mert működik a port, csak épp érdekesen Idézet: „PORTD lábakra 1-1 LED kötve, ellenállás nélkül... az igaz, de szerintem ez esetben mindegy” Szerinted. Szerintem meg pontosan ezért nem működik. Honnan veszed, hogy nem kell ellenállás oda? Idézet az adatlapból, amiből pontosan az következik, amit te is tapasztaltál: All write operations are read-modify-write operations. Therefore, a write to a port implies that the port pins are read, the value is modified and then written to the port data latch. Idézet: „A problémám a következő: - van egy PIC16F877A, PORTD lábakra 1-1 LED kötve, ellenállás nélkül... az igaz, de szerintem ez esetben mindegy.” Ez valoban problema. Tudod hogy mukodik a LED? Mennyibe kerul az ellenallas vagy mi osztokel arra, hogy ezen sporolj? Idézet: „bsf PORTD,2 ;2-esen a LED bekapcsol bsf PORTD,3 ;3-ason a LED bekapcsol ÉS a 2-esen KIKAPCSOL!!! bsf PORTD,2 ;2-es ON, 3-as ON MARAD!!! bsf PORTD,3 ;2-es OFF, 3-as ON” Olvass utana a RMW hibanak, es minimum tegyel ezek koze egy-egy NOP utasitast.
16F877-nél nincs LATD. És egyébként sem a hiba megkerülése a megoldás...
a fene megegye... lehet, hogy tenyleg ez a read-modify-write lesz a ludas... tegnap olvastam is rola...
mindjart kiprobalom
tényleg az ellenállás hiánya okozta.
Tudtam én, hogy kell ellenállás, de eddig mindig így ellenőriztem gyorsan egy kimenetet, hogy rányomtam egy 5mm-es LED-et, csak hogy nem kapcsolgattam akkor a kimenetet, tehat egyszer irtam ra, es kesz. Most is igy akartam, hogy csak ranyomtam a LED-et, de mindjart kettot az egymas melletti labakra, mert azt a ket kimenetet neztem. Ez csak egy probara osszerakott aramkor, a veglegesbe raktam volna ellenallast... (fúdeégő...) így végiggondolva az lehetett, hogy a LED-en nem esett elegendő fesz. ahhoz, hogy 1-nek olvassa RMW-nél a lábat... hátasszem ez ciki...
potyo, trudnai, köszi a választ mindkettőtöknek!
Idézet: „így végiggondolva az lehetett, hogy a LED-en nem esett elegendő fesz. ahhoz, hogy 1-nek olvassa RMW-nél a lábat...” De legalább érted, hogy miért törvényszerű, hogy ez történik. Ezt sokan nem értik. Idézet: „Tudtam én, hogy kell ellenállás, de eddig mindig így ellenőriztem gyorsan egy kimenetet, hogy rányomtam egy 5mm-es LED-et, csak hogy nem kapcsolgattam akkor a kimenetet, tehat egyszer irtam ra, es kesz. Most is igy akartam, hogy csak ranyomtam a LED-et, de mindjart kettot az egymas melletti labakra, mert azt a ket kimenetet neztem. Ez csak egy probara osszerakott aramkor, a veglegesbe raktam volna ellenallast...” Van olyan LED amugy amibe eleve bele van integralva egy aramkorlatozo, azt rakotheted egy az egyben. Ha ez megeri neked akkor vegyel olyanokat. Idézet: „így végiggondolva az lehetett, hogy a LED-en nem esett elegendő fesz. ahhoz, hogy 1-nek olvassa RMW-nél a lábat...” Ami ilyenkor tortenik az ennel sokkal bonyolultabb. Utana kellene olvasnod egy par dolognak asszem. Nagyvonalakban a lenyeg: A LED az aramfuggo, nem feszultseg fuggo. Atlagban egy LED 20mA kornyeken emittal a legjobban, de ez tipustol fuggo. Namost a PIC laba kb 25mA-t tud max leadni. Mikor nem teszel aramkorlatozot, akkor egy olyan jatszodik le, hogy a PIC megprobal minel tobbet leadni, de ez nem sikerul neki, es mikor eleri a 25mA-t akkor elkezd esni a feszultseg. Egeszen addig esik, ameddig a 25mA es a fesz egyensulyba nem kerul a terhelesnek megfeleloen. Szerencsere a PIC eleg eros joszag es igy tonkre nem megy egy vagy ket LED-tol am ily modon van raakasztva, raadasul a LED-nek is meg jo ez az aram, de nem kellene kiserteni a szerencset. Merj ra a PIC labara ilyenkor mekkora feszt mersz... Az RMW hiba pedig nem ebbol fakad, ill picit ennek is koze van ehhez, hogy a kimenet nem bir eleg gyorsan magasba allni (mivel jol le van terhelve) es igy mikor olvassa a portot az elozo utasitasban kiadott magas allapot meg nem kovetkezett be.
Köszi a részletes választ!
Nem szándékozom kihagyni az ellenállást a végső kapcsolásból, csak mint írtam, eddig így tettem láthatóvá a kimenetet, amikor tudni akartam, hogy 0 vagy 1, nem pedig mértem. |
Bejelentkezés
Hirdetés |