قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

borda
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
المشاركات: 85
نشاط [ borda ]
قوة السمعة:0
قديم 20-07-2017, 05:15 PM المشاركة 1   
ha pic18f4520 AND Atmega32 Twitter FaceBook Google+



السلام عليكم

سؤالي كيف استخدم اكثر من pwm فمثلا pic18f4520 Up to 5 PWM outputs كما هو مكتوب في الدتاشيت كيف استخدمهم مع معرفة اي مخارج في هذا المتحكم مع هذا المترجم mikro C pic pro .

السؤال الثاني كيف استطيع ان احدد الرجل في ADC AVR Atmega32 or Atmega16 في فمثلا اريد جعل pin A0 والباقي جعله ديجتال مع هذا المترجم mikro C AVR

شكرا

اعلانات

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 21-07-2017, 06:08 AM المشاركة 2   
sun


بسم الله الرحمن الرحيم

السؤال الثانى :
كل الارجل وضعها الافتراضى ديجيتال بدون تعديل , و اذا اردت ان يكون A0 انالوج :


adc_rd = ADC_Read(0);
// get ADC value from 0th channel


اللهم احفظ اقصانا و امتنا

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

borda
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
المشاركات: 85
نشاط [ borda ]
قوة السمعة:0
قديم 21-07-2017, 01:00 PM المشاركة 3   
Exclamation


بسم الله الرحمن الرحيم

السؤال الثانى :
كل الارجل وضعها الافتراضى ديجيتال بدون تعديل , و اذا اردت ان يكون A0 انالوج :


adc_rd = ADC_Read(0);
// get ADC value from 0th channel


اللهم احفظ اقصانا و امتنا
اولا شكر لك اخي الكريم علي الرد والاهتمام

ثانيا التعليمة التي ارسلتها لي اخي اعرفا واستخدمها ولكن في شئ ناقص في الكود بتاعي ارجو منك اخي الكريم ان تقوم بعمل اكود لكي افهمه واعرف ما كنت لا اعرف
اما الكود بتاعي

unsigned int adc_rd;

void main() {

DDRB = 0xFF; // Set PORTB as output

DDRA.F2=0;

while (1) {
adc_rd = ADC_Read(2); // get ADC value from 2nd channel
PORTB = adc_rd; // display adc_rd[7..0]

}
}


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 22-07-2017, 09:59 AM المشاركة 4   
sun


بسم الله الرحمن الرحيم

