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   1106 / 1210
(#) jordskott válasza Pali79 hozzászólására (») Jan 27, 2020 /
 
Köszi! Megtaláltam szerencsésen és működik is, annyira azért nem betűnként rakják azt ide-oda meg ki tudja hova.
(#) pipi válasza jordskott hozzászólására (») Jan 28, 2020 / 1
 
Nem teljesen világos a kérdés...
Ha kezedben a forrás, egyszerűen a szövegszerkesztővel megkeresed az angol kifejezést, és átírod.
A program ismerete nélkül csak azonos karakterszámot írj át...
Utána lefordítod, besütöd és kész.
Ettől sokkal komplikáltabb ha csak a hex fájl áll rendelkezésre, akkor kell egy hex editor...
vagy beolvasod az mplab-ban a flash tartalmát és bájtonként átírod benne a szöveget...
(#) jordskott válasza pipi hozzászólására (») Jan 28, 2020 /
 
Köszi! Én nem tudok programozni ezért a sok fájl közül nem tudtam melyik tartalmazza az LCD-re printelt szöveget, végül a Main.c-be bukkantam rá, abban átírtam magyarra a kijelzéseket.

"csak azonos karakterszámot írj át" ezt, hogy értetted?

Csak sima hex-et is lehet magyarítani? Bocsánat a nagyon amatőr kérdésekért!
A hozzászólás módosítva: Jan 28, 2020
(#) Pali79 válasza jordskott hozzászólására (») Jan 28, 2020 / 1
 
Az azonos karakterszám azért kell, mert sokszor úgy van megoldva a kijelzés, hogy számolja a kiírandó karaktereket. Pl. ki akarjuk írni az, hogy hello. Ezt tudjuk, hogy 5 karakterből áll. Feltöltünk egy számlálót 5-tel és minden betű után csökkentjük az értéket. Ha eléri a 0-át minden betűt kiírtunk. Ha a számláló értéke marad de a betűk száma a fordítás miatt változik, nyilván hibás lesz a program.
(#) jordskott válasza Pali79 hozzászólására (») Jan 28, 2020 /
 
Ajajj akkor baj van. Sokkal bonyolultabb ezekszerint azt a pár szót lefordítani magyarra. Ebbe ilyenek vannak.

"if (aqutime!=MID_AQU_TIME) {
lcd_line(LCD_LINE1);
lcd_printf((far rom char*)"Mesure en 30sec\0");
TempoS(3);
if (BOUTON) {
plein = 0;
aqutime = MID_AQU_TIME;
break;
}
}
if (aqutime!=LONG_AQU_TIME) {
lcd_line(LCD_LINE1);
lcd_printf((far rom char*)"Mesure en 120sec\0");
TempoS(3);
if (BOUTON) {
plein = 0;
aqutime = LONG_AQU_TIME;
break;
}
}
if (!beepon) {
lcd_line(LCD_LINE1);
lcd_printf((far rom char*)" BUZZER ACTIF \0");
beepon = 1;
TempoS(3);
} else {
lcd_line(LCD_LINE1);
lcd_printf((far rom char*)" PAS DE BUZZER \0");
beepon = 0;
TempoS(3);
}"
A hozzászólás módosítva: Jan 28, 2020
(#) Pali79 válasza jordskott hozzászólására (») Jan 28, 2020 /
 
Hát ez egyáltalán nem biztos hogy nem fog működni. A C nyelvhez nem értek, de ha megvan a hardver amin ki tudod próbálni akkor fordítsd le párat és próbáld ki élőben.
(#) jordskott válasza Pali79 hozzászólására (») Jan 28, 2020 /
 
Tulajdonképpen tök hülye vagyok a lefordításhoz is. Úgy php-ban meg html szerkesztésben elküszködök, de ez kínai nekem, persze olvasgatok utánna, de alapvető hiányosságaim vannak. Légyszives mint jó anya a hülye gyerekéhez úgy válaszolj már A mellékelt képen vannak a forráskód fájljai. Ezt, hogy kell lefordítani? Köszönöm a segtséget!
A hozzászólás módosítva: Jan 28, 2020
(#) Kera_Will válasza jordskott hozzászólására (») Jan 28, 2020 / 1
 
A feltelepitett mplab ide program sugoja megmondja ... avagy keresgelj olyat hogy build avagy complie menuk .
Ez egy projektkent van kezelve az IDE programban.
Ami a c nyelvu forraskodokbol, a forrasban hivatkozott fugvenyek reszben a pices C nyelv alapepito elemei , de van amit kulon megirtak egy kulon fajlba tarolva . Ezek lesznek a kulso periferiakhoz tartozo LIB fajlok pl lcd egyedi driver fuggvenyei.
Az adott tipusu uC sajat belso regisztereinek a leiro fajla. + meg 2 3 fele egyeb fajl.
A forditas soran ebbol a sok fajlbol gyurja ossze a compiler a letoltendo HEX fajlt.
Ezeknek a fajl komponenseknek is meg kell lennie ,, lehet az eleresi utjaikat is be kell allitani az IDEben a projekt forditasi tulajdonsagai kozott.
Tehat nem olyan egyszeru ez.
Ami weboldon talaltad a forrast ott nezzel korul meg tobb fajl utan mert lehet vannak meg ott egyebb librari fajlok.
Mert lehet egyedi driver fajlokat is irhattak hozza .
Jobb esetben a forras "fejleceben" benne vannak a megjegyzesekben azok a tovabbi komponens fajlok amikbol epitkezik a fejlesztes.Persze ez a kodirojanak az alapossagan mulik.
(#) Kera_Will válasza jordskott hozzászólására (») Jan 28, 2020 / 1
 
Mi is az a MPLAB ?

alig 100 oldal MPLAB IDE v810 használatáról lépésről lépésre
Persze az újabb verziók részben ettől eltérhetnek , de a fő lépések irányok és elvek nem sokat változnak.
(#) usane válasza jordskott hozzászólására (») Jan 28, 2020 / 1
 
Valószínűleg azt az LCD.h és LCD.c fájlt kellene látnunk, hogy tudjuk mit takar az lcdprintf() utasítás. Abból kiderülne fog-e működni rendesen vagy sem.
(#) asch válasza jordskott hozzászólására (») Jan 28, 2020 / 1
 
A kódra ránézve 0 zárt stringeket használ, a hosszt tehát "kitalálja" a függvény. Működni fog, ha más hosszúságúra átírod.

De nem biztos, mert nem látjuk mit csinál a lcd_printf, de gyanítható, hogy így működik.

Még az is lehet, hogyha hosszabra írod, akkor túlcsordul a képernyufferben, és azért lesz hiba. De ez ellen ha rendesen meg van csinálva, akkor megint csak véd a lcd_printf függvény. Rövidebb string esetén nagyon valószínűtlen ilyen jellegű hiba.

Még az is gondot okozhat, hogy ha több dolog is van egy sorban, akkor a többi eltolódik. Ha nem ír a program több dolgot egy sorba, akkor viszont nagyjából biztos lehetsz benne, hogy ha a stringbe nem írsz több betűt, mint amennyi egy sorba befér, akkor nem lesz túlcsordulás.

Kipróbálni tudod a programot, vagy vakon csinálsz valamit, és aztán lesz ami lesz?
(#) benjami válasza jordskott hozzászólására (») Jan 28, 2020 / 1
 
A szövegek \0 karakterrel vannak lezárva, tehát elvileg nem jelent gondot, ha hosszabb a szöveg (feltéve hogy ráfér a kijelzőre). Viszont arra figyelni kell, ha egy hosszabb szövegre ráírsz egy rövidebbet, ott maradhat az előző szöveg vége (ezért lehet hogy érdemes azonos hosszúságúra megalkotni őket, esetleg szóközökkel kitöltve). Az ékezetes karakterek helyes megjelenítése már nagyobb falat, ennek megoldása attól is függ, hogy grafikus vagy karakteres kijelzőről van-e szó.
(#) jordskott hozzászólása Jan 28, 2020 /
 
Köszönöm szépen mindenkinek a segítséget! Elég bonyolult számomra ez a fordítgatás, ami hozzánemértéssel párosulva, nem sok sikerrel kecsegtet ezért megelégszem a szerző lefordított hex fájlával. Azzal működik a cucc. Üdv
(#) jpocok hozzászólása Jan 30, 2020 /
 
Sziasztok!
Egy kis segítséget kérek. A mellékelt program nem működik és képtelen vagyok megfejteni, hogy miért. Az áramkört már 3 változatban is megépítettem és több 74HC595-öt is próbáltam. Nyomógombokkal is teszteltem, úgy működik, tehát ez a része jó, csak a programban lehet valami hiba. Általában az összes LED folyamatosan világít, néha pedig egy sem, de sohasem vált oda-vissza, ahogyan kellene. Egyébként erről az oldalról származik a program és a rajz. Még mielőtt kérdezitek: szeretném megérteni a 74HC595 vezérlését programból, ezért örültem meg ennek az egyszerű demónak. Sajnos, így sem boldogulok vele.
Minden segítséget köszönök!
(#) asch válasza jpocok hozzászólására (») Jan 30, 2020 / 1
 
A kishifttelés nekem úgy tűnik, hogy nincsen benne várakozás. Tehát a data vonal beállítása és a clock él között egyetlen órajel telik el. Milyen órajelre van állítva a PIC?

Hogy néz ki az áramkör? Lehetséges, hogy túl nagy az összeköttetések kapacitása, és nem áll be a jel megbízhatóan. Breadboard? NYÁK? Min van összerakva és hogyan?

Ránéznék szkóppal, hogy mennyire szögletes/egyértelmű a jelforma. Illetve teleraknám NOP-okkal, vagy méginkább még hosszabb várakozásokkal a jelek között.
A hozzászólás módosítva: Jan 30, 2020
(#) Kera_Will válasza jpocok hozzászólására (») Jan 30, 2020 / 1
 
A 74hc595.inc fájlba lévő nop sorok számát kéne növelni 10el mindenütt.
Akkor nem fog annyira kapkodni a port lába 1-0 és 0-1 között.
(#) asch válasza Kera_Will hozzászólására (») Jan 30, 2020 / 1
 
Igen, de a BSF CLOCK elé még jöhetne pluszba egy marék NOP, mert a data vonalnak illik adni egy kis időt stabilizálódni, mielőtt kiadjuk a clockot. (jpocoknak: lásd adatlap!)

Breadboardon összerakva simán lehet, hogy véletlenül több lesz az indukció meg a kapacitás a data vonalon, és ezért "lekési" a később induló clockot.
(#) Kera_Will válasza asch hozzászólására (») Jan 30, 2020 / 1
 
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;HC595.inc;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;
  2.     ;Thanks to Nebojsa Matic of mikroElektronika for idea
  3.     ;Var variable whose contents is transferred to outputs of shift register.
  4.     ;Var1 loop counter
  5.     ;Here 8bit data is used, so VAR1 gets decimal 8 to continue the loop for 8 times
  6.      
  7.     HC595 MACRO VAR,VAR1
  8.      
  9.         LOCAL LOOP
  10.         MOVLW .8
  11.         MOVWF VAR1
  12.     LOOP
  13.      
  14.         RLF VAR,F
  15.         BTFSS STATUS,C
  16.         BCF DATA1
  17.         BTFSC STATUS,C
  18.         BSF DATA1
  19.         ;itt nem volt NOP
  20.         NOP   ; ide is sok
  21.         NOP   ; ide is sok
  22.         NOP   ; ide is sok
  23.         NOP   ; ide is sok
  24.  
  25.         BSF CLOCK
  26.         NOP   ; itt ez az egy volt
  27.         NOP   ; ide is sok
  28.         NOP   ; ide is sok
  29.         NOP   ; ide is sok
  30.         NOP   ; ide is sok
  31.  
  32.  
  33.         BCF CLOCK
  34.      
  35.         DECFSZ VAR1,F
  36.         GOTO LOOP
  37.      
  38.         BSF LATCH
  39.         NOP   ; itt ez az egy volt
  40.         NOP   ; ide is sok
  41.         NOP   ; ide is sok
  42.         NOP   ; ide is sok
  43.         NOP   ; ide is sok
  44.  
  45.        BCF LATCH
  46.      
  47.         ENDM


ciklussal elengásabb lenne a NOP helyett avagy a goto $+1 a ciklus magjában
A hozzászólás módosítva: Jan 30, 2020
(#) jpocok hozzászólása Jan 31, 2020 /
 
Köszönöm a válaszokat mindkettőtöknek!

ash
Az áramköröket nem breadboard-ra építettem, hanem rendes maratott panelre. Az eredeti PIC-es áramkörről nem tudok most képet küldeni, de készítettem új panelt is, hogy 628-as PIC-kel is tesztelhessem. Ennek megfelelően módosítottam a programot is (képeket és programokat mellékeltem).
Az órajel beállítása az eredeti programban _XT_OSC, a 628-as változatban pedig belső oszcillátor. Természetesen a 84A processzoron van egy 4 MHz-es kristály 27 pF-os kondenzátorokkal.
Nincs szkópom, nem tudom azzal megnézni a jelet.
A panelen látható egy zöld LED is, de az nem kapcsolódik semmire sem. Biztonság kedvéért kivágtam az előtét-ellenállást, így az az ág szakadt. Eredetileg a a 74HC595 9-es lábának állapotát jelezte volna.

Kera_Will
Tettem GOTO $+1 utasításokat oda, ahol jelölted (lásd a mellékelt INC fájlt). Sajnos, ezek után sem működik. Illetve ugyanaz a helyzet, mint korábban: ha bekapcsolom, akkor vagy az összes LED világít, vagy egy sem, de sohasem vált.
A hozzászólás módosítva: Jan 31, 2020
(#) asch válasza jpocok hozzászólására (») Jan 31, 2020 /
 
Ez csak egy tipp volt, hogy esetleg a jel túl gyors. Én már jártam hasonlóan, azért volt ez az első gondolatom. Azért kérdeztem a breadboardot, mert ott már a nagyon gyors jelek már nem teljesen szögletesek, kell nekik egy kis idő mire megtörténik egy 0->1 1->0 váltás. Mennél rövidebbek a vezetékek, annál kevésbé jön ez elő - egyszerűen fogalmazva -, de mindig észben kell tartani, hogy amit digitálisan elképzelünk, az csak közelítéssel lesz olyan a valódi analóg világban.

4MHz-es órajellel és ilyen pici NYÁK-kal tippem szerint - pláne NOP-pal lelassítva - már nem lesz jelforma probléma, úgyhogy másfelé kell keresgélni.

Amit megnéznék:

* Nincs-e szarvashiba a kódban? Lehet még benne benézés. Lábak jól vannak felkonfolva?
* Csak kellene egy szkóp ránézni a jelekre. A debuggolás legjobb módja a szkóp. Ha analóg probléma van, az is látszik, ha digitális az is. Ha időzítés, az is. Szkóp nélkül debuggolni ezekkel a módszerekkel lehet:
** debug LED kigyújtása - ezzel nagyon nehézkes, de pl egy LED kigyújtást a kódba írva egy nem használt lábon lehet trace-elni, hogy valami egyáltalán lefutott-e. Illetve ha nagyon lelassítod a futást, akkor esetleg nyomon lehet vele követni folyamatokat is.
** UART lábak +USB Serial UART - lehet trace üzeneteket tenni a kódba - vigyázni kell, hogy ne lassítsa le a programot, ha real-time dolgot fejlesztünk.
** igazi debugger: Még sosem debuggoltam mikrovezérlő programot debuggerrel, de állítólag lehetséges
** Ha már működni fog a shift regiszteres kimenet, az pont jó lesz nyomkövetőnek, 8 biten már sokmindent ki lehet fejezni
* Hiba az áramkörben? Áramkör terv van? Pl a shift regiszter output enable jele be van kötve? Latch be van kötve? Nincsenek összecserélve jelek?
(#) Hp41C válasza asch hozzászólására (») Jan 31, 2020 /
 
Még egy lehetőség:
Az MpLab -ban a Szimulátor kiválasztása nyomkövetőként. A logikai analizátor ablak beállítása (kimenetek felvétele). Újrafordítás után lépésenként lehet végrehajtani a kósot és meg lehet vizsgálni a változók (PORT -ok, WREG, stb.) értékét. Sőt a legfontosabbak felvehetők a Watch listába. Töréspont is elhelyezhető a kódban. Futtatható úgy is, hogy a törésponton megálljon.

A logikai analizátor ablakban a felvett jelek idődiagramja látható, két kurzor segítségével időzítés mérhető, de ehhez be kell állítani az órajel frekvenciáját is.
(#) jpocok válasza asch hozzászólására (») Jan 31, 2020 /
 
asch
Többszörösen ellenőriztem a panelek terveit (rajzok mellékelve), illetve szakadásvizsgálóval a kész paneleket is. Szerintem minden úgy kapcsolódik, ahogyan kell. A zölddel jelölt forrszemek a GND-t jelentik, tehát közvetlenül a telefóliához kapcsolódnak (rajzon és a valóságban egyaránt).
A valós panelek hibátlanok, mert ha a PIC panel kimenetére kötök 8 ledet és például egy futófénnyel próbálom, akkor tökéletes. Vagy mondjuk 4 nyomógomb lekérdezésével az A porton vezérlek 8 ledet a B porton, az is hibátlanul működik. Ugyanaz a 4 MHz-es külső, vagy belső oszcillátor a 84A, illetve a 628A esetében.
Ha a 74HC595-ös panelt nem a PIC-panellel vezérlem, hanem 3 db nyomógombbal, akkor az is jól működik. Ehhez ezen az oldalon találtam segítséget. Csak éppen a két panel nem működik együtt.
A demó programot is ezerszer átnéztem már, de én nem látok benne hibát. Persze lehet, hogy a nagy igyekezetben mindig átsiklom fölötte.

Hp41C
Köszönöm az ötletet, majd kipróbálom. Bár az MPLAB-ot egyáltalán nem használom, de majd csak eligazodom benne valahogy. A forráskódot egyszerűen Jegyzettömbbel szerkesztem, utána pedig rádobom az MpasmWin programra, ami generálja a HEX-et. A PICkit2-höz pedig saját programját használom. Eddig szépen működött így, de most itt ez a makacs hiba, amivel nem tudok mit kezdeni.
(#) Hp41C válasza jpocok hozzászólására (») Jan 31, 2020 /
 
MpLab leírás magyarul.
(#) Pali79 válasza jpocok hozzászólására (») Jan 31, 2020 /
 
Pedig érdemes elmélyedni Mplab rejtelmeiben. Egy hibakeresésében sokat tud segíteni. Én is volt már, hogy órákat szívtam egy mellé ütött betű miatt a forrásban.
(#) jpocok válasza Hp41C hozzászólására (») Jan 31, 2020 /
 
Köszönöm a magyar nyelvű dokumentumot! Könnyebb így ismerkedni vele, mint angolul .

Pali79
Igazad van (akárcsak Hp41C-nek), megpróbálom MPLAB-bal megkeresni a hibát.
(#) jpocok válasza jpocok hozzászólására (») Jan 31, 2020 /
 
Sziasztok!

Megtaláltam a hibát! Mégis a PIC-panelek okozták a bajt! Azt még nem tudom, hogyan. Viszont sikerült előkeresni egy régebbi panelt, amit szintén kísérleti célokra építettem és azzal már hibátlanul működik az EREDETI program, az eredeti leírás szerint. Nem kell hozzá semmiféle NOP utasítás, semmiféle egyéb módosítás.

Köszönöm szépen a segítő hozzászólásokat!
(#) kitartás hozzászólása Feb 4, 2020 /
 
Üdvözlet!
Sikerült valakinek beüzemelni pickit2 -t a pickit programerrel win10 alá? Nekem nem akar települni.
A hozzászólás módosítva: Feb 4, 2020
(#) Pali79 válasza kitartás hozzászólására (») Feb 4, 2020 /
 
Nekem minden gond nélkül megy.
(#) pipi válasza kitartás hozzászólására (») Feb 4, 2020 /
 
Szia!
Nekem jól ment win8.1 x64 alatt. Aztán egyszercsak megmakkant. Azóta hiába telepítem újra, feltelepül, de nem indul el. Lehet a visual studio 2012? lefrissült és attól halt el, próbáltam többféle vs2012-t felrakni, de nem sikerült megjavítani...
(#) kitartás válasza Pali79 hozzászólására (») Feb 5, 2020 /
 
Nekem telepítéskor a .NET et akarja, de valami régebbi verziót hiányol. Új már van a régit meg a win nem hagyja telepíteni.
Következő: »»   1106 / 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