اطلاعیه

Collapse
No announcement yet.

مشکل خواندن ds1307 در یک تایمر و کیپد در تایمر دیگر

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

    مشکل خواندن ds1307 در یک تایمر و کیپد در تایمر دیگر

    با سلام خدمت دوستای گلم,،من میخواسم در میکرو mega16 از سه تایمر استفاده کنم واسه کارای که باید انجام بشه،داخل تایمر 0 میخوام که با i2c زمان رو از ای سی ds1307 بخونم و در تایمر 1 کیپد رو بخونم و درتایمر 2 مقدار زمان رو روی ال سی دی نشون بدم،هروقت که هر تایمر رو جدا راه اندازی میکنم درست کار میکنه،ولی وقتی تایمری که کیپد رو میخونه اجرا میکنم،تایمری که میخوواد زمان سنج رو بخونه گیر میکنه،واسه حلقه while هست که واسه خوندن کپید قرار گرفته؟

    میخواسم که حلقه while خود برنامه اصلی خالی بمونه که میگرو با تایمر ها کار کنه،ممنون میشم دوستان کمک کنن

    #2
    پاسخ : مشکل خواندن ds1307 در یک تایمر و کیپد در تایمر دیگر

    تو تایمر از حلقه استفاده کردی؟؟؟؟؟؟؟
    تا جایی که امکان داره داره باید برنامه داخل وقفه تایمرها سبک باشه

    دیدگاه


      #3
      پاسخ : مشکل خواندن ds1307 در یک تایمر و کیپد در تایمر دیگر

      نوشته اصلی توسط rasool1370 نمایش پست ها
      تو تایمر از حلقه استفاده کردی؟؟؟؟؟؟؟
      تا جایی که امکان داره داره باید برنامه داخل وقفه تایمرها سبک باشه
      بله،یه حلقه وایل داشت،اونو برداشتم و و یه حلقه فور گذاشتم،توی شبیه ساز که درست کار میکرد،توی عمل تست نکردم هنوز،مشکلی پیش میاد؟

      دیدگاه


        #4
        پاسخ : مشکل خواندن ds1307 در یک تایمر و کیپد در تایمر دیگر

        برنامتو نذاشتی چطور انتظار داری کمکت کنن

        دیدگاه


          #5
          پاسخ : مشکل خواندن ds1307 در یک تایمر و کیپد در تایمر دیگر

          نوشته اصلی توسط mashroti نمایش پست ها
          برنامتو نذاشتی چطور انتظار داری کمکت کنن
          این کد:
          کد:
          [FONT=Yekan]#include <avr/io.h>[/FONT]#include <util/delay.h>
          #include "Keypad.h"
          
          
          #define KEY_PRT PORT(KEYPAD)
          #define KEY_DDR    DDR(KEYPAD)
          #define KEY_PIN    PIN(KEYPAD)
          
          
          char shift[]={0xFE, 0XFD, 0xFB, 0xF7};
          
          
          char display[] = {
              '7', '8' , '9' ,'/',
              '4', '5' , '6' ,'*',
              '1', '2' , '3' ,'-',
              ' ', '0' , '=' ,'+'
          };
          
          
          char keyfind()
          {
              int row=0, column=-1,position=-1;
              char buf[10];
          
          
              PORTB=0xF0;
              DDRB=0x0F;
          
          
              //while(1){
                  for(row =0 ; row<4; row++)
                  {
                      KEY_PRT = shift[row];
          
          
                      if((KEY_PIN & 0xF0) == 0xE0){column = 0;}
                      if((KEY_PIN & 0xF0) == 0xD0){column = 1;}
                      if((KEY_PIN & 0xF0) == 0xB0){column = 2;}
                      if((KEY_PIN & 0xF0) == 0x70){column = 3;}
          
          
                      if(column != -1){
                          
                          position = row * 4 + column;
                          column=-1;
          
          
                          while((KEY_PIN & 0xF0) == 0xE0){;}
                          while((KEY_PIN & 0xF0) == 0xD0){;}
                          while((KEY_PIN & 0xF0) == 0xB0){;}
                          while((KEY_PIN & 0xF0) == 0x70){;}
                          return display[position]; 
                      }
                      _delay_ms(10);
                  //}
              }
          [FONT=Yekan]}[/FONT]
          یه سوال دیگه هم دارم
          مدار rtc ds1307 رو بستم،برنامشو هم نوشتم،توی شبیه ساز درست کار میکنه،ولی توی عمل روشن میکنم زمانو نشون میده،ولی بالا نمیره،خاموش روشن میکنم،زمان نسبت به بار قبل بالا رفته،ولی باز تو حالت روشن حرکت نمیکنه،مشکل از چی میتونه باشه؟مقاومت های پول اپ دو پایه rtc کمه ینی؟(مقاومت پول اپ 4.7k هست)ممنون میشم کمکم کنید

          دیدگاه

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