Fórum témák

» Több friss téma
Fórum
Keresés
Lapozás: OK   39 / 39
(#) Elektro.on válasza don_peter hozzászólására (») Ápr 28, 2016
Én MicroPascalt vagy MicroC -t használnék abban benne van az USB könyvtár. Bár az ingyenesben korlátozott a fordítás 2K nál. A 32 es család engem is érdekelne egyenlőre csak kísérletezés alapon az USB HID miatt. Bár PC oldalról még nem tudom , hogy tudnám megoldani a dolgot...
A hozzászólás módosítva: Ápr 28, 2016
(#) Elektro.on válasza don_peter hozzászólására (») Ápr 26, 2016
Azért nem szeretem ezek után a fordítást mert egy olyan iskola oldaláról töltöttem ahol erre tanítják a gyerekeket. Tény, hogy rájöttek és azóta javították. De mégis...
(#) Elektro.on válasza sonajkniz hozzászólására (») Ápr 26, 2016
Nem vagyok rá büszke, de én sajnos csak a gugli fordítóval tudok angolul. De az adatlapot mindig átnézem és ott van a kezem ügyében és a kedvem se vette el. És csak is az eredeti Michrochip -es!!!
Már belefutottam az elején olyanba, hogy 16F84 hez találtam Magyar fordítást aminél felcserélték a Vss és Vdd lábakat. Szegény PIC -em egy szempilantás alatt pirosra ízzott.
Soha többet fordított adatlap...
(#) Elektro.on válasza kontár hozzászólására (») Ápr 20, 2016
A Microchip gondolt erre:
Microchip Advanced Part Selector
(#) Elektro.on válasza nyekk hozzászólására (») Ápr 19, 2016
Két gyors kép a MikroC súgóbol:
Az első az inicializásáls, a második szöveg írás adott pozícióba.
(#) Elektro.on válasza nyekk hozzászólására (») Ápr 19, 2016
A MikroC súgójában minden benne van!
De ITT egy korábbi ultrahangos távolság mérő kódom, igaz Mikropascal de benne van az LCD kezelés.
Mikro pascal és Mikro C közt csak némi szintaktikai eltérés van.
A hozzászólás módosítva: Ápr 19, 2016
(#) Elektro.on válasza Kapagerenda hozzászólására (») Ápr 13, 2016
MikroC vel lehet mindent.
A mikroe.com -on van külön a 8, 16 és 32 bites PIC-hez fejlesztő környezet. MikroC, MokroPascal és MikroBasic is.
(#) Elektro.on hozzászólása Ápr 12, 2016
Nálam a "T" szolgáltató 5 megánál már behalt. Kijöttek , bemérték és megállapították, hogy nálam ADSL -en 2 mega a max amit adni tudnak. Adtak helyette kábelt, ip tv vel.
Az gond nélkül 30 Megával hasított lefelé és 5 -el fel. Most váltottam Digi -re 1000/200 megát igértek. Lefele mérek 530 -1000 ig fel viszont 200-210 mega.

Összegzés:
Én a mai világban az ADSL -t nyugdíjaznám...
(#) Elektro.on válasza renegat1 hozzászólására (») Ápr 11, 2016
Probáld ki a 7805 -öt labortáppal vagy aksival.
A hozzászólás módosítva: Ápr 11, 2016
(#) Elektro.on hozzászólása Ápr 11, 2016
Csak egy tipp:
Ha az adott PIC nél valamit másképp nevez adatlap alapján is és nem vagy biztos a MikroC ill MikroPascal - os elnevezésben, akkor túrd fel egy kicsit a fejlesztő környezetet.
Én ugyan pascalozok de MikroC -nél is a "MikroC PRO for PIC/Defs" mappában megkeresed az aktuális PIC -ed hez tartozó filet. Esetedben pascal környezetben P12F683.mpas C ben talán P12F683.c . A tartalma (csak részlet):
(Az utolsó két sort nézd.)
  1. // Special function registers (SFRs)
  2. var
  3.   INDF             : byte; absolute 0x0000; volatile; sfr;
  4.   TMR0             : byte; absolute 0x0001; volatile; sfr;
  5.   PCL              : byte; absolute 0x0002; volatile; sfr;
  6.   STATUS           : byte; absolute 0x0003; volatile; sfr;
  7.   FSR              : byte; absolute 0x0004;           sfr;
  8.   FSRPTR           :^byte; absolute 0x0004;           sfr;
  9.   PCLATH           : byte; absolute 0x000A; volatile; sfr;
  10.   INTCON           : byte; absolute 0x000B; volatile; sfr;
  11.   PIR1             : byte; absolute 0x000C; volatile; sfr;
  12.   TMR1L            : byte; absolute 0x000E; volatile; sfr;
  13.   TMR1H            : byte; absolute 0x000F; volatile; sfr;
  14.   T1CON            : byte; absolute 0x0010; volatile; sfr;
  15.   TMR2             : byte; absolute 0x0011; volatile; sfr;
  16.   T2CON            : byte; absolute 0x0012; volatile; sfr;
  17.   CCPR1            : word; absolute 0x0013; volatile; sfr;
  18.   CCPR1L           : byte; absolute 0x0013; volatile; sfr;
  19.   CCPR1H           : byte; absolute 0x0014; volatile; sfr;
  20.   CCP1CON          : byte; absolute 0x0015; volatile; sfr;
  21.   WDTCON           : byte; absolute 0x0018;           sfr;
  22.   CMCON0           : byte; absolute 0x0019; volatile; sfr;
  23.   CMCON1           : byte; absolute 0x001A; volatile; sfr;
  24.   ADRESH           : byte; absolute 0x001E; volatile; sfr;
  25.   ADCON0           : byte; absolute 0x001F; volatile; sfr;
  26.   OPTION_REG       : byte; absolute 0x0081; volatile; sfr;
  27.   PIE1             : byte; absolute 0x008C; volatile; sfr;
  28.   PCON             : byte; absolute 0x008E; volatile; sfr;
  29.   OSCCON           : byte; absolute 0x008F; volatile; sfr;
  30.   OSCTUNE          : byte; absolute 0x0090; volatile; sfr;
  31.   PR2              : byte; absolute 0x0092; volatile; sfr;
  32.   WPU              : byte; absolute 0x0095;           sfr;
  33.   WPUA             : byte; absolute 0x0095;           sfr;
  34.   IOC              : byte; absolute 0x0096; volatile; sfr;
  35.   IOCA             : byte; absolute 0x0096; volatile; sfr;
  36.   VRCON            : byte; absolute 0x0099; volatile; sfr;
  37.   EEDAT            : byte; absolute 0x009A; volatile; sfr;
  38.   EEDATA           : byte; absolute 0x009A; volatile; sfr;
  39.   EEADR            : byte; absolute 0x009B; volatile; sfr;
  40.   EECON1           : byte; absolute 0x009C; volatile; sfr;
  41.   EECON2           : byte; absolute 0x009D; volatile; sfr;
  42.   ADRESL           : byte; absolute 0x009E; volatile; sfr;
  43.   ANSEL            : byte; absolute 0x009F;           sfr;
  44.   GPIO             : byte; absolute 0x0005; volatile; sfr;
  45.   TRISIO           : byte; absolute 0x0085; volatile; sfr;
(#) Elektro.on válasza Elektro.on hozzászólására (») Márc 23, 2016
Na még egyszer..
Kár, hogy a korábbi hozzászolást csak rövid ideig szerkeszthehetem.

Néztem az eredeti kódodat. nem vagyok benne biztos, hogy a problémát ez okozhatja, de a megszakításban az "a" változód típusa "int" Ami C ben -32,768 -től 32,767 -ig tart.
én számláló esetében mindenképp "unsigned int" -et használnék. Az én kódomban azért nem ezt látod mert a pascal -ban "unsigned int" helyett a "word" tipus szerepel ami 0 - tól 65535 - ig tart. A "C" tipusokat csatolom képben.
A hozzászólás módosítva: Márc 23, 2016
(#) Elektro.on válasza DJozso hozzászólására (») Márc 23, 2016
Még valami ami problémát okozhat. Az adatlapon kiemeltem.
Ha túl sűrű a mérés, zárt térben a fennmaradt visszhang is problémát okozhat.
(#) Elektro.on válasza DJozso hozzászólására (») Márc 23, 2016
Én is csak nem túl rég kezdtem neki. Bár a szándék nálam már 20 éve is megvolt, de valahogy sosem maradt rá elég időm.

Lehet, hogy valóban az UH modulod hibás, de ha jól emlékszem mintha lett volna az adatlapjában olyan, hogy kell neki minimum 0,5m2 visszaverő felület.
(#) Elektro.on válasza DJozso hozzászólására (») Márc 22, 2016
De igen. Az adatlapján azt látom, hogy nálad az RB.5 ös lábon van a T1G ! És a T1GSS bit -el engedélyezheted.
(#) Elektro.on válasza DJozso hozzászólására (») Márc 22, 2016
Nem! A fő Unit elején a kommentben benne van, hogy 16F690 re van írva. Ennek a számlálóját tudom külső (PortA.4 )lábról hardveresen indítani és leállítani. Így magához a számlálóhoz nem kellett megszakítást használnom.
A számláló tulcsordulást jelző Flag -et viszont a hibás , méréshatáron kívüli mérés detektálására használtam. Amit viszont tapasztaltam, szintén benne van a kód kommentjében, hogy a mérés indítása után nem rögtön húzza fel az UH modul a trig lábat hanem késik elég sokat. ezért van benne a 100ms késleltetés a mérés kiértékelése előtt. Amúgy sincs szükség olyan sűrű mérésre..
A hozzászólás módosítva: Márc 22, 2016
(#) Elektro.on válasza DJozso hozzászólására (») Márc 22, 2016
Szia!
Most épp nincs időm végig nézni a kódodat, amúgy sem vagyok C guru. De kb fél éve én is kísérleteztem ezzel az UH modullal. nekem 400cm ig simán mért bár nem túl pontosan.
Mikropascal környezetben csináltam, ha az neked segít itt a kód. Ne zavarjon meg, hogy 3db unitra osztottam az átláthatóság kedvéért.
Fő Unit :
  1. {*   Ultrahangos Távolság mérő
  2.       PIC 16f690    8 MHz belső oszcillátorral
  3.  *}
  4. program UH_Tav_mero;
  5.  
  6. uses MyUnit_meres  , MyUnit_LCD ;
  7.  
  8. { LCD Deklaráció }
  9. var LCD_RS : sbit at RC2_bit;
  10. var LCD_EN : sbit at RC3_bit;
  11. var LCD_D4 : sbit at RC4_bit;
  12. var LCD_D5 : sbit at RC5_bit;
  13. var LCD_D6 : sbit at RC6_bit;
  14. var LCD_D7 : sbit at RC7_bit;
  15.  
  16. var LCD_RS_Direction : sbit at TRISC2_bit;
  17. var LCD_EN_Direction : sbit at TRISC3_bit;
  18. var LCD_D4_Direction : sbit at TRISC4_bit;
  19. var LCD_D5_Direction : sbit at TRISC5_bit;
  20. var LCD_D6_Direction : sbit at TRISC6_bit;
  21. var LCD_D7_Direction : sbit at TRISC7_bit;
  22.  
  23. var tavolsag : dword;
  24. txt : array[4] of char;
  25. var  MertEgyseg , MerCyc : word;
  26.  
  27.  
  28. begin   { Main program }
  29.  
  30.   OSCCON.IRCF0 := 1 ;          // belső oszcillátor 8 MHz
  31.   ANSEL := 0;                  // analóg bemenet tiltása
  32.   ANSELH := 0 ;                // analóg bemenet tiltása
  33.   CM2CON1.T1GSS := 1;          // Porta.4 számláló vezérlő engedélyezése
  34.                                // H színtnél számol.
  35.   T1CON := 193 ;               // Timer 1 számláló beállítása osztó nélkül
  36.  
  37.   trisc := 0;
  38.  
  39.   LCD_init;                   // LCD inicializálása
  40.   CustomChar();               // egyéni karakterek tárolása (á é ) + első sor
  41.  
  42.  
  43.  
  44.   { Végtelen hurok}
  45.  
  46.     Repeat
  47.        // Mértékegység és mérés gyakoriság beállítása
  48.      If PortA.0 = 1 then  MertEgyseg := 50    else MertEgyseg := 5;
  49.      If PortA.1 = 1 then  MerCyc := 200    else MerCyc := 400;
  50.      
  51.    
  52.         // Számláló értékéből távolság számítása
  53.     tavolsag := (meres()* MertEgyseg) div 588;
  54.    
  55.    
  56.     // Számláló tulcsordulástól függően távolság vagy hiba kiírása.
  57.     If Pir1.TMR1IF = 0 then
  58.      begin
  59.        wordtostr(tavolsag, txt);
  60.         ValueToLCD(txt);
  61.      end
  62.      else ErrorToLcd();
  63.  
  64.      // Késleltetés a következő mérés előtt.
  65.     Vdelay_ms(MerCyc);
  66.  
  67.   until false;
  68.  
  69. end.


MyUnit_meres:
  1. {*    -- Mérő függvény --
  2.  
  3.       visszatérési érték a számláló 16 bites értéke, tulcsordulás esetén
  4.        a maximális 65535 érték jelzi a hibás mérést.
  5.        
  6.        *}
  7.  
  8.  
  9. unit MyUnit_meres;
  10.  
  11. function meres() : word;
  12.  
  13. implementation
  14.  
  15. function meres() : word;
  16.   begin
  17.     TMR1L := 0;             //..
  18.     TMR1H := 0;             // Timer1 számláló törlése
  19.     Pir1.TMR1IF := 0;       // Timer1 tulcsordulás flag törlése
  20.  
  21.  
  22.     { Ultrahang indítása minimum 10 us }
  23.      PORTc.0 := 1;
  24.       delay_us(10);
  25.      PORTC.0 := 0;
  26.  
  27.      { Mérés kezdete + meresi idő + UH elhalása
  28.        A mérést indító Trigger jel és a mérést végző Echo jel között
  29.        van kb. 25 ms holtidő amit a HC-SR04 ultrahang adatlapja nem dokumentál.
  30.        a mérés kiolvasásakor erre figyelni kell, nehogy mérés előtt olvassuk a
  31.        "0" ás számlálót!!!}
  32.        
  33.      delay_ms(100);
  34.  
  35.      result := (TMR1H Shl 8)+ TMR1L;
  36.      
  37.    if  Pir1.TMR1IF = 1 Then    // ha Timer1 tulcsordulás miatt kilép a mérésből
  38.      begin                     // A visszatérési érték a maximális Hexa FF FF
  39.        result := 65535 ;
  40.        Pir1.TMR1IF := 0;
  41.      end ;
  42.  
  43.   end;
  44.  
  45. end.

MyUnit_LCD :
  1. unit MyUnit_LCD;
  2.  
  3.  //  Egyedi karakterek tartalma " á, é "
  4.  
  5. const character_aa: array[0..7] of byte = (6,0,14,1,15,17,15,0);
  6.       character_ee: array[0..7] of byte = (12,0,12,18,30,16,14,0);
  7.  
  8. procedure CustomChar();
  9. procedure ValueToLCD(var value : string[4]);
  10. procedure ErrorToLcd();
  11.      
  12. implementation
  13.  
  14. { LCD-be egyedi karakterek beírása, első sorba
  15.    "Mért távolság: " kiírása. }
  16.  
  17. procedure CustomChar();
  18. var i: Byte;
  19.   begin
  20.     Lcd_Cmd(64);
  21.     for i := 0 to 7 do Lcd_Chr_CP(character_aa[i]);
  22.     Lcd_Cmd(72);
  23.     for i := 0 to 7 do Lcd_Chr_CP(character_ee[i]);
  24.  
  25.     Lcd_Cmd(_LCD_CLEAR);
  26.     Lcd_Cmd(_LCD_CURSOR_OFF);
  27.     Lcd_Cmd(_LCD_RETURN_HOME);
  28.     Lcd_Chr_CP('M');
  29.     Lcd_Chr_CP(1);
  30.     Lcd_Out_CP('rt t');
  31.     Lcd_Chr_CP(0);
  32.     Lcd_Out_CP('vols');
  33.     Lcd_Chr_CP(0);
  34.     Lcd_Out_CP('g :');
  35.   end;
  36.  
  37. { Paraméterként kapott mérési érték és RA.0 függvényében a
  38.    mennyiségi egység kiírása a második sorba.}
  39.    
  40. procedure ValueToLCD(var value : string[4]);
  41.  var egys :string[7];
  42.   begin
  43.    Case PortA.0 of
  44.       0: egys := ' cm    ';
  45.       1: egys := ' mm    ';
  46.     end;
  47.    Lcd_Out(2,1,'   ');
  48.    LCD_Out_CP(value);
  49.    Lcd_Out_CP(egys);
  50.   end;
  51.  
  52.  { Nem mérhető, nagy távolság esetén "Mérési hiba !" felirat a 2. sorba.}
  53.  
  54. procedure ErrorToLcd();
  55.  begin
  56.    Lcd_Out(2,2,'M');
  57.    Lcd_Chr_CP(1);
  58.    Lcd_Chr_CP('r');
  59.    Lcd_Chr_CP(1);
  60.    Lcd_Out_CP('si hiba !  ');
  61.  end;
  62.  
  63. end.
(#) Elektro.on válasza pajti2 hozzászólására (») Márc 15, 2016
Valóban részben a Baud beállítás volt a probléma. De van egy tapasztalatom ami másnak is jól jöhet.
Mégpedig az, hogy Ebay os PicKit2 uart tool ja nem mindig megbízható.
Eddig bíztam benne mert volt egy DKU5 ös teló kábelem amit szerettem volna USB-UART átalakítóként használni és a PicKit2 vel ide oda tudtam adatot küldeni. De ami a PikKit2-Pic16f690 közt nem működött. A DKU5 ös kábelen a Mikropascal USART Tool al simán ment..
(#) Elektro.on válasza pajti2 hozzászólására (») Márc 15, 2016
O h.... Köszi, ezt benéztem. A munkahelyi gépemen alapból 9600 ra van állítva mindtettő ezért ezt nem is néztem. Amint lessz kis időm le ellenörzöm ujra.
Még egyszer köszi.
(#) Elektro.on válasza Hp41C hozzászólására (») Márc 15, 2016
Sziasztok!
Valamivel tovább jutottam UART ügyben. Ha felhúztam a TX lábat Uart init előtt akkor küld valamit, de nem azt amit várok. Csak hexa F8 és 00 érkezik. Csatolok képet, ha volna ötletetek megköszönném.
(#) Elektro.on válasza Hp41C hozzászólására (») Márc 11, 2016
Még egy észrevételem van. A szimulációk során amikor a szofveres UART-ot próbáltam a TX láb (RB7) végig magas színten volt ahogy kell, mivel innen indítja a start bitet. A hardveres UART tesztnél viszont lent maradt.
(#) Elektro.on válasza Hp41C hozzászólására (») Márc 11, 2016
Becsatolnád nekem a forrásodat egy txt fileba , hogy át tudjam nézni?
(#) Elektro.on válasza Hp41C hozzászólására (») Márc 11, 2016
Ahol a start üzenetet látod az a pic belső regiszrere. Volt már ciklusban is és kifelé semmi.
Egyébként este kipróbáltam a szoftveres uartot is szimulátoron és az megjelent rendesen.A képen amit korábban csatoltam a jobb alsó ablak a soros terminál. ami ott megjelenik az van a PIC lábain. Egyébként resettel ujra indítottam a PIC -et direkt a "lemaradás" miatt illetve volt, hogy 5000ms késleltetést adtam neki.
(#) Elektro.on hozzászólása Márc 10, 2016
Sziasztok!
Akadt némi problémám HW UART-al kapcsolatban.(PIC16F690, PIC16F689) Egyszerű karaktereket küldenék egyenlőre próba képen PC re. MikroPaskal minta kódjából nézetem az infókat.
  1. void main() {
  2.   ANSEL  = 0;                     // Configure AN pins as digital
  3.   ANSELH = 0;
  4.  
  5.   UART1_Init(9600);               // Initialize UART module at 9600 bps
  6.   Delay_ms(100);                  // Wait for UART module to stabilize
  7.  
  8.   UART1_Write_Text("Start");
  9.   UART1_Write(10);
  10.   UART1_Write(13);
  11.  
  12. }

Szépen le is fordítja.Szimulátoron látom, hogy a PIC regiszterei teszik a dolgukat(Hardware UART szimulator -on), de kimeneten valójában semmi. Teszteltem egy 16f690 -en PicKit2 uart tool-al de ott sem jön át adat. Több youtube-os videót is láttam ugyan ezzel a minimális kóddal szimulátoron simán működik a kommunikáció. Csatolok egy képet a szimulációról. Nekem jelenleg semmi ötletem merre induljak tovább. Esetleg ha volna használható tippetek nagyon megköszönném.
Következő: »»   39 / 39
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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