Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   466 / 1320
(#) watt válasza menyus hozzászólására (») Ápr 22, 2009 /
 
Jól látod, rossz az adatlap!
Nézz rá az - erratára - , benne van a korrigálás.
(#) icserny válasza robing16 hozzászólására (») Ápr 22, 2009 /
 
A mellékelt program a PICkit2 Starter Kit egyik demója, ami a PIC16F690-nel szerelt Low Pin Count kártyához készült.

Az RA0 lábra, az ADC bemenetére egy 10 kOhm-os potméter csúszkája kapcsolódik, ami a potméter állásátólfüggően 0 - 5V jelet ad.

A program beolvassa és digitalizálja ezt az értéket, majd 4 bitre binárisan kódolva kiküldi az RC0...RC3 lábakon, ahová egy-egy LED van kötve.

A PIC16F84-et ideje volna elfelejteni! Drága és buta...
(#) szilva válasza robing16 hozzászólására (») Ápr 22, 2009 /
 
Ha írsz valamit a "DMX jel"-ről, akkor talán tudunk ötletet adni, hogy merre indulj el. Tehát egy kicsit pontosabb feladatspecifikációt prbóálj meg megfogalmazni, sokkal több segítséget fogsz kapni, feltéve, hogy nem azt várod, hogy helyetted valaki készre írja meg a programot.
(#) robing16 hozzászólása Ápr 22, 2009 /
 
Egy DMX jel tudtommal nagyon sok csatornarészből áll. Azt tudom erről, hogy a diszkós lámpákon be kell állítani egy értéket, amit 1-től 512-ig lehetséges, persze púlttól függően.

Azt is tudom, hogy az USART mint olyat, nem lehet itt használni! Azt is tudom, hogy egy címosztály 44us alatt zajlik le az adatkábelen és 11 részre van felbontva, azaz 1db poti értéke 4us alatt olvasódik be...

Ennyit tudok!

Valójában értelmes példát az interneten nem találtam, és azt sem tudom, hogy lehetne megoldani, hogy pl a PORTB-re kapcsolt kapcsolósort hogyan fogja kezelni a PIC, illetve hogy tudom programban megadni, hogy ha ott megadok egy értéket, akkor az adatvonalon jövő részt pont akkor olvassa, amikor kell...

Viszont egy dolgot már találtam, de ez nem pont azt csinálja, mit kellene!

Ne kérdezzétek, ez mi, de ezt találtam

És nem kértem meg senkit, hogy írja meg helyettem, de ha esetleg foglalkozott vele valaki, tud-e ötletet adni, merre induljak el!?!

Ennyi.
(#) robing16 hozzászólása Ápr 22, 2009 /
 
Egy DMX jel tudtommal nagyon sok csatornarészből áll. Azt tudom erről, hogy a diszkós lámpákon be kell állítani egy értéket, amit 1-től 512-ig lehetséges, persze púlttól függően.

Azt is tudom, hogy az USART mint olyat, nem lehet itt használni! Azt is tudom, hogy egy címosztály 44us alatt zajlik le az adatkábelen és 11 részre van felbontva, azaz 1db poti értéke 4us alatt olvasódik be...

Ennyit tudok!

Valójában értelmes példát az interneten nem találtam, és azt sem tudom, hogy lehetne megoldani, hogy pl a PORTB-re kapcsolt kapcsolósort hogyan fogja kezelni a PIC, illetve hogy tudom programban megadni, hogy ha ott megadok egy értéket, akkor az adatvonalon jövő részt pont akkor olvassa, amikor kell...

Viszont egy dolgot már találtam, de ez nem pont azt csinálja, mit kellene!

Ne kérdezzétek, ez mi, de ezt találtam

És nem kértem meg senkit, hogy írja meg helyettem, de ha esetleg foglalkozott vele valaki, tud-e ötletet adni, merre induljak el!?!

Ennyi.
(#) watt válasza robing16 hozzászólására (») Ápr 22, 2009 /
 
Előző leveledben ezt írod:
Idézet:
„Egy DMX jelet kellene lefordítani 4 BIT-es kimenetre!”

Majd leírod mit szeretnél.

Ezzel szemben a következőkben már értékekről és címzésekről is beszélsz. Lássuk:

Amit találtál az egy RS485-ös soros kommunikációra alkalmas áramkör az illesztővel.
Ezt írod:
Idézet:
„Azt is tudom, hogy az USART mint olyat, nem lehet itt használni!”

Ha ez igaz amit írsz, akkor ez nem lehet jó(vagy nem ismered a DMX működését, ahogy én sem.)

Írod:
Idézet:
„Azt tudom erről, hogy a diszkós lámpákon be kell állítani egy értéket, amit 1-től 512-ig lehetséges, persze púlttól függően.”

Mihez kapcsolódik ez az érték?
Milyen fizikai vonalakon kersztül lehet ezt az értéket beállítani?
Milyen csatlakozó van ott, hány db vezetékkel lehet összekötni ezeket a vezérlőket?

írod:
Idézet:
„Azt is tudom, hogy egy címosztály 44us alatt zajlik le az adatkábelen és 11 részre van felbontva, azaz 1db poti értéke 4us alatt olvasódik be...”

Milyen az az adatkábel?
Akkor most 11 poti értékét lehet beadni és te csak 4-et akarsz?
Egy egy 4us-es csomag felépítése hogy néz ki? (Ez lenne egyébként a fő kérdés!)

Végül még annyit, hogy minden arra vall, hogy a kommunikáció soros, azaz pont az USART-ot lehet erre használni, csak ki kell deríteni a fizikai(RS485?) és a kommunikációs protokollt!
Ez lesz a nehezebb dolog, hacsak a belinkelt áramkör eleve nem ezt csinálja, csak nem potiról, hanem más forrástól függően vezérel. Talán ki lehet hámozni a protokollt a programból, ha valaki rászán néhány napot!

Írd meg a vezérelni kívánt DMX típusát is, hogy legyen fogalmunk miről is van szó!

szerk:
Megnéztem a programot, nem is olyan bonyi, bár azt még nem vetettem össze, hogy a PortA,0-n kiadott jelsorozat megegyezik-e egy szabványos soros protokollal, de végül is ha nem, akkor is át lehet írni más PIC-re, (idő szimulációval kideríteni a pontos időket).
Kérdés, hogy erre van-e szükséged, mert az első kérdésedben teljesen másról beszéltél.



(#) menyus válasza watt hozzászólására (») Ápr 22, 2009 /
 
Köszönöm, megnéztem. Így már értem.
(#) menyus válasza trudnai hozzászólására (») Ápr 22, 2009 /
 
Igen ebből megint tanultam. A datasheet az "alldatasheet.com" ról való nem a gyártótól, az errata meg eszembe sem jutott...(még sosem volt rá szükségem)
(#) Hp41C válasza menyus hozzászólására (») Ápr 22, 2009 /
 
Szia!

Az adatlap DS40044F verziójában a kérdéses rész már javítva van. Azokban az újabb típusokban szerepelnek csak az említett bitek, melyek képesek a saját program memória olvasására, programozására (16F87, 16F88, 16F87x, 16F88x stb.)

Szia
(#) menyus válasza Hp41C hozzászólására (») Ápr 22, 2009 /
 
Köszönöm, tehát ennél nem kell külön kiválasztani az eeprom területet. Az írás meg indirekt címzéssel történik hasonlóan mint az INDF esetében.
(#) trudnai válasza robing16 hozzászólására (») Ápr 22, 2009 /
 
Idézet:
„És nem kértem meg senkit, hogy írja meg helyettem, de ha esetleg foglalkozott vele valaki, tud-e ötletet adni, merre induljak el!?!”


Elso lepes: Probaldd meg megtalalni a google-lal a DMX protokolljanak leirasat.

Maosik lepes: Ertelmezd a protokollt, osztalyozd, hogy milyen tipusu (soros / parhuzamos, mekkora a sebessege, stop/startbitek szama, van-e szinkron jel, mekkora az egyszerre atvitt bitek szama, van-e csomag azonsitas stb stb stb -- de ha kiderited, hogy az egy szabvanyos atviteli mod az a legkonyebb, pl valamilyen soros atviteli mod mint pl RS232, RS485, SPI, I2C, bar nekem abbol az ""agyon kommentezett" asm kodbol parhuzamosnak tunik)

Harmadik lepes: Valositsd meg a protokollt -- ebben mar tudunk valoszinuleg segiteni.
(#) trudnai válasza menyus hozzászólására (») Ápr 22, 2009 /
 
Idézet:
„Igen ebből megint tanultam. A datasheet az "alldatasheet.com" ról való nem a gyártótól, az errata meg eszembe sem jutott...(még sosem volt rá szükségem)”


Akkor meg egy tanulsag: "Cipot a cipoboltbol" -- azaz Microchip dokumentaciot a microchip.com-rol
(#) icserny válasza watt hozzászólására (») Ápr 22, 2009 /
 
Őszintén szólva egyre kevésbé értem, hogy mit akarsz. Először úgy tűnt, hogy egy potméter állásának függvényében akarsz valami négybites adatot kiküldeni.

Most meg egy olyan kapcsolást kerestél elő,amelyiken kapcsolók vannak, s (gondolom) ennek függvényében küld ki valamit EGY vonalon, soros jellel.

Mindez azonban tökéletesen ellentétes az első hozzászólásodban elejtett egyik mondattal, amelyikből úgy tűnik, hogy mégsem küldeni, hanem fogadni/értelmezni akarod a jelet.

Jó lenne tehát, ha eldöntenéd és világos(abb)an kifejtenéd, hogy mit akarsz, s melyek a peremfeltételek!

Mert az eddigiekről csak az alábbi vicc jut az eszembe.

Rendszertervező a programozónak:
- Te kezdd el a kódolást, én közben megpróbálom kideríteni, hogy mit is akarnak!
(#) trudnai válasza icserny hozzászólására (») Ápr 22, 2009 /
 
Idézet:
„Mert az eddigiekről csak az alábbi vicc jut az eszembe.

Rendszertervező a programozónak:
- Te kezdd el a kódolást, én közben megpróbálom kideríteni, hogy mit is akarnak!”


Ez nem vicc sajnos Csak a baj az, hogy a szervezetlensegert soha sem a szervezot rugjak ki, hanem a kodolot aki nem birta lekodolni a kaoszt
(#) szilva válasza icserny hozzászólására (») Ápr 22, 2009 /
 
Én most csak gyorsan ráguglizva ennyit találtam:

http://en.wikipedia.org/wiki/DMX512-A
http://hu.wikipedia.org/wiki/DMX

Ebből már nagyjából világos, hogy hogyan történik itt a kommunikáció (pl. hogy EIA485 alapú a kommunikáció, 4us egy bitidő, ami 250kbps, és megfelelő órajel mellett ezt tudja is a PIC USART) De a megoldandó feladat számomra is elég homályos.
(#) icserny válasza szilva hozzászólására (») Ápr 22, 2009 /
 
Nem muszáj Guglihoz menni. Itt, a HE fórum keresője is kidob néhány topikot, ha a topikcímekben a DMX kulcsszóra kerestetünk.
(#) robing16 hozzászólása Ápr 22, 2009 /
 
Sziasztok!

WATT, hazaérek válaszolok neked, most épp net közelébe kerültem kb 5 percig xD

A Hobbielektronika fórumon nincs DMX vevő szinten! Van olyan, hogy LPT DMX-re, Pc-ről DMX-re motorvezérlés, báár itt LPT portot láttam...

Már végignéztem, és nincs!
Én is ezt olvastam el, innen tudom, hogy 44 us-os jel megy, meg ilyesmi
TOPIK


Valójában nekem 10 csatorna kellene, amit a DMX vonalról leveszek, ez többnyire ( 2 eres + test ) mikrofon kábellel szokták megoldani!

Otthon mindenkinek válaszolni fogok, köszi a segítséget

(#) trudnai válasza robing16 hozzászólására (») Ápr 22, 2009 /
 
Szerintem ne a DMX-el kezdd a PIC-ekkel torteno fejleszteseket. Kezdd el a led villogtatassal es ha majd az megy akkor lepj tovabb egyre komolyabb feladatok fele, beleertve a soros kommunikacios protokollokat. Ha azok is mennek (asynchron, SPI, I2C) akkor mar nem lesz nehez a DMX protokolljat megvalositanod a leirtak alapjan...
(#) szigetivan hozzászólása Ápr 22, 2009 /
 
Sziasztok!

Írtam egy programot, mely egy karaktertömbben a vesszővel elválasztott számok közül az első és a második vessző közti adatot kiolvassa és beleírja egy másik tömbbe, ez működik devC-ben. Debugnál, a vesszők közti adatok belekerülnek a másik tömbbe.
Ezután próbáltam PIC16F690-re is megírni (cc5x fordító), de itt rossz értékeket látok (amelyik tömbbe írom az adatokat, azt soroson kiküldöm, ebből gondolom..)
Tudnátok segíteni, hogy mi a hiba, mit csinálok rosszul?
Nekem nincs több ötletem..
Csatolom az eredeti progit is (proba1.cpp).

Köszi
(#) potyo válasza szigetivan hozzászólására (») Ápr 22, 2009 /
 
Idézet:
„de itt rossz értékeket látok”


Nem indul az autóm, de egy másik autó ugyanezzel az akkuval már indult. Segítenétek, miért nem indul?
(#) szigetivan válasza potyo hozzászólására (») Ápr 22, 2009 /
 
Értem, köszi.
(#) El_Pinyo válasza szigetivan hozzászólására (») Ápr 22, 2009 /
 
Szia!
Bár nem értek a CC5X fordítóhoz, de szerintem már rosszul definiáltad a karaktertömböt is.
Bővebben: Link a 30. oldalnál keresgélj, meg úgy általánosságban is érdemes a User's manualt nézegetni.
Üdv.
(#) szigetivan válasza El_Pinyo hozzászólására (») Ápr 22, 2009 /
 
köszi szépen, pont én is erre gondoltam!
(#) El_Pinyo válasza szigetivan hozzászólására (») Ápr 22, 2009 /
 
Ha így csinálod, ahogy a manual is írja, akkor nem kell a vesszőket vizsgálgatni, elég csak a nullát figyelni.
(#) trudnai válasza szigetivan hozzászólására (») Ápr 22, 2009 /
 
Ez igy nyilvanvaloan nem jo. A 'kar' sohasem lesz nulla... hisz az egy pointer egy statikus tombre.

C-ben tipikusan az ilyet pointerrel szokas megoldani. Valami hasonlo elkepzeles mar inkabb C-s:
  1. void beolvas()
  2. {
  3.     int v = 0;
  4.     const char kar[33] = "8,20,0002,0418,37,706,25,,,0,,,0";
  5.     const char *kptr = kar;
  6.     const char *eptr = ertek; // ha az ertek char tomb akkor eptr megkapja annak kezdo cimet
  7.  
  8.  
  9.     while ( *kptr++ )
  10.     {
  11.         if (*kptr == ',')
  12.         {
  13.             v++;
  14.         }
  15.         else if (v == 1)
  16.         {
  17.             *eptr++ = *kptr;
  18.         }
  19.         else if (v == 2)
  20.         {
  21.             *eptr++ = '\0';
  22.         }
  23.     }
  24. }

Ennek meg annyi ibaja van, hogy jo C szokas szerint exploitalhato, konnyen buffer overflow-hoz vezethet tobb okbol is kifolyolag. Az elso problema, hogy ha a 'kar' tomb veletlen nem lenne lezarva 0-val akkor amiatt szaladna tul a karaker feldozlgozason, a masodik problema, hogy nem tudja az 'ertek' char tomb-ben van-e elegendo hely, sot ha 'kar' ban nincs masodik vesszo akkor csak firkalja a memoriat ameddig csak lehet. Epp emiatt az ilyen megoldasok csak C tanulasara valok ill vegszukseg eseten mikor kodmeret vagy egyeb miatt mar mas megoldas nem johet szoba. Valosagban azonban erdemes bele tenni meg futas ideju buffer meret korlatozasokat - magyaran figyelni nehogy tullepjuk a rendelkezesre allo buffereket...
(#) szilva válasza szigetivan hozzászólására (») Ápr 22, 2009 /
 
Én azt nem értem, hogy egy PIC-nél ennek egyáltalán mi értelme van. Ha csak valami konstans stringek sorozatát kellene előállítani, akkor olyan megoldást kellene választani, ami fordítási időben jelent többletmunkát, de a futáskor egyszerű, pl. egy konstans stringvektor, aminek az elemeit szedi elő a beolvas(). Egyébként sem szerencsés túl nagy konstans struktúrákat tárolni egy ilyen progiban, a PIC-ek erőforrásai elég szűkösek ahhoz.
(#) icserny válasza robing16 hozzászólására (») Ápr 22, 2009 /
 
Idézet:
„A Hobbielektronika fórumon nincs DMX vevő szinten!”


Ebben a hozzászólásban ajánlanak egy DMX projektet (dimmer, DMX demultiplexer, motorvezérlő, stb).

A DMX transciever-re azt mondja, hogy adni és venni is tud. A demultiplexerről pedig azt, hogy 8 egymást követő DMX csatorna jelét alakítja 0 - 10 V analóg jellé.

A két-tengelyes léptetővezérlő pedig két léptetőmotor vezérlését teszi lehetővé.

Ezek szerint van vevő. Igaz, nem PIC, hanem AVR, de gondolom, ez nem probléma.
(#) denisz hozzászólása Ápr 22, 2009 /
 
köszönöm az eddigi segítséget. egy példa progit már át tudtam alakítani magamnak, és működött a kijelzőm. Írtam, rá, kapcsoló hatására változtattam pozíciót stb. Viszont átalakítottam a kapcsolásomat kezdődtek újból a bajok. Átírtam a progit, de már megint nem fut le az inicializálás sem. (Úgy néz ki ez nem megy nekem) Leegyszerűsítettem már mindent, de nem tudok rájönni a proglémára. Esetleg nem nézne rá valaki. Küldöm a működő progit, meg az újat is.

köszönettel : denisz
(#) denisz hozzászólása Ápr 22, 2009 /
 
azt már látom, hogy miután átalakítottam, kimaradtak a movwf PORTB-k és fordított sorrendben vannak a bitsorok, de kijavítva sem kel életre, még az inicializáláson sem megy túl a kijelző.

denisz

LCD3.asm
    
(#) szilva válasza icserny hozzászólására (») Ápr 22, 2009 /
 
Amit hirtelen beleolvasva láttam erről a DMX-ről, nem lehet egy olyan rettenet nagy ördöngösség megírni egy 10 csatornás vevőt, ami a 10 adatot lepakolja egy memóriaterületre. Ezután már csak a vett adatok szerint kell ezt vagy azt csinálni.
Következő: »»   466 / 1320
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