שאלה על קוד..

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

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

שאלה על קוד..

הודעהעל ידי roby69 » ש' ספטמבר 27, 2008 10:27 am

היי

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

אני יודע שישנן 2 דרכים לעשות את זה:
1.אינראפט חיצוני שלא עובד לי פשוט.
2. על ידי CASES... -השאלה היא אם עובדים ככה בכלל ברובוטיקה? ואיך בדיוק ?

מי שיודע איך עושים זאת עם אינטראפט בבקשה לא להפנות אותי לקרוא כל מיני דברים, אני אשמח מאוד אם תוכלו לכתוב לי 2-3 שורות קוד ספציפית לרכיב שלי - אני פשוט רוצה לדעת מה השורת הקוד בכדי להגדיר אותו ואיך בדיוק אני קורא לו.
בשיטת הCASES אשמח מאוד גם לדעת איך עושים .

אני מאוד אודה למי שיוכל לתת תשובה ספציפית עם שורות קוד !

תודה רבה .
roby69
משתמש חדש
משתמש חדש
 
הודעות: 16
הצטרף: ש' ספטמבר 27, 2008 10:01 am

הודעהעל ידי עוגי » ש' ספטמבר 27, 2008 3:58 pm

אין לי תשובה בשבילך ב-2-3 שורות קוד, ולא תשובה ב-C
מה שמצורף כאן זה קוד ASSEMBLY לרכיב שאתה עובד איתו, שממתין לפסיקת טיימר ובתגובה מבצע המרת A/D.

התכנית כוללת את כל ההגדרות הנדרשות - של הטיימר, בקר הפסיקות, המרות A/D וכו', וניתן לקמפל אותה כמות שהיא.
היא לקוחה מ-TUTORIAL של PICKIT - קיט קטנטן של MICROCHIP שמציג בצורה פשוטה מספר יכולות של המעבד.

לא יודע איך מצמידים את הקוד לשמאל, וזה נראה מזעזע בהודעה. שווה להעביר את הקוד ל-NOTEPAD או TEXT EDITOR אחר ולהסתכל על זה.

בתקווה שזה יעזור...
קוד: בחר הכל
;******************************************************************************
;Software License Agreement                                         
;                                                                   
;The software supplied herewith by Microchip Technology             
;Incorporated (the "Company") is intended and supplied to you, the 
;Company’s customer, for use solely and exclusively on Microchip   
;products. The software is owned by the Company and/or its supplier,
;and is protected under applicable copyright laws. All rights are   
;reserved. Any use in violation of the foregoing restrictions may   
;subject the user to criminal sanctions under applicable laws, as   
;well as to civil liability for the breach of the terms and         
;conditions of this license.                                       
;                                                                   
;THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION. NO WARRANTIES, 
;WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED 
;TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A       
;PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, 
;IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR         
;CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.       
; *******************************************************************
; PICkit 2 Lesson 10 - Interrupts
;
; This shows how to configure and use the Timer 0 interrupt to
; trigger reading the A2D every
;

#include <p16F690.inc>
   __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)

   cblock   0x20
Delay1         ; Assign an address to label Delay1
Delay2   
Display       ; define a variable to hold the diplay
Direction
LookingFor
T0Semaphore
   endc
   
; Flag Definitions

   cblock 0x70   ; put these up in unbanked RAM
W_Save
STATUS_Save
   endc
   
   org 0
   goto   Start
   nop
   nop
   nop
ISR   movwf   W_Save
   movf   STATUS,w
   movwf   STATUS_Save
   
;   btfsc   PIR1,T1IF   ; Uncomment if you needed to check Timer 1
;   goto   ServiceTimer1
   btfsc   INTCON,T0IF
   goto   ServiceTimer0
;   btfsc   PIC1,ADIF   ; Uncomment if you need to check the ADC
;   goto   ServiceADC
   goto   ExitISR      
   
ServiceTimer0
   bcf   INTCON,T0IF   ; clear the interrupt flag. (must be done in software)
   bsf   T0Semaphore,0   ; signal the main routine that the Timer has expired
   bsf   ADCON0,GO   ; start conversion
   btfsc   ADCON0,GO   ; this bit will change to zero when the conversion is complete
   goto   $-1
   comf   ADRESH,w   ; Form the 1's complement of ADresult
   movwf   TMR0      ; Also clears the prescaler
   goto   ExitISR
         
ExitISR
   movf   STATUS_Save,w
   movwf   STATUS
   swapf   W_Save,f
   swapf   W_Save,w
   retfie
   
   
Start
   bsf   STATUS,RP0   ; select Register Page 1
   movlw   0xFF
   movwf   TRISA      ; Make PortA all input
   clrf   TRISC      ; Make PortC all output

   movlw   0x10      ; A2D Clock Fosc/8
   movwf   ADCON1

   movlw   B'10000111'   ; configure Prescaler on Timer0, max prescale (/256)
   movwf   OPTION_REG   ; configure
;   bcf   STATUS,RP0   ; back to Register Page 0

   bcf   STATUS,RP0   ; address Register Page 2
   bsf   STATUS,RP1   
   movlw   0x01      ; we want all Port A pins Analog, except RA3
   movwf   ANSEL
   bcf   STATUS,RP0   ; address Register Page 0
   bcf   STATUS,RP1
   
   movlw   0x01
   movwf   ADCON0      ; configure A2D for Channel 0 (RA0), Left justified, and turn on the A2D module
   movlw   0x08
   movwf   Display
   clrf   Direction
   clrf   LookingFor   ; Looking for a 0 on the button
   
   
   movlw   B'10100000'   ; enable Timer 0 and global interrupts
   movwf   INTCON
