|
به نظر می رسد که شما عضو سایت نیستید و یا وارد نشده اید, امکان ارسال مطلب و دانلود فایل و همچنین دسترسی به انجمن هایی که فقط اعضا ثبت نام شده امکان دسترسی به آن را دارند از امتیازات ثبت نام در سایت میباشد. لطفا از طریق این لینک برای ثبت نام اقدام نمایید. |
|
| جدیدترین موضوعات انجمنها | |
|
|
||||||||
![]() |
|
|
LinkBack | ابزارهای موضوع | نحوه نمایش |
|
|
#1 | |||||||||
|
عضو جديد
![]() تاریخ عضویت: Feb 2009 نوشتهها: 8
تشكرها: 1
2 بار تشكر شده در 2 پست
درجه: 1 [ ]سابقه: 0 / 18 ![]() |
کسی هست که توی کدویژن با کانتر 3 کار کرده باشه. من یه برنامه با کدویژن نوشتم اما به tcnt3 ارور می گیره که تعریف نشده. لازمه بگم که تنظیماتش رو توی کد ویزارد درست انجام دادم حتی توی کد هایی هم که خود کدویژن می نویسه از tcnt3h و tcnt3l هم استفاده کرده. در ضمن این مشکل رو فقط برای کانتر 3 میگیره و برای تایمر کانتر های 0و1و2 این ارور رو نمیده.
|
|||||||||
|
|
|
|
|
#2 |
|
مدير ارشد
![]() |
دوست عزیز مشکل یا نکته ی خاصی وجود ندارد.برای اینکه بهتر بشه کمک کرد اگه می تونی کدت را بزار...
__________________
معشوق من چنان لطیف است که خود را به بودن نیالوده است...
|
|
|
|
|
|
#3 | |||||||||
|
عضو جديد
![]() تاریخ عضویت: Feb 2009 نوشتهها: 8
تشكرها: 1
2 بار تشكر شده در 2 پست
درجه: 1 [ ]سابقه: 0 / 18 ![]() |
اینم کدش . برنامه اصلی پیچیده تره اما توی همین برنامه یه خطی هم همون مشکل رو دارم .ممنون میشم یه تستی بکنید.
#include <mega64.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x1B ;PORTA #endasm #include <lcd.h> // Declare your global variables here void main(void) { // Declare your local variables here PORTA=0x00; DDRA=0xFF; DDRB=0xFF; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; PORTE=0x00; DDRE=0x00; PORTF=0x00; DDRF=0x00; PORTG=0x00; DDRG=0x00; ASSR=0x00; TCCR0=0x00; TCNT0=0x00; OCR0=0x00; TCCR1A=0x00; TCCR1B=0x07; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; OCR1CH=0x00; OCR1CL=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; TCCR3A=0x00; TCCR3B=0x07; TCNT3H=0x00; TCNT3L=0x00; ICR3H=0x00; ICR3L=0x00; OCR3AH=0x00; OCR3AL=0x00; OCR3BH=0x00; OCR3BL=0x00; OCR3CH=0x00; OCR3CL=0x00; EICRA=0x00; EICRB=0x00; EIMSK=0x00; TIMSK=0x00; ETIMSK=0x00; ACSR=0x80; SFIOR=0x00; // LCD module initialization lcd_init(16); while (1) { TCNT3=3; }; } |
|||||||||
|
|
|
|
|
#4 |
|
مدير ارشد
![]() |
دوست عزیز رجیستر TCNT3 یک رجیستر 16 بیتی است.و باید ابتدا High byte آن را عدد دهی کنید و سپس Low Byte را. البته بعضی از کامپایلر ها این کار ار انجام میدن.ولی در بعضی موارد باید این کار را دستی انجام بدید.
هر وقت خواستید این رجیستر را عدد دهی کنید باید بنویسید. TCNT3H=0x00; TCNT3L=0x00;
__________________
معشوق من چنان لطیف است که خود را به بودن نیالوده است...
|
|
|
|
|
|
#5 | |||||||||
|
عضو جديد
![]() تاریخ عضویت: Feb 2009 نوشتهها: 8
تشكرها: 1
2 بار تشكر شده در 2 پست
درجه: 1 [ ]سابقه: 0 / 18 ![]() |
ممنون از جوابتون . توی خماریش مونده بودم. اما رجیستر tcnt1 هم 16 بیتی است و این مشکل رو نداره.
|
|||||||||
|
|
|
|
|
#6 |
|
مدير ارشد
![]() |
خواهش می کنم..
خوب این بر می گرده به معماری AVR... در برخی میکرو ها توسعه داده شده مثل 64و 128 کاربر فقط امکان دسترسی بیتی به برخی از رجیستر های حافظه را داره. مثلا در همین قضیه آدرس رجیستر TCNT1 به ترتیب 0x2c,0x2d هستش.که در محدوده ی آدرس های قابل دسترس توسط کاربره ولی TCNT3 در این محدوده نیست.مثلا شما PORTG را هم قادر نیستی بیتی دستور بدی. برای مشاهده ی این محدوده باید هدر آدرس 64 را باز کنی.اون رجیستر هایی که توسط دستور sfrb تعریف شدن اجازه ی دسترسی بیتی و بایتی دارند.اونایی که توسط sfrw تعریف شدن اجازه ی دسترسی بیتی و وردی(16 بیتی) را دارند....
__________________
معشوق من چنان لطیف است که خود را به بودن نیالوده است...
|
|
|
|
| اين کاربران از emami به خاطر این مطلب مفید تشکر کرده اند |
![]() |
| علاقه مندی ها (Bookmarks) |
| برچسب ها |
| mega64, کانتر |
| ابزارهای موضوع | |
| نحوه نمایش | |
|