Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
KÖSZIIII !!!!!!
Látom a WREN írás után is meg kell "rángatni" a CHIP SELECT-et !Mégegyszer köszi !!!
Vanni van, de az SD kártyát kezel, és kicsit más.
Nemrég szórakoztam vele pár hetet mire elindult, nekem is proteussal volt sok bajom. Pillanatnyilag annyit tudok javasolni hogy nézd meg a Drivers\25C080.C file-t. Nem tudom működik-e, volt már hogy nem mentek a példa progik. Egyenlőre időzavarral küzdök... Amit mindenképpen javaslok, hogy első körben mindenképp hardveres SPI-vel és alacsony órajellell próbálkozz. Ugyan nem vagyok még biztos benne, de a proteus mintha túlreagálná volna a chipselect-et. Az egyik mintaprogram aminek az elején lerántja és úgyhagyta az ment elsőre, amelyik csak akkor húzta le az nem, de ez sem teljesen igaz, mert a kész SD programom csak akkor húzza le amikor ténylegesen szükség van rá (lesz mellette több SPI eszköz is), és legutóbb azzal is ment... nem mindíg értem..... lehet hoyg az időzítésre érzékeny. Több programmal próbálkoztam, volt amelyik ment, volt ami nem. Amint lesz kis időm megpróbálok ránézni.
Jó már a PC-d? Ugye nem felejtettél el...? :pirul:
Gyúrok rá, úgy néz ki a HDD adta fel, de még nem reménytelen. Dolgozik a stellar....
Sziasztok!
A második sor jelentése érdekelne részletesen ha ebben segítenétek nagyon megköszönném.
Sziasztok!
Olyan kérdésem lenne, hogy a PIC18F87K90 -hez hol lehet header file-t beszerezni, mert a nálam feltelepített PIC CCS PCWHD 4.106 nem támogatja a fenti picet. A CCS oldalán itt az OPC Opcode -nál H (PIC18; 16-bit opcode; CCS PCH Compiler) szerepel, de elméletileg nálam a H és D is telepítve van, vagy én már nem is tudom...valaki legyen szíves és igazítson útba, mert a netes header file keresés sem hozott érdemi eredményt. Előre is köszönöm mindenkinek!
(Lehet találni nagyobb verziószámú változatot is... )
Ha ez segít, íme:
Szia!
Köszönöm a gyors segítséget! Megpróbálom leszedni valamelyik újabb példányt, hátha abban benne van a többi K és J jelű pic is. Mégegyszer köszönöm! (többnyire "szerencsés" vagyok a google-el, de most valahogy nem akarta az igazságot)
Bővebben: Link (... a kérdésre a válasz: "de van" )
Szia!
Sikerült, megtaláltam a legújabbat, bár kicsit ellentmondásos(ak) a header file(ok)(pl.: 18F87K90.h). Vagy csak nem tudok számolni, mert CCS: Program memory: 65536x16 Data RAM: 512 Stack: 31 Microchip szerint: RAM Bytes: 4,096 a PIC18F4620 pl. stimmel, de ennyi hibával egy trombita szól. Köszönök mindent!
Sziasztok
Az a problémám, hogy a timer0 nem számol PIC18F2620 -al, nem tudok rájönni, hogy mit rontok el. Ugyanez a kód PIC16F874 -el viszont megy. #include #include "3310.c" int16 rtc=0; int c1=0; #int_RTCC void RTCC_isr(void) { rtc++; if (rtc==15000) {c1++; rtc=0;} } void main() { setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_CLOCK_DIV_2|ADC_TAD_MUL_0); setup_spi(SPI_SS_DISABLED); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_ccp1(CCP_OFF); setup_comparator(NC_NC_NC_NC); enable_interrupts(INT_RTCC); clear_interrupt(INT_rtcc); enable_interrupts ( INT_RTCC ); enable_interrupts ( GLOBAL ); setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_31250|OSC_PLL_OFF); set_timer0(0 ); nokia_init(); nokia_clear_screen(); While (1) { nokia_gotoxy(0,1); printf(nokia_printchar,"Szamlalo:%d \n", C1); } }
Szia!
A 18F -eken a T0CON regiszter 7. bitje engedélyezi a timer0 -t, a 16F -en ilyen bit nincs...
Azzal elvileg nem a fordítónak kéne törődnie? A PIC header fájljának és a projectben a PIC típusának változtatásával a "setup_timer_0" is a megfelelő bitet kéne hogy piszkálja, nem?
Ez nem assembler! Ne keverjük már össze a kedves érdeklődőt hibás információkkal.
Más gond lehet ott.
Egyébként csak a timerrel van baj? Az LCD-t kezeli? Mert akkor az órajel beállítása legalább jó. (CCS fórumon a setup_oscillator()-t szidják rendesen). Az nem lehet fura, hogy előbb indítasz egy timert, engedélyezel rá egy megszakítást, de csak ezek után mondod meg neki, hogy mi az órajel?
Miért nem egy #fuses sorban állítgatod be, hogy mi hogy legyen? Olyan is van, hogy egyszerűen bugos a fordító, és kicsit utána kell olvasni, hogy az adott verzióban mi a megoldás.
Proteusban így működik (villog a lámpa B0 lábon, tehát van megszakítás):
Az információ nem téves, a bit tényleg ott van a hardware -ben. Milyen értéket kap az setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1) eljárásban? És milyen értéket kap a T08BIT bit? Hány bitesen fog működni default érték esetén? A megszakítási rutinban nem kellene törölni a T0IF jelzőbitet?
Ez nem attól függ mivel fordítasz (Parsic, Basic, Pascal Ial, C, stb), hanem a beállított értékektől függően fog működni a modul...
Köszönöm mindenkinek a segítséget. Közben megoldódott a probléma. A setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1) beállítással a T0 16 BIt és igy elég sok időt vett volna igénybe míg 15000 -ig elszámol. Miútán megadtam, hogy a Timer0 8bit legyen már jól működik.
Kedves Hp41C!
Mégegyszer elmondom, hogy ez nem a fapad topic. Itt nem bitek tologatásáról van szó, hanem szemléletről. Ha nem akarsz, vagy nem nagyon muszáj, akkor nem kell biteket billegtetni. A magas szintű nyelvben szinte megmondod, hogy mit szeretnél és a fordító több-kevesebb izzadsággal megcsinálja neked. Ha felkonfigurálod a tájmert, akkor ez a fordító be is kapcsolja neked , mert bátorkodtak arra gondolni, hogy használni is szeretnéd. A megszakítás rutin végén nem kell semmilyen bitet sem törölni, mert ez nem a kézi sebességváltós autó, hanem automata. A fordító leírásában (sőt a helpjében is) egyértelműen le van írva, hogy 16 bitesen ébrenek a 16 bites számlálók (általában). Ha nem ebben az üzemmódban akarod használni, csak akkor kell neked átkonfigurálni. És a beállítások igen, - bármíly hihetetlen -, attól függenek, hogy mivel fordítasz. Nem szégyen, ha az ember fia elolvassa a leírásokat, amivel dolgozni szeretne. Bár, ahogyan tudom, te jó programozó vagy és egy jó programozó bármilyen nyelven tud assembler programot írni Persze ez csak vicc volt és ne szívd mellre. Mindenki átesik ezeken a problémákon, ha assemblerből vált magsabb szintre. A többi dologban viszont teljesen egyetértek veled.
Kedves Sysy!
Lehet Neked bármilyen szintű autód (high level Ferrary vagy kézi váltós Trabant, vagy közte bármilyen átmenet - automata kuplungos Renault, stb), ha a töltőállomáson nem mondod meg, hogy benzin vagy gázolaj kell bele, akkor ne várd el azt, hogy a gépkönyvben leírt módon fog gyorsulni. A kutasnak odaadhatod a kulcsot, hogy tankolja meg, de el is magyarázhatod, hogy motort cseréltettél, és Purkins diesel van a Ladában... Nem azt mondtam, hogy kézzel, assemblyvel kell beállítani a biteket, hanem azt, hogy meg kell győződni, arról, hogy jó érték kerül a regiszterbe. A timer0 két fontos résztetben tér el a 16F és 18F között: T0ON, T08BIT Egy biztos: a konrtoller úgy működik, ahogyan a regisztereinek bitjeit beállítják (a fordító program vagy a felhasználó). C fordító mazsola...
Sziasztok!
Megint nem látok valamit a szememtől, segítsetek!
Szoftveres I2C-vel próbálkoznék, de nem megy. Megáll az i2c_start() -nál. Eddig csak hardweres I2C-t használtam, soha nem volt vele bajom, de most az SPI miatt foglalt.
Miért definiáltál neki nevet, ha a PIN_ direktívát használod?
#use i2c (Master,sda=I2C_SDA , scl=I2C_SCL , FORCE_SW) Illetve kihagyhatnád az I2C_ előtagot, hátha az kavar be...
Ugyan az okát még keresem, de a dolog megoldódni látszik.
A varázslat az #use i2c( multi_aster, ... volt A help nem igazán tér ki rá hogy mi is ez, így kicsit még nyomozni kell utána.
A multi_master üzemmód az I2C esetén azt jelenti, hogy egynél több master lehet a buszon. Ekkor minden tranzakció kezdetén arbitráció zajlik (az nyer, aki legtovább szinkronban marad a busz állapotával...), s ütközésdetektálásra van szükség. Az adatlap vagy a PIC Family Reference Manual leírja, hogy ez hogyan zajlik.
Hogy ez most hogy jön ide, azt csak a CCS tudná megmondani...
Sziasztok
Figyelmetlenségből letöröltem a 16f887.h file-t. El tudná küldeni esetleg valaki nekem. A neten nem találtam meg. Köszi. |
Bejelentkezés
Hirdetés |