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   1171 / 1210
(#) Hp41C válasza Laja1 hozzászólására (») Jan 24, 2022 /
 
Egy felhúzó ellenállás elég lett volna a RA4 vonalra.
(#) Hp41C hozzászólása Jan 24, 2022 /
 
Itt van!! Már megvehető!! A ChipCad -nál rendelhető az ICD 4 !! Az ára:
(#) icserny válasza Hp41C hozzászólására (») Jan 24, 2022 /
 
Mármint az ICE 4 Emulátor a szóbanforgás tárgya?
A hozzászólás módosítva: Jan 24, 2022
(#) Elektro.on válasza Hp41C hozzászólására (») Jan 24, 2022 /
 
hobbi kategória...
(#) bitmixer válasza Hp41C hozzászólására (») Jan 24, 2022 /
 
Igaz, hogy , de ez nem ICD, hanem ICE!
(#) Hp41C válasza Hp41C hozzászólására (») Jan 24, 2022 /
 
Olyan egységesen nevezik, min a M$ a Windows -t:
ICD2, ICD3, ICE4
A hozzászólás módosítva: Jan 24, 2022
(#) lokátoros válasza Hp41C hozzászólására (») Jan 24, 2022 /
 
Létezik ICD4, de az sem olcsó.
ICD4
(#) bitmixer válasza Hp41C hozzászólására (») Jan 24, 2022 /
 
Bocsi, de ezt nem értem
(#) Hp41C válasza bitmixer hozzászólására (») Jan 24, 2022 /
 
Jól félreolvastam... Ahogy lokátoros írta, van ICD4 is és az új ICE4.
Ez a hozzászólás tárgytalan.
(#) Laja1 hozzászólása Jan 25, 2022 /
 
Sziasztok! Azt meg lehet mondani az LCD kijelzőnek, hogy ha stringet, szót ír, akkor azt ne karakterről karakterrel írja lomhán, hanem egyszerre, hogy úgy tűnjön, hogy egy időben van? Tudom, hogy a valóságban ennek így kell történnie, de ez így nagyon lassú.
(#) Pali79 válasza Laja1 hozzászólására (») Jan 25, 2022 /
 
Ha az adatlap szerinti időzítéseket használod, nincs az az isten, hogy az emberi szem észrevegye a késleltetést.
(#) Laja1 válasza Pali79 hozzászólására (») Jan 25, 2022 /
 
5 és 15 us-okat használok és mégis.
(#) Elektro.on válasza Laja1 hozzászólására (») Jan 25, 2022 /
 
Hát én MikroPascal-ban írtam LCD kezelést de ott aztán nem látszott semmi.

De itt egy MikroC leírás példával.
A hozzászólás módosítva: Jan 25, 2022
(#) Laja1 válasza Laja1 hozzászólására (») Jan 25, 2022 /
 
A programot a vasárnap 18:49-es bejegyzésemben találod.
(#) Elektro.on válasza Laja1 hozzászólására (») Jan 25, 2022 /
 
És Itt egy kis videó.
Láthatod, ahogy megkapta a tápot azonnal ott a felirat az LCD -n.

A videó oldala ahol a forrás kódot is megtalálod.
A hozzászólás módosítva: Jan 25, 2022
(#) majkimester válasza Laja1 hozzászólására (») Jan 25, 2022 /
 
Idézet:
„5 és 15 us-okat használok és mégis.”

Az a baj, hogy nem 5uS-et, hanem 5mS-et használsz minden karakter után:

  1. #define LCD_delay 5
  2.  
  3. void LCDPutChar(char ch)
  4. {
  5. __delay_ms(LCD_delay);
  6.  
  7. // ....
  8. }


Ide elég 40..50uS
(#) majkimester válasza majkimester hozzászólására (») Jan 25, 2022 /
 
És ezeket a várakozási időket az LCD művelet után kellene kivárni, mert az 1 karakter kiküldésre kell 40..50uS, de ha előtte egy teljes törlés van, arra meg kellene 17mS, ott az 5ms-el sem fog jól működni.
(#) sonajkniz válasza Laja1 hozzászólására (») Jan 25, 2022 /
 
Igaz ugyan, hogy én assemblyben programozok, de amikor azt szerettem volna, hogy látható legyen a beírás menete, külön kiíró rutint kellett hozzá írnom, hogy karakterenként írja ki a szöveget. Egyszerűen a kijelző nem tudott olyan lasan megjeleníteni.
Úgyhogy szerintem hibás a kijelző, amit használsz.
(#) benjami válasza Laja1 hozzászólására (») Jan 25, 2022 /
 
Én mindig olyan módszert használtam a sima karakteres LCD-hez, hogy a kijelző karaktereinek számával egyező méretű tömbbe (hívhatjuk frame buffernek is) írtam a megjelenítendő szöveget, amit a háttérben timer megszakításban folyamatosan küldtem ki a kijelzőbe. Így a kiíró rutin nagyon gyorsan végrehajtódott (hiszen csak memória írást kellett neki csinálnia), a háttérben meg mindig csak egy karaktert küldtem a kijelzőnek, így nincs szükség várakozásra. Ezzel a módszerrel a villogó karakterek is megoldhatóak.
(#) Laja1 válasza benjami hozzászólására (») Jan 25, 2022 /
 
Köszönöm, megoldódott azzal, hogy a msec helyett usec-ben adtam meg a várakozást. Jó lett.

Még egy kérdés: ha két nyomógomb is tartozik egy PIC-hez, aminél használok belső felhúzó ellenállást, akkor ezek közül csak egy lehet aktív, egyszerre két nyomógomb nem "nyomható meg" programozás ügyileg?
(#) Elektro.on válasza Laja1 hozzászólására (») Jan 25, 2022 /
 
Ezt most nem igazán értem.
Miért ne lehetne egyszerre több nyomó gomb állapotát lekérdezni?
(#) Laja1 válasza Elektro.on hozzászólására (») Jan 25, 2022 /
 
Csak arra gondoltam, hogy egy közös felhúzó ellenállás van-e, vagy minden bemenetnek sajátja. De kiderült, hogy valóban benyomható egyszerre két nyomógomb is.
(#) Laja1 hozzászólása Jan 25, 2022 /
 
Az LCD kijelzőn szeretnék egy stoppert is megjeleníteni, szépen ki is írja a 00:00:00-t, majd szépen elindul a másodperc. De amikor be akarom korlátozni, hogy 60 sec után legyen 0 és a min növekedjen eggyel, azt már nem fordítja le.
Mi lehet a gondja?
  1. if(bgomb == 0 & ogomb ==0) l=1;
  2.              if (l==1)
  3.             {
  4.                
  5.                  
  6.                  UpdateTimer ();
  7.                
  8.                     LCDGoto(4,1);
  9.                     LCDPutChar((ora/10)+0x30);
  10.                     LCDPutChar((ora%10)+0x30);
  11.                     LCDPutChar(0x3A);
  12.                
  13.                    
  14.                     LCDPutChar((min/10)+0x30);
  15.                     LCDPutChar((min%10)+0x30);
  16.                     LCDPutChar(0x3A);
  17.                
  18.                    
  19.                     LCDPutChar((sec/10)+0x30);
  20.                     LCDPutChar((sec%10)+0x30);
  21.                    
  22.             }


  1. void UpdateTimer (void)
  2. {
  3.      if(mpflag)
  4.                  {
  5.                     sec++;
  6.                 mpflag = 0   ;    
  7.                  }  
  8.    
  9.                
  10.                    
  11.                 if (sec==60)
  12.                 {sec=0; min++;}
  13.                
  14.                 if (min==60)
  15.                 {min=0; ora++;}
  16.                
  17.                if (ora==24)  ora= 0;  
  18. }


Ezt írja ki hibaüzenetként:
LEAN SUCCESSFUL (total time: 6ms)
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/Lajos/MPLABXProjects'
make -f nbproject/Makefile-default.mk dist/default/production/MPLABXProjects.production.hex
make[2]: Entering directory 'C:/Users/Lajos/MPLABXProjects'
"C:\Program Files\Microchip\xc8\v2.32\bin\xc8-cc.exe" -mcpu=16F627A -c -mdfp="C:/Program Files/Microchip/MPLABX/v5.50/packs/Microchip/PIC16Fxxx_DFP/1.2.33/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=default -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o build/default/production/eredmeny.p1 eredmeny.c
::: advisory: (2049) C99 compliant libraries are currently not available for baseline or mid-range devices, or for enhanced mid-range devices using a reentrant stack; using C90 libraries
eredmeny.c:25:9: warning: '__delay_ms' macro redefined [-Wmacro-redefined]
#define __delay_ms(x) _delay((unsigned long)((x)*(8000000/4000.0)))
^
C:/Program Files/Microchip/MPLABX/v5.50/packs/Microchip/PIC16Fxxx_DFP/1.2.33/xc8\pic\include\pic.h:101:9: note: previous definition is here
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))
^
eredmeny.c:369:10: warning: implicit conversion loses integer precision: 'int' to 'char' [-Wconversion]
ch = (ch << 4);
~ ~~~^~~~
eredmeny.c:384:10: warning: implicit conversion loses integer precision: 'int' to 'char' [-Wconversion]
ch = (ch << 4);
~ ~~~^~~~
3 warnings generated.
"C:\Program Files\Microchip\xc8\v2.32\bin\xc8-cc.exe" -mcpu=16F627A -Wl,-Map=dist/default/production/MPLABXProjects.production.map -DXPRJ_default=default -Wl,--defsym=__MPLAB_BUILD=1 -mdfp="C:/Program Files/Microchip/MPLABX/v5.50/packs/Microchip/PIC16Fxxx_DFP/1.2.33/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -Wl,--memorysummary,dist/default/production/memoryfile.xml -o dist/default/production/MPLABXProjects.production.elf build/default/production/eredmeny.p1
::: advisory: (2049) C99 compliant libraries are currently not available for baseline or mid-range devices, or for enhanced mid-range devices using a reentrant stack; using C90 libraries
:0:: error: (1347) can't find 0x8 words (0x8 withtotal) for psect "clrtext" in class "CODE" (largest unused contiguous range 0x3)
Non line specific message::: advisory: (1493) updated 32-bit floating-point routines might trigger "can't find space" messages appearing after updating to this release; consider using the smaller 24-bit floating-point types
:0:: error: (1347) can't find 0x4 words (0x4 withtotal) for psect "idataBANK0" in class "CODE" (largest unused contiguous range 0x3)
(908) exit status = 1
nbproject/Makefile-default.mk:138: recipe for target 'dist/default/production/MPLABXProjects.production.hex' failed
make[2]: Leaving directory 'C:/Users/Lajos/MPLABXProjects'
nbproject/Makefile-default.mk:91: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/Lajos/MPLABXProjects'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
make[2]: *** [dist/default/production/MPLABXProjects.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 2s)
(#) Hp41C válasza Laja1 hozzászólására (») Jan 25, 2022 /
 
Felüldefiniáltad a '__delay_ms makrot: A pic.h -ban már definiálták, a eredmeny.c -ben van a tied.
Arra figyelmeztet még, hogy a ch = (ch << 4) automatikus konverziója elveszti a byte-ból kiléptetett 4 bitet.

A többi észrevétel arról szól, hogy a programodnak nem talál már elég összefüggő helyet a program memóriában.

Szószátyár egy fordító az az XC8 midrange kontrolleren főleg free módban....
A hozzászólás módosítva: Jan 25, 2022
(#) Laja1 válasza Hp41C hozzászólására (») Jan 25, 2022 /
 
Akkor itt a delay a kritikus, amit javitok és a leglényegesebb, hogy 97%-os kihasználtságon van. Valahogy nem lehet tömöríteni? Vagy egy másik PIC a megoldás? (Kezdhetem elölről a konfugurálást.
(#) Hp41C válasza Laja1 hozzászólására (») Jan 25, 2022 /
 
Biztosan lehet rajta "tömöríteni" azaz optimalizálni. Az XC8 fordító licenc lehetőségeit kell megnézni. Régebben volt lehetőség (egy gépen egyszer) 30 napig ingyenesen használni a teljes verziót.
Ami belefért assembly -ben megírva a 16F628 -ba (2k), azt nem tudta belepréselni 8k -ba sem.

A 16F628 -ban 2k a programtár és ugyan az a konfigurálása.

Ha nem titkos, töltsd fel (küld el) a programot, megpróbálhatom "összenyomni".
A hozzászólás módosítva: Jan 25, 2022
(#) Laja1 válasza Hp41C hozzászólására (») Jan 25, 2022 /
 
Köszönöm, holnap elküldöm. De még nem végleges, mert apránként csinálom és mindig tesztelem. De most a hibaüzenet miatt megakadtam. Tehát ha Te összetömöríted, akkor utána én tudom folytatni?
(#) Bakman válasza Hp41C hozzászólására (») Jan 25, 2022 /
 
Most 60 napot adnak.
(#) benjami válasza Bakman hozzászólására (») Jan 25, 2022 /
 
Virtuális gépen egész könnyen megoldható a havonta vagy kéthavonta történő telepítés (csak egy mentést kell ugye csinálni a telepítés előtti merevlemez képfájlról).
(#) Laja1 válasza Hp41C hozzászólására (») Jan 26, 2022 /
 
Az a legegyszerűbb, ha átírom 16F628-ra, mert az kétszer nagyobb programtárral rendelkezik és akkor nem kell neked sem ezzel vesződnöd.
Köszönöm!
Következő: »»   1171 / 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