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   1064 / 1204
(#) glaci válasza eSDi hozzászólására (») Jan 5, 2019 /
 
Az írás utáni olvasás volt, itt meg folyamatos írás közben egyszer csak nem ír tovább.
De ezt is kipróbálom.
(#) eSDi válasza Hp41C hozzászólására (») Jan 5, 2019 /
 
Az a MikroC saját eljárása. A manual szerint várni kell utána legalább 20ms-et.
(#) glaci válasza Hp41C hozzászólására (») Jan 5, 2019 /
 
Mint a kódból lehet látni, változók értékeit teszi, tenné ez EEPROMBA. Azokat később felhasználnám.
(#) glaci válasza eSDi hozzászólására (») Jan 5, 2019 /
 
Az írás utáni olvasásnál.
(#) eSDi válasza glaci hozzászólására (») Jan 5, 2019 /
 
Még egyszer nem idézem. Olvasd el újra figyelmesen a kézikönyvben a hozzá tartozó leírást.
(#) rolandgw válasza eSDi hozzászólására (») Jan 5, 2019 /
 
Rosszul értelmezed, írás/olvasás között kell. Az írás függvényben bent van a flag figyelés.
Bővebben: Link
(#) glaci válasza eSDi hozzászólására (») Jan 5, 2019 /
 
Megcsináltam, de nem változott semmi. a 16-os memória címtől írja az adatokat, helyesen, de utána 6-ostól nem hajlandó írni semmit.
(#) eSDi válasza rolandgw hozzászólására (») Jan 5, 2019 /
 
Igaz, benne van! A lefordított állományban is. Ha jól nézem pont fordítva csinálják, mint én. Nálam írás után addig nem tér vissza, amíg nem végzett. Itt pedig előtte ellenőrzi, ezért is kell várni az olvasás előtt.
No mindegy, akkor valami más gond lesz.
(#) glaci hozzászólása Jan 5, 2019 /
 
Megvan a hiba!
Az ominozus írás után van még egy írási metódus, ami bizonyos számítások után felülírja ezeket az EEprom helyeket, de ez a k változó, most valami miatt nem tartalmaz adatot. Most azt kell kideríteni miért?
(#) glaci hozzászólása Jan 5, 2019 /
 
Elsősorban Hp41C-től kérdezem, de bárkitől aki tovább tud lökni.
Beírtam a main() elé a kapott

typedef u_n_i_o_n _FLOAT_VAL
{
float Val;
unsigned char bytes[4];
} float_VAL;

float_VAL f;

Lefordítva hibaüzenetet küld:"275 393 'f' Identifier redefined kazan_pic18f46k80.c"
nincs a változókban f nevű változó.
Mi a hiba oka?
A hozzászólás módosítva: Jan 5, 2019
(#) Hp41C válasza glaci hozzászólására (») Jan 5, 2019 /
 
Kivetted az aláhúzásokat a typedef után következő szóból?
Azért fogalmazunk ilyen kacifántosan, mert ha az az szó (amelyet nem írunk le) szerepel a hozzászólásban, az egész helyett egy üres hozzászólás jelenik meg...

XC8_test.JPG
    
(#) glaci válasza Hp41C hozzászólására (») Jan 5, 2019 /
 
Igen kivettem!
Viszont találtam egy utalást erre a problémára.

  1. typedef u_n_i_o_n {
  2.    float f;
  3.    char bytes[4];
  4. } my_u_ni_o_n;
  5.  
  6. my_u_n_i_o_n u;
  7.  
  8. u.bytes[0] = 0x00;
  9. u.bytes[1] = 0x00;
  10. u.bytes[2] = 0xA0;
  11. u.bytes[3] = 0x41;
  12.  
  13. // u.f = 20.0


Ezzel lefordul. Időközben rájöttem, hogy a float f után a fioat_val f;-ben, f-t nem akarja elfogadni. Ha mást adok meg az f helyett akkor már lefordul.
Itt is az aláhúzások igaziból nincsenek.
A hozzászólás módosítva: Jan 5, 2019
(#) Tasznka válasza glaci hozzászólására (») Jan 5, 2019 /
 
Azért nem fordult le,mert a hibaüzi írja is,hogy az f-változód már van valahol használva ( 'f' Identifier redefined) .
(#) frekivalto hozzászólása Jan 6, 2019 /
 
Sziasztok.

Szeretnek nagyobb kommunikációs sebességet beállítani egy Nextion HMI való használatához.
Mivel flowcode-ba programozok, ezért nincs is C programozási ismereteim. Nagyon alap C kódot használtam eddig, az osccon regisztert állítom be, ha szükséges.

Most jelen pillanatban 38400-es sebességgel működik a kommunikáció. Ezt a flowcode-on belül be tudom állítani, menüből kiválasztva. A menüben levő utolsó beállítható adat, az a 38400. Ezen felül van meg egy olyan, hogy “custom setting”. Itt beírhatom, hogy 115200.

A controller típusa: 18F26K22. Belső órajellel megy, jelenleg 16MHz, PLL ki van kapcsolva.

Az adatlapon találtam olyat, hogy SYNC, BRG16, BRGH. Sajnos ezek nem mondanak nekem semmit. Azt olvastam itt a fórumon egy cikkben, hogy bizonyos óra jel használat mellett nem minden kommunikációs sebesség használható, mert van bizonyos hiba százalék, ami jelentkezhet.

Gyanítom, hogy a flowcode “custom” beállítás esetén nem írja az alábbi regisztereket.
Olyat találtam meg, hogy SYNC=0, BRGH=1, BRG16=1, vagy SYNC=1, BRG16=1
Ekkor 115.2k-nál error:-0,08%.
Ahogy nézem, csak külső orajelrol lehetne 0% error értéket elérni.

Innen nem tudok tovább lépni.

Kérnem szíves segítségeteket abban, hogy mi a további teendőm. Milyen C kóddal és hogyan lehetne azt elérni, hogy használni lehessen a nagyobb sebességet.
Ha nem lehet, úgy azt is megértem, viszont érdekelne az, hogy miért nem.

A kijelzo tudja a 115.2k sebességet, azt le tudtam ellenőrizni.

Előre is köszönöm, ha kapok segítséget Tőletek.

Udv. Peti
A hozzászólás módosítva: Jan 6, 2019
(#) kissi válasza frekivalto hozzászólására (») Jan 6, 2019 /
 
Szia!

Az aszinkron soros port start-stop elven működik, azaz minden byte átvitele után a következő byte-nál újraindul az időmérés, azaz néhány százalék időmérés nem okoz gondot 10-12 bit átvitele közben, nyugodtan használhatod 2-3 % hibánál is, nem hogy a 0,08%-nál !
(#) eSDi válasza frekivalto hozzászólására (») Jan 6, 2019 /
 
Hali!

Neked a következő beállítás kell 16MHz-en:
SYNC = 0
BRGH = 1
BRG16 = 1
SPBRGH = 0
SPBRG = 34

Ekkor a hiba -0.79% lesz 115.2kBaud-ra nézve. A többit, majd inkább valaki olyan írja meg, aki jártas a FlowCode-ban, mert én nem tudom mit állít be alapból és mit nem.
(#) frekivalto válasza eSDi hozzászólására (») Jan 6, 2019 /
 
Köszönöm mindkettőtöknek a választ.

C korban ezt így kell beírnom, ahogy leírtad?
(#) benjami válasza frekivalto hozzászólására (») Jan 6, 2019 /
 
A belső órajel az adatlap szerint +-1% pontosságúra van gyárilag bekalibrálva, ezt a hibát is kalkuláld bele. Amúgy az OSCTUNE regiszterbe beírt értékkel lehet a belső órajelet kalibrálni.
(#) frekivalto válasza benjami hozzászólására (») Jan 6, 2019 /
 
Koszi Neked is.
Amit eSDI mondott, azokat melyik regiszterben kell megadnom?
Van egy pár...
(#) benjami válasza frekivalto hozzászólására (») Jan 6, 2019 /
 
Adatlapban az EUSART részen mindent megtalálsz.
(#) frekivalto válasza benjami hozzászólására (») Jan 6, 2019 /
 
Köszönöm.

Tudom, hogy benne van minden, de mint említettem nem tudok programozni semmilyen kódban, így az adatlapban szereplő regisztereket sem ismerem. Ezért használok flowcode-öt.
Egyedül amit eddig használtam az az alábbi volt:
osccon:0b11100000 azaz a PIC óra jelet beállítottam 16MHz-re
Ennyi, nem több, sajnos.

Ezért kertem segítséget, hogy miként kell megadni helyesen azt, amit meg kell adni. Az itt jelenlevők nagy része, Téged is beleértve, kisújból kivágják ezt. Sőt ennek bonyolultabbakat is.

Ezert arra kérlek, hogy “szajbarágosan” írjatok meg, hogy pontosan mit kell beírnom.

UART1 kommunikációt használom, a szokásos alap beállításokkal.
Ha ezenkívül szükséges meg további adat, úgy arra ha tudok, válaszolok.

Köszönöm a türelmeteket.
A hozzászólás módosítva: Jan 6, 2019
(#) benjami válasza frekivalto hozzászólására (») Jan 6, 2019 /
 
Mivel sosem használtam még flowcode-t, nem tudom megmondani. Szerintem érdemes lenne a saját topikjában megkérdezned.
(#) eSDi válasza frekivalto hozzászólására (») Jan 6, 2019 /
 
Az a baj, hogy nem tudom milyen C-re épül. MPLAB XC8-ban imigyen kell megadni:
  1. TXSTA1bits.SYNC = 0;
  2. TXSTA1bits.BRGH = 1;
  3. BAUDCON1bits.BRG16 = 1;
  4. SPBRGH1 = 0;
  5. SPBRG1 = 34;
(#) frekivalto válasza eSDi hozzászólására (») Jan 6, 2019 /
 
Köszi. Megpróbálom, aztán meglátom mit sikerül összehozni.
Az segítség lehet, hogy a flowcode ha lefordítja a programot, akkor generálja a :
proba.asm
proba.c
proba.hex fájlokat. Én ebből a hex kiterjesztésű fájlt égetem be a PIC-be PICKIT3-al.

A proba.asm-be belenézve ezt látom:
;/////////////////////////////////////////////////////////////////////////////////
;// Code Generator: BoostC Compiler - http://www.sourceboost.com
;// Version : 7.03
;// License Type : Pro License
;// Limitations : PIC18 max code size:Unlimited, max RAM banks:Unlimited
;/////////////////////////////////////////////////////////////////////////////////
(#) frekivalto válasza frekivalto hozzászólására (») Jan 6, 2019 /
 
Esetleg még ez segíthet?
(#) eSDi válasza frekivalto hozzászólására (») Jan 6, 2019 /
 
Belenézve a sourceboost példa programjaiba, ott így van:
  1. clear_bit(pir1, TMR1IF);
  2. set_bit(rcon, IPEN);
(#) glaci hozzászólása Jan 7, 2019 /
 
Sziasztok!
A következő problémával szembesülök. LCD-n keresztül töltöm fel menüből, induló adatokkal a pic-et. Van egy adat ami a felhasználás során 1 tizedes törtként kerül felhasználásra. Pl:182.3 . A beolvasást egészként olvasom be, k=1823 , majd f=(float)k/10 utasítással teszem float-tá. Az átalakítás során az f 182.29998- at kap. Ez nem olyan nagy probléma. A probléma ott jelentkezik, ha ezt visszaíratom az lcd-re 1 tizedes pontossággal, akkor már 182,2-t kapok vissza. Ez nekem zavarónak tűnik. Van más lehetőség, hogy a bevitt adatok megmaradjanak eredeti értékükben?
(#) frekivalto válasza eSDi hozzászólására (») Jan 7, 2019 /
 
Köszönöm Mindenkinek a segítséget.
A kapott infók alapján működik.

Üdv. Peti
(#) Hp41C válasza glaci hozzászólására (») Jan 7, 2019 /
 
Kiírás előtt adj hozzá 0.05 -öt.
A hozzászólás módosítva: Jan 7, 2019
(#) usane válasza glaci hozzászólására (») Jan 7, 2019 /
 
Használj kerekítést. 0.05-el.
Következő: »»   1064 / 1204
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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