Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1004 / 1319
(#) potyo válasza watt hozzászólására (») Júl 22, 2011 /
 
Nálam sem működik rendesen, törlődik a TMR0H. Lehet írni kellene microchipéknek egy hibajelentést, csatolva mellé a kódodat.
(#) watt válasza potyo hozzászólására (») Júl 22, 2011 /
 
Adatlapokkal még elboldogulok, de levelezni nem tudnék velük.

Van esetleg vállalkozó, aki mengtenné?
(#) lokátoros válasza watt hozzászólására (») Júl 22, 2011 /
 
Üdv
Szerintem a T0CONbits.T08BIT = 0;
a jó beállitás, 16bites módban.
(#) watt válasza lokátoros hozzászólására (») Júl 22, 2011 /
 
Igen, így is van a forrásban. Máshogy láttad valahol?
Egyébként most 8bites módra váltottam és az előosztóval működik az SIM-is.
(#) zimpee válasza watt hozzászólására (») Júl 23, 2011 /
 
Hi,
Ha priviben elküldesz mindent magyarul, fordítom, és elküldöm nekik, ha szeretnéd.

zimpee
(#) watt válasza zimpee hozzászólására (») Júl 23, 2011 /
 
Köszönöm, igyekszem rövid lenni!
(#) trudnai válasza watt hozzászólására (») Júl 23, 2011 /
 
Szia Watt, Integer promocio be van kapcsolva a forditasi opcioknal?
(#) zimpee válasza watt hozzászólására (») Júl 23, 2011 /
 
Bővebben: Link
Az angolosok itt tudják követni a bug életét, persze, ha jön hivatalos válasz, jelzem majd.

zimpee
(#) watt válasza zimpee hozzászólására (») Júl 23, 2011 /
 
Köszönöm!
(#) watt válasza trudnai hozzászólására (») Júl 23, 2011 /
 
Szia! Bekapcsoltam, ugyanaz.
Ez egyébként mire jó?
Még annyi adaléknak, hogy van mikor úgy belekavarodik a SIM magába, hogy még meg sem áll a megszakításban, valószínű azért, mert olyankor abszolut nem megy a TIMER!
(#) neutrox hozzászólása Júl 23, 2011 /
 
Szevasztok. Egy kis segítségre lenne szükségem. PIC18F2550-át szeretném programozni ASSEMBLY ben, de elakadtam ott hogy hogyan definiálok változókat (pontosabban hogy hova definiáljam). Eddig PIC16F627-et programozgattam, azzal semmi gondom nem volt de a két pic Template-je eléggé eltér. Addig eljutottam hogy konfigurációs biteket beállítottam... Az interneten vannak példaprogramok de főleg C-ben, később azt is meg akarom majd tanulni de egyenlőre assemblynek jobban örülnék. Kérhetnék szépen egy egyszerű példaprogramot amin el tudok indulni?
(#) watt válasza neutrox hozzászólására (») Júl 23, 2011 / 1
 
Nézz fel az oldalamra, van egy pár példa, igaz más 18F-re, de az mindegy...
(#) neutrox válasza watt hozzászólására (») Júl 23, 2011 /
 
Rendben köszönöm szépen, nemsoká átnézem őket.
(#) trudnai válasza watt hozzászólására (») Júl 23, 2011 /
 
Pont az, hogy bekapcsolt allapotban gondoltam esetleg problemaz ha elbenaztak a forditot. Az egy ANSI szabvany dolog, mielott barmivel szamol elobb atalakitja int-re a szamokat, tehat ha short-tal vagy char-al szamolgatsz akkor elobb felkonvertalja int-re majd lekonvertalja a a cel regiszter short vagy char... Az az ertelme amugy, hogy pl ket char tipusut szorzol es az eredmenyt int-ben tarolod el akkor ne vesszenek el a felso helyiertekek -- csakhogy ez PIC-en ugye hosszebb kodot jelent es ezert szoktak kikapcsolni es ha kell manualisan cast-olni int-re.

Itt azert gondoltam esetleg bele szolhat, mert mint tudom en, a konvertalgatasok miatt a felso byte-ot (TMR0H-t) esetleg felul irja, bar nem kellene.
(#) bbalazs_ válasza neutrox hozzászólására (») Júl 23, 2011 /
 
Nekem van egy csomo, hova kuldhetem?
Egyebkent a 18F-eseknek nullanal indul a valtozok cime. Onnantol 7F-ig nincs gond.
En cblock-al szoktam definialni, akkor nem kell egyenkent bohockodni a cimekkel, hanem egymas utan rakja, egeszen az endc-ig.
(#) icserny válasza neutrox hozzászólására (») Júl 23, 2011 / 1
 
Idézet:
PIC18F2550-át szeretném programozni ASSEMBLY-ben”
Nézegesd meg a honlapomon a PICCOLO projekt első öt fejezetét!

Már csak azért is érdemes megtanulni az áthelyezhető (relokálható) programok írását, mert abszolút módú címzésnél az MPLAB szimuláció vagy hardveres nyomkövetés esetén összekeveri a változókat és az egyéb szimbólumokat.
(#) watt válasza trudnai hozzászólására (») Júl 23, 2011 /
 
Fejlemény, hogy LowInt be téve a TMR1-et, ha TMR1L=0x00-t írok, akkor a megfelelő időkkel okoz megszakítást, ha TMR1L+=0x00-t, akkor nem.

Tehát úgy tűnik, akkor van baja a SIM-nek, ha a TMRxL-hez hozzá akarunk adni egy állandót! Lehet, hogy ha visszakérdeznek a Microchiptől, ezt még meg kell nekik írni, ha nem jönnek rá maguktól!
(#) El_Pinyo válasza watt hozzászólására (») Júl 23, 2011 /
 
Erre a problémára olyannyira rájöttek már, hogy a C18 Compiler readme fájljában, mint known problem közzé is tették (nálam a 3.36-os verzió van). ( C18-19 / 18487) kóddal.
Idézet:
„With the compound assignment operators, the usual type conversions which are to be performed on the operands are not done correctly when the left operand is 8 bits in size.”
(#) dinokal válasza bbalazs_ hozzászólására (») Júl 23, 2011 /
 
Szia! Tedd fel ide! Én is és más is tanulhatna belőle.
(#) icserny válasza watt hozzászólására (») Júl 23, 2011 /
 
Idézet:
„Egy képet is arról, hogy a TMR0H lenullázódik, hiába töltök bele értéket. Ha valaki tudna rá mondani valamit, annak örülnék!”
Ha 16 bites módot állítottál be, akkor TMR0H beírása után egy TMR0L írásnak is kellene következnie, s csak akkor íródik át Timer0 magasabb helyiértékű felébe az, amit beírtál.

A TMR0L+= 10 viszont először kénytelen visszaolvasni TMR0L értékét, ami a 16 bites mód miatt magával vonja TMR0H olvasását is. Tehát felülírja azt a regisztert, amit te a TMR0H=0xD0; utasítással feltöltöttél.

Az adatlap szerint ennek nem így kellene működnie?
Idézet:
TMR0H is not the actual high byte of Timer0 in 16-bit mode. It is actually a buffered version of the real high byte of Timer0 which is not directly readable nor writable. TMR0H is updated with the contents of the high byte of Timer0 during a read of TMR0L.”
(#) potyo válasza icserny hozzászólására (») Júl 23, 2011 /
 
Ugyan én hardveren nem próbáltam, de mintha watt azt írta volna, hogy a kontrollerbe beégetve jól működik, módosul a TMR0H is.
(#) trudnai válasza icserny hozzászólására (») Júl 23, 2011 /
 
Idézet:
„A TMR0L+= 10 viszont először kénytelen visszaolvasni TMR0L értékét, ami a 16 bites mód miatt magával vonja TMR0H olvasását is. Tehát felülírja azt a regisztert, amit te a TMR0H=0xD0; utasítással feltöltöttél.”


Ott a pont! Ez teljesen jogos felvetes, persze felvetodik akkor ez miert mukodik a harveren? Szerintem amugy az mar mas miatt lesz, de ezt majd watt megmondja.
(#) icserny válasza potyo hozzászólására (») Júl 23, 2011 /
 
Idézet:
„mintha watt azt írta volna, hogy a kontrollerbe beégetve jól működik”
Csak egy másik változat (az ADDWF utasítással) működött neki. Bővebben: Link
(#) potyo válasza icserny hozzászólására (») Júl 23, 2011 /
 
Én eddig is arról beszéltem. Az, hogy a nem ADDWF-es megoldások nem működnek sem a hardverben, sem a szimulátorban, az teljesen logikus, nincs is miről beszélni ezzel kapcsolatban.
(#) watt válasza icserny hozzászólására (») Júl 23, 2011 /
 
Köszönöm a felvilágosítást, megértettem, hogy az összeadás 16bites regisztereknél nem működhet egy lépésben Assemblerben sem a Timer felépítése miatt!

A megoldást már kitaláltam íme:

  1. #pragma interrupt high_int
  2. void high_int (void)    //Megszakítás lekezelése
  3. {
  4.         unsigned char TMR0L_temp;
  5.  
  6.         if(INTCONbits.TMR0IE && INTCONbits.TMR0IF){ //Timer0
  7.                
  8.                 TMR0L_temp=TMR0L;
  9.                 TMR0L_temp+=0x20;
  10.                 TMR0H=0xD0;
  11.                 TMR0L=TMR0L_temp;
  12.  
  13.                 INTCONbits.TMR0IF=0; //Megszakításjelző törlése
  14.         }
  15. }//End INT high_int Sub


Mégegyszer köszönöm a profi segítséget mindenkitől, aki hozzászólt!

A levéllel kapcsolatban pedig, az a része igaz, hogy a TMRx nem lép C-ben, ha léptetem a programot, lehet ezzel tudnak kezdeni valamit!
(#) mate_x hozzászólása Júl 24, 2011 /
 
Helló!

PIC18F2455 -nél, ha kvarcnak 48 MHz-est teszek be, akkor ahhoz milyen ajánlott értékű kondenzátorok tartoznak?
Akárhogy is nézem az adatlapot, ott csak max 20 MHz-hez van írva 15 pF, pedig a maximális frekvencia 48 MHz is lehet.
A választ előre is köszönöm.

Üdv, mate_x
(#) icserny válasza mate_x hozzászólására (») Júl 24, 2011 /
 
Szerintem 48 MHz csak külső oszcillátor jele lehet (EC mód).
(#) El_Pinyo válasza mate_x hozzászólására (») Júl 24, 2011 /
 
Van esetleg valami oka, hogy nem használod a belső PLL áramkört?
(#) mate_x válasza icserny hozzászólására (») Júl 24, 2011 /
 
Szia!

Szóval akkor maximum 20 MHz-es külső kristályt lehet rátenni.
Köszi a választ.

Üdv, mate_x
(#) matheattila válasza mate_x hozzászólására (») Júl 24, 2011 /
 
Szia, nem 20MHz a max, maximum annyit tehetsz rá amennyit az adatlapján ír, PIC18F2455 esetén ez 48MHz.
Egy 48 MHz -es kvarcnak kb 10-15pF-os kondikat tegyél
Következő: »»   1004 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem