Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   387 / 1318
(#) potyo válasza vizor hozzászólására (») Jan 12, 2009 /
 
Akkor húzz bele, mert a 100kHz-es kristálynak is el kell vinnie az órát.

Amúgy a kiló jele a k és nem a K. A Hertz jele pedig Hz, nem hz.
(#) vizor válasza potyo hozzászólására (») Jan 12, 2009 /
 
Rendben. Megteszem amit lehet.
(#) trudnai válasza potyo hozzászólására (») Jan 12, 2009 /
 
Idézet:
„Amúgy a kiló jele a k és nem a K.”


Pontosabban kis k mint 1000 es nagy K mint 1024. De ez utobbi azert is zavaro, mert a Kelvin jele is.
(#) vizor válasza trudnai hozzászólására (») Jan 12, 2009 /
 
Viszont potyonak igaza van, mivel a frekvenciára használtuk a jelölést.
(#) watt válasza Noja hozzászólására (») Jan 13, 2009 /
 
Dehogynem, át lehet. Kell egy MAX232. Még rajz is van az oldamon erről. De még úgy sem biztos, hogy működik minden égetőprogrammal.

Éppen egy leíráson dolgozom és abban különböző programozók beállításainál tartok(amiket nem nagyon szoktam használni). Tegnap meglepődve tapasztaltam, hogy a WPB_RS_V2 soros programozó, ami a WPB_F18_xxx-el hiba nélkül működik, se a IC-Proggal, se a WinPIC800-al nem akar működni(pedig régebben én ezt kipróbáltam és akkor úgy emlékszem ment.)

Csak külön agyrém, hogy a WPB_PCB_V2 leválasztott égetőm a WPB_F18 és az oshon 16F és 18F programjaival tökéletesen működik, de a fent említett két égetővel szintén nem!

Minden vonal lecsekkolható, minden tökéletes DC szinten, de a kommunikáció nem működik.
Hát eléggé csalódott vagyok ezügyben! Próbálok rájönni az okokra, de már így is fél napot elpocsékoltam ezekre a szutyok programokra!

Ezek után nem meglepő, ha valakinek egy tökéletes áramkör nem akar égetni!
(#) szilva válasza vizor hozzászólására (») Jan 13, 2009 /
 
A 3.2768MHz nagyon jó érték. Azt 65536-tal osztva ugyanis pont 50Hz-et kapsz. A timer1-gyel meg - ha csak hagyd szabadon futni és sosem töltöd újra az értékét - pont 65536-os osztást (2^16) lehet megvalósítani. Ekkor biztosan nincs az a probléma, hogy az újratöltés idején hány tick-re áll le a számlálás.

Az 50Hz-enként beeső interruptot meg lehet ritkítani az előosztó használatával, de maximum a 2-es osztót érdemes használni, mert nagyobb osztásnál nem egész számú interrupt fog érkezni másodpercenként. Egyébként a másodpercenkénti 25 interrupt egy jó érték lehet, akkor az interruptban le lehet kezelni pl. a billentyűket is pergésmentesítve. Én az LCD-s órámban 16Hz-es interruptban teszem a dolgokat, a köztes időkben pedig alszik a CPU.
(#) trudnai válasza sszasza hozzászólására (») Jan 13, 2009 /
 
Idézet:
„Kérdeznék még egyet. Hogyan kell ezt:
char A;
FSR0 = &A; //remélem érthető mit is szeretnék”


Es ez nem mukodik? Amugy nem ertem miert van erre szukseged? C-ben nem igy szokas programozni! Rendesen pointert kell letrehozni RAM-ben, es mikor hasznalod azt a pointert majd a fordito eldonti melyik FSR-t fogja hasznalni es hogyan. Ha kozvetlen a regisztereket akarod birizgalni akkor inkabb ASM-ben programozz.
(#) delmur82 hozzászólása Jan 13, 2009 /
 
Üdv!

tudom hogy hülye de fáradok.
16F628 - ban ugye van belső osc?
beállítani pedig igy kell:

_INTRC_OSC_NOCLKOUT ugye?

ja és 4MHz - es?
(#) watt válasza delmur82 hozzászólására (») Jan 13, 2009 /
 
Ha fáradt vagy, akkor hagyd abba!


Adatlapból idézgetek:
Idézet:
„14.2.6 INTERNAL 4 MHZ OSCILLATOR
The internal RC oscillator provides a fixed 4 MHz (nominal)
system clock at Vdd = 5V and 25°C, see “Electrical
Specifications” section for information on variation over
voltage and temperature.”


Idézet:
„ja és 4MHz - es?”

lehet 4-is:
Idézet:
„PCON reg:
bit 3: OSCF: INTRC/ER oscillator speed
1 = 4 MHz typical(1)
0 = 37 KHz typical”


És igen: _INTRC_OSC_NOCLKOUT (ASM-ban)
(#) delmur82 válasza watt hozzászólására (») Jan 13, 2009 /
 
Köszi!

Ma már pihentetem!
Üdv!
(#) vizor válasza szilva hozzászólására (») Jan 13, 2009 /
 
Köszi az infókat, átgondolom. Egyenlőre egy sima akármilyen megszakítást próbálok összehozni, aztán majd finomítom. Csak kevés időm jut a dologra.
(#) watt hozzászólása Jan 13, 2009 /
 
Kicsit kiakadtam az égető programoktól.
Az IC-Prog-ot egyik égetőmmel sem tudtam életre kelteni(oshon, WPB_LPT, WPB_PCB_V2, WPB_RS_V2)

A WinPIC800 vitte a WPB_LPT-t, az Oshont, és a WPB_RS_V2-t is, de a WPB_PCB_V2-t nem.

Az Oshon programjai (18F, 16F) jól működtek az LPT-s égetőkkel(Oshon, WPB_LPT, WPB_PCB_V2).

A WPB_F18_4.25b mindegyik égetővel tökéletesen éget.

Le lehet vonni a következtetéseket!
(#) sszasza válasza trudnai hozzászólására (») Jan 13, 2009 /
 
Igy nem, és máshogy sem sikerült, azért kérdezem Gondolom te is láttad már miket fordit a C18, időkritikus munkáknál jobb belenyúlni itt-ott. Viszont, meg szeretnék már tanulni rendesen C18-ul, és eddig pont azért nem sikerül mert folyton időkritikus munkáim vannak (értsd: marha gyorsan futó alkalmazás kell, és holnapra legyen kész ) és egyből az _asm-hez nyúltam.
(#) szilva válasza watt hozzászólására (») Jan 13, 2009 /
 
Ha már ennyire benne vagy ezekben a dolgokban, nem nézted véletlenül a kommunikáció sebességét (pl. a PGC-n)? Lehet, hogy egy sor ilyen jellegű probléma időzítésekből adódik. A progikban nem lehet a gépet "kalibrálni" valahogy?
(#) watt válasza szilva hozzászólására (») Jan 13, 2009 /
 
Az IC-Prog beállításai között van sebesség állítás. Leglassabban sem kezeli egyiket sem. De nem is érdekel a dolog, mert a WinPIC800 jobb program. Sajnos abban nem lehet sebességet állítani, pedig valószínű ezért nem megy a WPB_PCB_V2.
Az oshon-nal csak egy baj van, hogy kevés PIC-et ismer. Bár az igazat megvallva egy kezdőnek nincs is szüksége többre. Egy PICKit2 építéséhez pedig bőven elég amit ezek tudnak.
(#) pinyooooo hozzászólása Jan 13, 2009 /
 
Sziasztok!

Nincs valakinek ötlete, hogy hogyan lehetne sdcc-vel véletlenszámokat kipréselni egy picből? Lehet,hogy én vagyok béna, de átnéztem az egész netet és nem találtam semmit.

Előre is köszönöm!

pinyó
(#) icserny válasza pinyooooo hozzászólására (») Jan 13, 2009 /
 
Egy 10 bites ADC legalsó bitje elég véletlenszerű lesz. Ahány bit kell, annyi mintavételezést csinálj. Az így előálló számot használhatod "mag"-nak, amiből kiindulva tetszőleges számú pszeudorandom számot generálhatsz.

Assembrlerben például itt
és itt találsz programrészleteket (8 és 16 bites számokra).
(#) pinyooooo hozzászólása Jan 13, 2009 /
 
Jó ötlet. Köszönöm! Kipróbálom.

üdv:pinyó
(#) foxi63 hozzászólása Jan 13, 2009 /
 
Hali!
Azoknak tennék fel egy forrást, akik egyszerűen szeretnének egy poti értékét 8 biten beolvasni.(bővíthető akár 16 bitre is.)Méghozzá adc nélkül.A beolvasás meglehetősen stabil.Átírható más portokra, csak schmidt triggeres bemenetű legyen.

poti.zip
    
(#) sszasza válasza foxi63 hozzászólására (») Jan 14, 2009 /
 
Megspórolhatod a tranyót és egy portot ha maga az olvasó port kimenetként konfigurálva sütné ki a kondit.
(#) trudnai válasza foxi63 hozzászólására (») Jan 14, 2009 /
 
A programoddal kapcsolatban lenne nehany eszrevetelem, ha nem haragszol meg erte:

1. Utasitasokat es assembly direktivakat soha nem kezdunk az elso oszlopban
2. Csak cimkeket es C preprocesszor direktivakat kezdunk az elso oszlopban, azonban cimkekhez nem kell a kettos pont
3. Ugyanazon a porton nem szabad ket egymas koveto bit muveletet vagy mas RMW utasitast vegre hajtani!
4. Az ISR elejet nem NOP-okkal, hanem ORG-gal kellene megadni, ezzel elkerulendo az esetleges csuszas
5. A status gep allapotat en nem alapoznam a PORTA,3-ra, hanem hasznalnam a FLAG valtozot... Ha veletlen a PORA-t nem sikerul a PICnek lehuzni akkor akar el is rothatja az allapotgepet. A FLAG igy atmehet igazi allapotjelzobe, es akkor az allapotok:

0 - nincs engedelyezve
1 - engedelyezes / start
2 - beolvasas elkezdodott (discharge)
3 - beolvasas vege

Mivel keves az allapot az egyszerubb osszehasonlitas erdekeben akar biteket is lehet hasznalni szamertekek helyett...
(#) foxi63 válasza trudnai hozzászólására (») Jan 14, 2009 /
 
válaszok:
1. azt,hogy ki hogyan szeret programozni, ne bíráljad.
2.Kettőspont valóban nem kell, ez hiba valóban.
3.Ugyanazon porton nem kiírás és beolvasás van egymás után, tehát mehet.. nem kell várni a tényleges átállásra.
4.a nop nem program soha nem fut rá program, csak helykitöltő. én ezt egyszerűbbnek tartom.
5.Ha alaposabban megnézted volna a programot, akkor a jelző flag bitet a megszakítás állítja be,a kondenzátor kisütésére a timer ujbóli átfutásának ideje áll rendelkezésre(256 ciklus). És itt visszatérnék arra, hogy én így oldottam meg, hogy ebből ki milyen ötletet hasznosít az az ő dolga. Légysz tegyél te is fel sok progit, hogy a nép tanuljon, és majd mi meg kritizálunk...
(#) watt válasza foxi63 hozzászólására (») Jan 14, 2009 /
 
Idézet:
„azt,hogy ki hogyan szeret programozni, ne bíráljad.”

Ha felteszel egy programot, hogy okuljon a nép a ötletedből, akkor kiteszed magad annak, hogy bírálnak, főleg ha tele van olyan megoldásokkal, amit nem szabad követni! Egyetértek trudnaival, és jobban teszed, ha hallgatsz rá.

Idézet:
„Légysz tegyél te is fel sok progit, hogy a nép tanuljon, és majd mi meg kritizálunk...”

Téged se kért senki, hogy ilyet tegyél.
(#) potyo válasza foxi63 hozzászólására (») Jan 14, 2009 /
 
1. Ez nem szeretet kérdése, hanem az MPLAB nem szokta szeretni, ha az első oszlopban cimkéken kívül más is van. Ezen kívül az olvashatóságot is növeli, ha blokkszerűen átlátható az egész.
2. Mondjuk nem hiba, csak felesleges
3. Ebből látszik, hogy nemis tudod, hogy mit takar az RMW probléma...
4. A NOP ugyanolyan utasítás, mint a többi, csak nem végez semmit. Utasítás arra, hogy ne csináljon semmit. A programot pedig nem "helykitöltéssel" igazítjuk fix memóriacímre, hanem azzal, ami erre való, tehát org-al. Így ha véletlenül elé írnánk valamit, akkor a fordító kiabálni fog, hogy ott nincs hely, ha meg kitörlünk valamit, akkor meg nem cseszi el a programot.
5. trudnai elég sokmindent közzétett már itt a fórumon a nép tanításához...
(#) SzervízMacska válasza foxi63 hozzászólására (») Jan 14, 2009 /
 
Én még - sajnos - nem vagyok egy nagy PIC-guru, tehát a vita szakmai részét nem vágom, de az a véleményem, pont itt teljesen felesleges trudnaiba belekötni, aki az egyik legaktívabb segítő ebben a topicban. Ha közzé teszed a munkádat, azzal azt is megkockáztatod, hogy kritikát kapsz. Itt még erről sem volt szó, csupán segítő szándékú jótanácsról - szerintem.
(#) sszasza hozzászólása Jan 14, 2009 /
 
Megkockáztatom hogy bugot találtam a C18ban.

char stimeout; //a 0x81 fizikai cimen van
...
char * rxp; //a 0x234 fizikai cimen van

rxp++; stimeout=5;

12D8 0102 MOVLB 0x2
12DA 2B34 INCF 0x34, F, BANKED
12DC 0E00 MOVLW 0
12DE 2335 ADDWFC 0x35, F, BANKED
12E0 0E05 MOVLW 0x5
12E2 6F81 MOVWF 0x81, BANKED

A 12E0-ban egy MOVLB 0x0-nak kene lennie. Nincs. Bele is irta nekem szepen a 0x281be az 5-öt. Ott, vesztemre egy control regiszterem volt
Sajnos most nincs időm tesztelni hogy ez tendencia-e és ha igen, mitől függ.
(#) szilva válasza sszasza hozzászólására (») Jan 14, 2009 /
 
Upsz, ez tényleg elég csúnyán néz ki...
(#) sszasza válasza szilva hozzászólására (») Jan 14, 2009 /
 
Most megnéztem egy régi 18f4431es progimban is, ott az egyes bankban van az rxp. Ugyanez.
A gond, hogy ez már kinn van a megrendelőnél Szerencsére itt a 0x181en nincs regiszter de hogy a timeout se megy az biztos...
Nagyon nem örülök ha ez tendencia. 50nél több progit kellene átnyálaznom...
(#) sszasza válasza szilva hozzászólására (») Jan 14, 2009 /
 
Sajnos már nincs több időm tesztelni. Ami eddig kiderült:
A teljes függvény igy nez ki:
void savedat (void)
{ *rxp=SDATA;rxp++;stimeout=5;
}
1. Cserélgettem rxp-t más pointerre, stimeoutot is más reg-re. Ha a reg bankja > mint a pointeré, akkor beteszi a movlb-t. Egyébként nem.
2. A main-be vagy más, hosszabb függvénybe másoltam a sort, ott szabályosan lefordult. Megszakitásrutinban is.

Ha van időtök és kedvetek, sztem érdemes utánajárni. Én is folytatom majd.
(#) watt válasza sszasza hozzászólására (») Jan 14, 2009 /
 
Ez elég gáz!
Lehet, hogy nem számít, de mi van akkor, ha nem egy sorba írod őket?
Következő: »»   387 / 1318
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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