با سلام
ما یک ربات سه سنسور داریم،که میکرو میگا 32 اون سوخت .. و مجبور شدیم،میگا 8 رو جایگزینش کنیم(بدلیل کمبود بودجه !)
کدها تویه میگا 32 روی ربات خوب جواب میداد ولی توی مگا 8 بعضی کدها رو نمی خونه !! و باید به طریقی دیگری ان را بنویسیم
کد ها در مگا 32
[code=c]/************************************************** ***
edited by: mahan!!!
Chip type : ATmega32
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
************************************************** ***/
#include <mega32.h>
#define xtal 8000000L
///////////////////////////
void main(void)
{
DDRD=0xFF;
// Timer/Counter 1 initialization:
// Clock source: System Clock
// Clock value: 3.906 kHz
// Mode: Fast PWM top=0x00FF
TCCR1A=0xA1;
TCCR1B=0x0D;
////////////////////////////////////
// Harekat avvaliye
OCR1A=65;
OCR1B=65;
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=0;
while (1)
{
if(PINA==0b00000100)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
OCR1A=65;
OCR1B=45;
}
if(PINA==0b00000010)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=0;
OCR1A=65;
OCR1B=65;
}
if(PINA==0b00000001)
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;
OCR1A=45;
OCR1B=65;
}
if(PINA==0b00000011)
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;
OCR1A=45;
OCR1B=65;
}
if(PINA==0b00000110)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
OCR1A=65;
OCR1B=45;
}
if(PINA==0b00000101)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=0;
OCR1A=65;
OCR1B=65;
}
}
}[/code]
کد ها در مگا 8
[code=c]
************************************************** ***/
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
************************************************** ***/
#include <mega8.h>
#define xtal 8000000L
///////////////////////////
void main(void)
{
DDRD=0xFF;
DDRB=0xFF;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 3.906 kHz
// Mode: Fast PWM top=0x00FF
TCCR1A=0xA1;
TCCR1B=0x0D;
////////////////////////////////////
OCR1A=65;
OCR1B=65;
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=0;
while (1)
{
if(PINC==0b000001)
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;
OCR1A=40;
OCR1B=65;
}
if(PINC==0b000010)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=0;
OCR1A=65;
OCR1B=65;
}
if(PINC==0b000100)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
OCR1A=65;
OCR1B=40;
}
}
}[/code]
حالا مشکل اینجاست که کد PINC==0b000001 خونده نمیشه (ولی تویه مگا 32 خونده میشد،البته با اضافه کرد 2 بیت اضافه) و باید اون رو اینطوری بنویسیم PINC.0==1 تا میکرو متوجه بشه.(و این طرز نوشتن باعث میشه که نشه وقتی ربات دو سنسور رو میخونه 1 کرده بخونه و یا کدش رو بنویسیم،یا حداقل من کدنویسیش رو بلد نیستم)
لطفا راهنمایی کنید
مشکل دقیقا کجاست
فایل پرتئوس دو میکرو هم موجوده اگر نیاز شده بگید تا براتون اپلود کنم.
باتشکر.
ما یک ربات سه سنسور داریم،که میکرو میگا 32 اون سوخت .. و مجبور شدیم،میگا 8 رو جایگزینش کنیم(بدلیل کمبود بودجه !)
کدها تویه میگا 32 روی ربات خوب جواب میداد ولی توی مگا 8 بعضی کدها رو نمی خونه !! و باید به طریقی دیگری ان را بنویسیم
کد ها در مگا 32
[code=c]/************************************************** ***
edited by: mahan!!!
Chip type : ATmega32
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
************************************************** ***/
#include <mega32.h>
#define xtal 8000000L
///////////////////////////
void main(void)
{
DDRD=0xFF;
// Timer/Counter 1 initialization:
// Clock source: System Clock
// Clock value: 3.906 kHz
// Mode: Fast PWM top=0x00FF
TCCR1A=0xA1;
TCCR1B=0x0D;
////////////////////////////////////
// Harekat avvaliye
OCR1A=65;
OCR1B=65;
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=0;
while (1)
{
if(PINA==0b00000100)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
OCR1A=65;
OCR1B=45;
}
if(PINA==0b00000010)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=0;
OCR1A=65;
OCR1B=65;
}
if(PINA==0b00000001)
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;
OCR1A=45;
OCR1B=65;
}
if(PINA==0b00000011)
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;
OCR1A=45;
OCR1B=65;
}
if(PINA==0b00000110)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
OCR1A=65;
OCR1B=45;
}
if(PINA==0b00000101)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=0;
OCR1A=65;
OCR1B=65;
}
}
}[/code]
کد ها در مگا 8
[code=c]
************************************************** ***/
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
************************************************** ***/
#include <mega8.h>
#define xtal 8000000L
///////////////////////////
void main(void)
{
DDRD=0xFF;
DDRB=0xFF;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 3.906 kHz
// Mode: Fast PWM top=0x00FF
TCCR1A=0xA1;
TCCR1B=0x0D;
////////////////////////////////////
OCR1A=65;
OCR1B=65;
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=0;
while (1)
{
if(PINC==0b000001)
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=1;
PORTD.3=0;
OCR1A=40;
OCR1B=65;
}
if(PINC==0b000010)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=1;
PORTD.3=0;
OCR1A=65;
OCR1B=65;
}
if(PINC==0b000100)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
OCR1A=65;
OCR1B=40;
}
}
}[/code]
حالا مشکل اینجاست که کد PINC==0b000001 خونده نمیشه (ولی تویه مگا 32 خونده میشد،البته با اضافه کرد 2 بیت اضافه) و باید اون رو اینطوری بنویسیم PINC.0==1 تا میکرو متوجه بشه.(و این طرز نوشتن باعث میشه که نشه وقتی ربات دو سنسور رو میخونه 1 کرده بخونه و یا کدش رو بنویسیم،یا حداقل من کدنویسیش رو بلد نیستم)
لطفا راهنمایی کنید
مشکل دقیقا کجاست
فایل پرتئوس دو میکرو هم موجوده اگر نیاز شده بگید تا براتون اپلود کنم.
باتشکر.
دیدگاه