Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   53 / 153
(#) potyo válasza netnet.hu hozzászólására (») Jan 5, 2012 / 1
 
Próbáld a 376. sort így:
iDelay += ((unsigned)ADRESH) << 8;>>
(#) netnet.hu válasza potyo hozzászólására (») Jan 5, 2012 /
 
Köszönöm!

Megoldottad!
(#) netnet.hu válasza potyo hozzászólására (») Jan 5, 2012 /
 
Lenne még egy kis gond. Ez a táblázat annak eredménye, hogy megnéztem iDelay értékét semmi rákötve, illetve egy ugyanrra az értékre állított poti minden esetben. Miért vannak ezek a nagy szórások?

ANx - üresjárat érték - potméteres érték

AN1 - 1023 - 1023
AN2 - 0 - 805
AN3 - 161 - 942
AN4 - 42 - 942
AN5 - 27 - 942

Eddig azt hittem, hogy an 4 és 5 rosz, de most látom, hogy ugyanazt az értéket mutatják, tehát jónak tűnnek. AN1 és 2-n már lefutott egy ADC ez előtt, tehát lehet, hogy az okozza a hibás értéket. De nem tudom biztosra.

Ez most IC sajátosság, rossz a NYÁK-om, vagy rossz a programom?
(#) potyo válasza netnet.hu hozzászólására (») Jan 5, 2012 / 1
 
Csatornaválasztás és konverzió indítása között várni kell valamennyit. Fejből nem tudom, adatlapban utánanézhetsz. Próbára az ADCON0bits.CHS = anx; sorok után tegyél be 1ms várakozást.

Egyébként az AD átalakítót csak egyszer kell beállítani és bekapcsolni, nem kell minden alprogramban újra beállítani, ott elég csak kiválasztani a csatornát, megvárni a megfelelő időt, és utána elindítani a konverziót.
(#) netnet.hu válasza potyo hozzászólására (») Jan 5, 2012 /
 
Ismét hasznos válasz, köszönöm!
Most commenteltem a többi AD átalakítást, hogy ne zavarjon be és leteszteltem AN1-et. Sajna ez nem működik jól: 987 volt a legalacsonyabb érték, amit tudtam csinálni potméterrel. A láb az RA0/AN0/CVREF/VREF-/C1IN+/INT0/PGD

Gondolom a Vref- miatt lehet a gond. Ugye? Azt kéne kikapcsolnom az ADCON1 regiszteren?
(#) Hp41C válasza netnet.hu hozzászólására (») Jan 6, 2012 /
 
Milyen reviziójú a 18F14K22? Az errata -t olvastad már?
(#) netnet.hu válasza Hp41C hozzászólására (») Jan 6, 2012 /
 
Köszi, eszembe se jutott! Pedig én is mindig felhívom rá más figyelmét!!!! A 18F97J60-nál is egy évig szenvedtem egy problémával, míg az errata-an megtaláltam a magyarázatot.

Most annyira fáradt vagyok, hogy összefolynak az angol szavak a szemem előtt, úgyhogy később fogom elolvasni.
(#) netnet.hu hozzászólása Jan 7, 2012 /
 
Kicsit összetett ez a kérdés, ezért hozzáértő ember válaszát igényli.

Van egy DEE Emulation nevű dolog, amivel egyes PIC-ek Flash memóriájában emulálhatok egy eeprom-ot.

Ezt meg is tettem, sikerült char hosszúságú változókat elmenteni és kiolvasni.

Tettem egy próbát egy array mentésére, de nem hiszem, hogy jól sikerült. Ha mégis, nem vagyok benne biztos, hogyan is tudnám kiolvasni.

Beszúrom ide a kódot, de mellékelem a projectet is:

  1. /************************************************************************
  2.  
  3. Ez a program a 128K program memory-ba teszi a virtuális eepromot,
  4. azaz a flash típúsu memóriába
  5.  
  6. Csak 18 J jelzésű procivl működik
  7.  
  8. 8 bites adatokat lehet tárolni
  9. jelek szerint max 1 char, azaz 8bit írható egyszerre
  10.  
  11.  
  12. *
  13. *   Emulating Data EEPROM for PIC18 Microcontrollers that support
  14. *           the ability to self program a single location
  15. *                (two bytes) of program memory
  16. *
  17. * This routine is an example of a write and read operation using emulated
  18. * Data EEPROM algorithm. Add the variable "value" to the MPLAB IDE Watch
  19. * Window using an emulator. The expected value is 25 after the read
  20. * function executes. Place a breakpoint on the Nop(); in main to see
  21. * value = 25.
  22. * The configuration bit settings match those of the HPC Explorer
  23. * Development Board. Compatable settings are selected at compile time
  24. * based on the device selected in MPLAB IDE.
  25. *************************************************************************
  26. * FileName:     main.c
  27. * FileName:     DEE Emulation 8-bit.c
  28. * Dependencies: NoFilDEE.asm
  29.                 DEE Emulation 8-bit.h
  30.                 NoFilDEE.inc
  31. * Compiler:     MPLAB C18, v3.02 or higher
  32. * Company:      Microchip Technology, Inc.
  33. *
  34. * Software License Agreement
  35. *
  36. * Copyright Š 2007 Microchip Technology Inc. All rights reserved.
  37. *
  38. * Microchip licenses to you the right to use, modify, copy and distribute
  39. * Software only when embedded on a Microchip microcontroller or digital
  40. * signal controller, which is integrated into your product or third party
  41. * product (pursuant to the sublicense terms in the accompanying license
  42. * agreement).
  43. *
  44. * You should refer to the license agreement accompanying this Software for
  45. * additional information regarding your rights and obligations.
  46. *
  47. * SOFTWARE AND DOCUMENTATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY
  48. * KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY
  49. * WARRANTY OF MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A
  50. * PARTICULAR PURPOSE. IN NO EVENT SHALL MICROCHIP OR ITS LICENSORS BE
  51. * LIABLE OR OBLIGATED UNDER CONTRACT, NEGLIGENCE, STRICT LIABILITY,
  52. * CONTRIBUTION, BREACH OF WARRANTY, OR OTHER LEGAL EQUITABLE THEORY ANY
  53. * DIRECT OR INDIRECT DAMAGES OR EXPENSES INCLUDING BUT NOT LIMITED TO ANY
  54. * INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL DAMAGES, LOST
  55. * PROFITS OR LOST DATA, COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY,
  56. * SERVICES, OR ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO
  57. * ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
  58. *
  59. * Author                           Date                     Comment
  60. *************************************************************************
  61. * S. Cowden                     2007/05/24      Version 1.0.0 - Initial Release
  62. * Pradeep Budagutta       2007/05/24      Version 1.1.1 - Added test for above 255 addresses
  63. ************************************************************************/
  64.  
  65. #include <p18cxxx.h>
  66. #include "DEE Emulation 8-bit\DEE Emulation 8-bit.h"
  67.  
  68. //// Set up the Configuration Regs
  69. #if defined (__18F87J11)
  70.     #pragma config WDTEN = OFF
  71.     #pragma config FOSC = HS
  72.     #pragma config MODE = MM
  73.     #pragma config XINST = OFF
  74. #else
  75.  
  76. //#pragma config FOSC2 = OFF
  77.     #pragma config XINST = OFF
  78.     //#pragma config WDT = OFF
  79.     //#pragma config MODE = MM
  80. #pragma config WDT=OFF, FOSC2=ON, FOSC=HSPLL, ETHLED=ON
  81. #endif
  82.  
  83.  
  84.  
  85. void main(void)
  86. {
  87.  
  88.  
  89. unsigned char szo[] = "négy";
  90. unsigned char num = sizeof(szo)-2;
  91. unsigned int szocim = 0x10;
  92. unsigned int szamlalo = 0;
  93.     unsigned char value;
  94.     unsigned char DEEdata = 100;
  95.     unsigned int  DEEaddr = 0x04;
  96.  
  97.  
  98.     unsigned int ertek;
  99.     unsigned int adat = 123;
  100.     unsigned int  cim1 = 0x06;
  101.  
  102.     DataEEInit();
  103.     dataEEFlags.val = 0;
  104.  
  105.     DataEEWrite(DEEdata,DEEaddr);
  106.     DataEEWrite(adat,cim1);
  107.     value = DataEERead(DEEaddr);
  108.     ertek = DataEERead(cim1);
  109.  
  110.  
  111. for (szamlalo = 0; szamlalo < num; szamlalo++)
  112. {
  113.     DataEEWrite(szo[szamlalo],szocim);
  114. szocim++;
  115. //szamlalo++
  116. }
  117.  
  118.  
  119.  
  120.  
  121.    Nop();// Here is he breakpoint
  122.  
  123.  
  124.  
  125.     DataEEWrite(2*DEEdata,254);
  126.     value = DataEERead(DEEaddr);
  127.     Nop();
  128.  
  129.     DataEEWrite(3*DEEdata,254 + DEEaddr);
  130.     value = DataEERead(DEEaddr);
  131.     Nop();
  132.  
  133.     return;
  134. }
(#) netnet.hu hozzászólása Jan 8, 2012 /
 
Helló!

Van egy ilyen kódom:
  1. int i, t, res;
  2.          unsigned int chksum = 0, data;
  3.          unsigned int * p = (unsigned int *) &st;
  4.  
  5.          // Chksum
  6.          t = sizeof( st );
  7.          t /= 2;
  8.          for ( i = 0; i < t - 1; i++ )
  9.          {
  10.              data = *p;
  11.              chksum += data;
  12.              p++;
  13.          }
  14.  
  15.          st.chksum = -chksum;
  16.        
  17.          for ( i = 0; i < t; i++ )
  18.          {
  19.              res = DataEEWrite( *p, i );
  20.              p++;
  21.          }


Azt szeretném, ha valaki elmagyarázná, hogy a cillag s a &st miket jelentenek.
(#) benjami válasza netnet.hu hozzászólására (») Jan 8, 2012 /
 
3. sor: definiálunk egy előjel nélküli egész típusú változóra mutató pointert, aminek a kezdőértékét is rögtön beállítjuk hogy st változóra mutasson.
10. sor: data változóba tegye be 'p' pointer által mutatott változóból az értéket.
Érdemes átnézni a C nyelv mutató használatát.
(#) cassis hozzászólása Jan 8, 2012 /
 
  1. // Calculate the minimum number of wait states to ensure a 75ns or longer pulse width for READ and WRITE strobes
  2. #if defined(__PIC32MX__)// PIC32 is offset by one (i.e. 0 = one wait state)
  3. #define OPTIMAL_PMP_WAIT_STATES ((BYTE)((double)GetPeripheralClock()*0.000000075))
  4. #else
  5. #define OPTIMAL_PMP_WAIT_STATES ((BYTE)((double)GetPeripheralClock()*0.000000075 + 0.9999))
  6. #endif
  7. PMMODEbits.WAITM = OPTIMAL_PMP_WAIT_STATES;

A fenti példa kódot találtam a PMP busz beállításának optimalizásához. Szerintetek hogyan értelmezendő a OPTIMAL_PMP_WAIT_STATES értékének kiszámítása? Lényegében asm re akarom átültetni az eredményt.
(#) potyo válasza benjami hozzászólására (») Jan 8, 2012 / 1
 
Fogod a perifériabusz órajelét, megszorzod 0.000000075-el, levágod a tizedeseket belőle és ennyit kell írnod a WAITM-be. Ha nem PIC32-ről van szó, akkor a szorzat eredményéhez először még hozzáadsz 0.9999-et, és utána vágod le a tizedeseket.
(#) cassis válasza potyo hozzászólására (») Jan 9, 2012 /
 
Köszönöm a gyors választ! Még egy kérdés lenne: Én 18F et 48 MHz en hajtom, ekkor az az utasításciklusa 12 MIPS. A perifériabusz (Parallell Port) órajele ekkor melyik lesz?
(#) icserny válasza cassis hozzászólására (») Jan 9, 2012 /
 
Nagy valószínűséggel a 12 MHz. Pontosabb info az adatlapban található (pl. Timing diagram a Parallel port leírásánál).
(#) cassis válasza icserny hozzászólására (») Jan 9, 2012 /
 
Néztem az adatlapot, de nemderült ki sokminden róla. Viszont lenne még kérdésem, de ez egy C fórum, ezért átmennék a kérdésemmel ide.
(#) trudnai válasza potyo hozzászólására (») Jan 11, 2012 /
 
Gondolom cassis-nek akartal valaszolni
(#) potyo válasza trudnai hozzászólására (») Jan 11, 2012 /
 
Igen, neki. :yes:
(#) laciubul hozzászólása Jan 13, 2012 /
 
Sziasztok!

Valaki tudna egy kis segítséget nyújtani nekem, hogy milyen programmal és hogyan kéne ezt a fájlt (pic.c) átkonvertálni .hex formátumba?

pic.c
    
(#) mazso1988 válasza laciubul hozzászólására (») Jan 13, 2012 /
 
Szerintem a CCS Compiller is lefordítja.
(#) MPi-c válasza laciubul hozzászólására (») Jan 13, 2012 /
 
A konfigurációs beállítást nézve a 9.81 verzió előtti HI-TECH PIC10/12/16 fordítót próbáld, de a delay.c-nek is meg kell lennie.
(#) MPi-c válasza mazso1988 hozzászólására (») Jan 13, 2012 /
 
A "pic.h" és a
  1. __CONFIG(XT&WDTDIS&PWRTEN&LVPDIS);
a CCS-re nem jellemző.
(#) trudnai válasza MPi-c hozzászólására (») Jan 13, 2012 /
 
Googli szerint Hi-Tech C
(#) laciubul válasza MPi-c hozzászólására (») Jan 13, 2012 /
 
Köszönöm a segítséget, sikere megoldottam, HI-Tech -el meg átírtam egy delay.c -t és már megy is minden..és még egy kérdésem lenne hogy ezek a "for(i=0;i<8;i++)" sorok ez mit jelentenek vagy ez: "for(a=0;a<4;a++)" vagy "for(k=0;k<200;k++)" ?>>>
(#) foxi63 válasza laciubul hozzászólására (») Jan 13, 2012 /
 
Ezek ciklusok, illetve ez csak a feje annyiszor fut le amennyi a bennelévő változó kezdeti és végértéke a kezdő nem feltétlen nulla, a végző nem feltétlen pozitív, a lépés nagysága nem feltétlen 1, tehát elég nagy a szabadság.... ez a C
(#) speeedfire hozzászólása Jan 23, 2012 1 /
 
Meglehet oldani egy rotatry encoderrel azt, hogy:
1. ha tekerem akkor hangerőt szabályoz
2. ha megnyomom a középső gombot akkor mute
3. ha x mp-ig nyomom a középső gombot stand by

(#) kissi válasza speeedfire hozzászólására (») Jan 23, 2012 /
 
Persze, csak szoftver kérdése

Mi a kérdésed ?

Steve
(#) trudnai válasza speeedfire hozzászólására (») Jan 23, 2012 /
 
Igen, meg lehet oldani vele...
(#) speeedfire hozzászólása Jan 24, 2012 /
 
Köszi, mindkettőtöknek.
Egyelőre más kérdés nincs.
(#) kepitu hozzászólása Feb 2, 2012 1 /
 
Sziasztok!

A mellékelt thermostátokat szeretném kipróbálni.
A HW-es rész megépítés, pr./hex/ Pic-be töltése, beüzemelés nem okoz gondot.
Korábban, tíz-egynéhány évvel ezelőtt próbálkoztam Pic progz.-al, de mivel egy led villogtatásához kb. másfél oldalnyi pr.-ot kellett volna írni, feladtam.
A mellékelt Thm.-ok forrás fileket próbáltam Hex-be konvertálni sikertelenül és itt elfogyott a türelmem.
A mellékelt forrás fileket kérném hex-be fordítani.
Köszönettel: Kepitu
(#) kepitu hozzászólása Feb 2, 2012 1 /
 
Sziasztok!
A mellékelt forrásfile HEX-be fordításához kérnék segítséget.
Köszönettel: kepitu
Bővebben: Linkhttp://www.guidecircuit.com/Circuit-Microcontroller-D...at.htm
Következő: »»   53 / 153
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