Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Na végre előjött a hiba debug módban is! Vagy egy órát kellett rá várni.
![]() ![]()
Sziasztok!
PIC24-nél assembllerben hogy tudok definiálni portokat pl hogy LATC,#1-et LED jelzéssel adjak meg?
Sziasztok!
Hasonló megfontolások miatt a movff valami,STATUS is kerülendő. A 18F252-n a megszakítási rutin az adatlap szerinti mentésekkel nem működött, a 16F-en szokásossal megy minden probléma nélkül...
Szia!
Próbáld meg a #define -vel #define LED LATC,#1
Szia!
Az a felesleges bsf INTCON,GIE ott van még a retfie előtt ?
De jól emlékszel!
![]()
Elnézést ha ismételném a kérdést mert átsiklottam a válasz felett. Ma turkáltam a lomban és 1 fujitsu-siemens pc-alaplapon ráakadtam 1 pic-re. Konkrétan PIC16LF76-I/SO kérdésem mit jelent az L betű kompatibilis a sima PIC16F76-I/SO-val ? . Előre is köszönöm. (tudnám használni bár a 28-SOIC tok ha levételnél nem is felrakásnál okozhat meglepetést nekem)
Az L azt jelenti, hogy alacsonyabb feszültségről is működik. Általában az LF 2V-ról is elfut 4MHz-en (az F-nél csak 4,2V-ot garantál a gyártó). Viszont a LF maximális frekvenciája alacsonyabb szokott lenni, pl. 20 helyett csak 10MHz. Illetve még egy-két paraméterben eltérhet AD átalakítónál is. Pontos dolgokat adatlap tud mutatni, próbálj rákeresni az LF betűkre az electrical specifications részben.
Hibát ír ki, amikor bekapcsolási illetve kikapcsolási utasítást adok:
PROBA.s: Assembler messages: PROBA.s:70: Error: Too few operands ('bset LED'). PROBA.s:72: Error: Too few operands ('bclr LED'). Ez a progi: start: bset LED call delay bclr LED call delay bra start
Szia!
Annyi problémát mégis okoz, hogy a megszakítási rutinod nem tud kilépni és nem tudja visszaállítani a mentett állapotot, ha a lefutása alatt még egy kérés bejött.... Ha a retfie fast a következő lépés és a magas szintű megszakítás jön be, a W és a STATUS értéke nem állítódik vissza, a megszakítási rutin kilépési értékét menti el a kérés feldolgozásánál. Ez a mentés fog visszaállni, mert a mentés csak egy szintű... A stackon egy szintet elpocsékol. Tanulság: Ha nem feltétlenül nélkülözhetettlen, a megszakítási rutin ne állítsa a GIE / GIEH és GIEL biteket, hagyja a hardwerre...
Hello!
Tud valaki valami összefoglaló anyagot arrólhogy mi is az az AT parancs hogyan kell használni basicből? A HE-store-ban kapható bluetoth modulokkal szeretném használni. Az is kérdésem lenne hogy ha ebből amodulból veszek kettőt akkor ezek 1-1 PIC segítségével tudnak e egymással "beszélgetni"? Segítséget előre is köszi. Bővebben: Link
Azt írja, hogy túl kevés a paraméter.
Mivel alig adtál meg infót (pl legalább a PIC tipusa), ezért nehéz többet segíteni.
define nélkül megy?
Úgy hogy a bset-hez meg a bclr-hez is konkrétan a potot írod nem a LED-et. Ha igen akkor a define-el nem stimmel valami. Bár a 24-es PIC-ekben nem vagyok otthon.
Ha így adom meg, akkor lefut az MPLAB és villog a LED:
bset LATG,#12 bclr LATG,#12
Szia!
Így használd: bset.b LED illetve bset.w LED bclr.b LED illetve bclr.w LED
Nem a legszebb, de így legalább lefordítja (a fordító inc file-jaiban is így vannak definiálva a regiszterek).
Bar kisse off a tema:
A modem fele szoveges parancsokat lehet kuldeni, ezek tobbsege AT betu parossal kezdodik, utana jonnek a parancsok. Pl. ATD - Dial vagy ATA - Answer. Gyakran Hayes parancsoknak is hivjak mivel a Hayes kezdte el a hasznalatat es tole vettek at mas gyartok is (ld. meg Hayes compatibilis modemek). Ez hasonlo ahhoz, mint pl az LCD-t Hitachi modszer szerint kezeljuk (a HD44780 utan), vagy ahogy az Angol a csillag csavarhuzot (kereszt hornyut) Philips-nek hivja. Hayes Command Set
Következő hibaüzeneteket adja:
bset.b LED bclr.b LED PROBA.s: Assembler messages: PROBA.s:70: Error: Too few operands ('bset.b LED'). PROBA.s:73: Error: Too few operands ('bclr.b LED'). bset.w LED bclr.w LED PROBA.s: Assembler messages: PROBA.s:70: Error: Too few operands ('bset.w LED'). PROBA.s:73: Error: Too few operands ('bclr.w LED').
Így működik, de nálam a G-n nem csak LED-port van, hanem más is.
Ennyi erővel kiírhatom, hogy LATG,#12. A 8 bitesnél ez simán ment, nem volt így elbonyolítva Nincs egyszerűbb megoldás, olyan mint a 8 bitesnél?
Sajnos a 16 bites assembly fordítójával én sem tudtam normálisan zöldágra jutni, szerintem is borzasztó nehézkesre sikerült. Az hogy máshoz is használsz G portot nem gond, más nevet is adhatsz neki a LEDport-on kívül. Igen, beírhatod mindenhova a LATG, #12-t, de ha más lábra költözteted akkor keresgélheted végig a programodon, ha az elején megcimkézed akkor meg csak egy helyen kell megváltoztatni.
OK, köszi, majd alszok rá egyet aztán meglátom.
Lehet, hogy marad a LATG,#12. és komment
A '#' valoszinuleg megkavarja az elofeldolgozot. Van olyan elofeldolgozo ahol a '#' hatasara idezojelek koze rakja a mogotte allo stringet... lehet ez is ilyen?
Mi van, ha igy probalod meg? (Nem probaltam meg, csak tunodom, hatha...)
Elozo hozzaszolasom hagyd figyelmen kivul! Ugy tunik a C tipusu preprocesszor teljesen hianyzik az ASM30-bol. Raadasul a makrozas sem teljesen ugy viselkedik, mint a 8 biteseknel...
Ezt kiserleteztem ki, eleg kacifantos, de talan meteszi:
Ha macrot használsz, akkor az első két equiv sem kell feltétlenül, talán jobb is, ha a macroban a valós portnevek vannak.
Egyébként én is pont ezzel szenvedtem annó, mikor 16bitessel kezdtem foglalkozni. Érthetetlen, miért kell valamit így eltolni! Akkoriban még azzal is kísérleteztünk, hogy más preprocesszort illesztenénk a fordítóhoz, de nem jött össze. Pedig ez csak egy egyszerű szöveg behelyettesítés lenne! ![]()
Hat rendesen eltoltak, az mar biztos! Raadasul az az .if sem ugy mukodik ahogy az ember elvarna, meg egy rendes osszehasonlitast sem sikerult vele megcsinalni -- oda kifejezest var aminek ha az eredmenye nulla akkor hamis, minden mas esetben igaz... ezt a faramucisagot! Vagy valamit en ertettem felre es elbenaztam volna?
Nekem teljesen ugy tunik, hogy a 16 biteseknel mar 100%-ban a C forditora oszpontositottak es mintha direkt ki akartak volna szurni az assemblyzokkel ![]()
Köszönöm a segítséget, de maradok akkor a sima port jelölésnél.
Majd kommentezem hogy jobban átlátható legyen
Szerintetek elképzelhető olyan PIC hiba, hogy írni olvasni lehet a PIC-t (16f628) LVP módba, de a program nem fut rajta?
Egyik láb se dolgozik, de külső, se belső oszcillátorral nem megy. |
Bejelentkezés
Hirdetés |