Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   970 / 1319
(#) kisnagylaci válasza Hp41C hozzászólására (») Máj 15, 2011 /
 
Hello!

Már csak egy kérdés! Mondtad, hogy a putc és puts nem a legjobb választás! Mit használjak helyette???

Előre is köszi!
(#) Hp41C válasza kisnagylaci hozzászólására (») Máj 15, 2011 /
 
Szia!

Többször leírtam már (ebben a topikban is)...
A kimeneti adatokat tedd egy körforgó bufferbe. Írj egy eljárást a bufferbe történő berakásra, ami engedélyezi az adási megszakítást. Az adást is kezeld le megszakításosan, ha van karakter az adó bufferban, akkor írja be az uart adó regiszterébe, ha nincs, tiltsa le az adási megszakítást.
A vétel is szerencsésebb bufferelten. A megszakítási rutin csak a vételi hibát ellenőrizze, kezelje le, illetve, ha nincs hiba, tegye a vett karaktert egy körforgó bufferbe. Írj egy eljárást, ami kiszedi a következő karaktert a vételi bufferből, illetve jelzi, ha üres. Ezt hívogassa a főprogram, ha a vett adatra van szüksége.
(#) trudnai válasza kisnagylaci hozzászólására (») Máj 16, 2011 /
 
Amugy azt ugye sejted, hogy a 'return' utani resz nem hajtodik vegre?

  1. ...
  2.         return ReadI2C1();
  3.                 IdleI2C1();
  4.         StopI2C1();
  5.                 IdleI2C1();
  6. }
(#) bankimajki hozzászólása Máj 16, 2011 /
 
Sziasztok, valaki mondja már meg nekem hogy az miért van, hogy amikor a régi MPLAB-bal (5.4) írok meg egy progit és lefordítom, ill. beletolom a PIC-be, akkor sokkal gyorsabban belemegy, (Kis progira gondolok.) mint amikor a 8.5-ös verzióval csinálom ugyanazt. Én arra tippelek, hogy az új MPLAB olyan hex.-et generál, amiben minden memóriacím fel van töltve. (Függetlenül attól, hogy van-e értelmes adat benne.) A régi MPLAB pedig csak azokat, amiben tényleg hasznos adat van. (A többit pedig gondolom törli, vagy nem is foglalkozik vele.) Ez akkor számmít, amikor egy kis progit változtatok és sokszor bele kell írni. Mert sokszor kevés idő, az sok idő.
(#) watt válasza bankimajki hozzászólására (») Máj 16, 2011 /
 
Tedd fel mind a két hex-et(csatold fájlként)!
(#) bankimajki válasza watt hozzászólására (») Máj 16, 2011 /
 
Ez a 2 progi ugyanazt csinálja. És a teszt5.4 kb. 0,5s-alatt benne van a PIC-ben, míg a másik vagy 5s alatt van benne.
(#) trudnai válasza bankimajki hozzászólására (») Máj 16, 2011 /
 
Gondolom az uj verzio csinal egetes elott egy teljes torlest es iras utan egy tesztet is, mig a regi verzio nem volt ennyire alapos. Amugy milyen programozorol van szo es milyen PIC-rol?
(#) bankimajki válasza trudnai hozzászólására (») Máj 16, 2011 /
 
PICKIT2 klón a programozó. A PIC pedig 16F877, 16F819, 16F84. Tudom hogy elavultak, de ilyenek vannak most nálam úgyhogy jók ezek. Váltani pedig nem a PIC-re fogok, hanem valami ARM architektúrájú procikra. (Mivel manapság arra van kereslet.)
(#) Gál Norbert hozzászólása Máj 17, 2011 /
 
Hello

Még csak most ismerkedek a PICel, valaki tudna segítteni hogy az alábbi forráskód mért nem megy? Azt szerettem volna ha sikerül beállítanom 1másodperces majd 10másodperces késleltetést.
A kvarcra amit használlok az van írva hogy 14,31818
Szóval úgy számoltam, hogy 3579 utasítást hajt végre másodpercenkét. 16F877A ról lenne szó.
(#) watt válasza bankimajki hozzászólására (») Máj 17, 2011 /
 
A két hex között csak egy sor eltérés van, ami számít, ez: :043000000034003464
Igazából nem tudom hirtelen, mi van az 1800-as programszó címen(otthon tudnám megnézni), de nem valószínű. hogy ettől írja tovább. Ahogy trudnai kolléga írja, szerintem is az újabb verzió többet szöszöl a visszaellenőrzésekkel, vagy lassították az égetést valami miatt!
(#) icserny válasza Gál Norbert hozzászólására (») Máj 17, 2011 /
 
Attól tartok, hogy ez 14,31818 MHz-es kvarc, tehát ennek megfelelően számold újra a késleltetéseket!
(#) watt válasza Gál Norbert hozzászólására (») Máj 17, 2011 /
 
  1. MOVLW   B'00000011'            
  2. MOVWF   TRISA   ;2es 3as digitalis bemenet

A megjegyzés nem igaz. Változtattál? ...

Ilyen időzítések ellenőrzésére való(többek között) a szimulátor! Kiválasztod az MPLAB SIM-et, majd beállítod az órajelet a beállításoknál(fejből most nem tudom hol van, de meg lehet találni), majd a StopWatch -ot kiválasztod a debugger menüből. Teszel egy-egy megszakítási pontot az várakozó rutinjaid elé és elindítod a szimulációt. A StopWatch-ben láthatod az időket, nullázhatod a következő lépés előtt stb.

A várakozó rutinjaid pedig ránézésre is nagyon kevés időt várakoznak. Azt írod 3579 utasítás. Ez így ebben a formában nem is igaz, mert vannak olyan utasítások, amik 2 programlépést igényelnek. A helyes megközelítés a programlépés, ami az órajel negyede. Tehát, ha 14,31818MHz a kristály, akkor az 3,579545MHz programsebesség, ami 3579545(három millió!) lépést jelent 1 sec alatt!

Jelzem, hogy nem igen okos dolog ilyen várakozásokat beiktatni! Első lépésekre jó, csak nem szokd meg, mert ez így elveszi a drága erőforrásodat a többi feladattól. Erre valók a timerek és a megszakítások. De előbb írd meg a valós 1sec-es várakozást egymásba ágyazott ciklusokkal!
(#) delmur82 hozzászólása Máj 17, 2011 /
 
Sziasztok!

PIC16F877 - re írok programot. A háromnegyede kész is van de az MPLAB fordításkor kiírja hogy megtelt a programmemória - "Address exceeds maximum range for this processor" - az 1407. dik sortól kezdve. Mit lehet ilyenkor tenni? Lehet más memóriacímen folytatni? Vagy rövidítsem a programot?
(#) potyo válasza delmur82 hozzászólására (») Máj 17, 2011 /
 
Ha tele van a memória, akkor nincs hol folytatni. Két lehetőség van:
1. megpróbálod a programot rövidíteni, pl. ha vannak szubrutinba rakható részek, akkor azokat csak egyszer lekódolni és utána csak meghívni
2. nagyobb programmemóriájú típust keresel. 16F877 helyett már csak valami 18F-et nézhetsz, pl. 18F4520-at. Vagy esetleg a 16F1xxx típusok között, ezeket nem ismerem, hogy azokban miből mennyi van.
(#) delmur82 válasza potyo hozzászólására (») Máj 17, 2011 /
 
Köszi! Akkor rövidítek a programon. Meglátom mi lesz a vége.
(#) potyo válasza delmur82 hozzászólására (») Máj 17, 2011 /
 
Esetleg mutasd meg a kódodat és akkor lehet tudunk javasolni valamit, hogy mivel lehetne rövidíteni. C vagy asm? Abból, hogy 1407-es sorban már tele van, abból C-re tippelek.
(#) Hp41C válasza delmur82 hozzászólására (») Máj 17, 2011 /
 
Szia!

Figyelembe vetted, hogy a 16F877 program memóriája 4 lapból áll, és a lapok közötti ugrások / eljárás hívások megfelelő előkészítő műveletekkel kell előkészíteni, illetve a hívások után is akad egy kis kötelező rendrakás. Ekkora programnál a megszakítási rutinnak a szokásos regisztereken kívül más regisztereket is kell mentenie / visszaállítánia, és más kötelező teendője is akad...
Bővebben ebben a cikkben...

A Debug fordítási mód egy kód- és adatterületet fenntart a debugger részére. Ha Release módba állítod a fordítót, ezeket a területeket is használhatod, de már nem tudod nyomonkövetni a programot.
(#) watt válasza vilmosd hozzászólására (») Máj 18, 2011 /
 
Idézet:
„meg tudja ezt építeni/programozni nekem valaki?”
Nem megépíteni akarja, hanem megépíttetni, így szerintem hiába magyaráztok neki...
(#) watt válasza durkonorbi hozzászólására (») Máj 18, 2011 /
 
A probléma az, hogy ez itt off.
(#) kly hozzászólása Máj 18, 2011 /
 
Sziasztok

Következő kérdésem lenne. Adott egy PIC amiben van belső RTC aminek ugye a másodlagos oszcillátort kell bekonfigurálni, 32,768Khz es kvarc kell hozzá.
Ezzel nincs is baj de én nem szeretnék kvarcot használni mivel rendelkezésre áll egy pontos 32,768Kz es négyszögjel.
Sajnos nincs external clock beállítási lehetőség a másodlagos oszcillátornál.
Kérdésem mi lenne ha rákötném a négyszögjelet a SOSCIN re? Persze bekonfigurálva mintha kvarc lenne rajta.
Ki is próbálhatnám de nem szívesen nyírnám ki a cuccost.
(#) robotech hozzászólása Máj 18, 2011 /
 
Üdv!

Én is kérdeznék:
3PWM jelet kell formálnom annak függvényében, hogy mi jön be usarton. Nem szeretném ezt szoftveresen megoldani, de a pic18f1827 adatlapján úgy látom, hogy van benne két CCP modul,és 2 ECCP modul.

Kérdésem az lenne - ha már foglalkozott ezzel az ic-vel valaki, hogy ezek a ccp modulok egymástól teljesen függetlenek, és mindegyiknek megvan a kis külön regisztere, ahova az értéket beírva megváltoztatja a kitöltési tényezőt?
Köszönöm a választ előre is!
(#) El_Pinyo válasza robotech hozzászólására (») Máj 18, 2011 /
 
Szervusz!
Mivel PIC18F1827 típus nem létezik, feltételezem, hogy PIC16F-ről van szó. Ennek a típusnak van két ECCP, meg két CCP modulja, melyek egymástól teljesen függetlenek lehetnek, saját timerek kapcsolhatók hozzájuk, így az időalapok is különbözőek lehetnek.
(#) watt válasza kly hozzászólására (») Máj 18, 2011 /
 
Még nem próbáltam ilyet, de ha egy 470ohm-on keresztül kötöd be, semmi baja nem szabadna, hogy legyen. De ez csak egy vélemény...
(#) robotech hozzászólása Máj 18, 2011 /
 
Szia,

köszi a választ, elírtam a tipust... (50 pont )
(#) bundyland hozzászólása Máj 18, 2011 /
 
Sziasztok !

Vettem egy PIC32mx340F512H-t kísérletezni és nem igazán értem a portokat, konkrétan a PMP/PSP-t.
Nem értem mi a különbség pl. az RD1 és PMD1 között.
Melyikre hogyan hivatkozom. Ha valaki lenne oly kedves és felvilágosítana erről.

Köszönöm!!
(#) watt válasza bundyland hozzászólására (») Máj 18, 2011 /
 
Hogy érted azt, hogy hogyan hivatkozol rájuk? Volt már dolgod PIC-el? Ezért kérdezem, mert a kérdésedből úgy tűnik nem. Ha ez igaz, akkor a 32-es egy kicsit húzós lesz kezdésnek!
(#) bundyland válasza watt hozzászólására (») Máj 18, 2011 /
 
Ja persze volt már, csak vettem most egy 320x200-as
touchpad-os tft-t és össze akartam vele kötni és 16 bitesen hajtani és nem értem hogy programozás közben
(mikroc) hogyan különböztetem meg a PMDx-t meg
az RDx-et és úgy gondolom ez abból fakad hogy valamit nagyon nem értek ott a portok résznél.
(#) watt válasza bundyland hozzászólására (») Máj 18, 2011 /
 
A portra így lehet hivatkozni C32-ben:
  1. PORTD.RD0


A PMDx az a Paralel Master Port Data, azaz a párhuzamos port adat lábai. a PMAx ugyanez, csak a címvezetékek. Vannak még ezzel összefüggő vezérlő lábak is(PMCSx stb.). Külső párhuzamos eszközök vezérléséhez jó, mint pl. Flash, EEPROM, SRAM. A modult konfigurálni kell használata előtt, és akkor ez lesz a kimenet funkciója. A PGDx pedig sima port, mint bármelyik másik PIC-en.

Ja igen, a PMP-hez tartozik egy halom belső regiszter, ezeken keresztül éred el a Címet, adatot stb.
(#) bundyland válasza watt hozzászólására (») Máj 18, 2011 /
 
Közben rájöttem hogy tényleg nem egyértelmű a kérdésem , a portot nyilván értem azon nincs is mit nem érteni hanem ez a parallel dolog zavar meg és ezek szerint mint periféria nem értem mi célt szolgál.
Mármint a PMP.
(#) watt válasza bundyland hozzászólására (») Máj 18, 2011 /
 
Közben szerkesztettem. Érdemes belenézni az adatlapba a PMP részhez.
Következő: »»   970 / 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