اطلاعیه

Collapse
No announcement yet.

مشکل با atmega8 و پورت پرینتر

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

    مشکل با atmega8 و پورت پرینتر

    با سلام
    من تازه به دنیای زیبای avr وارد شدم و خیلی هم علاقه دارم :nice:
    یه مشکلی که برام پیش اومده اینه که اینتراپت avr به پرینتر کار نمیکنه یعنی نه avr از پورت پرینتر اینتراپت میگیره نه پورت پرنتر از avr کد هم فکر نم کنم میشکلی داشته باشه ایا باید خازن یا مقاومت یا چیز دیگه قرار بدم بینشون تا مشکل حل شه؟
    اگه کسی بلده یکم توضیح بده ممنون میشم :read:

    #2
    پاسخ : مشکل با atmega8 و پورت پرینتر

    ببخشید منظورتون از نگرفتن اینتراپ چیه میشه واضحتر بفرمایید ما هم متوجه بشیم
    یعنی نمیتونید پروگرامش کنین یا با یک برنامه میخاهید که روی میکرو وکامپیوتر وقفه ایجاد کنید
    در مورد دوم باید برنامتونو بزارین
    در مورد اول هم بفرمایید با چه پروگرامری کار میکنید
    بعدا یه جمله قشنگ مینویسم

    دیدگاه


      #3
      پاسخ : مشکل با atmega8 و پورت پرینتر

      من از یه پروگرمر استفاده میکنم
      بله مورد دوم هست ای ور ار نمیتونه اینتراپت یا همون وقفه بگیره راستش کد های زیادی نوشتم
      شما الان فرض کنید یکی از خطوط پورت پرنتر 0 و 1 میشه با فاصله زمانی 0.5 sec و توی کد های ای وی ار هم از هر سه نوع وقفه یعنی بالا رونده و پایین رونده و اونیکی نمیدونم چیه استفاده کردم که اونم به تناوب پورت خاصی رو 0 و 1 میکنه اما جواب نمیده
      یه led گزاشتم روی پورت پرینتر دیدم کاملا درسته و به همون فاصله زمانی 0 و 1 میشه ولی روی پورت avr مشکل داره و هر از 10 یا 15 ثانیه یک بار این اتفاق می افته که این نشون میده پورت وقفه avr نمیتونه همه وقفه ها رو بشناسه و دریافت کنه به نظر شما مشکل کجاست؟

      بعد روی یه پورت جدا که به سوکت pci کامپیوتر وصل میشد دیدم که درست زمانی که می خواد به سوکت وصل بشه خازن و مقاومت که نوشته بود 220 قرار داده منم فکر کردم باید خازن یا مقاومتی باید قرار داده بشه واسه همین اینجا مطرح کردم

      دیدگاه


        #4
        پاسخ : مشکل با atmega8 و پورت پرینتر

        یعنی شما یک سیگنال ایجاد کردین و از پورت پارالل کامپیوتر اونو به میکرو ارسال میکنین ودر حالی مه انتطار دارین میکرو به این سیگنال واکنش نشون بده اتفاقی نمیفته
        اگر اینطوره باید عرض کنم :
        روی میکرو این کارها را انجام دهید
        باید وقفه ها را فعال کنید وقفه پایه مورد نطر را فعال کنید برای اون یک حالت تعریف کنید (حساس به لبه بالارونده حساس به لبه پایین رونده یا حساس به تغییر وضعیت)
        بعد زیر برنامه اجرای وقفه را معلوم کنید
        در زیر برنامه وقفه درخاست خود را اعمال بفرمایید
        بعدا یه جمله قشنگ مینویسم

        دیدگاه


          #5
          پاسخ : مشکل با atmega8 و پورت پرینتر

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

          دیدگاه


            #6
            پاسخ : مشکل با atmega8 و پورت پرینتر

            #include <mega8.h>

            // External Interrupt 0 service routine
            interrupt [EXT_INT0] void ext_int0_isr(void)
            {
            // Place your code here
            PORTD.1=!PORTD.1;

            }

            // External Interrupt 1 service routine
            interrupt [EXT_INT1] void ext_int1_isr(void)
            {
            // Place your code here

            }

            // Declare your global variables here

            void main(void)
            {
            // Declare your local variables here

            // Input/Output Ports initialization
            // Port B initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
            PORTB=0x00;
            DDRB=0x00;

            // Port C initialization
            // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
            // State6=T State5=T State4=T State3=T State2=T State1=T State0=T
            PORTC=0x00;
            DDRC=0x00;

            // Port D initialization
            // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
            // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
            PORTD=0x00;
            DDRD=0xFF;

            // Timer/Counter 0 initialization
            // Clock source: System Clock
            // Clock value: Timer 0 Stopped
            TCCR0=0x00;
            TCNT0=0x00;

            // Timer/Counter 1 initialization
            // Clock source: System Clock
            // Clock value: Timer1 Stopped
            // Mode: Normal top=0xFFFF
            // OC1A output: Discon.
            // OC1B output: Discon.
            // Noise Canceler: Off
            // Input Capture on Falling Edge
            // Timer1 Overflow Interrupt: Off
            // Input Capture Interrupt: Off
            // Compare A Match Interrupt: Off
            // Compare B Match Interrupt: Off
            TCCR1A=0x00;
            TCCR1B=0x00;
            TCNT1H=0x00;
            TCNT1L=0x00;
            ICR1H=0x00;
            ICR1L=0x00;
            OCR1AH=0x00;
            OCR1AL=0x00;
            OCR1BH=0x00;
            OCR1BL=0x00;

            // Timer/Counter 2 initialization
            // Clock source: System Clock
            // Clock value: Timer2 Stopped
            // Mode: Normal top=0xFF
            // OC2 output: Disconnected
            ASSR=0x00;
            TCCR2=0x00;
            TCNT2=0x00;
            OCR2=0x00;

            // External Interrupt(s) initialization
            // INT0: On
            // INT0 Mode: Falling Edge
            // INT1: On
            // INT1 Mode: Rising Edge
            GICR|=0xC0;
            MCUCR=0x0E;
            GIFR=0xC0;

            // Timer(s)/Counter(s) Interrupt(s) initialization
            TIMSK=0x00;

            // USART initialization
            // USART disabled
            UCSRB=0x00;

            // Analog Comparator initialization
            // Analog Comparator: Off
            // Analog Comparator Input Capture by Timer/Counter 1: Off
            ACSR=0x80;
            SFIOR=0x00;

            // ADC initialization
            // ADC disabled
            ADCSRA=0x00;

            // SPI initialization
            // SPI disabled
            SPCR=0x00;

            // TWI initialization
            // TWI disabled
            TWCR=0x00;

            // Global enable interrupts
            #asm("sei&quot

            while (1)
            {
            // Place your code here

            }
            }

            دیدگاه


              #7
              پاسخ : مشکل با atmega8 و پورت پرینتر

              متاسفم من بیسیک کار میکنم اما برای استفاده از وقفه INT1 این کد رو با ویزلرد میده حالا کافیه شما عملی رو که میخاهید در خط قرمز بنویسید
              چیز دیگری نداره حالا هر پورتی که دوست دارین رو ابتدا در ویزارد به عنوان خروجی تعریف کنین و در خط قرمز هر کاری دوست دارین انجام بدین

              This program was produced by the
              CodeWizardAVR V2.05.3 Standard
              Automatic Program Generator
              © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
              http://www.hpinfotech.com

              Project :
              Version :
              Date : 2/17/2012
              Author : SHAHRAM
              Company :
              Comments:


              Chip type : ATmega8
              Program type : Application
              AVR Core Clock frequency: 8.000000 MHz
              Memory model : Small
              External RAM size : 0
              Data Stack size : 256
              ************************************************** ***/

              #include <mega8.h>

              // External Interrupt 1 service routine
              interrupt [EXT_INT1] void ext_int1_isr(void)
              {
              // Place your code here
              }

              // Declare your global variables here

              void main(void)
              {
              // Declare your local variables here

              // Input/Output Ports initialization
              // Port B initialization
              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
              // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
              PORTB=0x00;
              DDRB=0x00;

              // Port C initialization
              // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
              // State6=T State5=T State4=T State3=T State2=T State1=T State0=T
              PORTC=0x00;
              DDRC=0x00;

              // Port D initialization
              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
              // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
              PORTD=0x00;
              DDRD=0x00;

              // Timer/Counter 0 initialization
              // Clock source: System Clock
              // Clock value: Timer 0 Stopped
              TCCR0=0x00;
              TCNT0=0x00;

              // Timer/Counter 1 initialization
              // Clock source: System Clock
              // Clock value: Timer1 Stopped
              // Mode: Normal top=0xFFFF
              // OC1A output: Discon.
              // OC1B output: Discon.
              // Noise Canceler: Off
              // Input Capture on Falling Edge
              // Timer1 Overflow Interrupt: Off
              // Input Capture Interrupt: Off
              // Compare A Match Interrupt: Off
              // Compare B Match Interrupt: Off
              TCCR1A=0x00;
              TCCR1B=0x00;
              TCNT1H=0x00;
              TCNT1L=0x00;
              ICR1H=0x00;
              ICR1L=0x00;
              OCR1AH=0x00;
              OCR1AL=0x00;
              OCR1BH=0x00;
              OCR1BL=0x00;

              // Timer/Counter 2 initialization
              // Clock source: System Clock
              // Clock value: Timer2 Stopped
              // Mode: Normal top=0xFF
              // OC2 output: Disconnected
              ASSR=0x00;
              TCCR2=0x00;
              TCNT2=0x00;
              OCR2=0x00;

              // External Interrupt(s) initialization
              // INT0: Off
              // INT1: On
              // INT1 Mode: Low level
              GICR|=0x80;
              MCUCR=0x00;
              GIFR=0x80;

              // Timer(s)/Counter(s) Interrupt(s) initialization
              TIMSK=0x00;

              // USART initialization
              // USART disabled
              UCSRB=0x00;

              // Analog Comparator initialization
              // Analog Comparator: Off
              // Analog Comparator Input Capture by Timer/Counter 1: Off
              ACSR=0x80;
              SFIOR=0x00;

              // ADC initialization
              // ADC disabled
              ADCSRA=0x00;

              // SPI initialization
              // SPI disabled
              SPCR=0x00;

              // TWI initialization
              // TWI disabled
              TWCR=0x00;

              // Global enable interrupts
              #asm("sei&quot

              while (1)
              {
              // Place your code here

              }
              }
              بعدا یه جمله قشنگ مینویسم

              دیدگاه


                #8
                پاسخ : مشکل با atmega8 و پورت پرینتر

                با تشکر از شما دوست گرامی
                چند تا سوال دارم اگه جواب بدید ممنون میشم
                ایا با کدی که نوشتید بدون هیچ چیز اضافی( مثل خازن یا مقاومت یا ... ) میشه از پورت های کامپیوتر اینتراپت دریافت کرد؟ و آیا تا به حال این کار رو انجام دادید؟
                آیا امکان داره میکرو من خراب باشه ؟ و اگه خراب باشه از کجا باید بفهمم؟
                و اینکه آیا چیزی به نام 0و 1 دیجیتالی و آنالوگی داریم؟

                دیدگاه


                  #9
                  پاسخ : مشکل با atmega8 و پورت پرینتر

                  من تا حالا اینکارو نکردم البته خیلی بهش علاقه داشتم ولی چون پورت از کامپیوتر حذف شد دیگه دنبالش رو نگرفتم به جاش رو USBتمرکز کردم ولی تا حالا موفق نشدم
                  البته من یه کتاب دارم پروزه های زیادی برای پورت ها توش هست اجازه بدین فردا عصر براتون همه رو پست میکنم اخه یه کار هچل هفت بهم خورده مجبورم راه بندازم بلاخره شب عیده :mrgreen:
                  اما مطمعنم پروزه هاش براتون خیلی جالب با تمام پورت های کامپیوتر ودر هر زمینه ای
                  بعدا یه جمله قشنگ مینویسم

                  دیدگاه


                    #10
                    پاسخ : مشکل با atmega8 و پورت پرینتر

                    با تشکر فراوان از شما دوست گرامی بابت همه راهنمایی هاتون

                    دیدگاه


                      #11
                      پاسخ : مشکل با atmega8 و پورت پرینتر

                      در این کتاب همه پروزه ای برای کار با پورتها هست البته فکر کنم بهتره این کتابو تهیه کنین یا اگه چیز بخصوصی ازش خواستید بفرمایید براتون پست کنم
                      در ضمن این برنامه ها نیاز به یک فایل dll دارن باید اونو براتون پیدا کنم



                      بعدا یه جمله قشنگ مینویسم

                      دیدگاه


                        #12
                        پاسخ : مشکل با atmega8 و پورت پرینتر

                        با تشکر فراوان ولی اینا برنامه ای هست که سمت کامپیوتر نوشته شده و چون من قسمت کامپیوتر مشکلی ندارم فکر کنم زیاد به دردم نخوره
                        واسه من قسمتی که پورت سریال به پایه میکرو وصل میشه (یعنی شماتیک مدار ) مهمه خودم هم تحقیق کردم فکر کنم باید یه مقاومت 68 بزارم حالا امتحان کنم ببینم چی میشه
                        بد بختی اینه که تو شهرستانم و قطعات به سختی گیر میاد حتی بعضی از مقاومت ها و خازن های معروف تا ببینیم چی میشه

                        دیدگاه


                          #13
                          پاسخ : مشکل با atmega8 و پورت پرینتر

                          شما برای ارتباط با پورت باید ابتدا تبدیل سطح کنید در میکرو صفر یعنی ولت کمتر از 1 ولت ویک یعنی +5 ولت
                          اما روی پورت شما با+-15 ولت کار دارین +15 یعنی صفر و -15 یعنی یک
                          بایک مقاومت ویک ترانزیستور ساده میتونید اینکارو انجام بدین
                          بعدا یه جمله قشنگ مینویسم

                          دیدگاه

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