Fórum témák

» Több friss téma
Fórum » CCS PIC Compiler
 
Témaindító: (Felhasználó 1542), idő: Ápr 3, 2006
Lapozás: OK   53 / 118
(#) pppsss válasza Sasmadár hozzászólására (») Feb 20, 2011 /
 
KÖSZIIII !!!!!!
Látom a WREN írás után is meg kell "rángatni" a CHIP SELECT-et !Mégegyszer köszi !!!
(#) whalaky válasza pppsss hozzászólására (») Feb 22, 2011 /
 
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.
(#) vicsys válasza whalaky hozzászólására (») Feb 23, 2011 /
 
Jó már a PC-d? Ugye nem felejtettél el...? :pirul:
(#) whalaky válasza vicsys hozzászólására (») Feb 24, 2011 /
 
Gyúrok rá, úgy néz ki a HDD adta fel, de még nem reménytelen. Dolgozik a stellar....
(#) messer hozzászólása Márc 2, 2011 /
 
Sziasztok!

  1. lcd_gotoxy(1,1);
  2. printf(lcd_putc," Temp= %3.1f \uC  ", t);


A második sor jelentése érdekelne részletesen ha ebben segítenétek nagyon megköszönném.
(#) Sanyi806 hozzászólása Márc 2, 2011 /
 
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!
(#) messer válasza messer hozzászólására (») Márc 2, 2011 /
 
No ezt kiderítettem
(#) MPi-c válasza Sanyi806 hozzászólására (») Márc 2, 2011 /
 
(Lehet találni nagyobb verziószámú változatot is... )
Ha ez segít, íme:

18F87K90.h
    
(#) Sanyi806 válasza MPi-c hozzászólására (») Márc 2, 2011 /
 
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)
(#) MPi-c válasza Sanyi806 hozzászólására (») Márc 2, 2011 /
 
Bővebben: Link (... a kérdésre a válasz: "de van" )
(#) Sanyi806 válasza MPi-c hozzászólására (») Márc 3, 2011 /
 
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!
(#) DecebaL hozzászólása Márc 8, 2011 /
 
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);


}

}
(#) Hp41C válasza DecebaL hozzászólására (») Márc 10, 2011 /
 
Szia!

A 18F -eken a T0CON regiszter 7. bitje engedélyezi a timer0 -t, a 16F -en ilyen bit nincs...
(#) szkrep válasza Hp41C hozzászólására (») Márc 11, 2011 /
 
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?
(#) sysy válasza Hp41C hozzászólására (») Márc 11, 2011 /
 
Ez nem assembler! Ne keverjük már össze a kedves érdeklődőt hibás információkkal.
Más gond lehet ott.
(#) szkrep válasza DecebaL hozzászólására (») Márc 11, 2011 /
 
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.
(#) szkrep válasza DecebaL hozzászólására (») Márc 11, 2011 /
 
Proteusban így működik (villog a lámpa B0 lábon, tehát van megszakítás):

  1. #include <18f2620.h>
  2. #fuses INTRC_IO,NOWDT,PUT,NOBROWNOUT
  3. #use delay (clock=8M)
  4. //#include "3310.c"
  5. int16 rtc=0;
  6. int c1=0;
  7.  
  8. #int_timer0
  9.  
  10. void RTCC_isr(void)
  11. {
  12.    rtc++;
  13.  
  14.    if (rtc==15000)
  15.    {
  16.       c1++;
  17.       rtc=0;
  18.       output_toggle(PIN_B0);
  19.    }
  20. }
  21.  
  22. void main()
  23. {
  24.    setup_timer_0(RTCC_INTERNAL | RTCC_8_BIT | RTCC_DIV_1);
  25.    enable_interrupts ( int_Timer0 );
  26.    enable_interrupts ( GLOBAL );
  27.    //nokia_init();
  28.    //nokia_clear_screen();
  29.  
  30.    while (1)
  31.    {
  32.       //nokia_gotoxy(0,1);
  33.       //printf(nokia_printchar,"Szamlalo:%d \n", C1);
  34.    }
  35. }
(#) Hp41C válasza sysy hozzászólására (») Márc 12, 2011 /
 
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...
(#) DecebaL válasza Hp41C hozzászólására (») Márc 12, 2011 /
 
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.
(#) sysy válasza Hp41C hozzászólására (») Márc 12, 2011 /
 
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.
(#) Hp41C válasza sysy hozzászólására (») Márc 13, 2011 /
 
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...
(#) sysy válasza Hp41C hozzászólására (») Márc 13, 2011 /
 
Biztos igazad van.
(#) whalaky hozzászólása Márc 13, 2011 /
 
Sziasztok!
Megint nem látok valamit a szememtől, segítsetek!
  1. #include <18F4620.h>
  2. #device adc=8
  3. #fuses HS, NOWDT, NOLVP, NODEBUG
  4. #use delay(clock=20000000)
  5. #define I2C_SDA   PIN_B2
  6. #define I2C_SCL   PIN_B3
  7. #use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
  8. #use i2c(Master,sda=PIN_B2,scl=PIN_B3,FORCE_SW)

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.
(#) vicsys válasza whalaky hozzászólására (») Márc 13, 2011 /
 
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...
(#) whalaky válasza whalaky hozzászólására (») Márc 13, 2011 /
 
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.
(#) icserny válasza whalaky hozzászólására (») Márc 14, 2011 /
 
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...
(#) tomat5 hozzászólása Márc 14, 2011 /
 
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.
(#) Dempsey válasza tomat5 hozzászólására (») Márc 14, 2011 /
 
Szia! Itt van.

16F887.h
    
(#) tomat5 válasza Dempsey hozzászólására (») Márc 14, 2011 /
 
Nagyon köszönöm.
Üdv.
(#) Dempsey válasza tomat5 hozzászólására (») Márc 14, 2011 /
 
Szívesen.
Következő: »»   53 / 118
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