שאלה- CCS C תוכנה בסיסית..

הפורום הראשי, אתר הרובוטיקה הישראלי

המנהלים: אסף פוניס, גיא יונה

שאלה- CCS C תוכנה בסיסית..

הודעהעל ידי רן44 » ג' מאי 13, 2008 6:17 pm

היי
רכשתי את הצורב והלוח של PICKIT2 , וקיבלתי איתו את PIC16F690 .(והוא עובד טוב!)
אני מעוניין לכתוב לרכיב הזה ב-C אבל כל הדוגמאות קוד שבאות עם CCSC לא מתאימות לו, ואני לא יודע איך מתאימים אותן אליו.
קיבלתי גם דוגמאות קוד לרכיב הזה באסמבלר ואני לא ממש מצליח להמיר אותן לCCS C ..

בקיצור , איך אני מתחיל לכתוב בCCS תוכנה ללד מהבהב שמתאימה לו , ויוצר לה HEX ?
כל הדוגמאות קוד שמצאתי ,לא מתאימות לרכיב הזה ואני לא יודע איך לבצע את ההתאמה...

תודה..
רן44
חבר פורום
חבר פורום
 
הודעות: 29
הצטרף: ג' ספטמבר 11, 2007 2:12 pm

לא

הודעהעל ידי Ngel » ג' מאי 13, 2008 7:16 pm

לא קבלת איתו דיסק עם דוגמאות?
Ngel
משתמש ותיק
משתמש ותיק
 
הודעות: 310
הצטרף: א' פברואר 04, 2007 6:47 pm

קיבלתי ..

הודעהעל ידי רן44 » ג' מאי 13, 2008 7:49 pm

קיבלתי דוגמאות אבל באסמבלר.... ואני רוצה לכתוב ב-C ....

איך אני עושה את זה? אני ממש רוצה קודים ב-C שמתאימים לרכיב הזה כדי ללמוד אותם...

יש משהו כזה ? יש רעיון מה אני עושה ?
רן44
חבר פורום
חבר פורום
 
הודעות: 29
הצטרף: ג' ספטמבר 11, 2007 2:12 pm

שדג

הודעהעל ידי Ngel » ג' מאי 13, 2008 8:55 pm

יש תוכנה בשם uvision של חברת keil,
איתה אתה כותב בc והיא ממירה לאסמבלר.
Ngel
משתמש ותיק
משתמש ותיק
 
הודעות: 310
הצטרף: א' פברואר 04, 2007 6:47 pm

הודעהעל ידי אמנון » ג' מאי 13, 2008 9:32 pm

רן
עכשיו בקצרה מחר אולי יותר בפרוט.
לתחושתי אתה צריך לשנות את ה INCLUSE בתחילת הקוד לרכיב שלך . כמו כן תיסתכל מה ההגדרות של הרכיב שלך בקובץ ה INCLUDE של ה CCS C ותדע לאיזה פורטים וטימרים אתה יכול ליפנות .
זה בעצם אמור להיות כל ההבדל
אמנון :shock:
אמנון
רובוטריק
רובוטריק
 
הודעות: 2031
הצטרף: ש' יולי 09, 2005 5:41 pm
מיקום: חיפה

אמנון

הודעהעל ידי רן44 » ד' מאי 14, 2008 8:07 am

אמנון , תודה, שיניתי והוא לא מתקפל אני מצרף כאן את הקוד שלי להתחלה:

#include <16F690.h>
#device ADC=12
#fuses INTRC_IO,NOWDT,NOPUT,NOPROTECT,NOCPD,NOMCLR
#use delay(clock=4000000)
#define GP0 PIN_RC0
#define GP1 PIN_RC1
#define GP2 PIN_RC2
#define GP3 PIN_RC3
#define GP4 PIN_RC4
#define GP5 PIN_RC5
#byte OSCCAL = 0x80

והשגיאות :
cannot change device type this far into the code
undifined undetifier PIN_RC0
undentifier is already used in this scope

