اطلاعیه

Collapse
No announcement yet.

کمک کمک AVR GCC

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کمک کمک AVR GCC

    من یه برنامه نوشتم نمی دونم مشکلش کجاست .
    [// -------------
    // --- usart ---
    // -------------

    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <stdio.h>
    #include <util/delay.h>

    //*********************************************
    //
    // Variables
    //
    //*********************************************
    //current channel
    uint8_t ch;

    char UsartChar[10];
    uint16_t adc_value = 0;
    volatile int i = 0;
    volatile int j=0;

    void USART0_write(unsigned char data);
    void USART0_write_int(int intData);
    void USART0_init();
    void Timer1_init();
    //*********************************************
    //
    // Timer Initialization
    //
    //*********************************************
    ISR(TIMER1_OVF_vect)
    {
    // reinit counter
    TCNT1H = 11;
    TCNT1L = 220;
    USART0_write_int(i);
    i = 0;
    }

    void Timer1_init() {
    // Timer1 settings: ~ 4000000 ticks (1 sec)
    TCCR1B = (1 << CS11) | (1 << CS10); // prescaler = 64
    // init counter
    TCNT1H = 11;
    TCNT1L = 220;
    TIMSK = (1 << TOIE1); // Timer1 Overflow Interrupt Enable
    }

    //*********************************************
    //
    // ADC module Initialization
    //
    //*********************************************
    void adc_init(void) {
    //select reference voltage
    //AVCC with external capacitor at AREF pin
    ADMUX |= (0 << REFS1) | (1 << REFS0);
    //set prescaller and enable ADC
    ADCSRA |= (1 << ADEN) | (1 << ADIE);//enable ADC with dummy conversion
    }
    //************************************************** ***************************
    //
    // ADC single conversion routine
    //
    //************************************************** ***************************
    void adc_start_conversion(uint8_t channel) {
    //remember current ADC channel;
    ch = channel;
    //set ADC channel
    ADMUX = (ADMUX & 0xF0) | channel;
    //Start conversionio with Interupt after conversion
    //enable global interrupts
    sei();
    ADCSRA |= (1 << ADSC) | (1 << ADIE);
    }

    //************************************************** ***************************
    //
    // ADC conversion complete service routine
    //
    //************************************************** ***************************
    ISR(ADC_vect)
    {
    adc_value = ADCL;
    /*shift from low level to high level ADC, from 8bit to 10bit*/
    adc_value += (ADCH << 8);
    printf("%d", adc_value);

    }

    //*********************************************
    //
    // USART Initialization
    //
    //*********************************************
    // USART0 settings: 9600 baud 8-none-1
    // !!! warning !!! real baud = 9615, err = 0.1562% !!!
    void USART0_init() {
    // Set baud rate
    UBRRH = 0;
    UBRRL = 25;
    UCSRA = 0;
    // Enable receiver and transmitter
    UCSRB = (1 << RXEN) | (1 << TXEN);
    // Set frame format
    UCSRC = (1 << UCSZ1) | (1 << UCSZ0) | (1 << URSEL);
    }

    //*********************************************
    //
    // Usart Write Function
    //
    //*********************************************

    void USART0_write(unsigned char data) {
    // Wait for empty transmit buffer
    while (!(UCSRA & (1 << UDRE)))
    ;
    // Put data into buffer, sends the data
    UDR = data;
    }
    void USART0_write_int(int intData) {
    sprintf(UsartChar, "%d", intData);
    for (j = 0; j < 10; j++) {
    USART0_write(UsartChar[j]);
    }
    }

    //*********************************************
    //
    // Usart Read function
    //
    //*********************************************

    unsigned char USART0_read() {
    // Wait for data to be received
    while (!(UCSRA & (1 << RXC)))
    ;
    // Get and return received data from buffer
    return UDR;
    }

    //*********************************************
    //
    // AVR Initialization
    //
    //*********************************************

    void init() {
    USART0_init();
    adc_init();
    Timer1_init();
    }

    int main(void) {
    init();
    DDRB = 0x00;
    sei();
    while (1) {
    USART0_write_int(131);
    i++;
    }
    }

    Difficult But possible
    به امید ایرانی آباد.
    http://art-net.ir

    #2
    پاسخ : کمک کمک AVR GCC

    پر از ایراده
    مثل همیشه وقتی خودمون با مشکلی درگیر میشیم یادموم میره که بقیه اصلا در جریان کار نیستند و برای کمک گرفتن ازشون اول باید اونها رو تو جریان کار قرار بدیم. دوست عزیز خوب مشکلت دقیقا کجاست؟ به نظر من اصلا کامپایل نباید بشه، وقتی کامپایل نشه خودش میگه کدوم خط ایراد داره.
    چرا util/delay.h و stdio.h رو با " ضمیمه کردید؟
    بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
    اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

    دیدگاه


      #3
      پاسخ : کمک کمک AVR GCC

      از delay استفاده نکردم ولی از stdio.h چرا این برنامه کامپایر میشه ولی مرتب توی دیباگ پروتیوس می نویسه UCSRC0 is not modelled ؟ البته اگه adc_init , timer1_init را برداریم میشه با یدون از همین خطا Usart را راه انداخت. :angry:
      Difficult But possible
      به امید ایرانی آباد.
      http://art-net.ir

      دیدگاه


        #4
        پاسخ : کمک کمک AVR GCC

        سلام.
        این UCSRC0 is not modelled فقط یه هشداره و ارور نیست. منم تا حالا این هشدار را دیده ام اما مدار درست کار می کنه.

        دیدگاه


          #5
          پاسخ : کمک کمک AVR GCC

          این جا برنامه هم اجرا نمیشه :wow:
          Difficult But possible
          به امید ایرانی آباد.
          http://art-net.ir

          دیدگاه


            #6
            پاسخ : کمک کمک AVR GCC

            AVR کارا کسی نبود کمک کنه
            Difficult But possible
            به امید ایرانی آباد.
            http://art-net.ir

            دیدگاه


              #7
              پاسخ : کمک کمک AVR GCC

              من اساسی کارم گیر کرده می خوام بعد یک ثانیه مقدار i را با Usart بفرسته؟ :angry: :angry:
              Difficult But possible
              به امید ایرانی آباد.
              http://art-net.ir

              دیدگاه


                #8
                پاسخ : کمک کمک AVR GCC

                سلام. خب عزیز من شما تازه داری می گی که با این برنامه چی کار می خواستی بکنی که نشده و ...
                یعنی نمی تونستی زودتر جزییاتشو بگی؟ لااقل دو سه خط بیشتر می نوشتی.
                قسمت TIMER_INIT و ISR را بررسی نکردم.به نظر نمی تونن مشکل ساز باشن.
                قسمت ارسال اطلاعات بصورت سریال مشکلی نداره.(USART0_write را می گم.)
                اگه بعد یک ثانیه می خوای مقدار i را با Usart بفرستی پس ADC را واسه چی راه انداختی؟ ( البته ببخشید فضولی می کنم.)
                از USART0_INIT مطمئنی که درست کار می کنه؟ می تونی با دستور printf یک متن معمولی ارسال کنی؟

                دیدگاه


                  #9
                  پاسخ : کمک کمک AVR GCC

                  از ADC قرار بود استفاده بشه اما همین ابتدا که کار نداد صبر کردم اشکالش رفع بشه .
                  چه جوری با Printf دیتا را می فرستید یه کد Sample ساده لطف می کنید البته جوری که بشه کامپایلش کرد. :biggrin:
                  Difficult But possible
                  به امید ایرانی آباد.
                  http://art-net.ir

                  دیدگاه


                    #10
                    پاسخ : کمک کمک AVR GCC

                    این warning که گفتی مشکلته . این پیغام میگه که پروتئوس هنوز یه سری از تنظیمات مربوط به این رجیستر رو ساپورت نمیکنه و شما باید تا ورژن بعدی منتظر بمانی.
                    بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
                    اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

                    دیدگاه


                      #11
                      پاسخ : کمک کمک AVR GCC

                      برای ارسال دیتا از پورت سریال این راهو امتحان کن
                      ( من خودم همیشه همین کارو میکنم )
                      این rprintf خیلی کارش درسته. میتونی به همه چی وصلش کنی. از پورت سریال بگیر تا LCD گرافیکی !
                      ( rprintf مربوط به کتابخونه avrlib هست )

                      کد PHP:
                      #include "global.h"        // include our global settings
                      #include <avr/io.h>        // include I/O definitions (port names, pin names, etc)
                      #include "uart.h"        // include uart function library

                      #include "rprintf.h"    // include printf function library

                      int main(void){
                          
                      int i 1234;
                          
                          
                      uartInit();
                          
                      uartSetBaudRate(9600);
                          
                      rprintfInit(uartSendByte);
                          
                      rprintf("Hello World\n");
                          
                      rprintf( "= %d", );
                          
                          while(
                      1);
                          return 
                      0;


                      چگونه هوشمندانه بپرسیم

                      دیدگاه


                        #12
                        پاسخ : کمک کمک AVR GCC

                        این lib را از کجا باید بگیرم Usart.h
                        Difficult But possible
                        به امید ایرانی آباد.
                        http://art-net.ir

                        دیدگاه


                          #13
                          پاسخ : کمک کمک AVR GCC

                          این خودش :
                          http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib

                          اینم help ش :
                          http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/docs/html/index.html

                          دربارش سوالی داشتی ، در خدمتیم :smile:
                          چگونه هوشمندانه بپرسیم

                          دیدگاه


                            #14
                            پاسخ : کمک کمک AVR GCC

                            مثل اینکه لینک ها خرابند.
                            Difficult But possible
                            به امید ایرانی آباد.
                            http://art-net.ir

                            دیدگاه


                              #15
                              پاسخ : کمک کمک AVR GCC

                              سلام.
                              جناب علی- ببخشید که دیر شد . راستش منم داشتم با این کتابخونه کار می کردم. خواستم هر موقع جواب بگیرم بهتون بگم. اما جواب نمی ده.
                              اقای رستمی برای مثال همین برنامه که بالا گذاشتید رو تو پروتئوس اجرا کردم اما کاراکترهای بی ربطی نشون می ده. شما خودتون جواب گرفتین؟

                              ضمنا لینکها سالمن. لینک اول را انتخاب کن و نسخه نصبی که پسوندش exe. است را دانلود کن.

                              دیدگاه

                              لطفا صبر کنید...
                              X