NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4290 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 6 از 6

موضوع: تغییر کد c قابل فهم برای arm kail

  1. #1
    عضو جدید
    تاریخ عضویت
    May 2012
    نوشته ها
    15
    تشکر
    2
    تشکر شده 4 بار در 2 پست

    Icon17 تغییر کد c قابل فهم برای arm kail

    سلام دوستان
    میخواهم کد زیر رو ( که زبان c است) رو واسه arm و kail تغییر بدم که بشه اجرا کرد. فکر نکنم زیاد سخت باشه ولی من یکی هنگ کردم

    خواهشا کمکم کنید
    خیلی ضروریه

    کد:
     /*********************************************
    Project : Temperature by smt160
     
    *********************************************/
    
    #include <mega8.h>
    
    #asm
     .equ __lcd_port=0x12 ;PORTb
    #endasm
    #include <lcd.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <delay.h>
    
    unsigned int full,half;
    unsigned char edge=1;
    char dutycycle_str[10],temprature_str[10],mm[10];
    float dutycycle,temprature,temp_buf; 
    
    // External Interrupt 1 service routine
    interrupt [EXT_INT1] void ext_int1_isr(void)
    {
    TCCR1B=0x00;
    if(edge>0)
     {//10
     full=TCNT1;
     MCUCR =0x08; // Set interrupt on falling edge 
     edge=0;
     }
    else
     {
     half=TCNT1;
     MCUCR =0x0c; // Set interrupt on rising edge
     edge=1; 
     }
    TCNT1=0; 
    TCCR1B=0x01;
    } 
    
    interrupt [TIM1_CAPT] void timer1_capt_isr(void)
    {
    /*static unsigned char state=0;
    TCCR1B&=~0x01;
    switch(state){
    case 0: 
     TCCR1B&=~0x40;
     state=1;
     full=TCNT1; 
     break;
    case 1:
     TCCR1B|=0x40;
     state=0;
     half=TCNT1; 
     break;
     } 
    TCNT1=0; 
    TCCR1B|=0x01;*/
    }
    
    void main(void)
    {
    char i;
    DDRD=0XF7;
    DDRC.0=1;
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 8000.000 kHz
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x41;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x20;
    
    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: On
    // INT1 Mode: Rising Edge
    GICR|=0x80;
    MCUCR=0x0C;
    GIFR=0x80;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    // Analog Comparator Output: Off
    ACSR=0x80;
    SFIOR=0x00;
     
    //OSCCAL=255;
    
    lcd_init(16);
    lcd_putsf("Temp:\n");
    lcd_putsf("D.C.:");
    #asm("sei")
    //delay_ms(1000);
    while (1){ 
     /*
     frequency of the output signal of the sensor lies between 1 and 4 kHz.
     
     D.C. = 0.320+0.00470*t D.C.= duty cycle
     t = Temperature in °C
     or 
     duty cycle (d.c.)= 0.31924 + (0.00472 * Temperature(oC)) 
     */
     temp_buf=0;
     for(i=0;i<10;i++){ 
     #asm("cli");
     dutycycle=(float)half/(float)(full+half);
     #asm("sei");
     temprature= dutycycle;
     temprature-=0.31924;
     temprature/=0.00472;
     temp_buf+=temprature;
     delay_ms(100);
     }
     temp_buf/=10;
     ftoa(temp_buf,1,temprature_str);
     ftoa(dutycycle*100 ,1,dutycycle_str);
     lcd_gotoxy(7,0);
     lcd_puts(temprature_str);
     lcd_putsf(" C");
     lcd_gotoxy(7,1);
     lcd_puts(dutycycle_str);
     lcd_putsf(" %");
     /*ftoa(full ,1,mm);
     lcd_gotoxy(0,0);
     lcd_puts(mm);
     ftoa(half ,1,mm);
     lcd_gotoxy(0,1);
     lcd_puts(mm);*/
     //delay_ms(500); 
     }
    }

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    سلام مهندس
    با كدوم ميكرو ميخواي كار كنيد؟ lpc يا stm32 يا at91؟
    _____________________________________
    _____________________________________

  4. #3
    عضو جدید
    تاریخ عضویت
    May 2012
    نوشته ها
    15
    تشکر
    2
    تشکر شده 4 بار در 2 پست

    پیش فرض

    با at91sam7x256 .

  5. #4
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    خوب شما باید هم avr بلد باشی و هم همین میکرویی که گفتی
    رجیسترها رو یکی یکی بشینی از دیتاشیت بخونی ببینی این کد چه بلایی سرش آورده، اون رو روی این میکروی at91sam خودت بزنی.
    این کار یک کم زمان بر هست
    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

  6. تشکرها از این نوشته :


  7. #5
    عضو جدید
    تاریخ عضویت
    May 2012
    نوشته ها
    15
    تشکر
    2
    تشکر شده 4 بار در 2 پست

    پیش فرض

    راه دیگه ای واسه واسه اینکار وجود نداره؟
    من می خوام یه چیزی باشه(مثل تایمر ) که دیوتی سایکل اون رو بتونم رو lcd نشون بدم.
    می خام سنسور smt160 رو با ارم راه اندازی کنم .و این سنسور نیز دیجیتاله و بر اساس دیوتی سایکلش دما رو میده

  8. #6
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    نقل قول نوشته اصلی توسط chroo نمایش پست ها
    راه دیگه ای واسه واسه اینکار وجود نداره؟
    من می خوام یه چیزی باشه(مثل تایمر ) که دیوتی سایکل اون رو بتونم رو lcd نشون بدم.
    می خام سنسور smt160 رو با ارم راه اندازی کنم .و این سنسور نیز دیجیتاله و بر اساس دیوتی سایکلش دما رو میده
    سلام
    شما که می دونید چه کاری را قراره انجام بدید دیگه لزومی نداره برید ببینید در avr چجوری انجام شده. قواعد پیاده سازی در اون میکرو آرم را یاد بگیرید و اون برنامه را اجرا کنید.
    اول ال سی دی را راه اندازی تست کنید. بعد مثلا مد pwm و ....

  9. تشکرها از این نوشته :


موضوعات مشابه

  1. تغییر فرکانس برق شهر
    توسط jik در انجمن الكترونيك قدرت
    پاسخ: 11
    آخرين نوشته: 06-11-2013, 16:18
  2. مشکل با تغییر فرکانس واحد pll در برنامه tft lcd
    توسط iman7107 در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 7
    آخرين نوشته: 27-06-2013, 23:11
  3. تغییر فرکانس میکرو
    توسط abbasalifix در انجمن AT91 series (ATMEL)
    پاسخ: 7
    آخرين نوشته: 30-11-2012, 00:47
  4. مشکل در تغییر کانال adc
    توسط m.safavy در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 23-05-2012, 16:01
  5. تغییر دلخواه پایه های lcd در ccs
    توسط MEYSAMHL در انجمن PIC
    پاسخ: 7
    آخرين نوشته: 13-09-2011, 01:09

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •