Цитата(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... (проверял на осциллографе)