امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
پروگرامر usb كه كار كرد ولي حالا ...
نویسنده پیام
PRO غایب
كاربر دو ستاره
**

ارسال‌ها: 92
موضوع‌ها: 1
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 1061
( 400 تشکر در 136 ارسال )
ارسال: #12
RE: پروگرامر usb كه كار كرد ولي حالا ...
(۱۷-تير-۱۳۹۱, ۱۰:۲۴:۰۱)sharin نوشته است: شما سوال قبلي تون كلا يه چيز بود و اين سوالتون يه چيز ديگه ... !
در كل Switch case و if و ... يه جورهه ، بستگي به خودت دارهه كه با كدوميشون حال كني ...
چيزي رو كه گفتيد هم عملي هست.همين رو با IF هم مي شه نوشت ...
در كل يك روش واحد وجود ندارهه ...
بله . من قبلا" ويژوال بيسيك كار كردم و اين چيزا رو مي‌دونم .در كل براي اين كه بتونم يه دكمه براي pb0 بذارم و وقتي اون را فشار دادم در همان لحظه حالت چشمك زدن عوض بشه بايد چكار كنم؟
تو ويژوال بيسيك چيزي داشتيم به نام {رويداد} مثلا" mouse_click و وقتي با ماوس كليك مي‌كردي كاري را كه مي‌خواستي انجام مي‌داد حالا مي‌خوام بدونم چطور ميشه به ميكرو فهموند كه وقتي pb0 يك شد در همان لحظه مقدار n (كه روش چشمك زدن رو تغيير مي‌ده) رو تغيير بده.ديگه نمي‌دونم چطور بگم.Amaze

غریق دریای تکنولوژی  :lol:
(آخرین ویرایش در این ارسال: ۱۷-تير-۱۳۹۱, ۱۱:۰۸:۰۶، توسط PRO.)
۱۷-تير-۱۳۹۱, ۱۱:۰۷:۰۷
ارسال‌ها
پاسخ
Pardazesh-Gar آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 457
موضوع‌ها: 6
تاریخ عضویت: اردیبهشت ۱۳۸۶

تشکرها : 330
( 630 تشکر در 286 ارسال )
ارسال: #13
RE: پروگرامر usb كه كار كرد ولي حالا ...
باید از اینتراپت ها استفاده کنید.
تعداد محدودی از پورت های سری MEGA اینتراپت یا وقفه خارجی دارند. مثل INT0 و INT1 و INT2.
در CodeWizardAVR در سربرگ External IRQ میتونید سخت افزارش رو تنظیم کنید.
با فعال کردن هر یک از INTX یک تابع به برنامه تان اضافه میشه. در صورت فعال شدن هر یک از وقفه ها، خط اجرای برنامه به زیر برنامه INT مورد نظر پرش میکند.

---------------------------------------------------------------------------
تیـــز دوم، تیز دوم، تا به سواران برسم
--------------------------------------
۱۷-تير-۱۳۹۱, ۱۳:۱۳:۴۸
ارسال‌ها
پاسخ
تشکر شده توسط : sharin
PRO غایب
كاربر دو ستاره
**

ارسال‌ها: 92
موضوع‌ها: 1
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 1061
( 400 تشکر در 136 ارسال )
ارسال: #14
RE: پروگرامر usb كه كار كرد ولي حالا ...
(۱۷-تير-۱۳۹۱, ۱۳:۱۳:۴۸)Pardazesh-Gar نوشته است: باید از اینتراپت ها استفاده کنید.
تعداد محدودی از پورت های سری MEGA اینتراپت یا وقفه خارجی دارند. مثل INT0 و INT1 و INT2.
در CodeWizardAVR در سربرگ External IRQ میتونید سخت افزارش رو تنظیم کنید.
با فعال کردن هر یک از INTX یک تابع به برنامه تان اضافه میشه. در صورت فعال شدن هر یک از وقفه ها، خط اجرای برنامه به زیر برنامه INT مورد نظر پرش میکند.
خدا خيرت بده . آفرين .SmileClap
حالا كه زبانه‌ي external irq را باز كردم و tab0 را فعال كردم يه mode داره .بايد كدومش را بزنم ؟
در ضمن كدام پايه ي ميكروي مگا 32 به همين tab0 مربوط مي‌شه؟