לא מבין מה אומרות השגיאות האלו ...לרכיב יש רגלים בשמות הנ"ל.. והוא כותב שהשגיאות הן בשורות שהן בכלל ריקות בתוכנה ....
בנוסף האם חייב לכבות את האנלוג לדיגיטל ועוד כל מיני כאלו שאני לא משתמש בהם? (להגדיר OFF)

בקיצור מי שיש לו קוד בשבילי להתחלה עם ההגדרות אני אשמח.
תודה.
רן44
חבר פורום
חבר פורום
 
הודעות: 29
הצטרף: ג' ספטמבר 11, 2007 2:12 pm

הודעהעל ידי אמנון » ד' מאי 14, 2008 8:54 am

רן
כתבתי לך את הקוד הבא :
קוד: בחר הכל

#include <16F690.h>        // Look in this file in your CCS C
#fuses XT,NOWDT,NOPROTECT,put
#use delay(clock=4000000)


void main() {
   while(1)
   {
   
      output_high(PIN_A2);
      delay_ms(500);
      output_low(PIN_A2);
      delay_ms(500);
   
   }
}                                                                   


אצלי הוא עבר קומפילציה.

הLED שלך אמור להיות מחובר לרגל השלישית של PORT A (אבל אתה מוזמן ליבדוק את כל הרגלים)
אתה אמור לראות היבהוב של 1HZ

בנוסף יש לך ב CCSC כלי שניקרא
Suported Devices

הוא בעצם פותח לך את קובץ הH של הרכיב שמגלה לך הרבה מאוד דברים עליו.
אמנון
:shock:
אמנון
רובוטריק
רובוטריק
 
הודעות: 2031
הצטרף: ש' יולי 09, 2005 5:41 pm
מיקום: חיפה

תודה

הודעהעל ידי רן44 » ד' מאי 14, 2008 2:59 pm

תודה אמנון ,
זה עובד ושיחקתי עם זה ,וזה עובד מצוין , יש לי שאלה נוספת ברשותך,
בזמן שהלדים רצים אני רוצה שאם במקביל יתקבל 1 במבוא כלשהוא אז יקרה משהו.(נניח הם יתכבו)
איך כותבים תנאי לכניסה גבוהה במבוא מסויים ?

ואיך אני גורם לזה שהקוד יהיה קשוב לתנאי שלי בכל שנייה ולא רק בתחילת לולאה- זאת אומרת שהקוד ירוץ ובכל רגע נתון הוא יהיה קשוב לפקודת IF מסויימת ולא רק כאשר הוא מגיע אליה..

תודה..
רן44
חבר פורום
חבר פורום
 
הודעות: 29
הצטרף: ג' ספטמבר 11, 2007 2:12 pm

תודה

הודעהעל ידי רן44 » ד' מאי 14, 2008 3:00 pm

תודה אמנון ,
זה עובד ושיחקתי עם זה ,וזה עובד מצוין , יש לי שאלה נוספת ברשותך,
בזמן שהלדים רצים אני רוצה שאם במקביל יתקבל 1 במבוא כלשהוא אז יקרה משהו.(נניח הם יתכבו)
איך כותבים תנאי לכניסה גבוהה במבוא מסויים ?

ואיך אני גורם לזה שהקוד יהיה קשוב לתנאי שלי בכל שנייה ולא רק בתחילת לולאה- זאת אומרת שהקוד ירוץ ובכל רגע נתון הוא יהיה קשוב לפקודת IF מסויימת ולא רק כאשר הוא מגיע אליה..

תודה..
רן44
חבר פורום
חבר פורום
 
הודעות: 29
הצטרף: ג' ספטמבר 11, 2007 2:12 pm

הודעהעל ידי אמנון » ד' מאי 14, 2008 5:58 pm

רן
אני אחלק את התשובה לשניים
על חלק אחד אני אענה ועל השני אני אשלח אותך לילמוד.

