Mahlzeit,
Ich hab hier ein Versuchsaufbau... Schickes kleines Rad aus Lego-Technik, dort sitzen 2 Magneten drauf, darunter ein Hallgeber.
Der Hallgeber ist über ein Optokoppler mit dem Atmega128 verbunden (int0). Das Interrupt für int0 funktioniert wunderbar (konfiguriert auf "any change" so das bei steigender und bei fallender Flanke das Interrupt ausgelöst wird (ein Magnet schaltet den Hallgeber auf high, der andere auf low, man hat also eine halbe Umdrehung high und eine halbe Umdrehung low... das funktioniert auch wunderbar))...
Timer1 spuckt allesdings bei recht kleiner Drehzahl nur Müll aus, und es kommt kein Timer-Overflow !!! Im Simulator funktioniert es, nur in der Hardware irgentwie nicht![]()
Hier das Code-Geschnippsel:
Software: Bascom letzte Version 1.11.7.4Code:$baud = 38400 Config Serialin = Buffered , Size = 10 $crystal = 16000000 $regfile = "m128def.dat" Config Pind.0 = Input Mcucr = &B01010101 'int0 = any change Enable Int0 On Int0 i1 Config Timer1 = Timer , Prescale = 8 Enable Timer1 On Timer1 Zeit1 Enable Interrupts do 'noch nix drin loop i1: Stop Timer1 Drehzahltimer = Timer1 Timer1 = 0 Start Timer1 Drehzahlwert = 65535 * Drehzahlueberlauf Drehzahlwert = Drehzahlwert + Drehzahltimer return Zeit1: Incr Drehzahlueberlauf Print "Überlauf" ; Drehzahlueberlau return
Controller: ATMEGA128
Kann da jemand helfen? Weiß nichmehr weiter![]()
Gruss
Jan[/code]







Zitieren

Lesezeichen