Mit ATmega32 (kurze) Zeiten messen

Moin moin!

Ich habe vor, mir eine eigene propeller clock zu bauen.
Brauche jetzt am Anfang aber eure Hilfe!

Kurze Erklärung: Ein Streifen Mikrocontroller gesteuerter LEDs dreht sich von einem Motor angetrieben und erzeugt z.T. ganze Bilder, da die LEDs an bestimmten Stellen kurz aufleuchten.

Ich schreibe das Programm mit Bascom , also in der Sprache basic.

Den Befehl pulsein habe ich bereits gefunden, bin damit aber nicht klargekommen.

Problem/Frage:
Zwischen zwei Impulsen (GND oder Vcc, egal) soll die Zeit gestoppt werden. Möglichst in Milli- oder Mikrosekunden. Damit möchte ich die benötigte Dauer errechnen, um etwas korrekt anzeigen zu können.

Vielen Dank im Voraus!

Moin.

Problem/Frage:
Zwischen zwei Impulsen (GND oder Vcc, egal) soll die Zeit
gestoppt werden. Möglichst in Milli- oder Mikrosekunden. Damit
möchte ich die benötigte Dauer errechnen, um etwas korrekt
anzeigen zu können.

Warum?

Wenn du einen kleinen Motor vom Tonbandgerät oder Schallplattenspieler hast, dann schau mal hier:
http://www.bobblick.com/techref/projects/propclock/p…

Etwas flippig, aber schöööööön:
http://www.luberth.com/analog.htm

Deine Frage zur Zeitmessung wird hier sehr gut erklärt:
http://forum.mosfetkiller.de/viewtopic.php?f=9&t=3825

Gruß
T.

Warum?

Ich dachte, es würde mir weiterhelfen, wenn ich die Zeit einer Umdrehung messen kann. Das hat’s aber nicht, auch nicht nach diversen Versuchen…

Wenn du einen kleinen Motor vom Tonbandgerät oder
Schallplattenspieler hast, dann schau mal hier:
http://www.bobblick.com/techref/projects/propclock/p…

Okay, das ist für einen Anfänger wie mich, in der Programmierung von Mikrocontrollern, schon echt genial!

Etwas flippig, aber schöööööön:
http://www.luberth.com/analog.htm

Gefällt mir :smile:

Deine Frage zur Zeitmessung wird hier sehr gut erklärt:
http://forum.mosfetkiller.de/viewtopic.php?f=9&t=3825

Ja, das hat mir schon etwas weitergeholfen, bzw. meinen Wissenshorizont erweitert.

-> Aber was echt super wäre, ist ein kleines Beispielprogramm.

Ich habe bereits Verschiedenes auf eine drehbare, mit einer Knopfzelle versorgten Platine aufgelötet: Einen ATtiny13, eine LED (an PORTB.1), ein Phototransistor (an PINB.0, zu Vcc, 33kO-PullDown-R.)
Der Phototransistor schaltet gut, wenn ich meine Taschenlampe benutze, aber das ist okay so…

As I said, ein Beispielprogramm mit erklärender Ergänzung wär wunderbar! :smile:

Liebe Grüße, Maddin

Hallo Maddin.

-> Aber was echt super wäre, ist ein kleines Beispielprogramm.

Warum hat dir ‚fetmoskiller‘ nicht auf die Sprünge geholfen?
Es wurde doch sehr gut erklärt.

Ein fertiges Programm nur zum Abschreiben bringt dich nicht weiter.

Gruß
T.

Hi.

Ich bin so langsam am verzweifeln :confused: Ich habe folgendes geschrieben, basierend auf der Lichtschranke, die in dem verlinkten Beitrag genannt wurde.

Code:
_$regfile = „attiny13.dat“
$crystal = 1000000
$hwstack = 28

Led Alias Portb.1
Config Led = Output

Config Timer0 = Timer , Prescale = 1024

Dim Zeit As Integer
Dim Rechnung As Integer

Rechnung = 1 / 1000000
Rechnung = Rechnung * 1024
Rechnung = Rechnung * 1000

Config Int0 = Change
Enable Interrupts
Enable Int0
On Int0 Vorgang

Main:
Do
!nop
Loop

'--------------------------------------

Vorgang:
Zeit = 0
If Pinb.0 = 0 Then
Start Timer0
End If
If Pinb.0 = 1 Then
Stop Timer0
Zeit = Rechnung * Timer0
End If
Led = 1
Waitms Zeit
Led = 0
Return

't [ms] = 1/f * Prescaler * Timer * 1000_

Bitte um Hilfe! LG.

PS: Die „Hardware“ ist die, die bereits genannt wurde.

Hallo,
nur mal überflogen.

Dim Rechnung As Integer
Rechnung = 1 / 1000000

ergibt: Rechnung = 0. Ein Integer hat keine Nachkommastellen.
Und das:

Zeit = Rechnung * Timer0

ergibt dann natürlich auch 0.
Gruß
loderunner

Ein Integer hat keine Nachkommastellen.

Danke für die hilfreiche Antwort!

Aber leider hat es auch nicht funktioniert, wenn ich’s einfach weggelassen habe: 1/1000000*1024*1000 = 1,024 also fast 1; Deswegen konnte ich es rausnehmen…

Ist das denn echt so kompliziert? Wahrscheinlich bin ich nur gerade zu doof dafür.