غریق دریای تکنولوژی  :lol:
(آخرین ویرایش در این ارسال: ۱۷-تير-۱۳۹۱, ۱۳:۲۱:۲۵، توسط PRO.)
۱۷-تير-۱۳۹۱, ۱۳:۱۸:۱۴
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #15
RE: پروگرامر usb كه كار كرد ولي حالا ...
خوب دوست من همون اول همين رو مي گفتي ... !!

اون مودي كه نوشته حساسيتش رو تعيين مي كنه ...
مثلا با اومدن لبه ي پايين رونده برهه به وقفه ...
شمارهه پايه هم بايستي از روي pinout در datasheet ميكرو چك كنيد. با نام INT0/1 و ...
شما بهترهه با كتاب بريد جلو ...
تمام اين چيزا در كتاب ها گفته شدن ...

موفق باشيد.

۱۷-تير-۱۳۹۱, ۱۴:۰۸:۱۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Pardazesh-Gar
PRO غایب
كاربر دو ستاره
**

ارسال‌ها: 92
موضوع‌ها: 1
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 1061
( 400 تشکر در 136 ارسال )
ارسال: #16
RE: پروگرامر usb كه كار كرد ولي حالا ...
(۱۷-تير-۱۳۹۱, ۱۴:۰۸:۱۳)sharin نوشته است: خوب دوست من همون اول همين رو مي گفتي ... !!

اون مودي كه نوشته حساسيتش رو تعيين مي كنه ...
مثلا با اومدن لبه ي پايين رونده برهه به وقفه ...
شمارهه پايه هم بايستي از روي pinout در datasheet ميكرو چك كنيد. با نام INT0/1 و ...
شما بهترهه با كتاب بريد جلو ...
تمام اين چيزا در كتاب ها گفته شدن ...

موفق باشيد.

خيلي ممنونم . حالا كه ديدم اگر PD2 كه int0 هست را انتخاب كنم و led ها رو به پورت C وصل كنم به هدفم مي‌رسم.خيلي ممنونم.

غریق دریای تکنولوژی  :lol:
(آخرین ویرایش در این ارسال: ۱۷-تير-۱۳۹۱, ۱۶:۲۱:۰۸، توسط PRO.)
۱۷-تير-۱۳۹۱, ۱۴:۳۹:۰۳
ارسال‌ها
پاسخ
PRO غایب
كاربر دو ستاره
**

ارسال‌ها: 92
موضوع‌ها: 1
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 1061
( 400 تشکر در 136 ارسال )
ارسال: #17
RE: پروگرامر usb كه كار كرد ولي حالا ...
به توصيه ‌ي شما كتاب هم خوندم.ولي يه چيزايي درباره لبه پايين رونده و بالارونده و... نوشته بود.آخرش من نفهميدم براي اينكه با فشار كليدي كه به INT0 وصله ، وقفه اجرا بشه بايد كدوم MODE رو انتخاب كنم؟همچنين آن سر كليد بايد به كجا وصل بشه؟(مثبت يا منفي)
در ضمن مي‌خوام وقتي روتين وقفه اجرا شد مقدار n افزايش پيدا كنه .اون كد هايي كه براي افزايش n بهم معرفي كردم رو بايد كجا بنويسم(آخهcodewizard وقتي كد توليد مي‌كنه دو قسمت داره با عنوان (PLACE YOUR CODE HERE) كه يكيش قبل كد اينتراپته و اون يكيش توي حلقه‌ي وايل (1) است).
ببخشيد زياد توضيح دادم.

غریق دریای تکنولوژی  :lol:
۱۷-تير-۱۳۹۱, ۱۶:۳۰:۴۸
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #18
RE: پروگرامر usb كه كار كرد ولي حالا ...
به چند روش مي شه كليد رو طراحي كرد. بسته به نوع كليدي كه مي بندي حساسيت به لبه رو مشخص مي كني ، و يا بلعكس.
اضافه شدن n رو هم در روال وقفه بايستي بنويسيد نه در while
كلا همه چيز واضح هست ، فقط اگر خودتون هم كمي آزمون خطا كنيد ، هم تجربه اتون بيشتر مي شه و هم زودتر به جواب مي رسيد.

موفق باشيد.

۱۷-تير-۱۳۹۱, ۱۷:۴۰:۴۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Pardazesh-Gar, PRO
PRO غایب
كاربر دو ستاره
**

