Mam następujący problem:
Chce mrugać diodą co 1 s. Pracuje z ATmega8 ustawioną na wewnętrzny oscyl. RC 1 MHz - fuse bity ustawione jak na zdjęciu poniżej:
Opcje kompilatora również jak na zdjęciu:
Nagłówek mojego programu wygląda następująco:
Problem polega na tym, że po wywołaniu funkcji:
dioda pulsuje szybciej niż co 1 sekundę.
Rejestry kierunku ustawione jak poniżej:
Pytanie - gdzie robię błąd?
Kod umieszczamy w znacznikach [code] - proszę o tym pamiętać.
[zumek]
Chce mrugać diodą co 1 s. Pracuje z ATmega8 ustawioną na wewnętrzny oscyl. RC 1 MHz - fuse bity ustawione jak na zdjęciu poniżej:
Opcje kompilatora również jak na zdjęciu:
Nagłówek mojego programu wygląda następująco:
#include <avr/io.h>
#include <stdlib.h>
#include <util/delay.h>
#include "kbd4x4.h"
#include "lcd.h"
#include <avr/eeprom.h>
[b]#define F_CPU 1000000UL // 1MHz[/b]
Problem polega na tym, że po wywołaniu funkcji:
void dioda(void)
{
uint8_t i=0;
uint8_t j=0;
while(i<10)
{
j=i+0x30;
lcd_putc(j);
PORTC &= 0x00; // zapal LED
_delay_ms(1000); // czekaj 1s
PORTC |= 0xFF; // zgaś LED
_delay_ms(1000);
i++;
}
}
int main(void)
{
uint8_t klawisz;
system_init();
lcd_clrscr();
lcd_puts("Mrugram dioda!\n");
while(1)
{
klawisz = getkbd(); //odczyt klaw. 4x4
switch(klawisz)
{
case 0x44: //jesli klawisz=A, dioda
dioda();
break;
}
}
}
dioda pulsuje szybciej niż co 1 sekundę.
Rejestry kierunku ustawione jak poniżej:
void system_init(void)
{
DDRB=0x0F;
PORTB=0xFF;
DDRC=0xFF;
PORTC=0xFF;
lcd_init(LCD_DISP_ON_CURSOR); // inicjalizacja LCD
}
Pytanie - gdzie robię błąd?
Kod umieszczamy w znacznikach [code] - proszę o tym pamiętać.
[zumek]
