roboforum.ru

Технический форум по робототехнике.

Нужна помощь в переписывани програмы для PIC под AVR

Нужна помощь в переписывани програмы для PIC под AVR

ART-87 » 04 май 2009, 03:37

Всем привет! Очень срочно нужна помощь профессионалов.
Проблема вот в чем: Есть 3-х осевой акселерометр MMA7455L, есть мк ATmega16, необходимо получать информацию с акселерометра (его координаты x y z) по шине SPI на мк и потом передавать данные в комп. Поскольку я в этом деле не силен, но сделать надо полюбому, обращаюсь к добрым людям с криками о помощи. После долгих поисков, нашел в инете кое-какую инфу, а именно код программы для PIC контроллера, этот код реализует вродебы то что мне нужно, только для PIC, может кому не влом, посмотрит эту прогу и скажет как переделать ее под авр, желательно под мегу16? Если кто откликнется, буду ОООООчень благодарен!!!
вот код:
Код: Выделить всёРазвернуть
#include <16F886.H> 
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)

#define ACC_CS  PIN_C1

// SPI modes
#define SPI_MODE_0  (SPI_L_TO_H | SPI_XMIT_L_TO_H)
#define SPI_MODE_1  (SPI_L_TO_H)
#define SPI_MODE_2  (SPI_H_TO_L)
#define SPI_MODE_3  (SPI_H_TO_L | SPI_XMIT_L_TO_H)

//----------------------------------
void Acc_Write_Register(int8 reg, int8 data)
{
output_low(ACC_CS);
spi_write(((reg & 0x3F) << 1) | 0x80);
spi_write(data);
output_high(ACC_CS);
}

//---------------------------------
int8 Acc_Read_Register(int8 reg)
{
int8 data;

output_low(ACC_CS);
spi_write((reg & 0x3F) << 1);
data = spi_read(0);
output_high(ACC_CS);

return(data);
}

//===============================
void main()
{
int8 result;
int8 Xdata, Ydata, Zdata;

output_high(ACC_CS);

delay_ms(10);   // Minimum 1 ms required after power-up.

setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_16);  // 1.25 MHz sclk

Acc_Write_Register(0x16, 0x05);
delay_ms(30);  // Minimum 20 ms required after exiting standby

// Make sure we read back 0x05 from the Control register.
result = Acc_Read_Register(0x16);
printf("Control register = %X \n\r", result);

while(1)
  { 
   Xdata = Acc_Read_Register(0x06); //Read X,Y,Z outputs from Sensor
   Ydata = Acc_Read_Register(0x07);
   Zdata = Acc_Read_Register(0x08);
   delay_ms(500);
   printf("XYZ:  %U, %U, %U \n\r", Xdata, Ydata, Zdata);
  }


}


и ссылка с забугорного форума, откуда я взял этот код http://pic-c.ccsinfo.com/forum/viewtopic.php?t=37562

В качестве эмулятора ипользую протеус, но поскольку там нет модели акселерометра, думаю, что надо его эмулировать, пока что пытаюсь организовать обмен по шине SPI между двумя мк (компилятор CVAVR, эмулятор протеус), но ничего не выходит, если никто не сможет помочь в переписывании программы для PIC под AVR, то хотя бы с SPI помогите.
Короче говоря помогите кто чем сможет:)
Последний раз редактировалось ART-87 04 май 2009, 13:22, всего редактировалось 1 раз.

Re: Нужна, помощь! Очень срочно!!!! помогите плиз!

blindman » 04 май 2009, 03:40

Нажимаем кнопку "Правка", и :
1. Тему назвать в соответствии с содержимым
2. Код заключить в тэг [code]

Re: Нужна, помощь! Очень срочно!!!! помогите плиз!

EdGull » 04 май 2009, 08:22

ART-87 писал(а):Если кто откликнется, буду ОООООчень благодарен!!!

во сколько ты оцениваешь свою благодарность?

Re: Нужна помощь в переписывани програмы для PIC под AVR

ART-87 » 04 май 2009, 13:44

а за сколько вы согласились бы мне помочь?
Я так думаю, что для опытного человека в этом деле, задача не сложная... но мне хотя бы нужно знать в каких пределах обычно оценивается такая работа:)

Re: Нужна помощь в переписывани програмы для PIC под AVR

MiBBiM » 04 май 2009, 13:49

вобще вроде не тяжко... либы тока нужные подключить да две процедуры переписать :D

Добавлено спустя 1 минуту 10 секунд:
P.S> вот тоже говорят что си - машинонезависимый язык, ага :D

Re: Нужна помощь в переписывани програмы для PIC под AVR

blindman » 04 май 2009, 14:08

Настолько независим, насколько и любой другой. То есть до тех пор пока не надо работать напрямую с железом.

Re: Нужна помощь в переписывани програмы для PIC под AVR

Duhas » 04 май 2009, 15:16

тоесть в области МК он очень даже и зависим)

Re: Нужна помощь в переписывани програмы для PIC под AVR

blindman » 04 май 2009, 15:33

Ровно настолько же насколько и на "больших" процессорах

Re: Нужна помощь в переписывани програмы для PIC под AVR

Duhas » 04 май 2009, 15:36

ну я имею ввиду уровень программирования под ядро а не под ОС...

Re: Нужна помощь в переписывани програмы для PIC под AVR

contr » 04 май 2009, 15:47

разные камни, разные компиляторы... В любом случае прогу на языке высокого уровня портировать легче

Re: Нужна помощь в переписывани програмы для PIC под AVR

EdGull » 04 май 2009, 15:57

ART-87 писал(а):а за сколько вы согласились бы мне помочь?
Я так думаю, что для опытного человека в этом деле, задача не сложная... но мне хотя бы нужно знать в каких пределах обычно оценивается такая работа:)

я думаю что нужно оринтироваться как минимум на 3000р.

Re: Нужна помощь в переписывани програмы для PIC под AVR

MiBBiM » 04 май 2009, 16:15

и выложить текущие наработки

Добавлено спустя 1 минуту 58 секунд:
и даташиты

Добавлено спустя 3 минуты 49 секунд:
и фотку установки :lol:

Re: Нужна помощь в переписывани програмы для PIC под AVR

ALHIMIK » 04 май 2009, 16:34

Со спи всё просто если нужно могу выложить свой проект ... Бесплатно :)

Re: Нужна помощь в переписывани програмы для PIC под AVR

EdGull » 04 май 2009, 16:36

твой бесплатный проект с 3-х осевой акселерометр MMA7455L?

Re: Нужна помощь в переписывани програмы для PIC под AVR

galex1981 » 04 май 2009, 16:37

Если ладишь с васиком можешь мой проект глянуть: RoboRF для минибота. ТОже есть работа со SPI


Rambler\'s Top100 Mail.ru counter