Fórum témák

» Több friss téma
Fórum » CCS PIC Compiler
 
Témaindító: (Felhasználó 1542), idő: Ápr 3, 2006
Lapozás: OK   105 / 118
(#) sysy válasza messer hozzászólására (») Feb 12, 2015 /
 
Nem az elektron nem ismeri a fizikát.
Mindig az emberben van a hiba.
Sajnos a CCS is az utasításaink szerint dolgozik, nem pedig a kívánságaink szerint.
A hozzászólás módosítva: Feb 12, 2015
(#) sysy válasza messer hozzászólására (») Feb 12, 2015 /
 
Egyébként bizonyos körülmények esetén csak figyelmeztetés mellett engedi programozni a PIC-et az MPLAB.
Még ablakot is dob. Lehet, hogy letiltottad mert idegesített.
Pl. ha belső oszcillátor van kiválasztva és az MCLR le van tiltva, akkor csak saját felelősségedre engedi a programozást, mert nem vállalnak felelősséget arra, hogy minden sikerül.
Ilyenekre azért figyelni kell.

Próbálkozz valami másik platformmal vagy másik MCU gyártóval Azzal is lehet ám szenvedni igen sokat. Bárki bármit is mond.

Már többször írtam itt, hogy én már kipróbáltam több platformot és a CCS-nél kötöttem ki, mert elég barátságos és már elviselhető szintre szorították le a bugosságát. Lehet vele dolgozni.
(#) Hp41C válasza messer hozzászólására (») Feb 12, 2015 /
 
Az MpLab 8.xx -ben a Configuration / Configuration bits ablakban van egy kiválasztási lehetőség: Configuration Bits set in code. Ha itt nincs pipa, akkor ebben az ablakban beállított értékekkel generálja a hex állományt.
(#) Hp41C válasza sysy hozzászólására (») Feb 12, 2015 /
 
Idézet:
„Pl. ha belső oszcillátor van kiválasztva és az MCLR le van tiltva, akkor csak saját felelősségedre engedi a programozást, mert nem vállalnak felelősséget arra, hogy minden sikerül.”

Miért nem ismeri az MpLab a "Use vpp first programming entry" módszert?
Miért nem ismeri az MpLab a "Low voltage programming" módszert?
stb.
Pedig már elég sok év telet el azóta, hogy áttértek a 32 bites verzióra...
A PICKit2 saját programja biztosítja ezeket a lehetőségeket.
(#) messer válasza Hp41C hozzászólására (») Feb 12, 2015 /
 
Megpróbáltam úgy is a config biteket hogy ne a forrás generálja hanem az itt kiválasztott tulajdonságok legyenek de akkor is hibásan generálja le a kódot....
(#) sysy válasza Hp41C hozzászólására (») Feb 12, 2015 /
 
Ezt szerintem az MPLAB-os fickók sem tudják.
(#) sysy válasza messer hozzászólására (») Feb 12, 2015 /
 
Még az is lehet, hogy az MPLAB-ban nem az a processzor van kiválasztva, amit te szerettél volna, mert velem már megesett néhányszor. Szénné szívattam magam.
Az előző project által kiválasztott PIC volt az aktív.
(#) sysy válasza messer hozzászólására (») Feb 12, 2015 /
 
Nézd meg fordítás után (ha hiba nélkül lefordult) az MPLAB: Configure > Configuration Bits menüjében mit akar beprogramozni a PIC-be.
(#) messer válasza sysy hozzászólására (») Feb 12, 2015 /
 
Megnéztem jó pic van kiválasztva a pic típus. Érdekes fordítás után menüben átíródnak rosszra a beállítások. A Configuration bits set in code négyzetet nem pipálom be majd beállítom menükben a biteket fordítás után akkor is átíródnak a menü beállítások. Valamit a CCSC mahináll bele......
(#) sysy válasza messer hozzászólására (») Feb 12, 2015 / 1
 
Még az is lehet, hogy Debug üzemmódban van Release helyett az MPLAB.
Sőt! Szinte biztos, mert ezt látom a programban:

#device ICD=TRUE
A hozzászólás módosítva: Feb 12, 2015
(#) messer válasza sysy hozzászólására (») Feb 12, 2015 /
 
Ismét az emberi figyelmetlenségem.... Az áramköröm csinált még érdekességet elkezdett furán viselkedni lebegett egy bemenet hol magasra hol alacsonyra ugrott, ha a power up timert kikapcsolom minden stabil és jó lesz. Azt gondolom, hogy a zajos táp okozza a hibát. Szerintetek is lehet ez?
(#) vicsys válasza messer hozzászólására (») Feb 13, 2015 /
 
Bármi lehet, de nálam a PUT még soha nem okozott ilyesmit. Nem lehet, hogy az MCLR felhúzója szakadt vagy nem érintkezik?
(#) messer válasza vicsys hozzászólására (») Feb 13, 2015 /
 
A nyákot elbénáztam elég sok lett.... átírtam a programot hogy nincs mclr ellenállás belsőt használ.
(#) sysy válasza messer hozzászólására (») Feb 13, 2015 /
 
Megint bebizonyosodott, hogy az elektronok tudják a fizikát.
(#) potyo válasza messer hozzászólására (») Feb 13, 2015 /
 
16F628A MCLR lábát mindenképpen be kell kötni valahová, mert kikapcsolt MCLR mellett ugyan lefele húzással resetelni nem fog, de ha felfele mászik el a láb potenciálja valami okból, akkor belép programozás üzemmódba, ami szintén resetelésként fog megjelenni.
(#) messer válasza potyo hozzászólására (») Feb 13, 2015 /
 
Köszönöm szépen lehet ettől instabil....
(#) Lamprologus hozzászólása Feb 13, 2015 /
 
A CCS compilernér be lehet-e állítani valahol, hogy a hex fájl végére ne tegye be a megjegyzés sorokat ( PIC típusa, CRC, Dátum, idő)?

A másik kérdés, LCD kijelzőnél, hogyan lehet ékezetes karaktereket megjeleníteni?
A hozzászólás módosítva: Feb 13, 2015
(#) messer válasza potyo hozzászólására (») Feb 15, 2015 /
 
Potyo köszönöm ez okozta az instabilitást, betettem egy ellenállást máris stabil lett. Még egyszer köszönöm szépen.
(#) sysy válasza potyo hozzászólására (») Feb 15, 2015 /
 
Ez engem érdekelne, hogyan gondolod ezt a mindenképpen való bekötést, amikor ki van kapcsolva a MCLR. Mert ilyenkor PORTA5 néven funkcionál a láb. Programozásba +9V MCLR feszültség környékén lép be a PIC. Ha belül össze van kötve a tápfesszel az MCLR láb, akkor ezen a tápfeszen szerintem meghal a PIC. Vagy valamit rosszul értelmeztem?
(#) potyo válasza sysy hozzászólására (») Feb 15, 2015 /
 
Rosszul. Belül nincs az MCLR összekötve a tápfeszültséggel, legalábbis nem egy szál drótként, mint azt sokan gondolják. A letiltott MCLR csak azt jelenti, hogy a kontrollert resetelő áramköri rész egyik bemenete le van választva a lábról, és fixen tápfeszültségre van kötve. De ettől még egy másik rész, nevezetesen a flash felprogramozásáért felelős rész továbbra is összekötve marad a lábbal, hiszen kikapcsolt MCLR mellett is újra lehet programozni a kontrollert. Ezért nem szabad a lábat szabadon hagyni, mert akkor antennaként összeszed mindenféle zajt a környezetből, panelen szivárgást a táp felől, stb., aminek hatására felmehet a potenciálja 9V fölé, majd le, és ez is úgy néz ki, mintha resetelne. Nem kell itt nagy áramokra gondolni, CMOS áramkörről lévén szó, szinte bármilyen alacsony áram is már gondot tud okozni, amit pl. ottmaradt forrasztószer, rászálló por is már elő tud idézni.

Mindenképpen be kell kötni, azt jelenti, hogy nem szabad lebegni hagyni. Ha digitális bemenetként használjuk, az már azt jelenti, hogy be van kötve, nem tud a potenciálja elmászni.

Vannak kivételek, pl. 12F683, amiben van az MCLR lábon belső felhúzó, ezen nyugodtan lebegni lehet hagyni az MCRL lábat, de CSAK akkor, ha az MCLR nincs kikapcsolva! Ugyanis ha az MCLR-t kikapcsoljuk, akkor azzal a felhúzót is kikapcsoljuk, és így ugyanott vagyunk, mint az első bekezdésben.
(#) sysy válasza potyo hozzászólására (») Feb 15, 2015 /
 
Ebben lehet valami, mert az MCLR lábon nincs felső clamp dióda a Vdd sínhez. Így nyugodtan be lehet nyomni az égető feszt(is). Logikus.
Megint tanultam valamit.
(#) Lamprologus hozzászólása Feb 22, 2015 /
 
Pontos 10ms-os időzítést szeretnék csinálni timer1-el...
  1. #INT_TIMER1
  2. void  TIMER1_isr(void)
  3. {
  4.         set_timer1(45536);
  5.         output_toggle(PIN_A0);
  6. }


Ha jól számoltam akkor ennek elvileg pont annyinak kéne lennie, 8Mhz-es órajelnél.
A szimulátorral nézve viszont 45572-nél jön létre a megszakítás 10ms-onként.
Hol a hiba? A szimulátroban, vagy én nem vettem valamit figyelembe?
(#) Hp41C válasza Lamprologus hozzászólására (») Feb 22, 2015 /
 
Amire a set_timer1(45536) sorra kerül a vezérlés, a timer1 már nem 0 -t tartalmaz. Az írás ezt az értéket nem veszi figyelembe.
(#) Lamprologus válasza Hp41C hozzászólására (») Feb 22, 2015 /
 
Nekiugrottam másképp ...
  1. #INT_TIMER2
  2. void  TIMER2_isr(void)
  3. {
  4.         output_toggle(PIN_A0);
  5. }
  6.  
  7. void main()
  8. {
  9.         setup_timer_2(T2_DIV_BY_16,250,5);     
  10.         enable_interrupts(INT_TIMER2);
  11.         enable_interrupts(GLOBAL);
  12. }

Sajnos ez sem jó ... itt is több mint 10ms az idő!
Mi hát a korrekt megoldás?
A hozzászólás módosítva: Feb 22, 2015
(#) kissi válasza Lamprologus hozzászólására (») Feb 22, 2015 /
 
Szia!
Ne beállítsd a számlálót, hanem annyit adj hozzá az aktuális számlálóállapothoz ( így figyelembe veszi a közben eltelt időt is!) !
(#) Lamprologus válasza kissi hozzászólására (») Feb 22, 2015 /
 
Így gondoltad?
  1. #INT_TIMER1
  2. void  TIMER1_isr(void)
  3. {
  4.         set_timer1(45536+get_timer1());
  5.         output_toggle(PIN_A0);
  6. }


Sajnos még így is van eltérés. Gondolom azért mert a számolás közben is telik az idő.


És a Timer_2-es megoldásnál hol a hiba? Annak pontosnak kéne lennie! Vagy nem?
A hozzászólás módosítva: Feb 22, 2015
(#) vicsys válasza Lamprologus hozzászólására (») Feb 22, 2015 /
 
Van ám beépített demo is a programban:

  1. Inserted into .h file:
  2.  
  3. #use timer(timer=1,tick=100us,bits=32,NOISR)
  4.  
  5. #define TICK_TYPE unsigned int32
  6. Inserted into .c file before main():
  7.  
  8.  
  9. TICK_TYPE GetTickDifference(TICK_TYPE currTick, TICK_TYPE prevTick)
  10. {
  11.         return(currTick-prevTick);
  12. }
  13.  
  14. void pontos10ms(void)
  15. {
  16.         //TODO: User Code
  17. }
  18. Inserted into .c file in main():
  19.  
  20.  
  21.         //Example program using Tick Timer
  22.         CurrentTick = PreviousTick = get_ticks();
  23.  
  24.         while(TRUE)
  25.         {
  26.                 CurrentTick = get_ticks();
  27.  
  28.                 if(GetTickDifference(CurrentTick, PreviousTick) >= ((TICK_TYPE)TICKS_PER_SECOND*10)/1000)
  29.                 {
  30.                         pontos10ms();
  31.                         PreviousTick = CurrentTick;
  32.                 }
  33.  
  34.                 //TODO: User Code
  35.         }
(#) sysy válasza Lamprologus hozzászólására (») Feb 22, 2015 /
 
Idézet:
„setup_timer_2(T2_DIV_BY_16,250,5);”


A TIMER2-nek nincs 5-ös utóosztója.
Nem dobott hibát a fordító?

A simulatorban be van állítva a 8MHz órajel?
Mert alapértelmezés szerint 20MHz.
(#) Lamprologus válasza sysy hozzászólására (») Feb 22, 2015 /
 
A setup... sort a Pic Wizard -al hoztam létre, azt másoltam be az MPLAB-ba és ott néztem a simulátorral... breakpoint létrehozása... stopwatch... és a stopper mutatja hogy nem annyi mint amennyinek lennie kéne.
A PIC egy 16F887-es, annál simán hagyja hogy ezt beállítsam!
Fordításkor nem kaptam hibaüzenetet.
Az eltérés mindössze néhány század ms.
A szinulátorban is jó frekvencia van beállítva.

vicsys hozzászólásához:
Én 4-es CCS-t használok, az nem ismeri a #use timer(...), sem a get_tick-et ...
Gondolom ez az 5-ben lehet ... (Arról meg azt olvastam valahol, hogy valami printf után gondok vannak a megszakításokkal, azért maradtam inkább a 4-nél)
A hozzászólás módosítva: Feb 22, 2015
(#) Dempsey válasza sysy hozzászólására (») Feb 22, 2015 /
 
Érdekes eszerint a program szerint van. Bővebben: Link. Akkor most ez a kalkulátor nem felel meg a valóságnak?
Következő: »»   105 / 118
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