1. בכדי לקרוא כניסה ספציפית אתה משתמש ב INPUT ובשם הכניסה
בקוד הבא כאשר מצב הכניסה B0 ב HIGH (או בLOW נכון עד כדי סימן) היציאה A2 תהבהב, אבל ההבהוב לא יפסק מיידית עם שינוי מצב הכניסה B0 אלא רק לאחר סוף הלולאה .

קוד: בחר הכל

#include <16F690.h>        // Look in this file in your CCS C
#fuses XT,NOWDT,NOPROTECT,put
#use delay(clock=4000000)


void main() {
   while(1)
   {
      while(input(PIN_A0)==1)
      {
         output_high(PIN_A2);
         delay_ms(500);
         output_low(PIN_A2);
         delay_ms(500);
      }
     
     
   }
}


2 בכדי לטפל בנושא של כניסה ללא קשר ללולאת התוכנית , ישנם כמה כיווני תיכנות , לדוגמא שימוש באינטראפטים.

בכל מיקרה כל הנושאים הללו מופיעים בדוגמאות הקוד של ה CCS C
ואני זוכר שכתבתה שאתה "תותח בתיכנות" אז זה הזמן להיות תותח ולילמוד לבד.

יש לך מערכת עובדת שב עליה. ועל דוגמאות הקוד והכי חשוב ה HELP המופלא של CCS C

בהצלחה
אמנון


אמנון :shock:
אמנון
רובוטריק
רובוטריק
 
הודעות: 2031
הצטרף: ש' יולי 09, 2005 5:41 pm
מיקום: חיפה

כן

הודעהעל ידי רן44 » ד' מאי 14, 2008 7:17 pm

כן ,ברור שעושים את זה עם אינטראפטים- רק שאני מכיר את ה-SYNTAX שלהם בסביבות אחרות , ופה בCCS C לא מצאתי דף עם כל הפקודות הקיימות- כמו שיש באסמבלר ב-MPLAB.

תודה רבה על התשובה ...
רן44
חבר פורום
חבר פורום
 
הודעות: 29
הצטרף: ג' ספטמבר 11, 2007 2:12 pm

הודעהעל ידי אמנון » ד' מאי 14, 2008 10:26 pm

רן
אל תעליב אבל לטעמי לא חיפשת מספיק.
מקובץ ה H של הרכיב שלך (כתבתי לך להציץ בו)

קוד: בחר הכל

////////////////////////////////////////////////////////////////// INT
// Interrupt Functions: ENABLE_INTERRUPTS(), DISABLE_INTERRUPTS(),
//                      EXT_INT_EDGE()
//
// Constants used in EXT_INT_EDGE() are:
#define L_TO_H              0x40
#define H_TO_L                 0
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:
#define GLOBAL                    0x0BC0
#define INT_RTCC                  0x0B20
#define INT_RB                    0x1FF0B08
#define INT_EXT                   0x0B10
#define INT_AD                    0x8C40
#define INT_TBE                   0x8C10
#define INT_RDA                   0x8C20
#define INT_TIMER1                0x8C01
#define INT_TIMER2                0x8C02
#define INT_CCP1                  0x8C04
#define INT_SSP                   0x8C08
#define INT_EEPROM                0x8D10
#define INT_TIMER0                0x0B20
#define INT_RA                    0xFF0B08
#define INT_OSC_FAIL              0x8D80
#define INT_COMP                  0x8D20
#define INT_COMP2                 0x8D40
#define INT_RA0                   0x010B08
#define INT_RA1                   0x020B08
#define INT_RA2                   0x040B08
#define INT_RA3                   0x080B08
#define INT_RA4                   0x100B08
#define INT_RA5                   0x200B08
#define INT_RB4                   0x1100B08
#define INT_RB5                   0x1200B08
#define INT_RB6                   0x1400B08
#define INT_RB7                   0x1800B08



ומהדף של ה HELP של ה CCSC , שגם אליו הפנתי אותך







Interrupts

--------------------------------------------------------------------------------

