בעיה בתיכנות 8051 - מנועי סרבו

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

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

בעיה בתיכנות 8051 - מנועי סרבו

הודעהעל ידי ZivBarlas » ש' ינואר 31, 2009 9:28 pm

היי,

יש לי מיקרו בקר at89s52 ו2 מנועי סרבו.
אני מעוניין ליצור דרך 2 רגלי המיקרו בקר דפקי PWM ל2 המנועים.
מה שניסיתי זה להשתמש בטיימר 0 לספירת מילי שניות וכל 20 מילי שניות להתחיל את הפולסים. כאן אני מפעיל את טיימר 1 ומטעין אותו לרוחב הפולס הקצר מבין השניים. כשהוא מסיים אני מסיים את הפולס הקצר, ומטעין את טיימר 1 להפרש הזמנים בין 2 הפולסים, וכשהוא מסיים אני מסיים גם את הפולס הארוך יותר.

מה שקורה זה ששני המנועים עובדים בכל המהירות לאותו כיוון, ללא קשר לזמנים שקבעתי.

יכול להיות שהבעיה היא שהמיקרו בקר לא מספיק חזק כדי לבצע את זה?

נ.ב.
אני מתכנת ב-C בסביבת KEIL.

תודה מראש :wink:
ZivBarlas
חבר פורום
חבר פורום
 
הודעות: 28
הצטרף: ה' אפריל 24, 2008 3:53 pm

יכול להיות

הודעהעל ידי Ngel » ש' ינואר 31, 2009 9:46 pm

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

הודעהעל ידי ZivBarlas » ש' ינואר 31, 2009 9:56 pm

תודה רבה!

הנה הקוד:
p1.0 מהבהב כל שנייה לצורך אינדיקציה. הרגליים מהן יוצאים הפולסים הם p1.1 ו-p1.2

קוד: בחר הכל
 #include<REGX51.H>
   unsigned int cnt=0;
   unsigned int cnt2=20;
   unsigned int servo1;
   unsigned int servo2;
   unsigned int servocnt=0;
   unsigned int delta=0;
   bit flag=0;

void timer0() interrupt 1    //1mSec
{
      TR0=0;
      TL0=0x17;
      TH0=0xfc;
      cnt++;
      cnt2--;
      if(cnt2==0)
      {
            flag=0;
           cnt2=20;
            P1_1=1;
         P1_2=1;
         if(servo1>servo2)
         {   
            TH1=(65535-servo2)/256;
            TL1=(65535-servo2)%256;   
            delta=servo1-servo2;   
         }
         else
         {   
            TH1=(char)((65535-servo1)/256);
            TL1=(char)((65535-servo1)%256);   
            delta=servo2-servo1;      
         }
         TR1=1;   
      }
      TR0=1;
}

void timer1() interrupt 3   
{
      
      TR1=0;
      if(flag==1)
      {
         P1_1=0;
         P1_2=0;   
      }
      else
      {      
         if(servo1>servo2)
         {
            P1_2=0;
         }   
         else
         {
            P1_1=0;
         }
         TH1=(char)((65535-delta)/256);
         TL1=(char)((65535-delta)%256);
         flag=1;
         TR1=1;   
      }   
}

void main()
{
   P1_0=0;
   P1_1=0;
   P1_2=0;
   P1_3=0;
   
   EA=0;   
   servo2=1600;
   servo1=1400;
   TMOD=0x11;
   TL0=0x17;
   TH0=0xfc;
   TL1=0x23;
   TH1=0xfa;   
   IE=0x8a;
   TR0=1;
   
   while(1)
   {
      if(cnt>1000)
      {
         cnt=0;
      P1_0=~P1_0;
      }      
   }
}
ZivBarlas
חבר פורום
חבר פורום
 
הודעות: 28
הצטרף: ה' אפריל 24, 2008 3:53 pm

בדקת

הודעהעל ידי Ngel » ש' ינואר 31, 2009 10:35 pm

בדקת עם סקופ שהרגליים הללו מהבהבות?

ונראה לי שכחת לכתוב
EA=1;
על מנת לאפשר את המונים
Ngel
משתמש ותיק
משתמש ותיק
 
הודעות: 310
הצטרף: א' פברואר 04, 2007 6:47 pm

גם

הודעהעל ידי Ngel » ש' ינואר 31, 2009 10:37 pm

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

הודעהעל ידי ZivBarlas » ש' ינואר 31, 2009 10:46 pm

היי,