MainLoop
   btfss   T0Semaphore,0   ; did the Timer0 overflow?
   goto   CheckButton   ; no - go monitor the button
   bcf   T0Semaphore,0   ; clear the flag   
   movf   Display,w   ; Copy the display to the LEDs
   movwf   PORTC
   
Rotate
   bcf   STATUS,C   ; ensure the carry bit is clear
   btfss   Direction,0
   goto   RotateLeft
RotateRight
   rrf   Display,f
   btfsc   STATUS,C   ; Did the bit rotate into the carry?
   bsf   Display,3   ; yes, put it into bit 3.

   goto   CheckButton
RotateLeft
   rlf   Display,f   ; rotate in place
   btfsc   Display,4   ; did it rotate out of the display
   bsf   Display,0   ; yes, put it into bit 0

CheckButton
   btfsc   LookingFor,0   ; which direction are we looking for
   goto   LookingFor1
LookingFor0
   btfsc   PORTA,3      ; is the switch pressed (0)
   goto   EndMainLoop
   bsf   LookingFor,0   ; yes  Next we'll be looking for a 1
   movlw   0xFF      ; load the W register incase we need it
   xorwf   Direction,f   ; yes, flip the direction bit
   goto   EndMainLoop

LookingFor1
   btfsc   PORTA,3      ; is the switch pressed (0)
   bcf   LookingFor,0

EndMainLoop
   movlw   .13
   call   Delay      ; delay ~10mS (13 * 775uS)
   goto   MainLoop

; Delay Subroutine.  Enter delays Wreg * 771uS + 5 uS including call and return
Delay   movwf   Delay2      ;
DelayLoop
   decfsz   Delay1,f   ; Waste time. 
   goto   DelayLoop   ; The Inner loop takes 3 instructions per loop * 256 loopss = 768 instructions
   decfsz   Delay2,f   ; The outer loop takes and additional 3 instructions per lap * 256 loops
   goto   DelayLoop   ; (768+3) * 256 = 197376 instructions / 1M instructions per second = 0.197 sec.
            ; call it a two-tenths of a second.
   return
   
   end
   
[/list]
עוגי
חבר פורום
חבר פורום
 
הודעות: 108
הצטרף: ד' יוני 08, 2005 8:54 pm
מיקום: הוד השרון

אני מצטער..

הודעהעל ידי roby69 » ש' ספטמבר 27, 2008 5:15 pm

אני ממש לא מעוניין לעבוד באסמבלר. אני מצרף את הקוד שלי ואשמח אם תגלו את הבעייה.
מטרתי היא שרובוט ינוע קדימה ויהבהב לד , וכאשר מקבל 1 ברגל A0 -רגל האינטראפט
יעצור את כל המנועים ל6 שניות. הנה :

#include <16F690.h>
#fuses XT,NOWDT,NOPROTECT,put
#use delay(clock=8000000)
#include <stdlib.h>
#define RAND_MAX 2

#int_ext


void int_ext_isr()
{ output_low(PIN_C2);
output_low(PIN_C5);
delay_ms(6000);}






void main() {

enable_interrupts(global);
enable_interrupts(INT_EXT);
ext_int_edge( L_TO_H );


output_high(pin_b6); //TURN ON THE LED FOR A WHILE
delay_ms(5000);
output_low(pin_b6);

while(1)
{
output_high(PIN_C2); //go straight
output_low(PIN_C3);
output_high(PIN_C5);
output_low(PIN_C4);


output_high(pin_b6); //BLINK A LED
delay_ms(300);
output_low(pin_b6);
delay_ms(300);





}

}

הוא נוסע קדימה ולא ממש מגיב לאינטראפט בצורה סדירה..בקיצור יש כאן בלאגן לא יודע למה..
roby69
משתמש חדש
משתמש חדש
 
הודעות: 16
הצטרף: ש' ספטמבר 27, 2008 10:01 am

הודעהעל ידי אמנון » ש' ספטמבר 27, 2008 6:37 pm

רובי שלום
כמה נקודות.

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

עם האינטראפטים החיצוניים עוד לא יצא לי לעבוד.

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

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

בכלל עדיף לעבוד כמה שפחות עם DELAY ויותר עם טיימרים.

מה מעורר אצלך את האינטראפט? (מה מחובר לאותה הרגל של הרכיב?)

אם מדובר במפסק אז יכולה להיות בעיה של BOUNCE , כלומר שאתה חושב שמדובר בלחיצה אחת אבל המעבד מיתייחס אל זה כהרבה לחיצות , כאן שווה לבדוק את נושא ה DE BOUNCE רכיב או קוד שיטפל ב"הרבה לחיצות" הללו (אין מה לעשות גוגל )

עוד מקום מומלץ מאוד מאוד מאוד עבור ה CCS C הוא הפורום הרשמי שלהם
http://www.ccsinfo.com/forum/viewforum. ... 1a833aacb6

אני עובד איתו המון.

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

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


Re: שאלה על קוד..

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

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

Re: שאלה על קוד..

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

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

Re: שאלה על קוד..

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

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

Re: שאלה על קוד..

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

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

Re: שאלה על קוד..

הודעהעל ידי xalmek » א' יוני 02, 2024 10:04 am

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

Re: שאלה על קוד..

הודעהעל ידי xalmek » ש' אוגוסט 03, 2024 1:21 am

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

Re: שאלה על קוד..

הודעהעל ידי xalmek » ב' ספטמבר 02, 2024 1:07 am

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

Re: שאלה על קוד..

הודעהעל ידי xalmek » ש' נובמבר 02, 2024 3:10 am

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


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

מי מחובר

משתמשים הגולשים בפורום זה: אין משתמשים רשומים ו 6 אורחים

cron