اخى العزيز ما مشكلة الكود خاصتك ارجو توضيحها , لا ارى حاجة للكود الاحمر فقط ,
كود:
unsigned int adc_rd;
void main() { DDRB = 0xFF; // Set PORTB as output DDRA.F2=0; while (1) { adc_rd = ADC_Read(2); // get ADC value from 2nd channel PORTB = adc_rd; // display adc_rd[7..0] } }
اللهم احفظ اقصانا و امتنا




borda
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
المشاركات: 85
نشاط [ borda ]
قوة السمعة:0
قديم 22-07-2017, 10:30 AM المشاركة 5   
Smile


بسم الله الرحمن الرحيم

اخى العزيز ما مشكلة الكود خاصتك ارجو توضيحها , لا ارى حاجة للكود الاحمر فقط ,
كود:
unsigned int adc_rd;
void main() { DDRB = 0xFF; // Set PORTB as output DDRA.F2=0; while (1) { adc_rd = ADC_Read(2); // get ADC value from 2nd channel PORTB = adc_rd; // display adc_rd[7..0] } }
اللهم احفظ اقصانا و امتنا


السلام عليكم اخي
شكرا علي الرد ولكني لم افهم الاستفسا ر ولكني اخي الحبيب ارجو منك عمل مثال مثلا LM35 شغال لكي افهم علتي لان الكود خاصتي لا يعمل ثا نيا برنامج البروتس proteus بيعطل اثناء عمل التجربة مع انه يعمل معي علي جميع الدوائر من دون مشكلة لكن اذا شغلت دائرة بها اي متحكم من نوع AVR فقط لازم يهنج


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 22-07-2017, 12:13 PM المشاركة 6   
sun


بسم الله الرحمن الرحيم

اليك اخى العزيز مثال و الله الموفق ,

كود:
  // LCD module connections
sbit LCD_RS at PORTB2_bit;
sbit LCD_EN at PORTB3_bit;
sbit LCD_D4 at PORTB4_bit;
sbit LCD_D5 at PORTB5_bit;
sbit LCD_D6 at PORTB6_bit;
sbit LCD_D7 at PORTB7_bit;

sbit LCD_RS_Direction at DDB2_bit;
sbit LCD_EN_Direction at DDB3_bit;
sbit LCD_D4_Direction at DDB4_bit;
sbit LCD_D5_Direction at DDB5_bit;
sbit LCD_D6_Direction at DDB6_bit;
sbit LCD_D7_Direction at DDB7_bit;
// End LCD module connections

float analog_val; 
int analog_val_integer;
short txt[2];

void main() {  
  DDRB=0XFF;
  Lcd_Init();
  Lcd_Cmd(_lcd_cursor_off);
  Lcd_Out(1,1,"TEMPERATURE" );
  while(1){
           analog_val = ADC_Read(0) ; //  READING INPUT VOLTAGE
           analog_val = analog_val * 5000/1023.0 ;// CONVERT INPUT TO ANALOG VAL IN MILLI VOLT
           analog_val = analog_val / 10; // DIVIDE BY 10 FOR LM35 DATASHEET
           analog_val_integer = analog_val;// TAKE INTEGER VALUE OF TEMPERATURE
           
      wordToStr(analog_val_integer/10, txt);
      Lcd_Out(2,1,ltrim(txt));
      wordToStr(analog_val_integer%10, txt);
      Lcd_Out(2,2,Ltrim(txt));
          }

  }

البروتيوس :



اللهم احفظ اقصانا و امتنا




borda
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
المشاركات: 85
نشاط [ borda ]
قوة السمعة:0
قديم 22-07-2017, 04:23 PM المشاركة 7   
adevil


بسم الله الرحمن الرحيم

اليك اخى العزيز مثال و الله الموفق ,

كود:
  // LCD module connections
sbit LCD_RS at PORTB2_bit;
sbit LCD_EN at PORTB3_bit;
sbit LCD_D4 at PORTB4_bit;
sbit LCD_D5 at PORTB5_bit;
sbit LCD_D6 at PORTB6_bit;
sbit LCD_D7 at PORTB7_bit;

sbit LCD_RS_Direction at DDB2_bit;
sbit LCD_EN_Direction at DDB3_bit;
sbit LCD_D4_Direction at DDB4_bit;
sbit LCD_D5_Direction at DDB5_bit;
sbit LCD_D6_Direction at DDB6_bit;
sbit LCD_D7_Direction at DDB7_bit;
// End LCD module connections

float analog_val; 
int analog_val_integer;
short txt[2];

void main() {  
  DDRB=0XFF;
  Lcd_Init();
  Lcd_Cmd(_lcd_cursor_off);
  Lcd_Out(1,1,"TEMPERATURE" );
  while(1){
           analog_val = ADC_Read(0) ; //  READING INPUT VOLTAGE
           analog_val = analog_val * 5000/1023.0 ;// CONVERT INPUT TO ANALOG VAL IN MILLI VOLT
           analog_val = analog_val / 10; // DIVIDE BY 10 FOR LM35 DATASHEET
           analog_val_integer = analog_val;// TAKE INTEGER VALUE OF TEMPERATURE
           
      wordToStr(analog_val_integer/10, txt);
      Lcd_Out(2,1,ltrim(txt));
      wordToStr(analog_val_integer%10, txt);
      Lcd_Out(2,2,Ltrim(txt));
          }

  }

البروتيوس :



اللهم احفظ اقصانا و امتنا


السلام عليكم اخي في الله
اشكرك اخي علي سرعة الرد واسال ما طلبت منك
والكود المرسل لي يعمل بكفائة عالية ماشاء الله
ولكني اسمح لي بعدة اسئلة لا افهمها

1- لماذا لم نكتب ADC_Init() :
2- المترجم لا يريد جعل باقي البورت A دجتال مثلا DDRA.f3=1;
3-ما هي الاعدادت الصحية التي يجب ان افعلها علي برنامج البروتس


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 22-07-2017, 07:54 PM المشاركة 8   
sun


بسم الله الرحمن الرحيم

اخى العزيز فى ال HELP للميكروسي لا يشترط ADC_INIT مع ADC_READ و لكن مع امر فقط GET_SAMPLE :



اما الاعدادات :



اما مشكلة
- المترجم لا يريد جعل باقي البورت A دجتال مثلا DDRA.f3=1;
لان هذا ميكرو ليس به بورت A و انما بورت B,C,D

اللهم احفظ اقصانا و امتنا


إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 09:53 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025