Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Üdv Mindenkinek!
Lenne egy kérdésem. Írtam egy egyszerű progit 16F819-re és ezt az üzenetet kapom( Mplab6 ): [code=c]Executing: "C:\Program Files\MPLAB IDE\MCHIP_Tools\mpasmwin.exe" /q /p16F819 "AUTOZAR.ASM" /l"AUTOZAR.lst" /e"AUTOZAR.err" Message[302] C:\PROGRAM FILES\MPLAB IDE\AUTOZAR\AUTOZAR.ASM 54 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] C:\PROGRAM FILES\MPLAB IDE\AUTOZAR\AUTOZAR.ASM 56 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] C:\PROGRAM FILES\MPLAB IDE\AUTOZAR\AUTOZAR.ASM 59 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] C:\PROGRAM FILES\MPLAB IDE\AUTOZAR\AUTOZAR.ASM 62 : Register in operand not in bank 0. Ensure that bank bits are correct. Message[302] C:\PROGRAM FILES\MPLAB IDE\AUTOZAR\AUTOZAR.ASM 63 : Register in operand not in bank 0. Ensure that bank bits are correct. részlet a progiból: 48 konf: 49 BANKSEL PORTA ;bank 0 kiválasztása 50 CLRF PORTA ;porta törlése 51 CLRF PORTB ;portb törlése 52 BANKSEL TRISA ;bank 1 kiválasztása 53 MOVLW B'00000110' ;összes RA digit i/o 54 MOVWF ADCON1 55 MOVLW B'11111111' ;összes RA bemenet 56 MOVWF TRISA 57 CLRWDT 58 MOVLW B'10000111' 59 MOVWF OPTION_REG ;felhúzóell-ok tiltva 60 CLRF INTCON ;interruptok tiltása 61 MOVLW B'00000000' 62 MOVWF TRISB ;össze RB bemenet 63 CLRF PIE1 64 CLRF PIE2[code=c] Mi lehet a hiba? Rosszul adom meg a bank kiválasztást? Köszi minden segítséget. Üdv! Tomi
Ez az üzenet nem hibaüzenet, csak figyelmeztetés, hogy figyelj hogy jó bankban vagy-e mikor hozzá akarsz nyúlni az adott SFR -hez.
Értem. Remélem jó bankban vagyok, néztem az adatlapon. Akkor is figyelmeztet?
Köszi!
Igen akkoris. Mindíg nyavajog ha nem bank0 ban levő regiszterrel dolgozol. Ki lehet kapcsolni valahogy egyébként ha zavar.
Nem fontos kikapcsolni. Így már tudom, hogy nem hiba.
Köszi!
Célszerű kikapcsolni, mert hosszabb programoknál nem kell keresgélni a sok figyelmeztetés között ( ami nem ad új információt, hiszen elvileg figyelsz a BANK-ra, egyébként meg mindegy ) és így könnyebb a hibás sort(sorokat) megtalálni!
Steve
Hello!
Basicben próbálok programozni. Egy egyszerű óra programot próbáltam írni LCD kijelzővel. Minden jól is megy látszólag. De egyszercsak ujrakezdi a számlálást. Valószínűleg a FOR-NEXT utasítást használom rosszul valaki hozzáértő nézze meg legyen szíves mi a rossz. A másik kérdésem az lenne hogy 16f887-et próbálok programozni és ennek a portjait ugy tudpom meg kell adni hogy analóg illetve digitális ki-bemenet legyen. Azt tudom hogy adjam meg hogy ki vagy be menet de azt nem hogy azt hogy mondom meg neki analóg vagy digitális legyen e?(tudom hogy adatlapban benne van de nem tudok angolul sajna) Előre is köszi.
Hu bocs mellényomtam forráskódot akartam. xd Abból érdekes lenne.
A program végén azt a "gotokezd" utasítást egybe kell írni? Nem így lenne jó: goto KEZD ?
Egyébként, minek a for ciklus? Nem látom, hogy az x értéke bárhol is felhasználásra kerülne...
Igazad van azért kellett bele a for ciklus mert mivel a goto kezd rosszul volt írva nem azt csinálta amit akartam. Viszont a másik kérdés még mindig áll.
Mégegyszer köszi.
Na most egyelőre megoldódni látszik a Timer counter problémám. Viszont tanulságos a történet.
Kezdődőtt az egész úgy, hogy csak egy kis programmal kipróbáltam az optokapu működését. Ha mags jelszint volt a bemeneten (kapcsolt az optotranyó) akkor a piccel bekapcsoltattam egy ledet. Ez működött is, továbbléptem volna timeres számlálásra. Csakhogy ez nem működöt ugye, csak akkor ha az oszcillátort is bekapcsoltam. A probléma pedig az volt, hogy az opto nem szolgáltatott kellően magas feszültséget (0 és 2.3V közötti négyszögjelet adott). Miután rákapcsoltam a függvénygenerátorom egyből működött a dög. Érdekesség, hogy a digitális bemenetnek elég volt, oszcillátornak elég volt, de a counternek nem. Igazából az a bosszantó hogy megfordult ez a fejemben, de gondoltam hogy ha a digit IO -nak jó volt, akkor jónak kell lennie. De a gyakorlatban mégsem volt elég. Kicseréltem egy ellenállást, mostmár 0 és 4V közötti jelet produkál az optkapu, így már a counter is működik. Lehet beállítani az órajelet az OSCCON -al, nem kell az FOSC bitekkel foglalkozni, T1GSS se kell hiszen a gate funckiót nem is engedélyeztem. Ezeket csak azért írom, hogy meglegyen a megoldás. Köszönöm a segítségeteket mindenképp. Még ha nem is oldották meg ezek a problémát, de rávezettek, hogy akkor máshol keressem. Két napi szerencsétlenkedés után jó hogy végre működik.
És mostmár akkor tudod, hogy miért volt elég a 2,3V a digitális bemenetnek, és miért nem elég a Counternek?
Gondolom azért, mert oszcillátor esetében bekapcsol egy ST -t is a bemenethez ha jól látom. Vagy nem tudom.
Az adatlap szerint a magas szinthez minimálisan kell:
- Sima IO port esetén: 0,25Vdd + 0,8 V (5V-nál 2,05 V) - Schmitt trigger bemenet: 0,8Vdd (5V-nál 4 V) - OSC1 XT vagy LP módban: 1,6 V Idézet: „Gondolom azért, mert oszcillátor esetében bekapcsol egy ST -t is a bemenethez” Vagy átkapcsol egy másikra: "ST Buffer is low power type when using LP oscillator, or high speed type when using T1CKI."
Igen, az ST bemenet miatt volt. Ellenben ha jól emlékszem, akkor 0.8Vdd a felső billenése az ST bemeneteknek, így a 4V eléggé ki van hajszálazva az 5V-os tápfeszültségnél. Lehet, érdemes lenne még azt az optocsatolós áramkört kicsit átgyúrni, hogy határozottabb jelszinteket produkáljon.
Idézet: „Viszont a másik kérdés még mindig áll.” Szótár, vagy valami webes fordító (pl.: google, webforditas.hu) és egy idő után már egyre kevesebbet kell ezeket használni. Egyébként, számtalanszor volt ajánlva ez az oldal és a kereső használata.
Sziasztok! Újra itt vagyok, száz év után. Lenne egy kérdésem, de ne döfjetek le egyből
Van egy cél IC-m, aminek választhatóan lehet a kimenete SPI vagy I2C. De mivel egyikhez sem konyítok még, ezért annyi lenne a kérdésem, hogy SPI-vel vagy I2C-vel foglalkozzak? Köszönöm! goo
Ez esetben elég könnyű a választás, mind a két módszert el kell sajátítani, így a project után nyugodtan hátradőlhetsz, elégedetten konstatálhatod, hogy te mindkettőhöz értesz.
Egyetértek kisszee-vel, foglalkozz mindkettővel. Ha úgy kérdezted volna, hogy egy konkrét feladathoz melyik a célszerűbb, egyszerűbb, stb., akkor lehetne egyiket vagy másikat ajánlani.
Először 4.7k húzta le, most 8.2k van, majd megnézem 10k-s ellenállással is, meg majd közelebb rakom az infra ledet is kb 3-4mm-el. Ebben a kapcsolásban szerintem max 5 - 0.6 = 4.4V ot lehet megközelíteni. Amit majd megpróbálok elérni. Próbáltam földelt emitteres módban is, de úgy nem négyszög jel jött, hanem inkább szinusz, és az amplitudó is változott összevissza.
Nem beszelni kell tudni angolul hanem megerteni a dokumentaciot. Sajnos ez egy ilyen szakma, ha az irott szakszoveget nem erted meg akkor sajnos nem fogod tudni hasznalni a PIC-et eredmenyesen. Mar emlitettem itt -- lehet tobbszor is -- hogy anno en sem tudtam nemetul megis az Apple II-hoz magyar dokumentacio hijjan nemetul olvastam az anyagot es a Basic es az Assembly-t igy tanultam meg. Szotaraztam kegyetlenul az elejen, de egy ido utan a lenyeget szotar nelkul is ki tudtam szedni.
Amugy halkan megjegyzem letezik egy 16F84-es magyarra forditott adatlap, de abban mar sajnos talaltunk olyan hibat amitol a PIC-et tonkre lehet tenni -- MCLR rossz labra volt feltuntetve...
Üdv!
Köszönöm mindenkinek a segítséget. Működik a progi a 16F819-ben. borvendeg! Néz meg az 16F877 adatlap 112. oldalát! Ott írja a portok beállítását. ADCON1 regiszter első 4 bitje! (011x esetén mindegyik digit I/O, ha jól látom) A 29. oldalon pedig van egy példa is. Javítsatok ki, ha tévedek. Üdv! Tomi
Valoszinuleg nem tevedsz (nem neztem meg), azonban borvendeg 16F887-et emleget, tehat neki annak az adatlapjaban kellene kineznie a helyes beallitasokat. Mivel a ket darab architekturalisan kozel all egymashoz valoszinuleg nagyon hasonlo modszerrel fogja tudni megtenni a beallitasokat.
Sziasztok!
Pont a kivezetések analóg tulajdonságainak és az A/D kezelésében van a két típus között lényeges eltérés. A 16F877-ben az ADCON1, a 16F887-ben a ANSEL és ANSELH regiszterekkel lehet az analóg funkciókat állítani....
Elolvastad az ezzel kapcsolatos megelőző hozzászólásokat is? Mert ha igen, akkor felteszem a kérdést, mit is próbálsz ki Tom111 hozzászólása alapján, ha neked nem 877-ed van?
|
Bejelentkezés
Hirdetés |