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. Most megvan a kis bolond...
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! Igen ott van. Tudom hogy felesleges de bajt sem okoz és még nem jutott eszembe hogy kitöröljem.
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 Vagy a C is ilyen gaz?
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 |