Gast
#322222
Hi
ich komm mal wieder nicht weiter. Soll für die schule von einem Motor
die Drehzahl messen. Ich bekomme pro Umdrehung 1 impuls. Dachte mir
okey dann messe ich die Zeit zwischen 2 Impulsen mit nem Timer und
schwups schon kann ich eine vorhersage treffen auf die ganze Minuten.
Leider zeigt mir der LCD am Mic nur stuss an aber warum? Nun erstmal
das Prog:
// RS = PD0
// R/W = PD1
// E = PD2
// D4 = PD3
// D5 = PD4
// D6 = PD5
// D7 = PD6
#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <math.h>
#include <avr/delay.h>
#include <lcd.h>
#include <lcd.c>
uint8_t time = 0; //time = Zeit zwischen 2 impulsen
uint8_t i = 0; //zähler
char buffer[3]; //buffer
void lcd(void)
{
itoa( time , buffer, 10); //wandle integer in string
lcd_gotoxy(0,1); // gehe zu LCD Position X Y
lcd_puts(buffer); //schreibe auf den LCD den Inhalt von Var buffer
i = 0;
}
int main(void)
{
TCCR0 |= (1<<CS00) | (1<<CS02); // Timer CPU-Takt / 1024
DDRB = 0x00; //PORTB sind alles eingänge
lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_init(LCD_DISP_ON);
lcd_puts("Drehzahl\n");
for(;;)
{
loop_until_bit_is_set(PINB, 1);
TCNT0 = 0;
loop_until_bit_is_clear(PINB, 1);
loop_until_bit_is_set(PINB, 1);
time = TCNT0;
i++; //zähler + 1
if(i>100) // Schreibe auf LCD nach 100 messungen.
{
lcd(); // gehe in die Funktion LCD
}
}
}
So das ist es. Ich weiss das Loop until nicht die beste lösung ist aber
mir fehlt im mom nichts besseres ein. Für vorschläge bin ich immer
offen.
MFG
Daniel