הסיבית EA היא ה-MSB באוגר IE, לכן לא שכחתי ממנו...
גם ה- unsignedchar לא עוזר...
ZivBarlas
חבר פורום
חבר פורום
 
הודעות: 28
הצטרף: ה' אפריל 24, 2008 3:53 pm

הודעהעל ידי The arctic wolf » א' פברואר 01, 2009 7:06 pm

שלום זיו ונתנאל.
זיו,רק העפתי מבט קצר בתוכנית,אבל הנה כמה שאלות שנובעות ממבט ראשון:
1.למה אתה מגדיר את המשתנים SERVO1 ו-SERVO2 ואף פעם לא משתמש בהם?
(אומנם נתת להם ערך,אבל אף פעם לא שינית אותו במהלך התוכנית...).
2. אתה מחשב את ה-DELTA אבל אף פעם לא משתמש בה...

הבעיה היא לא בבקר(וגם הגדרות האוגרים נראים בסדר ממבט ראשון),
הבעיה היא באלגוריתם שלך...

ועוד כמה דברים:
תבדוק שהערכים שאתה מטעין לתוך הקוצב זמן נכונים(כך בחשבון ש-89S52 מחלק את תדר הגביש ב-12).

תעיף מבט באתר אשר מסביר שליטה על סרבו(לא מספיק שהפולס הוא כל 20 מילישניות,עליו גם להיות באורך מסויים).

תנסה שתוכנית הפסיקה תיהיה כמה שיותר קצרה(שלך עמוסה מאוד).

כמו כן,מהעובדה שהסרבו שלך מסתובב רציף במקום לתת זוית אני מבין שפרצת אותו,
תבדוק שביצעת את הפריצה נכון.

אם יהיה לי זמן פנויי אני אסתכל בתוכנית שלך לעומק,אבל אלה הדברים אשר עולים ממבט ראשוני...

אנדריי.

נ.ב.
עכשיו אני רוצה לשאול שאלה כבנאדם שבדרך כלל עובד עם מיקרובקרים בשפת ASSEMBLER ולא בשפת C :
מה פירוש הסימן הבא שהשתמשת בו: ~= (שווה בערך??)
זה שהרעיון משוגע עוד לא אומר שהוא לא יצליח!
The arctic wolf
רובוטריק
רובוטריק
 
הודעות: 1007
הצטרף: ד' ינואר 26, 2005 12:43 am

הודעהעל ידי ZivBarlas » א' פברואר 01, 2009 8:17 pm

שלום אנדריי,

לגבי המשתנים servo1 ו-servo2 - שמכילים את הזמן (במיקרו שניות) של כל פולס (כמובן שאני מנסה לשנות את רוחב הפולס בין 1.25 ל-1.75 מילי שניות. כמובן שלאחר שאני אפתור את הבעיה הם יהיו משתנים ושיתנו במהלך התוכנית הראשית של הרובוט.

לגבי המשתנה delta - בו אני שומר את ההפרש בין 2 זמני הפולסים לטעינה חוזרת של טיימר 1.

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


כשעבדתי רק עם מנוע אחד מבלי לחשב את ה-delta הכל עבד בסדר, לכן אני יודע שהמנועי סרבו פרוצים בסדר.

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

לשאלתך, הסימן ~ מקביל לפקודה CPL בשפת האסמבלר (היפוך סיבית). כך יצרתי הבהוב של לד ברגל p1.0.

תודה רבה! :wink:
זיו
ZivBarlas
חבר פורום
חבר פורום
 
הודעות: 28
הצטרף: ה' אפריל 24, 2008 3:53 pm

הודעהעל ידי ZivBarlas » א' פברואר 01, 2009 10:06 pm

הבעיה נפתרה :D

באמת הפרדתי בין 2 הפולסים וזה עזר.

תודה רבה לכל העוזרים!

זיו
ZivBarlas
חבר פורום
חבר פורום
 
הודעות: 28
הצטרף: ה' אפריל 24, 2008 3:53 pm

הודעהעל ידי The arctic wolf » ב' פברואר 02, 2009 5:52 am

היי זיו,
אני שמח שנפתרה לך הבעיה! :)

לגבי השאלה הקודמת שלי:
אני הבנתי למה תיכננת שהמשתנים ישמשו,
השאלה הייתה למה אינך משתמש בהם!
בכל מקרה,זה כבר לא משנה עכשיו...
(ואני רואה גם שפיספסתי משהו מקודם,ואתה אכן השתמשת ב-DELTA)

