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   101 / 118
(#) djsms válasza potyo hozzászólására (») Szept 3, 2014 /
 
Igen ezen is gondolkodtam és hát kevesebb külső alkatrész is kell hozzá ez tény.
Túlcsordulást mindenképp kell kezelnem (álló autó esete) ezért is gondoltam, hogy "csak arra" használom. Így viszont kell írni egy túlcsordulás túlcsordulása figyelést is

A ccs hogy kezeli a delay függvényt? Ugye ehhez nem használ timert?
(#) potyo válasza djsms hozzászólására (») Szept 3, 2014 /
 
Szerintem nem használ, de én meg CCS-t nem használok, meg delay-t se szokásom, szóval nem tudom
(#) sysy válasza potyo hozzászólására (») Szept 3, 2014 /
 
Szofferes a delay.
(#) potyo válasza djsms hozzászólására (») Szept 3, 2014 /
 
Amúgy megrendelted már a nagyobb PIC-et? Mert ha nem, akkor ha teheted, inkább 16F886-ot vegyél, olcsóbb.
(#) anemo hozzászólása Okt 31, 2014 /
 
Sziasztok!

PIC18F4550 és PIC16F887 között szeretnék UART adatátvitelt véghezvinni, de egyszerűen nem akar összejönni. Valószínűleg azért, mert nem jövök rá a helyes beállításokra. Mindkettőn 20 MHz-es kristály van, viszont a 4550 szoftveresen 48 MHz az USB kapcsolat miatt.

  1. #include <18F4550.h>
  2. #fuses HSPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
  3. #use delay (clock=48 000 000)
  4. #use rs232(baud=9600,parity=N,UART1,stream=RS232)


  1. #include <16F887.h>
  2. #fuses NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,HS
  3. #use delay (clock=20 000 000)
  4. #use rs232(baud=9600,parity=N,UART1,stream=RS232)


putc()-vel egy karaktert akarok egyenlőre csak átküldeni a 887-re (amit binárisra leosztva LED-eken jelenítek meg), de jelen beállításokkal nem akar működni. Ha leveszem 20 MHz-re a 4550-et, akkor valamikor megy (akkor is rosszul megy át), valamikor pedig nem reagál rá. Ha visszaállítom HS-re csak a 4550-et, akkor az USB kapcsolat egyszerűen leáll. Megjegyzem, hogy Proteusban mindenféle beállítással működik szépen, de a gyakorlat sajnos nem követi.

A két PIC között van 5 méter(!) kábel és optikai leválasztás az RX, TX-re, szóval ezzel is kalkulálni kell.

Ha valakinek van ötlete, köszönöm előre is!
(#) messer hozzászólása Nov 2, 2014 /
 
Sziasztok!

0--->1024-ig értéket szeretnék egy nyomó gomb segítségével változtatni. Ameddig nyomom a gombot elindul felfelé a számlálás, ha elérte az 1024-et elindul vissza. Az is jó ha elérte az 1024-et kezdi 0-tól. Ha elengedem a gombot megáll, ha van egyszerű "szellemes" megoldásotok szívesen veszem.
(#) vicsys válasza messer hozzászólására (») Nov 2, 2014 /
 
Csinálsz egy if-es gombfigyelést. Ebbe teszel egy érték=érték-1 utasítást. Ide tehetsz még egy if-es figyelést ami érték<=0, akkor érték=1024. Persze az értéket már az elején definiálod pl. egy unsigned in16-nak és rögtön értéket is adsz neki, 1024-et. Kb. ennyi.
(#) messer válasza vicsys hozzászólására (») Nov 2, 2014 /
 
Köszönöm szépen azt te hogyan oldanád meg ha úgy szeretném hogy mikor eléri az 1024-et kezdjen el vissza, mikor pedig eléri a 0-át kezdjen el felfelé számolni?
(#) kissi válasza messer hozzászólására (») Nov 2, 2014 /
 
Kell egy irányjelző, amit a megfelelő feltétel esetén átváltasz, valahogy így:
  1. if (irany)
  2.              { if (1024==++ertek)  irany=0; }
  3. else       { if (!(--ertek)) irany=1; }
A hozzászólás módosítva: Nov 2, 2014
(#) m.gyula3 hozzászólása Nov 2, 2014 /
 
Sziasztok!

LCD programhoz keresnék htc.h filet, de sajnos nem találtam egy oldalt sem, ahonnét tudnék letölteni.
Az lenne a kérdésem, hogy esetleg tudnátok-e nekem ebben segíteni.
Amikor lefordítom a programot, akkor a hibalista elejére ezt teszi, gondolom ez lesz a baja.

pl.:
* Error 18 "code.c" Line 1(8,15): File can not be opened
Not in "C:\Program Files (x86)\PICC\Devices\htc.h"
Not in "C:\Program Files (x86)\PICC\Drivers\htc.h"
Not in source "htc.h"
Not in local "htc.h"
Not in project "C:\Users\ ...... Hi Tech C\4 Bit\htc.h"
*** Error 128 "C:\Users\ ..... Hi Tech C\4 Bit\lcd.h" Line 10(2,7): A #DEVICE required before this line


Köszönöm a segítséget előre is!
Üdv!
(#) vilmosd válasza m.gyula3 hozzászólására (») Nov 2, 2014 /
 
Mar bocs de mi koze a htc.h filenek a CCS C-hez? Ez egy HTC C-hez tartozo include. A CCS C forumrol letoltheto LCD kezeles, pl a flexlcd.c. ez jol mukodik CCS C alatt.
(#) m.gyula3 válasza vilmosd hozzászólására (») Nov 3, 2014 /
 
Bocs a bénaságért, de még tanulgatom és próbálkozom a programozással.
Köszi, akkor megnézem ott és átírok ezt azt!
A hozzászólás módosítva: Nov 3, 2014
(#) zilahi hozzászólása Nov 11, 2014 /
 
Sziasztok!

Itt a fórumon a teljes programot keresem amit még a fórum elején toto feltett csak azóta az a link már halott.

Feltenné valaki vagy toto?
Nagyon megköszönném!
(#) sysy válasza zilahi hozzászólására (») Nov 11, 2014 /
 
Minek a teljes programját keresed amit a toto feltett?
(#) zoox hozzászólása Nov 23, 2014 /
 
Sziasztok.

BootLoadert szeretnék használni 18f46k22 hex file betöltésére ,de nem fogom hogy is kell ezt pontosan csinálni , illetve tudom hogy először be kellene égetni egy betöltőt a PIC-be és utána már UART-ról lehet feltölteni..
Találtam egy betöltőt ds30Loader névre hallgat de nem találom a neten azt a hex filet amit először be kellene égetni a PIC-be. Valaki tudna segíteni .Gugliztam már sokat de nem sokat haladtam előre.
Előre is köszi.
(#) Hp41C válasza zoox hozzászólására (») Nov 23, 2014 /
 
Nem hinném, hogy egy dsPIC30F -hez való bootloader illene a 18F -ekhez.
PIC18F uart bootloader
(#) icserny válasza Hp41C hozzászólására (») Nov 24, 2014 /
 
Eléggé univerzális, én is használtam már PIC18F25K22-höz.
"ds30 Loader is a PIC bootloader for PIC12, PIC16F, PIC18, PIC24, and dsPIC families of MCUs from Microchip. It comes with support for over 500 devices out of the box." Bővebben: Link

Zoox: A letöltési oldal itt található. Ha jól látom, regisztrálni kell magad.
(#) Szpisti hozzászólása Nov 24, 2014 /
 
Sziasztok!
Remélem jó helyen teszem közzé a kérésem.
Van egy egyszerű áramkör, amit szeretnék megépíteni ezen az oldalon.
Az lenne a kérésem, hogy a linkel található kódot valaki "szerelje össze" nekem egy .hex fájl formában.
Tudom ott a link a programhoz, és magam is belemerülhetnék, de pont ezt szeretném elkerülni, annyira nem sűrűn foglalkozom pic-ekkel hogy emiatt most órákat vacakoljak ezzel is.
Pickit2-m és a jelzett tipusú pic-em van hozzá.
Köszönöm előre is, ha valaki megoldaná.
(#) messer hozzászólása Dec 4, 2014 /
 
Sziasztok van egy olyan problémám, hogy egy olyan vezérlést készítek, ahol 4dd nyomógomb vezérel 4db led fényerőt tehát egy ledhez egy gomb tartozik amivel lehet ki és be kapcsolni és dimmelni a fényerőt.Ezeket az értékeket eepromba tárolja. Aztán van még négy db nyomógomb ami négy memoria helyet jelent ami a beállított négy led fény erejét tárolja tehát különböző világítási képeket. A kódot már megírtam ccsc-vel működik, viszont ez egy ház 4db helyiségének világítása lenne és fontos lenne hogy össze legyen fűzve a kód mert jelen pillanatban ha állítom a fényerőt az egyik leden nem lehet közben felkapcsolni a világítást a másikban.Esetleg a forrást be tudom nektek szúrni. De inkább gondolat ébresztő gondolatok kellenének hogyan szoktátok egymásba ágyazni ilyen esetekben a kódot hogy viszonylag real time -ban lekezeljen mindent a processzor.

Javaslatokat segítségeket előre is köszönöm.
(#) messer hozzászólása Dec 9, 2014 /
 
Sziasztok elkezdtem multitaskolni a programomat különböző megszakításokkal.

Bele is futottam egy problémába légyszíves nézzetek rá.
MPLAB_8.89 ccsc plugin-al.

Egyszerűen nem tudom megvalósítani simulator módban a portB változására a megszakítást pedig úgy nézem a regiszterekbe jól íródik minden.

Be is szúrom a kódot kérlek benneteket nézzetek rá.

  1. #include <16F628A.h>
  2.  
  3. #device ICD=TRUE
  4. #FUSES NOWDT                    //No Watch Dog Timer
  5. #FUSES PUT                      //Power Up Timer
  6. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  7. #use delay(internal=4000000)
  8.  
  9.  
  10.  
  11. #INT_EXT
  12. void  EXT_isr (void)
  13. {
  14.  
  15. }
  16.  
  17. void main()
  18. {
  19. enable_interrupts(GLOBAL);
  20. enable_interrupts(INT_RB);                                      // Sets up EXT
  21.  
  22. while(1)
  23.         {
  24.         }
  25. }


Köszönöm!
(#) Dempsey válasza messer hozzászólására (») Dec 9, 2014 /
 
Szia!
Szerintem kihagytad az oszcillátorra vonatkozó fuse beállítást. Meg ezt is beleteheted : enable_interrupts(int_ext);
ext_int_edge(H_TO_L);
enable_interrupts(global);
(#) messer válasza Dempsey hozzászólására (») Dec 9, 2014 /
 
Szia!

A 16F628A adatlapja alapján a portB kétféle megszakítás van az egyik az az RB0-án fellépő változás hatására a másik az az RB4-RB7 változására csinál megszakítást.

Én az RB4-RB7 hatására fellépőt szeretném használni.

Idézet:
„enable_interrupts(int_ext);
ext_int_edge(H_TO_L);”


Ezek a beállítások az RB0-ra vonatkoznak, de javíts ki lehet félre értelmeztem vmit.
(#) Dempsey válasza messer hozzászólására (») Dec 9, 2014 /
 
Így van ahogy mondod,de akkor neked #INT_RB kell nem #INT_EXT, ha jól tudom.
(#) messer válasza Dempsey hozzászólására (») Dec 9, 2014 /
 
Igen teljesen igazad van! így már bele megy a megszakításba, de sehogyan sem tudom törőlni az Intcon regiszter RB Flag -et. betesazem a mostani codot!

  1. #include <16F628A.h>
  2.  
  3. #device ICD=TRUE
  4. #FUSES NOWDT                    //No Watch Dog Timer
  5. #FUSES PUT                      //Power Up Timer
  6. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  7. #FUSES INTRC_IO
  8. #use delay(internal=4000000)
  9.  
  10.  
  11.  
  12. #INT_RB
  13. void  RB_isr()
  14. {
  15. CLEAR_INTERRUPT(int_rb);
  16. }
  17.  
  18. void main()
  19. {
  20. enable_interrupts(GLOBAL);
  21. enable_interrupts(INT_RB);                                      // Sets up EXT
  22.  
  23. while(1)
  24.         {
  25.         }
  26. }
A hozzászólás módosítva: Dec 9, 2014
(#) potyo válasza messer hozzászólására (») Dec 9, 2014 /
 
Adatlap 5.2 fejezet, hatodik bekezdését olvasd el.
(#) messer válasza potyo hozzászólására (») Dec 10, 2014 /
 
Köszönöm nézegetem és látom, hogy bent ragad de nincs elképzelésem ezt ccsc-ben hogyan kezeljem le. Tehát hogyan töröljem az RBIF flaget.
(#) vicsys válasza messer hozzászólására (») Dec 10, 2014 /
 
Olvasni kell a portot.
(#) messer válasza vicsys hozzászólására (») Dec 10, 2014 /
 
Nem nagyon értem, tehát olvassam ahhoz hogy utána tudjam törölni az rbif-flag-et ?
Mit értesz olvasás alatt? Másoljam át a port állapotát egy regiszterbe?
(#) messer hozzászólása Dec 10, 2014 /
 
Valahogy így kezelem le de szerintem ennek más módja van.....

  1. #INT_RB
  2. void  RB_isr(void)
  3. {
  4. disable_interrupts(INT_RB);
  5. output_low(pin_b4);
  6. set_tris_b(0b11111111);  
  7. CLEAR_INTERRUPT(INT_RB);
  8. enable_interrupts(INT_RB);
  9. }
(#) messer hozzászólása Dec 10, 2014 /
 
Talán megvilágosodtam köszönöm a rávezető írásokat nézzetek rá szerintetek is ez lenne a megoldás?

Még egy olyan probléma merült fel, hogy int_rb megszakítás végén nem ugrik rögtön vissza a helyére a program hanem picit elszöszöl az mplab zöld nyilacskája int_ext megszakítás sora előtt. Ez mplab hiba lehet vagy vmit én követtem el? Egy képet is csatoltam ahol ez jól látszik.


  1. #include <16F628A.h>
  2.  
  3. #device ICD=TRUE
  4. #FUSES NOWDT                    //No Watch Dog Timer
  5. #FUSES PUT                      //Power Up Timer
  6. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  7. #FUSES INTRC_IO
  8. #use delay(internal=4000000)
  9.  
  10. int value;
  11.  
  12. #INT_RB
  13. void  RB_isr(void)
  14. {
  15. disable_interrupts(INT_RB);
  16. value=input_b();
  17. CLEAR_INTERRUPT(INT_RB);
  18. enable_interrupts(INT_RB);
  19. }
  20.  
  21. #INT_EXT
  22. void  EXT_isr (void)
  23. {
  24.  
  25. }
  26.  
  27.  
  28. void main()
  29. {
  30. set_tris_b(0b11111111);
  31. enable_interrupts(GLOBAL);
  32. enable_interrupts(INT_RB);                                      // Sets up EXT
  33. enable_interrupts(INT_EXT);
  34. ext_int_edge(H_TO_L);
  35.  
  36.  
  37. while(1)
  38.         {
  39.        
  40.         }
  41. }
A hozzászólás módosítva: Dec 10, 2014
Következő: »»   101 / 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