Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   316 / 1319
(#) Csaplar hozzászólása Okt 21, 2008 /
 
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
(#) mrfencer válasza trudnai hozzászólására (») Okt 21, 2008 /
 
Ü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
(#) potyo válasza mrfencer hozzászólására (») Okt 21, 2008 /
 
Van. A PIC adatlapjában az IO Ports alatt a PORTE résznél nézelődj.
(#) messer hozzászólása Okt 21, 2008 /
 
Potyo #293051 tudnál valamitt mondani erre? Mindent szabályosan csinálltam.
(#) icserny válasza mrfencer hozzászólására (») Okt 21, 2008 /
 
Idézet:
„Van valami érdekessége a PORTE-nek amit nem találok?”
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

  1. MOVLW 0x08
  2. MOVWF ADCON1

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.
(#) trudnai válasza Csaplar hozzászólására (») Okt 21, 2008 /
 
Nem egeszen ertem pontosan mire van szugseged, valami ilyesmire gondolsz?

  1. typedef struct {
  2.     char filenev[9];
  3.     char extention[4];    
  4. } stringStrukt;
  5.  
  6. stringStrukt stringStruktTomb[50];
  7.  
  8. // hozzaferes az elso indexu struktura elemeihez:
  9. strncpy(stringStruktTomb[0].filenev, "DATANAME", 8);
  10. strncpy(stringStruktTomb[0].extention, "DBX", 3);
(#) potyo válasza messer hozzászólására (») Okt 21, 2008 /
 
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.
(#) Csaplar válasza trudnai hozzászólására (») Okt 21, 2008 /
 
Igen, erre gondoltam és köszönöm!
(#) watt válasza messer hozzászólására (») Okt 21, 2008 /
 
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?
(#) messer válasza potyo hozzászólására (») Okt 21, 2008 /
 
A megoldás Applay ha rá katt működik pfff de buta vagyok......
(#) mrfencer válasza icserny hozzászólására (») Okt 21, 2008 /
 
Ü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)
(#) googa hozzászólása Okt 21, 2008 /
 
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...
(#) Moderátor hozzászólása googa hozzászólására (») Okt 21, 2008
 
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?
(#) googa válasza (») Okt 21, 2008 /
 
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?
(#) googa válasza googa hozzászólására (») Okt 21, 2008 /
 
A kép meg miért maradt le?!

LCD.JPG
    
(#) vicsys válasza googa hozzászólására (») Okt 21, 2008 /
 
Az inicializálási időket növeld meg a megadottakhoz képest, illetve valószinüleg észrevetted, hogy 2x csinálja meg...
(#) googa válasza vicsys hozzászólására (») Okt 21, 2008 /
 
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!
(#) Fixer_SH hozzászólása Okt 21, 2008 /
 
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
(#) bbalazs_ válasza Fixer_SH hozzászólására (») Okt 21, 2008 /
 
Probalj nem a PORTD-re, hanem a LATHD-re irni.
A peldadban csak bsf szerepelt, de gondolom minden masodikat bcf-nek kell erteni...
(#) m.joco válasza googa hozzászólására (») Okt 21, 2008 /
 
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.
(#) Fixer_SH válasza bbalazs_ hozzászólására (») Okt 21, 2008 /
 
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
(#) potyo válasza Fixer_SH hozzászólására (») Okt 21, 2008 /
 
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.
(#) trudnai válasza Fixer_SH hozzászólására (») Okt 21, 2008 /
 
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.
(#) potyo válasza bbalazs_ hozzászólására (») Okt 21, 2008 /
 
16F877-nél nincs LATD. És egyébként sem a hiba megkerülése a megoldás...
(#) Fixer_SH válasza trudnai hozzászólására (») Okt 21, 2008 /
 
a fene megegye... lehet, hogy tenyleg ez a read-modify-write lesz a ludas... tegnap olvastam is rola...

mindjart kiprobalom
(#) Fixer_SH válasza potyo hozzászólására (») Okt 21, 2008 /
 
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...
(#) Fixer_SH válasza Fixer_SH hozzászólására (») Okt 21, 2008 /
 
potyo, trudnai, köszi a választ mindkettőtöknek!
(#) potyo válasza Fixer_SH hozzászólására (») Okt 21, 2008 /
 
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.
(#) trudnai válasza Fixer_SH hozzászólására (») Okt 22, 2008 /
 
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.
(#) Fixer_SH válasza trudnai hozzászólására (») Okt 22, 2008 /
 
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.
Következő: »»   316 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem