Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
 
Témaindító: G-Lex, idő: Jan 9, 2006
Lapozás: OK   1262 / 1262
(#) matheattila válasza Attila86 hozzászólására (») Sze, 21:40 /
 
Szia,

Az adatokat nem feltétlen kell a megszakításban feldolgozni...elég ha csak bepakolod egy változóba (vagy egy tömbbe) és amint ez megvan beállítasz egy flag-et amit majd a főprogramban figyelsz. Ha a flag '1' akkor feldolgozod az adatot (és nullázod a flag-et!) esetleg vissza küldöd TX-en, mindezt század másodperc alatt megoldhatod, így az echo majdnem valósidőben megy vissza.
Így mindig csak a főprogramban hívogatod azt a függvényt így nem lesz összeakadás.
Ha azonnal kell visszaküldeni az echo-t akkor a RX megszakításban bele is töltöd a fogadott karaktert a TX regiszterbe és közben egy másolatot készítesz róla a főprogramod számára.
Remélem, hogy nincs semmilyen delay meghívás abban a debug függvényben.
(#) Hp41C válasza Attila86 hozzászólására (») Sze, 21:40 /
 
Szervezd át az egészet.
- Vegyél fel egy körforgó puffert (amiben legalább egy távirat elfér) a vételnek és egyet az adásnak.
- A vételi megszakítás a hibátlanul vett karaktert írja be a vételi pufferbe, ha hiba volt, kezelje le.
- A főprogram bogarássza a vételi pufferből kiolvasott adatokat, ha értelmes táviratot talál dolgozza fel.
- A feldolgozás eredményét valamint a diagnosztikai üzenetet az adási pufferbe írja be. Engedélyezi az adási megszakítást. Ha nincs elég hely a pufferben, várakozik.
- Az adási megszakítási rutin az adási puffer soron következő adatát küldi el, ha nincs adat letiltja az adási megszakítást.

Működik több példányban.
(#) tomi52 válasza pajti2 hozzászólására (») Sze, 23:43 /
 
Kössz a választ!

Eredetileg az Arduino IDE-vel kompatibilis mpIDE-vel próbálkoztam, csak a mostani verzió, ami már nem külön környezet, hanem beépül az Arduinoba nem akar normálisan működni. Így áttértem az MPLAB X-XC32 eszközökre (pillanatnyilag MPLAB x 3.10, XC1.40 és Kubuntu 14.04 LTS 64bit).
Arduinohoz rengeteg mindenhez lehet libraryt találni a neten, első körben a karakteres LCD kezelést módosítottam. Nem is kellett sokat reszelni rajta.

40 MHz-es a processzor (B-jelű), 8 MHz-es quarczal van "hajtva". A kapcsolás szinte minimális, a Digilent chipKIT DP32-es kártyájának egyszerűsített klónját raktam össze. Az oldal tetejéhez közel ott a kapcsolási rajz, amit én is megépítettem. Az eredeti DP32-höz képest csak egy nyomógomb (a reseten kívül) és egy LED van rajta, a gomb a bootloader indításához kell, a LED meg szépen jelzi villogással a program feltöltés folyamatát. Csak kicseréltem a PIC-et PIC32MX170F256B-re, mert most nem kell az USB. PICkit3-am van.

A "#define GetSystemClock()" mibenlétével tisztában vagyok, meg azzal is, hogy ez és az órajel konfigurálása két külön dolog. A kérdésem arra vonatkozott, hogy valahogy le lehet-e kérni a tényleges órajelet, vagy csak bízni kell abban, hogy jól sikerült a beállítás? A konkrét beállításokat a neten találtam, kifejezetten a kezdők számára volt megfogalmazva 40 MHz-es órajel beállítása.

Végül is most az I2C-EEPROM programmal kipróbáltam változtatásokat, működött 20 MHz-es periféria, és 100 kHz-es I2C frekvenciával is. De értem, hogy a periféria órajelet nem érdemes így felhúzni, hacsak kifejezetten nincs rá szükség.

Az angollal meg csak-csak elvacakolok, azért a gugli fordító sokat segít. A fordítási baromságokat azért többnyire a helyére tudom tenni.
Én úgy szoktam magam jellemezni, hogy "elavult tudású számítógépes" vagyok, valamikor ez volt a szakmám, hol programozás, hol üzemeltetés.
(#) Wezuv válasza Hp41C hozzászólására (») Csü, 7:02 /
 
Pontosan...
(#) pajti2 válasza tomi52 hozzászólására (») Csü, 8:19 /
 
Van a pic-eknek két külön "programozása". Az egyik a config flash, amit a project forrásban pragmák formájában látsz (a kimeneti hex-ben ugyan úgy flash programozási értékek specifikus memória területre). Azoknak a hatása hardver környezetet állít be. Az órajel beállításához azt kell rendbe szedni. Ha az megvan, utána - ahogy írtad - megbízol benne, hogy az órajeled akkora, amekkorára beállítottad.
(#) Attila86 válasza Hp41C hozzászólására (») Csü, 23:13 /
 
Ez lesz, köszönöm!
Más helyen használtam már ilyesmit, a webszerverre küldendő adatcsomagokat pufferolom hasonló módon, hogy ha épp nincs mobilnet akkor ne vesszen el a csomag. Mondjuk én gyűrűs buffernek hívom.
Következő: »»   1262 / 1262
Bejelentkezés

Belépés

Hirdetés
Frissek
2017. Júl, 21. Pé
6:38:02
Jelenleg 128 fő olvassa az oldalt
Online tagok:
Lapoda.hu     XDT.hu     HEStore.hu