Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Köszi.
Hogy milyen verziójú van fenn honnan tudom (1.63.14)?
Help / About lapon a Device File Version.
Ezeknél az egyedi szkriptek módosításával már nem lehet többet elérni? Én nagyon megijedtem, amikor szembesülnöm kellett a ténnyel, hogy a újdonsült kiválasztott 8 bites vezérlőt nem kezelte a program. Egy nagy rakással vásárloltam belőle, mert a korábban használt típusnál lényegesen olcsóbban lehet hozzájutni. Szerencsére találtam megoldást a problémámra.
Sajnos a Pickit3<->linux összefüggésben kevset találok a neten, mindösszesen az MPlabX az, ami lekezeli. Ez viszont egy hatalmas monstrum azokhoz a feladatokhoz, amire én a vezérlőket használom. A Pickit2 előnye a parancssori kezelhetőség. Kíváncsi vagyok, mikor jön el a pillanat, hogy magasabb szintre kell mindenképpen váltanom. Mert az biztos, hogy előbb-utóbb bekövetkezik. A hozzászólás módosítva: Ápr 30, 2015
Egyenlőre a PICkit2 módosított Windows -os, grafikus felületű programjával lehet programozni az eddig valaha gyártott PIC típusokat a 16C -ktől a 32MZ -ekig és a még fejlesztés alatt álló 18F2xK40, 18F4xK40, 16F183xx, 16F188x típusokat, kivéve a PIC14xxx és a PIC17xxx eket. Még a OTP típuskokat is lehet egy vagy két külső adapterrel, a 16C5x -eket is, pedig azoknak az adat 12 vezetéken kell párhuzamos formában. Nézz át a PICkit2 továbbfejlesztése topikba.
A hozzászólás módosítva: Ápr 30, 2015
Nekem 1.62.14 verzót ír ki.
Viszont nem találok sehol a neten 1.63.14 verziót. Honnan tudnám letölteni? Idézet: „Viszont nem találok sehol a neten 1.63.14 verziót.” Sajnos elgépeltem. 1.62.14 verzióban már benne van.
Sziasztok !
Tud e nekem valaki segíteni ? PIC18F65K22 típusról van szó és nem akarnak az időzítők működni ! A TMR1-et is meg a TMR2 őt is próbáltam valamiért nem megy de a TMR0 az megy. Ebben a típusban a TMR1 hez van egy Gate controll is de azt nem használom és úgy sem megy. A beállítások: Így néz ki a TMR2 inicializálása
Ennek ellenére nem fut az időzítő. Mplab-ot használok a software es szimulátorban megy az időzítő de beégetve már nem megy és ha ICD2 vel debbugolom akkor sem mükszik. Előre is köszi a segítséget. A hozzászólás módosítva: Máj 3, 2015
Sziasztok!
Az előző kérdésem tárgytalan sikerült megtalálnom a hiba okát. Ebben a PIC típusban van 3 PMD regiszter ahol ki lehet kapcsolni a perifériák órajelét és így fogyasztást lehet csökkenteni. Na ez a TMR esetében ki volt kapcsolva Üdv. mindenkinek
Sziasztok,
PIC16F1829-t használok, a B6 porton pozitív és negatív irányú megszakítással. Képtelen vagyok elérni, hogy az IOCIF törlődjön, pedig az IOCBF6-t (ill., a teljes IOCBF -t) törlöm, az A portokon pedig tiltva van a megszakítás. (Az IOCIF csak olvasható.) Így bemegy a megszakítás rutinba, de nem jön ki belőle. Tud valaki segíteni? (Ha magyarok tervezték volna, akkor RW lenne ez a fránya bit...) Köszi előre is. Haffre
Köszi a gyors választ, már ezt is próbáltam és nem segít.
Mi adja a változást a B6 lábon? Nincs a megszakítás alatt egyéb megszakítás ami miatt tele lesz a verem?
Köss 2 LED-et a c portra és rakd rá az IOCAF és IOCBF-re , hogy az törlődik-e ha törlöd. Egyéb helyekre is tehetsz jelző biteket, így le tudod tesztelni a programod, hogy hol akad meg. Ha valamit tervezel azon is gondolkozz, hogyan tudod a hibákat ellenőrizni. A hozzászólás módosítva: Máj 18, 2015
- Szimulátor: egy jó stimulus + MpLab szimulátor + néhány töréspont
- HW nyomkövető: PICkit3 nyomkövető + MpLab Szimulátor + tesztjel + néhány töréspont Az alatt az idő alatt, amíg az első élet feldolgozod, nem érkezik már meg a másik él? A hozzászólás módosítva: Máj 18, 2015
Sziasztok.
Köszönöm, hogy többen is próbáltok segíteni! A programot proteusban tesztelem, mindegyik regiszter tartalmát látom. Az IOCAF mindig nulla (term. hiszen tiltva van), az IOCBF pedig törlődik. A PIC-t 16MHz-n járatom, a két megszakítás között 10ms telik el (hálózati fesz. null átmenet), tehát nem futhat be a futó megszakítás alatt egy újabb.
Értem én, hogy minden jó, de Te mégis azt mondod, hogy nem működik....
Megmutatnád a programot és a kapcsolást.
És proteus alatt nem törlődik, vagy a valós kapcsolás?
Mert ha proteus alatt nem jó akkor össze kéne rakni. Proteus nem tud mindent.
Igazad lehet, bár a proteusban eddig még nem csalódtam, pedig már évek óta használom...
Valós kapcsolásba még nem tettem be, de a tanácsod alapján megteszem. A kapcsolást rövidesen felteszem. A program mikrobasicben készült.
A LATB a Bank2-ben van, az IOCBF pedig a Bank7-ben. A 197. sorban kezdődő asm blokkod lehet, hogy rossz bankban működik, mert a fölötte levő i=LATB kifejezés hatására a fordító vagy Bank2-be váltott, vagy abba amelyikben i van (ha i nem common RAM területre került). Nem látom át teljesen, de a megszakítás kezelőből nem a globális i-t használod? (Bank0) Nem okoz ez gondot a főprogramban? Az is lehet, hogy TMR1L-t módosítod ezzel az asm blokkal a rosszul kiválasztott Bank miatt. Még a főprogramban is van valami IOCBF vizsgálat és törlés, ami lehet, hogy véletlenből maradt ott (394. sor). A port kiolvasása ennél a picnél fölösleges, de ha nem lenne az, akkor is a PORT-ot kellene olvasni a LAT helyett. Ha csak egy lábon használod az interrupt on change funkciót, akkor pusztán az IOCBF=0 is elég a flag törlésére.
Sziasztok egy pici segítség kellene Arduino-hoz.
A program a következő:
És csak villog-villog és villog. Én arra számítanék, hogy a 15. ki-be kapcsolás után leáll, de nem áll le. Van valakinek valamilyen ötlete, miért? Cél: Villogjon 15-öt és utána álljon le. Mit csinálok rosszul, ezzel a hihetetlenül szofisztikált feladattal? A hozzászólás módosítva: Máj 22, 2015
Két hibát követtél el:
1. Rossz topikba írtál. 2. Mivel a loop() függvény végtelenszer hívódik meg (illetve amíg tápot kap a chip), villog 15-öt, majd újból villog 15, majd ... Tedd a villogást is a setup() végére, vagy valami valami változóban számold meg a villogások számát és csak akkor villogtasd, ha még kisebb mint 15, vagy .... (még van pár megoldás).
Szia,
Kiváló észrevétel és hozzászólás, köszönöm. A LATB előtt volt PORTB is, hátha... Az i globális változó, nem okoz problémát. Az asm blokk valóban a TMR1L-t módosítja. Azonban ezen (Bankváltás) változtatva sem kaptam a várt eredményt. A gépkönyv szerint: ha törlöm az IOCBF regisztert, akkor a hardver törli az ominózus flag-t. (IOCIF), törlöm, de ez a fránya flag nem törlődik. Ahogy bogarászom a netet, látom, másoknak is van ilyen problémája. Érthetetlen, hogy a Microchip miért nem enged egy jelző flag-t törölni... Már több dolgot kipróbáltam (pl. csak felfutó éli megszakítás, az ezt érzékelő flag törlése, a megszakítási rutinban a számolási rész törlése, stb.), de eredmény még nincs.
Átnéztem én is, és bár nem basic-es vagyok azért nagyjából átláttam.
1. Amit nem egészen értek, hogy minek az az ASM rész a megszakításba. 2. Nem láttam, bár lehet, hogy átsiklottam felette, de szerintem a basicben is kellene megadni megszakítás vektort. |
Bejelentkezés
Hirdetés |