Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Nekem furcsa, hogy 7405-öt használ a szerző a kapcsolásban, miközben annak kimenete max. 7V lehet, és a kapcsolásban az egyik IC kimenete 13V-ra van felhúzva. Na mindegy, ha állítólag bírja...
A 4,7k helyett jó a 4,3k is, nem ettől nem megy, ez tuti. Próbáld ki az oshon programját, vagy a WinPIC800-at. Az IC-Progot felejtsd el, mert nem jó semmire.
Az INTRC_IO és az INTRC_NOCLKOUT nem szinonímák? Mintha mindkettő azt jelentené, hogy nincs CLKOUT, azaz I/O-ra használható az a láb. Csak mintha PIC-enként változna, hogy hogy is nevezik ezt a módot az adatlapban...
Sziasztok !
Hogy tudom MPLAB -ban megoldani ,hogy ne keljen (átírás nélkül) megvárnom a delay végigfutását ?
1. leszoksz az olyan delay használatáról, ami olyan hosszú, hogy feltetted ezt a kérdést
2. breakpoint-ot teszel, és futtatod F9-el
HÉHÉ
Mit jelent az LVP??? Már nem érzékeny a rendszer. Immunis rám a panel. Bevallom már teljesen elkeseredtem mivel ha csak a kezem közelítettem a panelhoz (10 cm) akkor resetelt a rendszer. Amit a DS1620 érzékelő okozott mert ha kikapcsoltam a programban tehát nem olvasta és írta a PIC akkor nem volt gond. De mihelyt adatokat küldött neki máris reszetelt a rendszer. Na 1 probléma megoldva 1000 köszönet. De mi is ez az LVP?
Azt nem udom hogy szinonímák -e de ha INTRC_I/O - ra állítom égetésnél akkor gond nélkül villog a led a PORTA6 - on és belső OSC -ről megy. Tuti mert nincs a panelon külső
Jó kérdés, bevallom nem ellenőriztem le, csak az adatlapból azt gondoltam, hogy ez a két INTOSC beállítási lehetőség egyike.
De most megnéztem és az MPLAB ezt nem is értelmezi, mert ott csak ez a két lehetőség van: INTRC_OSC_NOCLKOUT INTRC_OSC_CLKOUT Viszont akkor nem értem mit kavar el az égetőprogram!?
Alacson feszültségű programozás engedélyezése. A PGM láb ilyenkor bekavar, mert azon keresztül lehet indítani a programozási kérést. Ez volt a problémád.
Akkor most hogy is áll a dolog?
Erre akkor majd odafigyelek. Már csak a DS1620 - at kell működésre bírnom. Most pihenek. Majd jeletkezem.
Mégegyszer kössz!!!
Lehet ,hogy megköveztek ,de 2 napja ezzel szenvedek és nem értem !
Amúgy is csak ismerkedek a PIC -ekkel ,de ez a 12f509 másabb is mint az eddig már - már ismerős 16f84 ,vagy a 877.... Az a jelenség ,amivel nem tudok mit kezdeni ,hgy a "movwf a1_2" sorról elugrik vissza a "movlw H'df'" sorra ,ahelyett ,hogy folytatná a delay_0 tól ! Mitől van ,mit ronthattam el ? list p=12f509, f=inhx8m #include "p12f509.inc" __config _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC CBLOCK a1 a2 a1_2 ENDC org 0 Debut movwf GPIO TRIS GPIO ; PortGPIO en sortie movlw H'df' option START BSF GPIO,1 CALL Delay BCF GPIO,1 CALL Delay GOTO START Delay ;499994 cycles movlw 0x03 movwf a1 movlw 0x18 movwf a2 movlw 0x02 movwf a1_2 Delay_0 decfsz a1, f goto $+2 decfsz a2, f goto $+2 decfsz a1_2, f goto Delay_0 ;2 cycles goto $+1 ;4 cycles (including call) return END Idézet: „A fura az hogy én a forrásba a _INTRC_OSC_NOCLKOUT állítottam be mégis működött. Viszont ha a WINPIC- ben átkapcsoltam NOCLKOUT - ra akkor csak egyfolytában világított a led és még instabil is lett az egész érintésre.” Nem ismerem azt a WinPIC-et (ill nagyon nagyon regen messze messze a galaxysban hasznaltam ) szoval az a gyanum, hogy az RC_NOCLOCKOUT es az INRC_NOCLOCKOUT keveredik ossze ott valahol - marmint az elmondasod alapjan...
CBLOCK
a1 a2 a1_2 ENDC Nem adtal meg a konstans blokknak kezdo erteket, igy a specialis funkcio regiszterekben turkalsz, es az a1_2 eppenseggel a PCL lesz...
Köszi !
Ez ennél a pic -nél van így ,vagy a 877 -nél is ? Mert ott is így csináltam !
A CBLOCK egy konstansok deinialasara hasznalatos direktiva. A kezdo ertekkel lehet megadni, hogy mi legyen az elso elem erteke, utana az elemek erteke novekszik:
Ezt a konstans definialast lehe felhasznani RAM cimek definialasara is, a kezdo ertek a RAM terulet elejenek cime. Neked kell kinezni az adatlapban, hogy a szabadon felhasznalhato terulet hol kezdodik. Van ahol 0x20, van ahol 0x70 van ahol mashol... Vannak olyan PIC-ek ahol bizonyos teruleteket lapozas nelkul ersz el, van ahol nincs ilyen sem. Mindig az adatlap arulja el, hogy ez hol lesz - ill ha mar sokat dolgoztal egy adott tipussal akkor emlekezni fogsz ra, de addig a biblia az adatlap
Célszerű mindig megadni a kezdő blokk címét, ez alapján járj el és jó lesz.
Meg valami: Ha megtanulnad a relokativ programozast - ami szerintem nem nehez - akkor nem kellene a ram teruletet adatlapbol kinezni, mert az benne lesz a linker script-ben amibol majd a fordito (ill a linker) kibogarassza, hogy hol van a ram. Keress ra ebbena topicban a linker script -re, irtam valamikor arrol par szot, vagy ide is irtam egy cikkecsket angol nyelven.
A progi szimpatikus, de sajnos alap beállításokkal nem megy, próbálgattam állítgatni, de azon kívül, hogy a két piros ledet ki be tudtam kapcsolgatni, nem változott semmi. Annyit csinál, hogy (elméletileg) töröl, kiolvas, és ellenőriz, de mihelyt betöltöm a hex fájlt és rá akarom tölteni ezt írja: ERROR -> Writing Adress 0x000000, ha viszont ki olvasom az üres pic-et akkor a progiba is minden üresre vált, és azt viszont vissza írja (legalább is úgy tűnik) , közben még az oldalon amit fentebb linkeltem, nézegettem a kapcsolást, és a beültetést, és azt vettem észre hogy a kapcsoláson van egy kondenzátor (az alkatrész jegyzéken is ott van, ezért van is itthon egy) a beültetésen viszont nincs, a 74LS05 4-es és 11-es lábát köti össze a testel, ez lehet-e probléma? Még a program beállításában szeretnék segítséget kérni. Köszönöm!
Milyen programról beszélsz?
Arra a kondira nehéz lenne ráfogni.
A WinPic800-ra gondolok, alap beállításokkal semmi, manuálba nem e kellene valamit állítani, a két piros ledem, ellentétessen működik, mint ahogy a programban van, tehát ha a progi úgy jelzi hogy világít akkor az égetőmön nem világít...
Így próbáld beállítani: csatoltam a képet...
A jobb szélső Teszt oszloppal ki tudod próbálni a vonalakat. Műszerrel végig kell mérni. Az ACK akkor kell világítson, ha a data vonalat bepipálod. Közben a Vdd legyen bekapcsolva. PIC-et nem szabad rákötni közben, csak ha minden okés.
Üdv!
Nem boldogulok a DS1620 és a PIc16F628 közötti kommunikációval, pedig már átrágtam néhányszor az adatlapot. Egyszerűen a BEJOVO1 mindig 0 marad. nem változik semmit. Esetleg valaki dolgozott már ezzel a fajta kommunikációval? (data, clock, reset). 1-2 dolgot azért találtam benne amit átírtam de már nem tudom hogy mi lehet a hiba A configurálós részbe javítottam a write config parancsot MOVLW 0x0c - re (0xac volt), illetve az adatot 00000011 - ra (00000001 volt) . De már nincs ötletem. Az ELEJE részbe betettem egy ellenőrzést. A BEJOVO1 első bitje akkor 0 ha egész a hőméeséklet, 1 pedig ha fél
Ennyire hosszú kódot a későbbiekben, legyél szíves csatolmányként feltenni, mert nem kényelmes, ha emiatt túl sokat kell görgetnie minden segítségnyújtónak.
Kösz!
Hali!
Na, itt van a kép... Közben azért gondolkoztam, és az nem lehet gond, h a kábel kb 1,5-2 m hosszú??
Ha a soros kábel ilyen hosszú, az nem baj.
Viszont ez a prgoram nem a WinPIC800, nem ismerem. Töltsd le - innen - hátha ezzel mész valamire.
Már elmondtam mi a véleményem a RECIVE rutinról és képet is csatoltam arról, hogy mikor jelenik meg az adat. Ennek ellenére továbbra is a lefutó élnél olvasod ki a bitet, amikor még az állapota értékelhetetlen.
Bocsi!
már azt is átírtam vagyis megfordítottam mind a két esetben (RECEIVE, SEND), de semmi.
Jelenleg itt tart a progi a változtatásokkal együtt.
Ja meg több rajzon is láttam úgyhogy beraktam egy 1K ellenállást a data vonalra. |
Bejelentkezés
Hirdetés |