реклама на сайте
подробности

 
 
> at90usb162, наработки по at90USB (Mouse Demonstration)
sergeus
сообщение Feb 3 2008, 23:23
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 157
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 174



Здравствуйте! Помогите пожалуйста, не могу разобраться с example (hid usb mouse):
http://atmel.com/dyn/resources/prod_docume...mouse-1_0_3.zip
может кто разобрался, или есть какие-нибудь материалы? И как мне показалось, по дефолту внутренний RC-генератор на 8MHZ отключен(в даташите написано, что подключен), т.к. без внешнего кварца at90usb162 не определялся, а Flip не хотел прошивать.
С уважением, Сергей
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aesok
сообщение Feb 4 2008, 08:15
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Чем компилируете?
Go to the top of the page
 
+Quote Post
sergeus
сообщение Feb 4 2008, 13:33
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 157
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 174



Цитата(aesok @ Feb 4 2008, 11:15) *
Чем компилируете?


AVRStudio
Go to the top of the page
 
+Quote Post
aesok
сообщение Feb 4 2008, 15:43
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(sergeus @ Feb 4 2008, 16:33) *
AVRStudio


.... ну нельзя же не знать названя инструментов которыми вы пользуетесь... зачем заставлять людей играть в угадалки.....

avr-gcc входящий в состав WinAVR компилирует неправильный код для AT90USB162 и AT90USB82 контролеров. Он использует инструкции умножения, хотя они не не работают в AT90USB162 и AT90USB82.

Или ждите новый WinAVR или попробуйте использовать сборку от klen-на:
http://electronix.ru/forum/index.php?showtopic=42167

Анатолий.

Сообщение отредактировал aesok - Feb 4 2008, 15:51
Go to the top of the page
 
+Quote Post
sergeus
сообщение Feb 4 2008, 16:23
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 157
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 174



Цитата(aesok @ Feb 4 2008, 18:43) *
.... ну нельзя же не знать названя инструментов которыми вы пользуетесь... зачем заставлять людей играть в угадалки.....

avr-gcc входящий в состав WinAVR компилирует неправильный код для AT90USB162 и AT90USB82 контролеров. Он использует инструкции умножения, хотя они не не работают в AT90USB162 и AT90USB82.

Или ждите новый WinAVR или попробуйте использовать сборку от klen-на:
http://electronix.ru/forum/index.php?showtopic=42167

Анатолий.


Подскажите пожалуйста, поэтому эта программа откомпиленная в WinAVR под at90usb162 работает но "не очень правильно":


/*at90usb162
я повесил внешний кварц = 8MHZ (т.к. мне показалось, что внутренний RC - генератор отключен по дефолту),
кнопка висит к земле на PD.3 (светодиоды на PB.0 и PB.1)
при нажатой кнопке красный светодиод мигает с периодом 10мс,
при отпущенной кнопке мигает зелёный с периодом 20мс
*/

#include <avr/io.h>
#include <util/delay.h>

#define F_CPU = 8000000;


char i;

void led (char a){

switch (a){

case 0: // кнопка не нажата
{
for (i=0; i<200; i++){
PORTB = 0b00000010; // green led
_delay_ms(10);
PORTB = 0x00;
_delay_ms(10);
}
return 0;
};



case 1: // кнопка нажата
{
for (i=0; i<200; i++){
PORTB = 0b00000001; // red led
_delay_ms(5);
PORTB = 0x00;
_delay_ms(5);
}
return 0;
};


}

}


void button (void){


if ((PIND & 0b00001000) == 0b00001000) led(0);
else led(1);
}



int main (void){

DDRB = 0xFF; // portb - output
PORTB = 0x00;

DDRD = 0x00; // all - inpupts
PORTD = 0xFF; // all pull up resistors ON

while(1) {
button();
}

}
не всё good с количеством циклов for i... (проверял на осциллографе)
Go to the top of the page
 
+Quote Post
aesok
сообщение Feb 4 2008, 16:53
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Во первых:

#include <avr/io.h>
#define F_CPU = 8000000UL;
#include <util/delay.h>


Во вторых:

char i;

void led (char a){
....
{
for (i=0; i<200; i++){...}
....
}

Какое максимальное число можно сохранить а веременой типа char?

Анатолий.
Go to the top of the page
 
+Quote Post
sergeus
сообщение Feb 4 2008, 17:27
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 157
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 174



Цитата(aesok @ Feb 4 2008, 19:53) *
Во первых:

#include <avr/io.h>
#define F_CPU = 8000000UL;
#include <util/delay.h>
Во вторых:

char i;

void led (char a){
....
{
for (i=0; i<200; i++){...}
....
}

Какое максимальное число можно сохранить а веременой типа char?

Анатолий.


Спасибо.
что означает UL?

#include <avr/io.h>
#define F_CPU = 8000000UL;
#include <util/delay.h> - после правки, как Вы посоветовали, компилятор выдает ошибку:

Compiling: led_usb.c
...
c:/avr/winavr/bin/../avr/include/util/delay.h: In function '_delay_us':
c:/avr/winavr/bin/../avr/include/util/delay.h:106: error: expected expression before '=' token
c:/avr/winavr/bin/../avr/include/util/delay.h: In function '_delay_ms':
c:/avr/winavr/bin/../avr/include/util/delay.h:131: error: expected expression before '=' token
...
make.exe: *** [led_usb.o] Error 1



Насчет сhar: тип char от 0 до 255 (1байт)

Сообщение отредактировал sergeus - Feb 4 2008, 17:48
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 4 2008, 17:47
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(sergeus @ Feb 4 2008, 19:27) *
что означает UL?
Керниган и Ритчи, "Язык программирования С". Книга не настолько большая, чтобы ее тут пересказывали в каждой теме, где упоминается <avr/delay.h>
Цитата(sergeus @ Feb 4 2008, 19:27) *
Насколько я знаю, #define F_CPU может располагаться в любой части программы, а компилятор сам поймет, что описано, а что нет.
Сам не поймет. Символ должен быть определен до того места, где он будет использован.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sergeus
сообщение Feb 4 2008, 17:55
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 157
Регистрация: 11-12-07
Из: Москва
Пользователь №: 33 174



Цитата(Сергей Борщ @ Feb 4 2008, 20:47) *
Керниган и Ритчи, "Язык программирования С". Книга не настолько большая, чтобы ее тут пересказывали в каждой теме, где упоминается <avr/delay.h>Сам не поймет. Символ должен быть определен до того места, где он будет использован.


Спасибо за четкие ответы. Скажите пожалуйста тогда почему выдаёт ошибку:

Compiling: led_usb.c

c:/avr/winavr/bin/../avr/include/util/delay.h: In function '_delay_us':
c:/avr/winavr/bin/../avr/include/util/delay.h:106: error: expected expression before '=' token
c:/avr/winavr/bin/../avr/include/util/delay.h: In function '_delay_ms':
c:/avr/winavr/bin/../avr/include/util/delay.h:131: error: expected expression before '=' token

make.exe: *** [led_usb.o] Error 1
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 01:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01456 секунд с 7
ELECTRONIX ©2004-2016