The following functions allow for the control of the interrupt subsystem of the microcontroller. With these functions, interrupts can be enable, disabled, and cleared. With the preprocessor directives, a default function can be called for any interrupt that does not have an associated isr, and a global function can replace the compiler generated interrupt dispatcher.



Relevant Functions:

disable_interrupts() Disables the specified interrupt.



enable_interrupts() Enables the specified interrupt.



ext_int_edge() Enables the edge on which the edge interrupt should trigger. This can be

either rising or falling edge.



clear_interrupt() This function will the specified interrupt flag. This can be used if a global

isr is used, or to prevent an interrupt from being serviced.



Relevant Preprocessor:

#device high_ints= This directive tells the compiler to generate code for high priority interrupts.

#int_xxx fast This directive tells the compiler that the specified interrupt should be treated as a high priority

interrupt.



Relevant Interrupts:

#int_default This directive specifies that the following function should be called if an interrupt is triggered but

no routine is associated with that interrupt.



#int_global This directive specifies that the following function should be called whenever an interrupt is

triggered. This function will replace the complier generated interrupt dispatcher.



#int_xxx This directive specifies that the following function should be called whenever the xxx interrupt is

triggered. If the compiler generated interrupt dispatcher is used, the compiler will take care of

clearing the interrupt flag bits.



Relevant Include Files:

none, all functions built in.



Relevant getenv() Parameters:

none



Example Code:



#int_timer0

void timer0interrupt() // #int_timer associates the following function with the

// interrupt service routine that should be called

enable_interrupts(TIMER0); // enables the timer0 interrupt

disable_interrtups(TIMER0); // disables the timer0 interrupt

clear_interrupt(TIMER0); // clears the timer0 interrupt flag


ויש עוד הרבה מאוד בHELP הזה עבור כל פקודה ופקודה, וגם בקודי הדוגמא, והכי חשוב בפורום הממש מופלא של ה CCS C

אמנון :shock:
אמנון
רובוטריק
רובוטריק
 
הודעות: 2031
הצטרף: ש' יולי 09, 2005 5:41 pm
מיקום: חיפה

תודה

הודעהעל ידי רן44 » ד' מאי 14, 2008 10:50 pm

תודה אמנון -אתה צודק לא השקעתי מספיק זמן בחיפוש לפני שאני שואל אותך..

עזרת לי מאוד...
רן44
חבר פורום
חבר פורום
 
הודעות: 29
הצטרף: ג' ספטמבר 11, 2007 2:12 pm

Re: שאלה- CCS C תוכנה בסיסית..

הודעהעל ידי xalmek » ו' נובמבר 17, 2023 10:51 am

xalmek
רובוטריק
רובוטריק
 
הודעות: 246431
הצטרף: ה' נובמבר 16, 2023 10:48 am

Re: שאלה- CCS C תוכנה בסיסית..

הודעהעל ידי xalmek » ש' דצמבר 02, 2023 9:52 am

