Hallo zusammen,
ich möchte mit meinem ATMega32 einen Reed-Kontakt auswerten. Leider funktioniert das nachfolgende Programm nicht. Der Reed-Kontakt hängt mit +5V am PB1 (T1). Kann mir vielleicht jemand weiterhelfen oder ein einfach ein Standard-Programm für die Auswertung des Reed-Kontaktes zukommen lassen, damit ich etwas rumprobieren kann.
Für Eure Bemühungen möchte ich mich einstweilen bedanken.
Gruß
Marco
// velocity measurement - target ATmega32
#define XTAL 8e6
#define F_CPU XTAL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>
#include "..\..\includes\BitUtilities.h"
#include "..\..\includes\LCD_display_on_Port_C.h"
#define calibrator 3420.0
char str2[5];
unsigned int gatetime = 2500; // in ms
float value;
int main()
{
// D I S P L A Y - A N Z E I G E //
lcd_init();
_delay_ms(300);
lcd_send(COMMAND, LCD_CLEAR);
lcd_set_cursor(1, 0); lcd_write("v:");
lcd_set_cursor(1, 13); lcd_write("m/s");
while (1)
{
// M E S S U N G W I N D G E S C H W I N D I G K E I T //
value = 0; // start counter
cbi(DDRB,1); // PB1 as input
TCNT1 = 0; // reset counter
// Ext. Clock @ T1, rising edge
TCCR1B = (1<<CS02)|(1<<CS01)|(1<<CS00);
_delay_ms(gatetime); // wait one gate period
value = TCNT1;
TCCR1B = 0; // stop counter
value = calibrator*value / gatetime;
dtostrf(value, 5, 1, str2); lcd_set_cursor(1, 6); lcd_write(str2);
} // While-Schleife
return 0;
}
ich möchte mit meinem ATMega32 einen Reed-Kontakt auswerten. Leider funktioniert das nachfolgende Programm nicht. Der Reed-Kontakt hängt mit +5V am PB1 (T1). Kann mir vielleicht jemand weiterhelfen oder ein einfach ein Standard-Programm für die Auswertung des Reed-Kontaktes zukommen lassen, damit ich etwas rumprobieren kann.
Für Eure Bemühungen möchte ich mich einstweilen bedanken.
Gruß
Marco
// velocity measurement - target ATmega32
#define XTAL 8e6
#define F_CPU XTAL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>
#include "..\..\includes\BitUtilities.h"
#include "..\..\includes\LCD_display_on_Port_C.h"
#define calibrator 3420.0
char str2[5];
unsigned int gatetime = 2500; // in ms
float value;
int main()
{
// D I S P L A Y - A N Z E I G E //
lcd_init();
_delay_ms(300);
lcd_send(COMMAND, LCD_CLEAR);
lcd_set_cursor(1, 0); lcd_write("v:");
lcd_set_cursor(1, 13); lcd_write("m/s");
while (1)
{
// M E S S U N G W I N D G E S C H W I N D I G K E I T //
value = 0; // start counter
cbi(DDRB,1); // PB1 as input
TCNT1 = 0; // reset counter
// Ext. Clock @ T1, rising edge
TCCR1B = (1<<CS02)|(1<<CS01)|(1<<CS00);
_delay_ms(gatetime); // wait one gate period
value = TCNT1;
TCCR1B = 0; // stop counter
value = calibrator*value / gatetime;
dtostrf(value, 5, 1, str2); lcd_set_cursor(1, 6); lcd_write(str2);
} // While-Schleife
return 0;
}