ותודה על התשובה לשאלתי!



אנדריי.
זה שהרעיון משוגע עוד לא אומר שהוא לא יצליח!
The arctic wolf
רובוטריק
רובוטריק
 
הודעות: 1007
הצטרף: ד' ינואר 26, 2005 12:43 am

Re: בעיה בתיכנות 8051 - מנועי סרבו

הודעהעל ידי xalmek » ו' נובמבר 17, 2023 2:01 pm

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

Re: בעיה בתיכנות 8051 - מנועי סרבו

הודעהעל ידי xalmek » ש' דצמבר 02, 2023 1:09 pm

http://audiobookkeeper.ruhttp://cottagenet.ruhttp://eyesvision.ruhttp://eyesvisions.comhttp://factoringfee.ruhttp://filmzones.ruhttp://gadwall.ruhttp://gaffertape.ruhttp://gageboard.ruhttp://gagrule.ruhttp://gallduct.ruhttp://galvanometric.ruhttp://gangforeman.ruhttp://gangwayplatform.ruhttp://garbagechute.ruhttp://gardeningleave.ruhttp://gascautery.ruhttp://gashbucket.ruhttp://gasreturn.ruhttp://gatedsweep.ruhttp://gaugemodel.ruhttp://gaussianfilter.ruhttp://gearpitchdiameter.ru
http://geartreating.ruhttp://generalizedanalysis.ruhttp://generalprovisions.ruhttp://geophysicalprobe.ruhttp://geriatricnurse.ruhttp://getintoaflap.ruhttp://getthebounce.ruhttp://habeascorpus.ruhttp://habituate.ruhttp://hackedbolt.ruhttp://hackworker.ruhttp://hadronicannihilation.ruhttp://haemagglutinin.ruhttp://hailsquall.ruhttp://hairysphere.ruhttp://halforderfringe.ruhttp://halfsiblings.ruhttp://hallofresidence.ruhttp://haltstate.ruhttp://handcoding.ruhttp://handportedhead.ruhttp://handradar.ruhttp://handsfreetelephone.ru
http://hangonpart.ruhttp://haphazardwinding.ruhttp://hardalloyteeth.ruhttp://hardasiron.ruhttp://hardenedconcrete.ruhttp://harmonicinteraction.ruhttp://hartlaubgoose.ruhttp://hatchholddown.ruhttp://haveafinetime.ruhttp://hazardousatmosphere.ruhttp://headregulator.ruhttp://heartofgold.ruhttp://heatageingresistance.ruhttp://heatinggas.ruhttp://heavydutymetalcutting.ruhttp://jacketedwall.ruhttp://japanesecedar.ruhttp://jibtypecrane.ruhttp://jobabandonment.ruhttp://jobstress.ruhttp://jogformation.ruhttp://jointcapsule.ruhttp://jointsealingmaterial.ru
http://journallubricator.ruhttp://juicecatcher.ruhttp://junctionofchannels.ruhttp://justiciablehomicide.ruhttp://juxtapositiontwin.ruhttp://kaposidisease.ruhttp://keepagoodoffing.ruhttp://keepsmthinhand.ruhttp://kentishglory.ruhttp://kerbweight.ruhttp://kerrrotation.ruhttp://keymanassurance.ruhttp://keyserum.ruhttp://kickplate.ruhttp://killthefattedcalf.ruhttp://kilowattsecond.ruhttp://kingweakfish.ruhttp://kinozones.ruhttp://kleinbottle.ruhttp://kneejoint.ruhttp://knifesethouse.ruhttp://knockonatom.ruhttp://knowledgestate.ru
http://kondoferromagnet.ruhttp://labeledgraph.ruhttp://laborracket.ruhttp://labourearnings.ruhttp://labourleasing.ruhttp://laburnumtree.ruhttp://lacingcourse.ruhttp://lacrimalpoint.ruhttp://lactogenicfactor.ruhttp://lacunarycoefficient.ruhttp://ladletreatediron.ruhttp://laggingload.ruhttp://laissezaller.ruhttp://lambdatransition.ruhttp://laminatedmaterial.ruhttp://lammasshoot.ruhttp://lamphouse.ruhttp://lancecorporal.ruhttp://lancingdie.ruhttp://landingdoor.ruhttp://landmarksensor.ruhttp://landreform.ruhttp://landuseratio.ru
http://languagelaboratory.ruhttp://largeheart.ruhttp://lasercalibration.ruhttp://laserlens.ruhttp://laserpulse.ruhttp://laterevent.ruhttp://latrinesergeant.ruhttp://layabout.ruhttp://leadcoating.ruhttp://leadingfirm.ruhttp://learningcurve.ruhttp://leaveword.ruhttp://machinesensible.ruhttp://magneticequator.ruhttp://magnetotelluricfield.ruhttp://mailinghouse.ruhttp://majorconcern.ruhttp://mammasdarling.ruhttp://managerialstaff.ruhttp://manipulatinghand.ruhttp://manualchoke.ruhttp://medinfobooks.ruhttp://mp3lists.ru
http://nameresolution.ruhttp://naphtheneseries.ruhttp://narrowmouthed.ruhttp://nationalcensus.ruhttp://naturalfunctor.ruhttp://navelseed.ruhttp://neatplaster.ruhttp://necroticcaries.ruhttp://negativefibration.ruhttp://neighbouringrights.ruhttp://objectmodule.ruhttp://observationballoon.ruhttp://obstructivepatent.ruhttp://oceanmining.ruhttp://octupolephonon.ruhttp://offlinesystem.ruhttp://offsetholder.ruhttp://olibanumresinoid.ruhttp://onesticket.ruhttp://packedspheres.ruhttp://pagingterminal.ruhttp://palatinebones.ruhttp://palmberry.ru
http://papercoating.ruhttp://paraconvexgroup.ruhttp://parasolmonoplane.ruhttp://parkingbrake.ruhttp://partfamily.ruhttp://partialmajorant.ruhttp://quadrupleworm.ruhttp://qualitybooster.ruhttp://quasimoney.ruhttp://quenchedspark.ruhttp://quodrecuperet.ruhttp://rabbetledge.ruhttp://radialchaser.ruhttp://radiationestimator.ruhttp://railwaybridge.ruhttp://randomcoloration.ruhttp://rapidgrowth.ruhttp://rattlesnakemaster.ruhttp://reachthroughregion.ruhttp://readingmagnifier.ruhttp://rearchain.ruhttp://recessioncone.ruhttp://recordedassignment.ru
http://rectifiersubstation.ruhttp://redemptionvalue.ruhttp://reducingflange.ruhttp://referenceantigen.ruhttp://regeneratedprotein.ruhttp://reinvestmentplan.ruhttp://safedrilling.ruhttp://sagprofile.ruhttp://salestypelease.ruhttp://samplinginterval.ruhttp://satellitehydrology.ruhttp://scarcecommodity.ruhttp://scrapermat.ruhttp://screwingunit.ruhttp://seawaterpump.ruhttp://secondaryblock.ruhttp://secularclergy.ruhttp://seismicefficiency.ruhttp://selectivediffuser.ruhttp://semiasphalticflux.ruhttp://semifinishmachining.ruhttp://spicetrade.ruhttp://spysale.ru
http://stungun.ruhttp://tacticaldiameter.ruhttp://tailstockcenter.ruhttp://tamecurve.ruhttp://tapecorrection.ruhttp://tappingchuck.ruhttp://taskreasoning.ruhttp://technicalgrade.ruhttp://telangiectaticlipoma.ruhttp://telescopicdamper.ruhttp://temperateclimate.ruhttp://temperedmeasure.ruhttp://tenementbuilding.rutuchkashttp://ultramaficrock.ruhttp://ultraviolettesting.ru
xalmek
רובוטריק
רובוטריק
 
הודעות: 221558
הצטרף: ה' נובמבר 16, 2023 10:48 am

Re: בעיה בתיכנות 8051 - מנועי סרבו

הודעהעל ידי xalmek » ו' פברואר 02, 2024 5:57 pm

инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинйоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоtuchkasинфоинфо
xalmek
רובוטריק
רובוטריק
 
הודעות: 221558
הצטרף: ה' נובמבר 16, 2023 10:48 am

Re: בעיה בתיכנות 8051 - מנועי סרבו

הודעהעל ידי xalmek » ש' מרץ 02, 2024 11:40 am

инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинйоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфо
инфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоинфоtuchkasинфоинфо
xalmek
רובוטריק
רובוטריק
 
הודעות: 221558
הצטרף: ה' נובמבר 16, 2023 10:48 am

Re: בעיה בתיכנות 8051 - מנועי סרבו

הודעהעל ידי xalmek » ה' מאי 02, 2024 3:04 pm

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

הבא

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

מי מחובר

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

cron