oderlachs
19.05.2014, 14:36
Ein ATmega644 soll eine LED zum Leuchten...besser Blinken bringen, 2,5 sec. Dunkel und für 100 msec Hell ...das Aufblinken geht 1,2,..4 mal gut,
dann blinkt es 2..bis 3 mal kurz. hintereinader nicht aber im Abstand von 2,5 sec.
Was kann man dabei falsch machen...??
/* ================================================== ======================== */
/* */
/* Filename.c */
/* (c) 2014 Gerhard Hinze */
/* */
/* MCU: ATMega644 */
/* */
/* ================================================== ======================== */
#ifndef F_CPU
//#define F_CPU 3686400UL // STK500 org
#define F_CPU 16000000UL // STK500 ext. Qu 16Mc
#endif
#include <avr/io.h>
#include <util/delay.h>
/* ================================================== ======================== */
/* */
/* Main Routine */
/* */
/* */
/* ================================================== ======================== */
int main(void)
{
DDRB = 0x01;
while(1)
{
PORTB |= (1<< PB0); // = 1 : STK-LED off
_delay_ms(2500);
PORTB &= ~(1<< PB0); // = 0 : STK-LED on
_delay_ms(100);
}
return 0;
}
Nun will ich mich nicht an dem Blinkbeispiel hochziehen, das hatte ich nur als Bsp. zum Test mit dem 644 und Headerdefinitionen geschrieben...
Da der 644 später in zeirelevanten Schaltung zur Anwendung kommen soll, macht mir das etwas Sorgen... Die Fuses habe ich kontrolliert alles OK gesetzt...
Der Q ist ein extra aufgesteckter 16MHz Quarz, der ist in Ordnung.
Wo kann bei einem solchen Verhalten die Ursache liegen ?
Gruss und Dank
Gerhard
dann blinkt es 2..bis 3 mal kurz. hintereinader nicht aber im Abstand von 2,5 sec.
Was kann man dabei falsch machen...??
/* ================================================== ======================== */
/* */
/* Filename.c */
/* (c) 2014 Gerhard Hinze */
/* */
/* MCU: ATMega644 */
/* */
/* ================================================== ======================== */
#ifndef F_CPU
//#define F_CPU 3686400UL // STK500 org
#define F_CPU 16000000UL // STK500 ext. Qu 16Mc
#endif
#include <avr/io.h>
#include <util/delay.h>
/* ================================================== ======================== */
/* */
/* Main Routine */
/* */
/* */
/* ================================================== ======================== */
int main(void)
{
DDRB = 0x01;
while(1)
{
PORTB |= (1<< PB0); // = 1 : STK-LED off
_delay_ms(2500);
PORTB &= ~(1<< PB0); // = 0 : STK-LED on
_delay_ms(100);
}
return 0;
}
Nun will ich mich nicht an dem Blinkbeispiel hochziehen, das hatte ich nur als Bsp. zum Test mit dem 644 und Headerdefinitionen geschrieben...
Da der 644 später in zeirelevanten Schaltung zur Anwendung kommen soll, macht mir das etwas Sorgen... Die Fuses habe ich kontrolliert alles OK gesetzt...
Der Q ist ein extra aufgesteckter 16MHz Quarz, der ist in Ordnung.
Wo kann bei einem solchen Verhalten die Ursache liegen ?
Gruss und Dank
Gerhard