Hallo Zusammen ....
Ich hab diese Funktion <util/delay.h> mit ATmega16 versucht zu benutzen.
Aber die Zeit nicht so stimmt.
zB. Ich hab auf 80us gesetzt, aber sie kommt auf 990us aus.
und habe ich die delay time geändert, trotzdem bleibt sie auf 950-990us
Ich habe schon mit FUSE Bit korrigiert, das schon richtig ist.
Die Quarz ist auch richtig 4Mhz.
Woran kann die Problem noch legen, oder mich etwas flash gemacht
Danke für eure Hilfe ...
Gruß
PaMan
Code:
#include <avr/interrupt.h>
#include <avr/io.h>
#include <stdint.h>
#ifndef F_CPU
#define F_CPU 4000000UL /* Quarz 4 Mhz */
#endif
#include <util/delay.h>
/******************************************************************************/
int main (void)
{
DDRA = 0xFF; // Set PortA as Output
DDRB = 0b11111010; // PB3( OC0 as Output) PB0(T0 as Input) PB2(SW as Input)
PORTB = 0b00000101; // Pull Up Input Pin
PORTA |= (1<<PORTA0); // Pre Show
while(PINB & (1<<PINB2)); // wait switch Clear (Loop until bits clear)
PORTA &= ~(1<<PORTA0); // switch Confirm clear pre show
while(1)
{
_delay_us(80);
PORTA |= (1<<PORTA1);
_delay_us(80);
PORTA &= ~(1<<PORTA1);
}
}
Lesezeichen