audiobookkeeper.rucottagenet.rueyesvision.rueyesvisions.comfactoringfee.rufilmzones.rugadwall.rugaffertape.rugageboard.rugagrule.rugallduct.rugalvanometric.rugangforeman.rugangwayplatform.rugarbagechute.rugardeningleave.rugascautery.rugashbucket.rugasreturn.rugatedsweep.rugaugemodel.rugaussianfilter.rugearpitchdiameter.ru
geartreating.rugeneralizedanalysis.rugeneralprovisions.rugeophysicalprobe.rugeriatricnurse.rugetintoaflap.rugetthebounce.ruhabeascorpus.ruhabituate.ruhackedbolt.ruhackworker.ruhadronicannihilation.ruhaemagglutinin.ruhailsquall.ruhairysphere.ruhalforderfringe.ruhalfsiblings.ruhallofresidence.ruhaltstate.ruhandcoding.ruhandportedhead.ruhandradar.ruhandsfreetelephone.ru
hangonpart.ruhaphazardwinding.ruhardalloyteeth.ruhardasiron.ruhardenedconcrete.ruharmonicinteraction.ruhartlaubgoose.ruhatchholddown.ruhaveafinetime.ruhazardousatmosphere.ruheadregulator.ruheartofgold.ruheatageingresistance.ruheatinggas.ruheavydutymetalcutting.rujacketedwall.rujapanesecedar.rujibtypecrane.rujobabandonment.rujobstress.rujogformation.rujointcapsule.rujointsealingmaterial.ru
journallubricator.rujuicecatcher.rujunctionofchannels.rujusticiablehomicide.rujuxtapositiontwin.rukaposidisease.rukeepagoodoffing.rukeepsmthinhand.rukentishglory.rukerbweight.rukerrrotation.rukeymanassurance.rukeyserum.rukickplate.rukillthefattedcalf.rukilowattsecond.rukingweakfish.rukinozones.rukleinbottle.rukneejoint.ruknifesethouse.ruknockonatom.ruknowledgestate.ru
kondoferromagnet.rulabeledgraph.rulaborracket.rulabourearnings.rulabourleasing.rulaburnumtree.rulacingcourse.rulacrimalpoint.rulactogenicfactor.rulacunarycoefficient.ruladletreatediron.rulaggingload.rulaissezaller.rulambdatransition.rulaminatedmaterial.rulammasshoot.rulamphouse.rulancecorporal.rulancingdie.rulandingdoor.rulandmarksensor.rulandreform.rulanduseratio.ru
languagelaboratory.rulargeheart.rulasercalibration.rulaserlens.rulaserpulse.rulaterevent.rulatrinesergeant.rulayabout.ruleadcoating.ruleadingfirm.rulearningcurve.ruleaveword.rumachinesensible.rumagneticequator.rumagnetotelluricfield.rumailinghouse.rumajorconcern.rumammasdarling.rumanagerialstaff.rumanipulatinghand.rumanualchoke.rumedinfobooks.rump3lists.ru
nameresolution.runaphtheneseries.runarrowmouthed.runationalcensus.runaturalfunctor.runavelseed.runeatplaster.runecroticcaries.runegativefibration.runeighbouringrights.ruobjectmodule.ruobservationballoon.ruobstructivepatent.ruoceanmining.ruoctupolephonon.ruofflinesystem.ruoffsetholder.ruolibanumresinoid.ruonesticket.rupackedspheres.rupagingterminal.rupalatinebones.rupalmberry.ru
papercoating.ruparaconvexgroup.ruparasolmonoplane.ruparkingbrake.rupartfamily.rupartialmajorant.ruquadrupleworm.ruqualitybooster.ruquasimoney.ruquenchedspark.ruquodrecuperet.rurabbetledge.ruradialchaser.ruradiationestimator.rurailwaybridge.rurandomcoloration.rurapidgrowth.rurattlesnakemaster.rureachthroughregion.rureadingmagnifier.rurearchain.rurecessioncone.rurecordedassignment.ru
rectifiersubstation.ruredemptionvalue.rureducingflange.rureferenceantigen.ruregeneratedprotein.rureinvestmentplan.rusafedrilling.rusagprofile.rusalestypelease.rusamplinginterval.rusatellitehydrology.ruscarcecommodity.ruscrapermat.ruscrewingunit.ruseawaterpump.rusecondaryblock.rusecularclergy.ruseismicefficiency.ruselectivediffuser.rusemiasphalticflux.rusemifinishmachining.ruspicetrade.ruspysale.ru
stungun.rutacticaldiameter.rutailstockcenter.rutamecurve.rutapecorrection.rutappingchuck.rutaskreasoning.rutechnicalgrade.rutelangiectaticlipoma.rutelescopicdamper.rutemperateclimate.rutemperedmeasure.rutenementbuilding.rutuchkasultramaficrock.ruultraviolettesting.ru
xalmek
רובוטריק
רובוטריק
 
הודעות: 246431
הצטרף: ה' נובמבר 16, 2023 10:48 am

הבא

חזור אל פורום הרובוטיקה

מי מחובר

משתמשים הגולשים בפורום זה: Google [Bot] ו 6 אורחים

cron