hi, I wanted to send a signal using a 433MHz transceiver and a atmega32a, so I wrote this code with fuses set to 8MHz:
#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 8000000UL;
int main(void) {
DDRD=0xFF;
while(1)
{
PORTD=0xFF;
_delay_us(685);
PORTD=0x00;
_delay_us(1300);
PORTD=0xFF;
_delay_us(735);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(1300);
PORTD=0xFF;
_delay_us(740);
PORTD=0x00;
_delay_us(1300);
PORTD=0xFF;
_delay_us(735);
PORTD=0x00;
_delay_us(641);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1430);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(1300);
PORTD=0xFF;
_delay_us(760);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1400);
PORTD=0x00;
_delay_us(640);
PORTD=0xFF;
_delay_us(1410);
PORTD=0x00;
_delay_us(1300);
PORTD=0xFF;
_delay_us(685);
PORTD=0x00;
_delay_ms(100);
}
}
but when I see it with my logic analyzer, all the delays are wrong, for example for the first ON time which should be 685 microseconds, I get 85 uS! what is wrong? thanks.