ارسال‌ها: 92
موضوع‌ها: 1
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 1061
( 400 تشکر در 136 ارسال )
ارسال: #19
RE: پروگرامر usb كه كار كرد ولي حالا ...
بله فرمايش شما متينه . ولي پدرم در اومد از بس آزمون و خطا كردم لطفا" كمكم كنيد .اين كد برنامه ي منه توي Switch Case حالت هاي تايمر رو گذاشتم.يه دكمه شستي به پايه PD2 وصل كردم .(اون سر دكمه به كجا بايد وصل بشه).اين برنامه رو توي پروتئوس شبيه سازي كردم ولي n همون 1 مي‌مونه و فقط حالت اول چشمك زدن اجرا مي‌شه.اين كد كجاش اشكال داره؟(LED ها به پورت C وصلند)
کد:
Chip type : ATmega32
Program type : Application
Clock frequency : 1.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*********************************************/

#include <mega32.h>
#include <delay.h>
// External Interrupt 0 service routine
int i,n=1;

interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (n<6)
{
n=n+1;
}
if (n=6)
{
n=1;
}
}

// Declare your global variables here

void main(void)
{
DDRC=0xFF;
GICR|=0x40;
MCUCR=0x01;
MCUCSR=0x00;
GIFR=0x40;

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

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

// Global enable interrupts
#asm("sei")

while (1)
{
switch(n)
{
case 1:
for(i = 1; i <= 64; i = i*4)
{
PORTC = i;
delay_ms(500);
}
for(i = 128; i >= 2; i = i/4)
{
PORTC = i;
delay_ms(500);
}
break;
/******************************/
case 2:
PORTC=0b10101010;
delay_ms(500);
PORTC=0b01010101;
delay_ms(500);
PORTC=0b11110000;
delay_ms(500);
PORTC=0b00001111;
delay_ms(500);
break;
/*****************************/
case 3:
for(i = 1; i <= 128; i = i*2)
{
PORTC = i;
delay_ms(500);
}




for(i = 128; i >= 1; i = i/2)
{
PORTC = i;
delay_ms(500);
}
break;
/****************************/
case 4:
for(i=1;i<=255;i=(i*2)+1)
{
PORTC=i;
delay_ms(500);
}
for(i=255;i>=1;i=(i-1)/2)
{
PORTC=i;
delay_ms(500);
}
PORTC=0b0;
delay_ms(500);
break;
/***************************/
case 5:
for(i=1;i<=255;i=(i*2)+1)
{
PORTC=i;
delay_ms(500);
}
PORTC=0b11111110;
delay_ms(500);
PORTC=0b11111100;
delay_ms(500);
PORTC=0b11111000;
delay_ms(500);
PORTC=0b11110000;
delay_ms(500);
PORTC=0b11100000;
delay_ms(500);
PORTC=0b11000000;
delay_ms(500);
PORTC=0b10000000;
delay_ms(500);
PORTC=0b0;
delay_ms(500);
break;
/*******************/
case 6:
PORTC=0b11000011;
delay_ms(500);
PORTC=0b00111100;
delay_ms(500);
PORTC=0b00011000;
delay_ms(500);
PORTC=0b11100111;
delay_ms(500);
break;
}
};
}

غریق دریای تکنولوژی  :lol:
۱۸-تير-۱۳۹۱, ۲۳:۰۰:۳۸
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #20
RE: پروگرامر usb كه كار كرد ولي حالا ...
نقل قول: ولي پدرم در اومد از بس آزمون و خطا كردم لطفا" كمكم كنيد
اين كه فقط يك كليدهه ...
هنوز مونده تا ...
... و چه آزمون خطا هايي پيش روست !

کد:
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (n<6)
{
n=n+1;
}
if (n=6)
{
n=1;
}
}

اين درسته ، اما كار اضافه انجام دادي ، به سبك پايين مي توني بهينه اش كني.

