A privát üzenet rendszerben karbantartásokat végzünk. Lassulások előfordulhatnak!
Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   197 / 1319
(#) szilva válasza potyo hozzászólására (») Ápr 28, 2008 /
 
Kiváló okfejtés, nagyon korrekt megoldás!

Nemrég, amikor az LCD-s óra progiját írtam a 16F946-ra, megszenvedtem én is a timer pontos reint-jével. Igaz, nálam a Timer1 oszci jár 32768Hz-es órakvarcról (aszinkron mód) és amikor a proci dolgozik, akkor azt internal 8MHz-ről teszi, a holtidőben meg alszik. A billentyűkezelés és más egyéb dolgok miatt (pl. csipogás, ébresztés funkció van még tervben) másodpercenként 16 interruptot használok. Beszúrom azt a kódrészletet, amivel pontossá vált az óra (kb. 5 hete jár, most siet 12 másodpercet), hátha más is hasznát veszi:

  1. ; TIMER1 interrupt
  2.  
  3.         bcf             PIR1,TMR1IF
  4.  
  5.         banksel TMR1L
  6.         movf    TMR1L,w
  7.         movwf   t1l
  8. wt1l
  9.         movf    TMR1L,w
  10.         xorwf   t1l,w
  11.         btfsc   STATUS,Z
  12.         goto    wt1l
  13.  
  14.  
  15.         banksel TMR1H
  16.         movlw   B'11111000'
  17.         iorwf   TMR1H,f
(#) szilva válasza ledesgyerek hozzászólására (») Ápr 28, 2008 /
 
Szerintem ezen ne vesszünk, ne vesszetek össze, nem érdemes!

Azt bizonyára tapasztaltad, hogy értelmes kérdésre értelmes válaszok szoktak születni. A Te érdeked is, hogy ne a kérdés megértésére menjen el a sok energia, hanem inkább az építő jellegű válaszokra!
(#) NickE válasza Norberto hozzászólására (») Ápr 28, 2008 /
 
Ki írta ezt a könyvet?
(#) menyus válasza watt hozzászólására (») Ápr 28, 2008 /
 
Egyelőre még csak elméleti szinten kóstolgatom ezeket a számomra új dolgokat. Mindenesetre köszönöm az infót, és átbújom a példákat az adatlapban.
(#) Norberto válasza NickE hozzászólására (») Ápr 28, 2008 /
 
A lehető legnagyobb tudású, C-nyelv kitalálói, kifejlesztői, annak ősatyjai.
(#) Akiss hozzászólása Ápr 28, 2008 /
 
Sziasztok! Az volna a problémém hogy nem tudok nagy méretű strukt tömböt létrehozni(100 elem kb 700bájt) de a mcc18 as fordító ne engedi pedig azt írja kb1000 bájt még szabad. Valaki aki tud erről valami osat írjon előre is köszi!
(#) potyo válasza Akiss hozzászólására (») Ápr 29, 2008 /
 
Azért azt beírhattad volna, hogy pontosan mivel próbálkozol és mi a fordító hibaüzenete!

Nekem úgy tűnik, hogy bármely adatszerkezet mérete maximum akkora lehet, amekkora egy memóriabank mérete, vagyis 256 bájt. Kikerülheted így, és azután az index alapján döntesz, hogy melyik tömböt használod:
  1. typedef struct
  2. {
  3.         unsigned long a;
  4.         unsigned b;
  5.         unsigned char c;
  6. } strukt;
  7.  
  8. #pragma udata sect=0x100
  9. strukt struktura[36];
  10. #pragma udata sect2=0x200
  11. strukt struktura2[36];
  12. #pragma udata sect3=0x300
  13. strukt struktura3[28];
(#) trudnai válasza menyus hozzászólására (») Ápr 29, 2008 /
 
Szia Menyus,

Lehet a logikai aramkorokkel jobban megertened ezeket - nezd meg a logikai igazsag tablazatot itt, felul az A es B bemenet, es ott latod oldalt a kulonbozo muveletekes (erdekes, magyar oldal ennek ellenere angolul vannak a muveletek, de itt nem is baj, mert igy felismerhetoek az utasitasok )
(#) Akiss válasza potyo hozzászólására (») Ápr 29, 2008 /
 
Köszönöm a választ kipróbálom! Következőek pontosabban foglalkozok!
(#) NickE válasza Akiss hozzászólására (») Ápr 29, 2008 /
 
Picit mélyebben belemenve arról van szó, hogy alapból az sw stack területen történik a helyfoglalás. Az sw stack pedig 256 byte méretű alapból nagyobb PIC-ek esetén. Ha nagyobb stacket szeretnénk használni, akkor a linker scripet kell módosítani - user manualban le van írva, hogyan - és át kell állítani a stack modelt a single bank modelről multi bank modelre. Hátránya ennek a megoldásnak, hogy kevésbé nagyobb kódot eredményez. (kevesbé optimalizálható)

Van egy másik megoldás is, static -al történő definició esetén nem a stack területen jön létre a változó, de ekkor is ki kell jelölni neki a linker scripben és az udata -ban a helyét.
Ezek egyébként benne vannak a user manualban.
(#) NickE válasza Norberto hozzászólására (») Ápr 29, 2008 /
 
Diplomatikus válasz.

Gondoltam, hogy fordítás, ezért kérdeztem. Szerintem néhol félrefordítottak vagy legalábbis érdekes szavakat/kifejezéseket használ.

Ettől függetlenül nem rossz...
(#) Csaplar hozzászólása Ápr 29, 2008 /
 
Sziasztok!

Szükségem lenne egy kb 110x30mm-es billentyűzet tasztatúrára!
Az igazi az lenne, ha összesen 4 v. 5 darab gomb lenne rajta.

Tudtok valami hasonló forgalomban levőt?

Ha gyártatni akarna az ember, akkor kihez érdemes fordulni?

Köszi!
Zoli
(#) trudnai válasza Akiss hozzászólására (») Ápr 29, 2008 /
 
Linker scriptben letre kell hozni egy nagyobb teruletet a tomb v. struktura szamara, majd #pragmaval megmondani, hogy a tombod arra a szekciora keruljon. Ezutan egy pointert kell definialni es azt hasznalni. Ez amugy le van irva a C18 C Compiler Getting Started -ben a FAQ-ban... Ott van egy kis peldacska hogyan modositsd a linker scriptet.
(#) Vales hozzászólása Ápr 29, 2008 /
 
Üdv!

Már régóta szemezem a "pixels féle" Winamp vezérlővel, és van otthon egy "elfekvő" PIC16F871-em is.
(Kónya-féle könyv gyakorló paneljében)
Winamp vezérlő soros portra
Azt szeretném megkérdezni, hogy a fenti uC-re mekkora meló lenne átírni a firmware-t, illetve a kapcsolást átkonstruálni?
Feltételezem, hogy a használt portokat nagyjából ugyanúgy kezeli a 16F871 is, csak nagyobb tokban van és adatlap alapján többet is tudhat...
Vagy nem érdemes "elpazarolni" a 16F871-et erre a készülékre?
(#) trudnai válasza Vales hozzászólására (») Ápr 29, 2008 /
 
Ugye nem azt az 500Ft-ot szeretned megsporolni amennyibe az a 16F628 kerul?
(#) Vales válasza trudnai hozzászólására (») Ápr 30, 2008 /
 
Üdv!

Természetesen nem! :no:
Csak inkább szakmai oldalról érdekelt volna a téma, hogy mennyire "lefelé kompatibilis" a nagyobb PIC. Feltételezem, hogy a 16F871-et esetleg "komolyabb" feladatokra lenne érdemes használni majd, és érdemes megvenni a 628-at ide, ahogy az építési leírásban van.

Kedves HEStore!
Ebből az áramkörből esetleg nem lesz majd kit valamikor?

Köszönöm!
Vales
(#) trudnai válasza Vales hozzászólására (») Ápr 30, 2008 /
 
Szia Vales,

Ha megvan a forraskod, akkor viszonylag egyszeru atnezni a kodot milyen modulokat hasznal, van-e minimum ugyanannyi portja, feture-oket ha hasznal akkor azok a masikban is megvanak-e stb. Utana nagyjabol csak annyit kell tenni, hogy atnezni mindket adatlapot, hogy a 871-ben megvannak-e ezek a modulok ill elgondolkodni azon, hogy a portokat pl hogyan kell egyiknel-masiknal felinicializalni.

Mivel mindketto 16F es midrange-es, ezert jo esely van ra, hogy nem sok munka atirni a firmware-t, de ilyen egyszeruen nem lehet azt mondani, hogy nagyobb szamozast kapott a chip ezert az komolyabb vagy nagyobb.

Bocsanat az altalanossagokert, de most nincs idom a ket adatlapot meg a firmware-t atnezni, de ha erdekel es atnezed es kerdesed merulne fel magam is de szerintem masok is itt a forumon szivesen valaszolnanak.

Udv,
Tamas
(#) Vales válasza trudnai hozzászólására (») Ápr 30, 2008 /
 
Üdv!

Köszönöm előre is, ha majd "belevágok"! :yes:
Az az igazság, hogy régen tanultam már PIC-et (még a főiskolán, Kónya tanárúrtól, de sajnos a vizsgám és maga a főiskola sem sikerült ), ezért nem nagyon emléxem fejből a tok képességeire.
De előkotrok mindent, a gyakorlót és az adatlapot is, aztán megnézem "ki mit tud".
Ha a HEStore-ban egyszer kit-ben meg lehetne ezt is venni, az nem lenne rossz ettől függetlenül.

V.
(#) Csaplar hozzászólása Ápr 30, 2008 /
 
Sziasztok!

Szeretném az adataimat rs485-ön is kiküldeni és fogadni. Nincs szükségem több gép kommunikációjára, csupán egyetlen pic és egy pc között kell kapcsolatot teremtenem.

Tudnátok kicsit segíteni?
Ha nem túl nagy kérés, valaki tudna egy egyszerű kis kapcsolási mintát mutatni?
Neten többfélét is buheráltam, és nem igazán tudom, hogy mire van szükségem.

Előre is köszi!
Üdv
Zoli
(#) potyo válasza Csaplar hozzászólására (») Ápr 30, 2008 /
 
A PC oldalra kell egy MAX232 is, ami a soros port jeléből TTL jelet csinál, majd ezt rá lehet küldeni az SN75176 chipre. A PIC oldalon megint egy SN75176 chip kell a kontroller mellé.

Az a kérdés, hogy kétirányú kommunikációt akarsz, és azt egyidőben akarod-e? (bármikor bármelyik küldhet adatot a másiknak, vagy az egyik a főnök és csak akkor megy kommunikáció, ha a főnök kéri?). Mert ha egyidőben kell a kétirányú, akkor mindkét oldalra két-két darab SN75176 kell, és akkor fixen be lehet kötni a vezérlő lábakat, ha viszont egyidőben csak egy irányba mennek az adatok, akkor a vezérlő lábakat is kezelni kell. Szóval írd le pontosan, hogy mit szeretnél megvalósítani, és akkor tudunk konkrétan mutatni valamit.
(#) Csaplar válasza potyo hozzászólására (») Ápr 30, 2008 /
 
Szia!

Hosszabb távon jobban megéri ha egy időben mehet mindkét irányba a kommunikáció, így jobban érdekelne az a verzió!

Köszi!
(#) szilva válasza Csaplar hozzászólására (») Ápr 30, 2008 /
 
Annyit tennék hozzá, hogy tudomásom szerint a full duplex megoldást RS422-nek hívják, a half duplex, irányváltogatósat pedig RS485-nek.

Azt meg szabad kérdezni, hogy miért nem jó az RS232-es kommunikáció a PIC és a PC között?
(#) Csaplar válasza szilva hozzászólására (») Ápr 30, 2008 /
 
Nem feltétlen lesz a készülék a pc közelében! Lehet, hogy csak 30-40m távolságban.
Ezért lenne szükségem a 485-re....
(#) trudnai válasza Csaplar hozzászólására (») Ápr 30, 2008 /
 
Modemen gondolkodtal mar? Nem kell feltetlen telefon modem...
(#) Csaplar válasza trudnai hozzászólására (») Ápr 30, 2008 /
 
Az egyszerűbb lenne, vagy hatékonyabb, vagy miért?
Mivel elektronikai körökben még nagyon amatőr vagyok, így nekem a cél az, hogy működőképes legyen és minél könnyebben meg tudjam csinálni.

Az RS232-nél könnyű dolgom volt, mert kellett hozzá egy max232-es, egyszerű volt bekötni és a szimpla UART-os függvényekkel működött.
Nagyobb távolság esetén milyen egyszerűbb

kommunikációs formát érdemes használni?
(#) trudnai válasza ledesgyerek hozzászólására (») Ápr 30, 2008 /
 
Szia,

Ha angolul erdekel egy PIC C konyv, most letoltheto ingyen egy a Wiz-C gyarto oldalarol. Ez a PIC C compilerukre keszult konyv, de a legtobb resz az altalanos annyira, hogy bermely C forditora igaz legyen.

Learn C with FED
(#) trudnai válasza Csaplar hozzászólására (») Ápr 30, 2008 /
 
Modemet epp erre talaltak ki, hogy nagytavolsagu es/vagy zajos vonalon at lehessen vinni adatokat. Pl az RS232-t egyik oldalon modulalja, masikon demodulalja (innen a nev: mo-dem) igy a ket vegpont RS232-kent kezeli a kommunikaciot, nem kell tudniuk arrol, hogy a koztes adatatvitel mikeppen tortent.

Elonye, hogy a dolgod leegyszerusiti, hatranya, hogy valoszinuleg dragabb megoldas, mint amit potyo ill szilva javasoltak neked.
(#) Csaplar válasza trudnai hozzászólására (») Ápr 30, 2008 /
 
Pontosan mi kellene ennek a megvalósításához?

Létezik valami hasonló mint a max232-es IC ?
Vagy hogy nézne ki ez a dolog?
(#) Csaplar válasza potyo hozzászólására (») Ápr 30, 2008 /
 
Esetleg akkor az RS485 kétirányú kommunikációhoz kérhetnék valami kicsit kis kapcsolási mintát?

Előre is Köszi!
(#) szilva válasza Csaplar hozzászólására (») Ápr 30, 2008 /
 
Szerintem gondolkozz RS422-ben! A modem ide túl nagy falat, ha bérelt vonalit keresel mindkét végére, amik létező telefonvonal nélkül is össze tudnak csengeni, akkor az azért drága megoldás, ha pedig telefonvonali modemről van szó, akkor a hívási folyamat miatt le kell szimulálni egy telefonvonalat (csengetéssel, miegymással - csináltam már ilyet, de túl komoly projekt, nem ide való).

Szóval RS422 jó lesz, az, ha jól emlékszem 1200m-ig használható, differenciális jelátvitelt használ. A gond a távolsággal lehet. 30-40m távolság esetén a vezeték két végén lévő földpotenciál már eltérhet. Gondolom, a PIC-es cucc a "túlvégen" úgyis saját tápegységgel rendelkezne. Ezek miatt érdemes lenne megfontolni az elválasztott megoldást, mondjuk optocsatolókkal.

Itt van egy konkrét megvalósítás:

Bővebben: Link
Következő: »»   197 / 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