Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   701 / 1210
(#) Pali79 válasza ativagyok hozzászólására (») Szept 2, 2015 /
 
Azért ezt így nem hiszem. Vagy csak ez az egy feladata lesz? Nem hiszem, hogy mindegy, hogy PIC10F vagy mondjuk PIC32 szériát akarsz használni.
(#) ativagyok válasza Pali79 hozzászólására (») Szept 2, 2015 /
 
Ez így valóban nem igaz, pontosítanék: A MikroC PRO for PIC-nek támogatnia kellene az eszközt.
(#) gyula66 hozzászólása Szept 2, 2015 /
 
Sziasztok. Egy kis segítség kellene. Ne értek a PIC program írásához. Kellene nekem ehhez a kapcsoláshoz egy hex fájl. http://www.edutek.ltd.uk/NCProjects/PIC_Alarm.html Az oldalon látható időzítési idők megfelelőek (20s, 10s, 30s). Elöre is köszönöm a segítséget.
(#) edison14 hozzászólása Szept 2, 2015 /
 
Sziasztok!

XC16-os fordítóval próbálnék lefordítani egy programot. A gondom a késleltetésekkel támadt. Ugyanis az XC16 User guide-jában azt írja hogy használható a __delay_ms, de a fordításkor ezt a hibát írja ki:

Idézet:
„warning: implicit declaration of function '__delay_ms'”


Nem tudom mi lehet a baja. Valamit kéne include-olnom a projekthez?
(#) cross51 válasza edison14 hozzászólására (») Szept 2, 2015 /
 
A libpic30.h ban van deklarálva a __delay_ms() fv, #include <libpic30.h>.
(#) cross51 válasza cross51 hozzászólására (») Szept 2, 2015 /
 
Azt elfelejtettem írni (gondolom eddig XC8-at használtál) itt FCY(FOSC helyett) kell deklarálni az utasítás ciklusok számának és az = az órajel amin fut a PIC / 2.
A hozzászólás módosítva: Szept 2, 2015
(#) edison14 válasza cross51 hozzászólására (») Szept 3, 2015 /
 
Köszönöm a segítséget. Már eggyel közelebb kerültem a sikerhez, de még mindig valamilyen hibát ír a fordító.

Idézet:
„In function `.LSM13': undefined reference to `___delay_ms'”


Nem tudom mi akar ez lenni.
(#) Tas84 válasza edison14 hozzászólására (») Szept 3, 2015 /
 
Nem csak 2 aláhúzás kell a delay elé?
(#) icserny válasza gyula66 hozzászólására (») Szept 3, 2015 /
 
Az általad belinkelt oldalról letölthető szoftver állítja elő a HEX állományt. Szerintem ehhez nem kell a PIC programozáshoz érteni és a PIC programozás ismerete sem jelent előnyt...
(#) edison14 válasza Tas84 hozzászólására (») Szept 3, 2015 /
 
A programban csak két aláhúzást tettem de a output ablakban a hibánál hármat mutat. Megnéztem a libpic30 kódját és anban ezt a sort
Idézet:
„#if !define(FCY)”
módosítottam erre
Idézet:
„#if define(FCY)”
és így már lefordította a programot és szépen működik is.
Köszönöm a segítséget.
(#) Hp41C válasza edison14 hozzászólására (») Szept 3, 2015 /
 
Inkább a Te programodba kellett volna elhelyezni egy
  1. #define FCY  40000000

sort, amiban a tényleges órajel értékét adhatod meg.
(#) edison14 válasza Hp41C hozzászólására (») Szept 3, 2015 /
 
Ezt a sort hozzáadtam a programomhoz de akkor is hibát írt. Ezért módosítottam a libpic30 kódját.
(#) Hp41C válasza edison14 hozzászólására (») Szept 3, 2015 /
 
Sajnos csak az 1.11 verzió van kéznél... Itt még Fcy a szimbólun neve. Amennyiben nincs másutt megadva, egy default értéket ad neki.
  1. /* Change the following definition to match the instruction frequency
  2. of the application in MIPS (MHz) */
  3.  
  4. #if defined(__dsPIC33E__) || defined(__PIC24E__)
  5. #ifndef Fcy
  6. #define Fcy  60000000
  7. #endif
  8. #endif
  9.  
  10. #if defined(__dsPIC30F__) || defined(__dsPIC33F__) || defined(__PIC24H__)
  11. #ifndef Fcy
  12. #define Fcy  40000000
  13. #endif
  14. #endif
A hozzászólás módosítva: Szept 3, 2015

delay.h
    
(#) edison14 válasza Hp41C hozzászólására (») Szept 3, 2015 /
 
Köszönöm a kódot és a segítséget.
(#) Hp41C válasza edison14 hozzászólására (») Szept 3, 2015 /
 
? ? ? Ez az állomány az XC16 része. ? ? ? Csak kiemeltem onnan, hogy lássuk, mit csinál. Ha az újabb verzióban is ez van (Fcy -vel), akkor a saját programodban csak ez kell:
  1. #define Fcy  40000000

Ha megváltorztatták a szimbólum nevét, akkor értelemszerűen a sorban azt kell megadni, amire változtatták.
A hozzászólás módosítva: Szept 3, 2015
(#) edison14 válasza Hp41C hozzászólására (») Szept 3, 2015 /
 
Az újabb verzióban nem az van amit írtál. Írtam hogy definiáltam a programban az FCY-t de ugyan úgy hibát írt ki a fordító és nem fordította le a kódot. Ezután azt a kódrészletet amit linkeltél beletettem a libpic30- ba és ezzel is működött ahogy az én megoldásommal is. Az új verziójú XC16- ban is FCY- t kell definiálni.
(#) Hp41C válasza edison14 hozzászólására (») Szept 3, 2015 /
 
Mit is írjak????? Milyen jó, hogy egy világhírű cég ennyire következetes!
Idézet az XC1.11 -beli libpic30.h -ból: (Ezt találtad meg.)
  1. /*
  2.  * __delay_ms() and __delay_us() are defined as macros. They depend
  3.  * on a user-supplied definition of FCY. If FCY is defined, the argument
  4.  * is converted and passed to __delay32(). Otherwise, the functions
  5.  * are declared external.
  6.  *
  7.  * For example, to declare FCY for a 10 MHz instruction rate:
  8.  *
  9.  * #define FCY 10000000UL
  10.  */
  11.  
  12. #if !defined(FCY)
  13. extern void __delay_ms(unsigned long);
  14. extern void __delay_us(unsigned long);
  15. #else
  16. #define __delay_ms(d) \
  17.   { __delay32( (unsigned long) (((unsigned long long) d)*(FCY)/1000ULL)); }
  18. #define __delay_us(d) \
  19.   { __delay32( (unsigned long) (((unsigned long long) d)*(FCY)/1000000ULL)); }
  20. #endif

Idézet az XC1.11 -beli delay.h -ból:
  1. #if defined(__dsPIC33E__) || defined(__PIC24E__)
  2. #ifndef Fcy
  3. #define Fcy  60000000
  4. #endif
  5. #endif
  6.  
  7. #if defined(__dsPIC30F__) || defined(__dsPIC33F__) || defined(__PIC24H__)
  8. #ifndef Fcy
  9. #define Fcy  40000000
  10. #endif
  11. #endif

Annyi a baj, hogy az a fránya fordító különbséget tesz a kisbetű - nagybetű között.
Még el is menne a hiba, ha ez 1.01 verzióról lenne szó. De ez a fordító más két éves!!
(#) edison14 válasza Hp41C hozzászólására (») Szept 3, 2015 /
 
Azaz az FCY- t Fcy- nek kellene írni? Csakmert én minden betűt naggyal írtam.
(#) gyula66 válasza icserny hozzászólására (») Szept 3, 2015 /
 
Valóbban igazad van,de a leölhető program free és nem generál hex állományt.
(#) Hp41C válasza edison14 hozzászólására (») Szept 4, 2015 /
 
Nem ennyire egyszerű a perobléma. Úgy néz ki, mind a kettőt (FCY Fcy) meg kell adni. Éljen és virágozzék....
(#) edison14 válasza Hp41C hozzászólására (») Szept 4, 2015 /
 
Ha minden ilyen egyszerű lenne akkor szerintem én lennék Einstein 2
(#) ativagyok hozzászólása Szept 7, 2015 /
 
Sziasztok!
Több PIC között kommunikációt szeretnék megvalósítani. Egy master PIC hőmérsékletadatokat kérdezne le, majd tárolna el 2, vagy 3 slave PIC-től. Fizikailag 50cm-en belül helyezkednek el egymáshoz képest.
Milyen kommunikációt célszerű használni erre az esetre?
Üdv,
Attila
A hozzászólás módosítva: Szept 7, 2015
(#) icserny válasza ativagyok hozzászólására (») Szept 7, 2015 /
 
Milyen hőmérőkről van szó? Vannak 1-wire, I2C, esetleg SPI kommunikációt használó digitális hőmérők, amelyekhez nem kell slave PIC sem.
(#) usane válasza ativagyok hozzászólására (») Szept 7, 2015 /
 
Attól függ mi van az eszközökben, de miért egy másik PIC szolgáltatja az adatot. Nem hőmérő meg hasonlók? Azokban I2C meg 1wire a leggyakoribb.

szerk. látom megelőztek közben.
A hozzászólás módosítva: Szept 7, 2015
(#) ativagyok válasza icserny hozzászólására (») Szept 7, 2015 /
 
Egy sima NTC ellenállás, amit egy slave pic dolgozna fel. A hőmérsékletadatok továbbításán kívül több dolga is lenne a slave eszközöknek, ezért gondolkodtam ilyen megoldásban.
(#) Hp41C válasza ativagyok hozzászólására (») Szept 7, 2015 / 1
 
RS485, 1-Wire (egy PIC is el tudja játszani a slave funkciót), BlackNet, stb.
(#) ativagyok válasza Hp41C hozzászólására (») Szept 7, 2015 /
 
Köszönöm a választ.
Az RS485 és a 1-Wire is megfelelőnek tűnik, és az is nagyon előny, hogy a MikroC-nek vannak beépített függvényei ezek kezelésére. Próbálkozom kitalálni, hogy melyik lesz a nekem megfelelőbb.
(#) matheattila válasza Hp41C hozzászólására (») Szept 8, 2015 /
 
Szerintem az RS485 kicsit túlzás 50cm-re... nembeszélve a (viszonylag) nagyobb fogyasztásról, mivelhogy az árammal és nem feszültség szintekkel működik...
Szerintem I2C vagy SPI, netán JTAG vagy LIN (de lehet akár CAN, USB, Ethernet vagy WiFi is)
(#) Kokany82 hozzászólása Szept 8, 2015 /
 
Sziasztok.
Egy másik topik-ban ajánlották, hogy próbáljak meg itt segítséget kérni a problémámra.
http://www.hobbielektronika.hu/forum/topic_305.html
A hozzászólás módosítva: Szept 8, 2015
(#) Hp41C válasza matheattila hozzászólására (») Szept 8, 2015 /
 
Ellenérvek:
I2C: a hosszú, nyitott kollektoros / nyelő elektródás vezetékek zavarérzékenyek.
SPI: 2 + n vezeték kell (kiválasztó vezetékek).
JTAG: minimum 5 vezeték és a címzés megoldása.
Ethernet - Wifi: Ennél más az RS485 is kisebb foigyasztású.
Érvek:
RS485: 4 vezetékkel már elláthatók az érzékelők táppal is.
1-Wire: Összesen két vezeték kell.
BlackNet: lényegében uart, de a táplálást is megoldhatja.
Más:
Esetleg a DCC megoldását is fel lehet használni - uart polaritás váltóssal, a slave a tápot a vonal egyenirányításával állítja elő.
Következő: »»   701 / 1210
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