Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1147 / 1320
(#) lajos1969 hozzászólása Okt 31, 2013 /
 
Sziasztok!
Lenne egy problémám lehet, hogy tudtok valami okosat mondani rá. Hátha valaki már találákozott ilyen problémával. A helyzet az, hogy a PicKit2-vel /PK2AVRISP/ szoktam atmegát programozni ami eddig ment is tökéletesen. De most állandóan ezeket a hibákat dobja a CodevisionAvr, FLASH erasure failure at data address:1D0h
FLASH data:00FFh!! Olvasásnál nem mindenhol FFFF van!
Ha törölni akarom akkor is meg ha írni szeretném akkor is, mindig általában más hibákat ír! A haveromnál ugyanazt az Atmegát ugyanilyen módszerrel simán felprogramoztuk. Nem tudok rájönni mi lehet a gond??
Ha lenne valami ötletetek erre azt nagyon megköszönném!
Köszönöm Lajos.
(#) vicsys válasza lajos1969 hozzászólására (») Okt 31, 2013 /
 
Nem lehet, hogy kizártad magad a Fuse bitekkel?
Bővebben: Link
(#) lajos1969 válasza vicsys hozzászólására (») Okt 31, 2013 /
 
Nem mert az ic-t felismeri meg ki is olvassa meg minden, csak hibásan olvas szerintem,
ezt nem tudom, hogy miért teszi???
A hozzászólás módosítva: Okt 31, 2013
(#) Hp41C hozzászólása Nov 1, 2013 /
 
Sziasztok!
MpLab 8.90:
Language tool versions: MPASMWIN.exe v5.49, mplink.exe v4.47, mplib.exe v4.47
Midrange 16F877A version 0x01.
Az alábbi kódrészlet időnként hibázik, időnként feleslegesen hozzáadja a 0x27 -et is.
  1. UART_SEND_NIBBLE
  2.                 andlw   0x0F                            ; Keep only low nibble
  3.                 movwf   Rs232Temp2
  4.                 sublw   0x09
  5.                 clrw                                            ; opcode 0x0103
  6.                 btfss   STATUS,C                        ; If nibble > 9 add 7, and use lower case character
  7.                 movlw   0x27
  8.                 addwf   Rs232Temp2,w
  9.                 addlw   0x30                            ; Convert to ACSII

Ez soha sem hibázik:
  1. UART_SEND_NIBBLE
  2.                 andlw   0x0F                            ; Keep only low nibble
  3.                 movwf   Rs232Temp2
  4.                 sublw   0x09
  5.                 movlw   0x00
  6.                 btfss   STATUS,C                        ; If nibble > 9 add 7, and use lower case character
  7.                 movlw   0x27
  8.                 addwf   Rs232Temp2,w
  9.                 addlw   0x30                            ; Convert to ACSII
A hozzászólás módosítva: Nov 1, 2013
(#) watt válasza Hp41C hozzászólására (») Nov 1, 2013 /
 
clrw elállítaná a C-t az említett régi PIC-ben?
(#) Hp41C válasza watt hozzászólására (») Nov 1, 2013 /
 
A clrw -nek 128 féle kódja lehet (0x0100 .. 0x017F). Lehet más kódot használva (nem a 0x0103 -t), van jól működő verzió is. A 3 pont a STATUS címe.
A hozzászólás módosítva: Nov 1, 2013
(#) potyo válasza Hp41C hozzászólására (») Nov 1, 2013 /
 
Ebben az errataban van valami ilyesmiről szó, talán ez is ebből adódik: Link
A hozzászólás módosítva: Nov 1, 2013
(#) zenetom válasza Hp41C hozzászólására (») Nov 2, 2013 /
 
És ha átírod a HEX-ben a 0x0103-at pl. 0x0150-re? Vagyis a hex-ben így néz ugye ki az eredeti CLRW: ...0301..., és ezt átírod pl. ...5001...-re. Na meg persze a checksumot, ami a sorban a byte-ok összegének kettes komplemensének alsó byte-ja.
Akkor lesz érdekes, ha ilyenkor a 0x50-es címen lévő regiszter (GPR) értéke változik.
A hozzászólás módosítva: Nov 2, 2013
(#) guliver83 hozzászólása Nov 2, 2013 /
 
Sziasztok!

Érdeklődni szeretnék, hogy használja valaki a HITEC C PRO PIC18 programot?
Segítséget szeretnék benne kérni.
(#) potyo válasza guliver83 hozzászólására (») Nov 2, 2013 /
 
Nem túlzottan elterjedt, de talán akad, aki használja. Írd le a problémádat, aztán meglátjuk
A hozzászólás módosítva: Nov 2, 2013
(#) Kriss hozzászólása Nov 3, 2013 /
 
Sziasztok! Csak egy gyors kérdés: PIC-nek baj az hosszútávon ha a bemenetére nagyobb feszt kap mint a tápfesz, pl. 20V 5K-s ellenálláson keresztül, vagy zenert kell használni?
(#) _vl_ válasza Kriss hozzászólására (») Nov 3, 2013 / 1
 
Nem tesz jót. A védelem céljából ott levő védődiódákon ha nagyobb áram folyik, az megzavarhatja a működését az IC-nek. A mA-ek már nagyobb áramnak számítanak.
És nem Zenert kéne használni, hanem Schottky-diódát a táp felé, plusz áramkorlátozó ellenállást (hogy a tápot se húzza fel).
(#) Kriss válasza _vl_ hozzászólására (») Nov 3, 2013 /
 
Értem, köszi a segítséget!
(#) usane válasza _vl_ hozzászólására (») Nov 3, 2013 /
 
Elnézést a belekérdezésért, de miért jobb a schottky táp felé, mintha a bemenő feszt zénerrel stabizza 3.3-5V-ra?
(#) _vl_ válasza usane hozzászólására (») Nov 3, 2013 / 1
 
A Zenernek van egy relatíve nagy kapacitása, amit mondjuk egy nagyobb impedanciás analóg jel nem biztos, hogy annyira szeret. Ezen felül az alacsonyabb feszültségű Zenerek karakterisztikája nem túl meredek. Ha mondjuk 10mA-t le kell tudnia vezetnie tápfesz +0.3V-on belül, akkor tápfesz -0.3V-nál még mA nagyságrendű áram fog rajta "csordogálni". A legfőbb hibája pedig az, hogy a Zener feszültsége független a tápfesztől, azaz amikor a tápfesz több, vagy kevesebb, a Zener nem megy utána. Emiatt nyilván a legalacsonyabb tápfeszhez kell tervezni (nem, mintha lehetne tervezni, hiszen nincs 0.1V-onként Zener).
Ezeket a problémákat mind kiváltja egy Schottky.
(#) usane válasza _vl_ hozzászólására (») Nov 3, 2013 /
 
Értem, köszönöm a magyarázatot.
Kihagytam, hogy változó bemeneti jelről van szó.
(#) GPeti1977 válasza _vl_ hozzászólására (») Nov 3, 2013 /
 
Vannak a Zener diódák kiváltására supressor diódák, már sok alkalmazásban láttam használni cél orientáltan kifejlesztve, CAN buszra, LIN buszra asszimetrikus karakterisztikával, USB-re, tápfeszültségre, nagyon gyorsak és kicsi a kapacitásuk, gyári kapcsolásokban inkább találkozok szupresszor diódákkal mint a táp felé kötött schotkty diódákkal.
(#) silent15 hozzászólása Nov 3, 2013 /
 
Sziasztok, nem tudjátok, hogy honnan lehet írásos, kötött formában a PIC32MX3xx/MX4xx adatlapját beszerezni, ez ugyebár egy masszív 214-oldalas dokumentáció, de nekem erre szükségem lenne, még akkor is ha nem vagyok gépközelbe, ezt valahol árulják?
Köszi!
(#) _vl_ válasza silent15 hozzászólására (») Nov 4, 2013 / 1
 
Kinyomtatod, bekötteted. Annyi pénzért, amennyiért egy ekkora pakkot ide elpostáznának, annyiért simán megcsinálják idehaza. Egyébként a 214 oldal csak a 3xx/4xx alap, általános része, ezen felül megjelentek az új x30/x50/x70 végű modellek, azoknak van egy külön 300+ oldalas ugyanilyen doksija, plusz az összes PIC32 perifériáiról van még kb. 30 kötetnyi, szumma legalább 1000 oldalnyi (ez is mind kell, mert az általános leírás nem tartalmaz minden részletet). Ezek a doksik ráadásul időnként frissülnek (hibákat találnak bennük, kijavítják).
Egyébként ebből a pénzből simán lehet venni egy tabletet, amit oda viszel magaddal, ahova akarod, és annyi PDF-et töltesz rá, amennyit jól esik. És amiben lehet elektronikusan keresni...
(#) potyo válasza silent15 hozzászólására (») Nov 4, 2013 /
 
Elárulod, mi az az élethelyzet, amikor ezen doksira szükséged van, de nem vagy gépközelben?
(#) silent15 válasza _vl_ hozzászólására (») Nov 4, 2013 /
 
Oké, akkor ez felejtős, azért köszönöm.
(#) tikiss hozzászólása Nov 7, 2013 /
 
Sziasztok!
Egy kis segítséget szeretnék kérni SW-es kérdésben. Egy dsPIC33EP256MU806 procihoz SPI-on csatlakoztattam egy DOGS102-es pont mátrix kijelzőt, aminek nincs saját karakterkészlete.
Találtam ehhez a kijelzőhöz egy drivert, de sajna Atmelhoz van megírva, a portolással addig eljutottam, hogy a kijelzővel tudok kommunikálni 100%-osan, viszont a driver másik része, ami letárolja a karakterkészletet és létrehozza a funciót, hogy stringet lehessen küldeni a kijelzőnek adott pozícióba, már meghaladja a tudásom (csak hobby SW-es vagyok).
A karakterkészletet sikerült letárolnom a program memóriában, viszont az Atmelhez van egy macro a memória olvasására, méghozzá a következő:
  1. #define pgm_read_byte(address_short)       pgm_read_byte_near(address_short)
  2. #define pgm_read_word(address_short)       pgm_read_word_near(address_short)

A két "near" a következőként van definiálva:
  1. #define pgm_read_byte_near      (address_short) __LPM((uint16_t)(address_short))
  2. #define pgm_read_word_near(address_short)  __LPM_word((uint16_t)(address_short))

S nem igazán találok rá megoldást, hogyan lehetne ezeket a funkciókat kiváltani.
Itt a programból egy részlet, hogyan használja ezt a makrot:
  1. inline char * font_widthtable(FONT_P font) {
  2.   char * tmp;
  3.   if (sizeof(tmp) == 2)
  4.     tmp = (char *)pgm_read_word(&(font->widthtable));
  5.   else
  6.     memcpy_P((char*)&tmp,&(font->widthtable),sizeof(tmp));
  7.   return tmp;
  8.   }

Hogyan lehetne ezt a macrot, PICre megírni? Sajnos a fenti kód részlet nekem szinte érhetetlen.
Nagyon jó lenne ha valaki esetleg tudna segítséget nyújtani.
Előre is köszönöm!
(#) Gibi89 hozzászólása Nov 11, 2013 /
 
Sziasztok!

pic16f684-et használok hogy szinuszt generáljak a picel viszont ez a program valamiért nem tetszik neki:

  1. unsigned char sin_table[32]={0,25,49,73,96,118,137,
  2. 159,177,193,208,220,231,239,245,249,250,249,245,
  3. 239,231,220,208,193,177,159,137,118,96,73,49,25};
  4.  
  5.  
  6. unsigned int TBL_POINTER_NEW, TBL_POINTER_OLD, TBL_POINTER_SHIFT, SET_FREQ;
  7. unsigned int TBL_temp;
  8. unsigned char DUTY_CYCLE;
  9.  
  10. void interrupt(){
  11. if (TMR2IF_bit == 1){
  12. TBL_POINTER_NEW = TBL_POINTER_OLD + SET_FREQ;
  13. if (TBL_POINTER_NEW < TBL_POINTER_OLD){
  14. CCP1CON.P1M1 = ~CCP1CON.P1M1; //Reverse direction of full-bridge
  15. }
  16. TBL_POINTER_SHIFT = TBL_POINTER_NEW >> 11;
  17. DUTY_CYCLE = TBL_POINTER_SHIFT;
  18. CCPR1L = sin_table[DUTY_CYCLE];
  19. TBL_POINTER_OLD = TBL_POINTER_NEW;
  20. TMR2IF_bit = 0;
  21. }
  22. }
  23.  
  24. void main() {
  25. SET_FREQ = 410;
  26. TBL_POINTER_SHIFT = 0;
  27. TBL_POINTER_NEW = 0;
  28. TBL_POINTER_OLD = 0;
  29. DUTY_CYCLE = 0;
  30. ANSEL = 0; //Disable ADC
  31. CMCON0 = 7; //Disable Comparator
  32. TRISC = 0x3F;
  33. CCP1CON = 0x4C;
  34. TMR2IF_bit = 0;
  35. T2CON = 4; //TMR2 on, prescaler and postscaler 1:1
  36. while (TMR2IF_bit == 0);
  37. TMR2IF_bit = 0;
  38. TRISC = 0;
  39. TMR2IE_bit = 1;
  40. GIE_bit = 1;
  41. PEIE_bit = 1;
  42.  
  43. while(1);
  44. }


xc8at használok compilernek de rajta van a HI-tech 9.83 verzió is és egyikkel sem akar lefordulni mindig hibát dob ki- és az az érdekes ha megnyitom a header fájlt abba is hiba van (mplab x v1.8- ban programozok)

Valakinek valami tipp hogy miért nem működik?
A hozzászólás módosítva: Nov 11, 2013
(#) Hp41C válasza Gibi89 hozzászólására (») Nov 11, 2013 /
 
TMR2IE_bit = 1; helyett PIE1bits.TMR2IE = 1; stb...
(#) Tas84 válasza Gibi89 hozzászólására (») Nov 11, 2013 /
 
Az interrupt kezelőd se jó úgy!
  1. void interrupt interrupt_kezelo() {}
(#) Gibi89 válasza Hp41C hozzászólására (») Nov 11, 2013 /
 
Sikerült megoldani! Köszönöm!
(#) zenetom hozzászólása Nov 13, 2013 /
 
Érdekességképpen: Bővebben: Link
(#) zenetom hozzászólása Nov 15, 2013 /
 
Mennyire okozhat gondot, ha tartósan használok bemenetnek ipari környezetben MCLR/GP lábat?
Konkrétan a 12F675-ről lenne szó, és a GP3/MCLR lábat használnám aszinkron soros bemenetnek, mert kellene 3 kimenet (az OSC lábak is kellenek, mert nem bízok a belső oszciban).
Persze a konfignál az MCLR-t kikapcsolom...
(#) potyo válasza zenetom hozzászólására (») Nov 15, 2013 /
 
Miért okozna bármi gondot? Arra vigyázz, hogy ne húzhassa fel táp fölé semmi a lábat, hogy ne reseteljen a pic.
(#) zenetom válasza potyo hozzászólására (») Nov 15, 2013 /
 
Hát pl. éppen ez.
Bár max. a tápfeszt kaphatja meg, mert ugyanarról a tápról fog menni amivel össze van kötve.

Csak azért vagyok ilyen óvatos, mert mégiscsak köze van a reset áramkörhöz a lábnak, hiába van letiltva, nagyobb az esélye a hibás működésnek, mint ha "sima" I/O lábon van.
Következő: »»   1147 / 1320
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