کد php:
interrupt [EXT_INT0void ext_int0_isr(void)
{
n++;
}
if (
n>5)
{
n=1;
}

شرط هاي حلقه ي For رو هم شايد بهتر باشه به سبك زير بنويسي ...
مثلا :
کد:
for(i = 1; i <= 64; i = i*4)
رو به صورت زير بنويس :
کد php:
for(165i*4

در كل مشكل خاصي به چشم نخورد ...

شما وقتي كليد رو هنوز طراحي نكرديد ، پس نبايد انتظار داشته باشيد مقدار n هم زياد بشه ...
اين كه كليد رو چطوري طراحي كنيد ، راحت ترين كار اينه كه يك نمونه ببينيد. ( توي net يه سرچي بزنيد يا از كتاب هايي كه پروژه انجام شده دارن ، سخت افزار كليد رو نگاه كنيد. )
بعد اون رو تحليل كنيد و لبه ي پايين و يا بالا رونده ساز بودن اش رو درك كنيد.
منظورم از آزمون خطا اين نيست كه همينجوري الكي وصل كني ! ، بلكه اينه كه يه ايده ي پايه داشته باشي و از همه ي لحاظ تستش كني و اشكالاتش رو پيدا كني و بتوني به طراحي درست برسي.
ايده ي پايه : پايه ي ميكرو رو پول آپ ( PULLUP ) مي كني ، يك سر كليد رو به همون پايه مي زني و سر ديگه اش رو به زمين.
اينطوري در حالت عادي ولتاژ پايه 5V هست ، وقتي كليد رو بزني ، پايه به زمين وصل مي شه و ولتاژ پايه صفر خواهد شد.
پس ، تغيير وضعيت از 5V به 0V يعني چي ؟ يعني لبه ي پايين رونده.
از نظر تئوري اين مدار كليد كاملا درست هست. مي ري جلوتر مي بيني كه يه سري مشكلاتي در عمل دارهه !
( وقتي به صورت مكانيكي ارتباطي رو برقرار مي كني ،‌ در سيگنال يه لرزشي به وجود مي ياد )
حالا بايد براي حل اين ايده بدي . به صورت نرم افزاري مي شه حل اش كرد ، به صورت سخت افزاري هم با استفاده از يك خازن ( در نقش فيلتر پايين گذر ) ( يا سازنده ي تاخير به قولي ! ) مي شه مشكل رو برطرف كرد و ...

منظورم از آزمون خطا اينه ...
كمي سرچ كنيد + آزمون خطا به سبك بالا ...

(آخرین ویرایش در این ارسال: ۱۹-تير-۱۳۹۱, ۱۰:۱۵:۱۲، توسط sharin.)
۱۹-تير-۱۳۹۱, ۱۰:۱۴:۳۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Pardazesh-Gar, PRO


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  پروگرامر هاتل EBKA 105 112,508 ۲۴-اسفند-۱۳۹۹, ۰۹:۱۲:۴۵
آخرین ارسال: hadikh73
  [فوری] عدم شناسایی میکرو توسط پروگرامر منیره مرادی 1 2,525 ۲۹-مرداد-۱۳۹۷, ۲۰:۵۷:۳۰
آخرین ارسال: 1نفر
  راهنمایی برای انتخاب پروگرامر Ambassador 5 8,523 ۰۴-مرداد-۱۳۹۶, ۱۶:۰۳:۵۹
آخرین ارسال: CONTOROLER
  پروگرامر هاتل و Fast Fuse مهدی ن 7 7,246 ۱۰-بهمن-۱۳۹۵, ۱۰:۱۳:۲۱
آخرین ارسال: aKaReZa75
  پروگرامر USB برای avr سازگار با 0.USB 3 poiut 1 2,995 ۳۱-مرداد-۱۳۹۴, ۰۰:۲۰:۱۶
آخرین ارسال: sharin
  [سوال] درخواست کمک در مورد انتخاب پروگرامر mahdifaraji 6 4,336 ۲۰-خرداد-۱۳۹۴, ۱۲:۰۱:۱۲
آخرین ارسال: lachini
Cool پروگرامر USBASP با قابليت تشخيص اتوماتيک و عدم وابستگي به فيوز بيت ها lachini 16 14,700 ۱۶-خرداد-۱۳۹۴, ۱۹:۰۵:۳۶
آخرین ارسال: lachini
  نشناختن پروگرامر توسط ويندوز farzaneh007 33 30,881 ۰۴-فروردین-۱۳۹۴, ۲۱:۱۹:۰۴
آخرین ارسال: vigraz
  مشکل با پروگرامر parsegade 7 6,454 ۰۱-فروردین-۱۳۹۴, ۰۰:۳۴:۴۳
آخرین ارسال: lachini
  ساخت پروگرامر USB lktra 8 10,857 ۲۵-اسفند-۱۳۹۳, ۱۸:۰۱:۰۱
آخرین ارسال: alimogmov

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS