Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   216 / 1319
(#) wazsi válasza trudnai hozzászólására (») Máj 23, 2008 /
 
Akkor ha jól értelmezem a felfutó és a lefutó élek közt kell mérnem az eltelt időt és ezt leraktározni.Tehát ha megjön a megszakitás akkor elindítok 1 idözitőt.
Az a kérdésem mennyi legyen az időalap 1 bitre ??
1ms az jó ?Mert ugyebár 1 khz jel maxra
(#) trudnai válasza wazsi hozzászólására (») Máj 23, 2008 /
 
Idozitot az elso el erzekelesekor kell elinditani, utana piszkalni nem kell/nem szabad...

Utana folyamatosan teszed le az eppen aktualis idot. Ertelemszeruen ennek ugy kell megtortennie, hogy az egyes elek kozott ne legyen a timernel tulcsordulas - ill ha van akkor a timer szamlalojat ki kell boviteni (magyaran tulcsordulaskor novelgetni kell egy masik byte-ot vagy byte-okat attol fuggoen hany bitesre lett vegul ez az egesz kiegeszitve).

Par dolgot meg kell fontolni:

1. Mennyire kritikus az eredeti jel huseget megtartani?
2. Mi a minimum es mi a maximum sebesseg?
3. Hany bit johet maximum egyetlen sorozaban?
4. Mi tortenik ha csupa 1 vagy csupa 0 erkezik illetoleg maximum hany azonos bit erkezhet?
5. Mi tortenik mikor 0xAA55 sorozat erkezik az adott csomaghosszusagban?
6. Milyen egyeb megszakitasok lephetnek fel, ezek hogy befolyasolhatjak a mintavetelezest vagy az ido szamlalast?

Gondolj bele, hogy minel gyorsabban porog a timer, annal finomabba felbontas, azonban ha tulcsordul akkor informacio torzulas lep fel. Pl ha 1 bit szelessege max 1ms lehet, akkor a logika szerint amit kerdeztel beallitod, hogy a timer kb 1ms-enkent csorduljon tul. Igen am, de egymas utan ket 0 jon, azaz nincs elvaltas, ez igy a masodik bit utani elvaltasnal mar bizonyosan tulcsordult a timer, azaz mikor le akarod jatszani nem tudhatod, hogy az a timer tulcsordult-e vagy valoban ilyen rovid az elvaltasok kozott eltelt ido...

Namost akkor megnovelheted a timert, hogy atolelje az 512 bit valtasat, de ha ez egy 8 bites timer akkor 2 bitenkent lesz kb 1 timer lepes, amivel nem lehet mintavetelezni nyilvanvaloan. 16 bites timerrel mar valoszinuleg nem lesz gond... ugye durvan szamolva 65536/512 egy bit felbontasa...(128 lepes - avagy 7 bites mintavet). Kerdes az elegseges-e, es hogy van-e hely 512*16bit tarolasara (1kB)?

En meg mindig azt mondanam, hogy ha ismert a sebesseg, akkor szinkronizacioval es bitenkenti soros port vetelezessel kellene az adatokat leszedni tarolni es vissza adni. Igy 512 bit az ugye igy 64 byte-on eltarolhato.
(#) Thowra hozzászólása Máj 23, 2008 /
 
Üdv mindenkinek!
Van egy PIC 16f627 em ami 630 nak 'képzeli magát'.
A winpic 630 nak írja de 627 van ráírva. Írni nem tudom, nem tetszik neki a cím.
Mi a fene lehet?
Találkoztatok már ilyennel?
(#) trudnai válasza Thowra hozzászólására (») Máj 23, 2008 /
 
Probald ki masik programozoval is mit mond ra - elso korben inkabb a winpic-re gyanakodnek hogy nem ismeri fel mert nem jo az adatbazisa vagy mert nem is kepes lekezelni a 627-et (ami persze fura lenne).

Ha masik programozoval is ez az eredmeny akkor nezd ki az adatlap szerint a kulonbsegeket es irj teszt firmware-t amivel ki lehet deriteni valojaban milyen is az az mcu. Pl memoria meretet tesztelni, hw modulokat, port inicializalast, ilyesmit.

Ha sikerul bebizonyitani az egy masik akkor lehet belole szerintem egy erdekes cikket irni
(#) sszasza válasza trudnai hozzászólására (») Máj 23, 2008 /
 
Köszi, működik! Illetve még valami, mi a (szokás szerinti kérdésem jön ) szabályos módja hogy
#pragma eeprom satobbi
const rom char A = 0x55; //eddig ok;
EEADR= &A; //na ez az ami nem ok. casttal sem.
(Elnézést ezekért a hülye kérdésekért, de én rögtön az _asm _endasm-hoz nyúlok ha vmi nem derül ki másodperceken belül. Erről próbálom most leszoktatni magam)
(#) szilva válasza trudnai hozzászólására (») Máj 23, 2008 /
 
OFF

Én vettem anno olyan Atmel 89S52-ket, amik félrecímkézett 89S51-ek voltak. De mintha más turpisság is lett volna a dologban, mert a programmemória meg tán megvolt, ami az S52-nél nagyobb. Mit össze kínlódtam, hogy miért nem akar jó lenni a progim... Végül leleveleztem az Atmellel, kideült, hogy tényleg kiment egy adag félrecímkézett, vagy hibás uC, úgyhogy küldtek újakat.

ON
(#) Thowra válasza sszasza hozzászólására (») Máj 23, 2008 /
 
Üdv!
Sajnos írni se lehet.
(#) trudnai válasza sszasza hozzászólására (») Máj 23, 2008 /
 
  1. #pragma romdata EEPROM
  2. const rom char eetest1[] = "EETEST1";
  3. const rom char eetest2[] = "eetest2";
  4.  
  5. EEADR = (unsigned char)&eetest2; //na ez az ami nekem ok. casttal...

{most checkoltam le, jol szamolja ki az offsetet - termeszetesen ez akkor okes ha eeprom merete max 256 byte...}
(#) Thowra hozzászólása Máj 23, 2008 /
 
ÁÁÁÁÁÁ Most néztem a 630 as adatlapját és az 14 lábú nem is 16, az én pic em el van tévedve egy PICit.
Szerintem megy a többi rossz vélvezető közé
De akkor sem értem, hogy lehet, hogy így eltévedt a masina:S. A törlés rendben megy, az automatikus fekismerés is. A többi programozó is képes olvasni és törölni de írni nem. Írtam egy tesztet direkt ehez de az se mászik bele.
(#) trudnai válasza Thowra hozzászólására (») Máj 23, 2008 /
 
Te, nem tudom milyen programozot hasznalsz, de van annak szeme vagy ujjacskai amivel kitapogatja hany laba van annak a szerencsetlen chipnek amit ra dugsz?

A kozep kategorias (baseline) chipektol kezdve van ezeknek egy belso azonosito szamuk amit kiolvasnak a programozok, ez alapjan megy az azonositas. Ha a programozo nem ismeri fel ezt a szamot, vagy az adatbazisaban rosszul szerepel mi a kiolvasott ertekhez tartozo szam, akkor nyilvan masik pic-nek latod a kepernyon - de attol meg nem biztos, hogy az tenyleg masik...

Namost nekem az utolso irasod alapjan mar az sem tiszta, hogy epp hol tartasz, jo lenne ha a fejlemenyeket megosztanad, mert nem lehet kovetni epp mit csinalsz. Az elso felvetesed szerint a programozo nem ismerte fel a chipet, most azt irod az rendben van, de kozben semmi olyasmit nem kozoltel, hogy a felismeresi problema megoldodott, ez es ez volt...

Szoval akkor kerlek szabatosan magyarazd el mi a kerdes, miben varod a segitsegunket
(#) Thowra válasza trudnai hozzászólására (») Máj 24, 2008 /
 
A programozó 630 nak ismerifel (winpic).
Írni nem lehet csak törölni, olvasni.
A hibaüzenetekről tettem fel képet.
Próbáltam a progit 627 re állítva beírni valamit de semmit se lehet. Kipróbáltam több programozóval de nem tudtam írni. Másik 627 est simán írja, a hardver jó.
(#) trudnai válasza Thowra hozzászólására (») Máj 24, 2008 /
 
Bulk erase-zel probalod torolni? Koraban sikerult mar hasznalni ugyanezt a PIC-et? Aramkorbe beultetve programozod vagy kiemeled es a programozo foglalataba helyezed a PIC-et?
(#) Thowra válasza trudnai hozzászólására (») Máj 24, 2008 /
 
Korábban ment rendesen, a programozóba tettem be.
Próbáltam törölni több progival is. Pontosan milyen törlésre gondoltál és mibe?
(#) wazsi válasza trudnai hozzászólására (») Máj 24, 2008 /
 
A megfontolando kérdésekre a válasz:
1. Szeretném,hogy teljesen ugyanazt a jelet visszaadni
2. A minimum 64bit/félsec a max 512/félsec
3. max 512 bit jöhet 1 sorozatban (fél sec alatt)
4. ha csupa 0 bit jön akkor nem jött semmi ha csupa 1 akkor kiakadt .
5. Ezt nem értem 0xaa55 Ez vmi megkülönböztetett spéci kod a PICnek ??
6 Semmi nem jöhet más a PIC csak ezt figyeli.

Nekem aza gondom ugy csinálnám meg :
a PIC várakozik az első felfutó élre.
Ha ez megjön beállitom a timert 1ms re.
Ha lepörög a timer és nincs megszakitás (felfutó él) akkor ez0 bit és ujra indul a timer.
Na most abban kéne segítség ,hogy mekkora orajel kell 1ms timer-nél mert ugy szeretném csinálni hogy timer0 az legyen 1 ms,és a timer1 böl meg kilehet olvasni hányszor pörgött át a timer0 és igy csak a timer1et kell eltárolnom ha jön felfutó él.
Ha a timer1 eléri a 100ms -ot akkor vége a jelsorozatnak.
Ez jol is hangzik csak az a bajom ha tul lassu a PIC akkor mikor megérkezik a felfuto él lekell resetelni a számlálot,kiirni a timer1et ,etc etc
Tehát ha lassú akkor mire ezeket megcsinálja addigra eluszik a jel,ha gyors akkor meg timer nagyon nagy tárhelyet foglal el.
Vagy esetleg lehet hogy a PIC külső orajelröl megy mondjul 10 Mhz-röl a Timer meg belső orajelröl ??
(#) szilva válasza wazsi hozzászólására (») Máj 24, 2008 /
 
Ez így nem fog menni.

Az elején azt mondtad, hogy nem tudsz semmit a bitek közti időkről, a sebességről, a bitek alakjáról. Most meg már olyan konkrét elképzeléseket írsz, hogy 1ms várakozás alatt jött-e ilyen-olyan él, és aszerint 0 volt vagy 1 a bit. El kellene dönteni, hogy akkor tudod-e a formátumot, vagy sem!

Ha nem ismered a formátumot, akkor nincs más, mint a lehető legpontosabban a váltások közti időket mérni, ha pedig ismered, akkor dekódolni kell és az eredménybiteket eltárolni.

Ha nem tudod megfogalmazni a problémát, akkor sosem lesz rá megoldás.
(#) trudnai válasza wazsi hozzászólására (») Máj 24, 2008 /
 
Idézet:
„1. Szeretném,hogy teljesen ugyanazt a jelet visszaadni”


Ha sikerul lehet meg Nobel dijat is kapnal erte... Minden megalkuvas, nincs olyan, hogy "ugyanaz a jel", mindenkepp lesz torzulas. Amit el kell donteni mekkora az a maximum ami elfogadhato. Ez igaz hangfelvetelekre, video felvetelekre, egyeb analog jelekre, digitalis jelekre es mindenre...

Idézet:
„2. A minimum 64bit/félsec a max 512/félsec”


Ne haragudj mar de a 'felsec' az milyen egyseg? Kerlek hasznald a szabvanyos megjeloleseket mert igy nagyon zavaro es felrevezeto, mikor ki kell majd szamolni az idoziteseket szinte biztos vagyok benne zavar lesz ha nem ezt teszed. Ezek szerint a sebesseg 128bps es 1kbps kozott barmi lehet??? Avagy van par szabvany ami leirja, hogy ez, az vagy amaz lehet - es akkor an esetleg esely, hogy kideruljon mikor az adatot kozlik, vagy be lehet elore konfiguralni...

Mi ez amugy amin dolgozol?

Idézet:
„4. ha csupa 0 bit jön akkor nem jött semmi ha csupa 1 akkor kiakadt .”


Ertem. Es van start meg stop bit? Milyen szabvanyt hasznal?

Idézet:
„5. Ezt nem értem 0xaa55 Ez vmi megkülönböztetett spéci kod a PICnek ??”


Probald leirni binarisan, es talan rajossz mitol "kulonleges" De ez is persze jelkodolastol fugg, de most ne menjunk ennyire messzire.

Az 1ms-es timert hogyan szamoltad ki, ez nekem nem vilagos? Ugye atolvastad amit irtam? Ez az 1ms amugy jo otletnek tunik ha tudod fixen 1kbps a sebesseg, de egyreszt azt irod ez nem fix, masreszt ha igy csinalod a bitek felidejeben kell a mintavetelezeseket megcsinalni.

1. El kell donteni, hogy az atviteli sebesseget ki lehet-e deriteni vagy be lehet-e konfiguralni, es igy tulajdonkepp egy sima asynchron soros kommunikaciot megvalositani

2. Avagy mericskelni kell, hogy a jelvaltasok kozott mekkora idok ternek el. Ez esetben probald meg lerajzolni, hogy mi van ha sok-sok-sok nulla ill sok-sok-sok 1-es jon, mekkora idok telnek el. Hogy valoban hiba-e, ha a forras csupa nullat kuld vagy csupa 1-et...

Jobb lenne ha megirnad mi ez, mert lehet olyasmivel amivel most szenvedsz mar foglalkozott valaki vagy a neten utana tudnak nezni...
(#) PetAd hozzászólása Máj 24, 2008 /
 
Hello
12f509 el akarok ledet villogtatni asm-ben de nem működik. Eddig csak azt írtam be hogy az összes kivezetés legyen kimenet.

MOVLW B'00000'
MOVWF TRIS

ez a hibaüzenet:
Error[113] C:\509 LED\LED.ASM 14 : Symbol not previously defined (TRIS)
A tris szó nem tetszik neki, de nem tudom hogy mit írjak helyette, kérlek segítsetek.
(#) szilva válasza PetAd hozzászólására (») Máj 24, 2008 /
 
Baseline PIC-eknél nem MOVWF-fel, hanem magával a TRIS utasítással kell a TRIS regisztert feltölteni. Egy paramétere van, az IO port címe, azaz valahogy így kell kinéznie az utasításnak:

TRIS GPIO

Ugyanígy az OPTION regisztert is az OPTION utasítással kell feltölteni, nem MOVWF-fel.

Az adatlapban egyébként ezek mind le vannak írva, érdemes olvasgatni programozás közben.
(#) PetAd válasza szilva hozzászólására (») Máj 24, 2008 /
 
Ok kösz most már tudom
(#) wazsi válasza trudnai hozzászólására (») Máj 24, 2008 /
 
Igazából úgy indult az egész ,hogy a kocsim piranja riasztó távkapcsolójának a külseje teljesen töredezett lett elkezdtem nézelődni hol tudnék venni 1 másikat,de 1 csomó telefon meg küldözgetés után elegem volt .
Nézelődtem a neten és amcsiból rendeltem 1 tanítható távkapcsot és jo is lett.
Elkezdtem nézegetni és elé 1xü az egész.
Ugyebár ismerős a feeling ,hogy te is csinálnál 1et
Megnéztem 1 csomó kocsi jelet és ezeket a paramétereket lestem ki.
Tudom,hogy a mostani kocsik mind ugrókodosak,de most én ezt szeretném megcsinálni.
Volt fenn AN645 microchipes megoldás ,de pont leszedték a forráskodot mire nekigyürkőztem.
Ha vkit érdekelne még:
Bővebben: Link
Igaz hogy ez ugrokodos ,de van learn funkcioja és hát azis ugy kezdödik vhogy beolvassa a jelet,amire pont szükségem volna.
De mostmár kezd körvonalazódni ,hogy irom meg a progit.
Viszont nem szeretnék szemtelen lenni,de a digitális jelnek nem aza lényege , hogy akármennyiszer lehet másolni torzulás mentesen ?
(#) Moderátor hozzászólása wazsi hozzászólására (») Máj 24, 2008
 
Kérném használni a link gombot!
(#) sszasza válasza trudnai hozzászólására (») Máj 24, 2008 /
 
Tanúim vannak hogy ezt próbáltam elsőnek, másodiknak és harmadiknak Mi a sz*rt tudtam benne elirni... Köszi.
(#) trudnai válasza wazsi hozzászólására (») Máj 25, 2008 /
 
KeeloQ-hoz nem ertek, remelem majd valaki mas tud valaszolni aki latott mar ilyet. Azt tudom, hogy nem is olyan regen a Microchip Keeloq termekeivel volt valami, hogy valaki az ugrokodot siman torte ha ket egymas utani kodot felvett - es lehet ez miatt a forrast leszedtek, hgy legalabb ne segitsek az autotovajokat.

Idézet:
„Viszont nem szeretnék szemtelen lenni,de a digitális jelnek nem aza lényege , hogy akármennyiszer lehet másolni torzulás mentesen ?”


Igy van, ez az ertelme. Tehat ismered a digitalis jelsorozat kodolasat, sebesseget stb, es akkor azt megfeleloen rogziteni tudod, tovabbitani tudod stb. De ez nem azt jelenti a jelet ugyanugy adod vissza. Ez azt jelenti, hogy az elore megbeszelt szabvanyoknak megfeleloen vissza tudsz jatszani egy jelsorozatot, amibol ugyanugy az atvitt bitsorozat vissza nyerheto.

Namost ezt a protokollt Te nem ismered... Tehat Te nem a digitalis jelsorozatot ertelmezed, hanem megprobalod ledigitalizalni a jelsorozatot majd ezt vissza jatszani - mint egy hangrogzito keszulek. Amugy ugy tudom sokan epp igy tortek az autokat: felvettek a jelet magnora, majd egyszeruen vissza jatszottak.

Neked is ezt kell csinalnod, csak ugye digitalis rogzitot valositasz meg. Szilva amug a nagy szakerto ilyesmiben mert o valami hasonlot valositott meg infras tavkapcsolokhoz ha jol emlekszem?
(#) sszasza hozzászólása Máj 25, 2008 /
 
Újabb érdekes(?) C18 kérdés. Hogyan tudok egy már létező SFR -hez biteket rendelni? Pl. WREGbits még nem létezik. A .h meg a src/tradicional/proc/.asm megvolt, de keves, mert a lib-ben is be vannak jegyezve (gondolom már csak ennyi hiányzik). Ebbe vhogy bele lehet nyúlni vagy van vmi szép megoldás is?
(#) wazsi válasza trudnai hozzászólására (») Máj 25, 2008 /
 
Irtam,hogy engem az ugrókód része nem érdekel,csak simán úgymond 1 digitális jelrögzítés.
Amugy a KeeloQ kódot sztem nem olyan 1xü feltörni ahogy olvastam,ezért használják mindenűt azt.(de lehet megint én tévedek).Na mind1.
Engem annyi érdekelt volna digitális jelsorozat rögzítése digitálisan. :no: (jólmegaztmondtam)
(#) szilva válasza wazsi hozzászólására (») Máj 25, 2008 /
 
Kérdés, hogy a PIC-kel akarokd-e venni és eltárolni (illetve kell-e tudni akármikor újabbat beolvasni) vagy elég az, hogy egyszer lerögzíted, és utána ezt vissza tudod akármikor játszani a PIC-es adóddal.

Utóbbi esetben ugyanis megoldható az, hogy pl. RS232-n keresztül a vett időket belököd egy PC-re, és a PC-n egy sima terminálprogival lelogolod ezeket. Miután megvan a minta mindenféle módszerekkel ki lehet elemezni, akár le lehet generálni is egy olyan kódot, ami a PIC-ből visszajátssza majd a mintát.

Ezt az utóbbi módszert valóban alkalmaztam IR távirányítók jeleinek a logolására és PC-n történő kielemzésére, ahogy azt trudnai is írta. Én a logolt állományokból nem a visszajátszáshoz, hanem a dekódoláshoz generáltattam táblázatot, ami alapján egy egyszerű progi az IR jeleket fel tudta ismerni. Ez a cucc megvan még valahol, elő lehet kotorni szftvert-hardvert, mindent hozzá.
(#) PetAd hozzászólása Máj 25, 2008 /
 
Hello
16f628A-val szeretnék egy ledet felkapcsolni. asm-et használok mplab 8.0-val. Ez a forráskód.
A hex fájlt meg akartam nyitni winpic800-al és hibaüzenetet írt ki.

LIST P=PIC16F628A ;
#include "P16F628A.inc"
__config _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON

START
BSF STATUS,RP0 ;BANK1-be RP0=1, RP1=0
BCF STATUS,RP1
MOVLW b'00000000' ;PORTB összses kivezetése kimenet
MOVWF TRISB
BCF STATUS,RP0 ;BANK0-bs RP1=0, RP0=0
BCF STATUS,RP1
BSF PORTB,0 ;B0 LED fel
END
(#) potyo válasza PetAd hozzászólására (») Máj 25, 2008 /
 
Idézet:
„A hex fájlt meg akartam nyitni winpic800-al és hibaüzenetet írt ki.”


Érzel késztetést arra, hogy megoszd velünk, mi volt az a hibaüzenet?


A programod végéről az END elől hiányzik egy VISSZA GOTO VISSZA sor
(#) PetAd válasza potyo hozzászólására (») Máj 25, 2008 /
 
A hibaüzenet a winpic800_hiba nevű képben van.
Biztos hogy kell a végtelen cilkus bele? Mert csak egy ledet kapcsolok fel. kösz
(#) potyo válasza PetAd hozzászólására (») Máj 25, 2008 /
 
Bocs, nemis figyeltem, hogy van csatolás. Nem lehet, hogy 16F627 van kiválasztva, vagy valami más chip a winpic-ben? Vagy próbálj meg másik égető programot is.


Kell a végtelen ciklus minden proramba. Van ahol a cikluson belül csinálunk is valamit, van ahol nem, de kell.


A hiba.txt-hez:
-a VISSZA címkén kívül minden elé tegyél be egy tab-ot vagy egy szóközt (LIST, BSF, __CONFIG, stb.).
-nem 16F628A van kiválasztva a Select Device-nál az MPLAB-ban
Következő: »»   216 / 1319
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