Einstellung: Wenn's funzt, hat sich die Frage erübrigt, die Absicht war eh' klar.
Ich fürchte, du mußt den INT0-Eingang mit Pullup-versehen
PORTB.0 = 1 (pullup intern)
einmal vor do..loop sollte reichen.
Oder ein externer Pullup-widerstand
also wenn ich in mytimer lcd "bla" schreibe, dann erscheint (vermutlich) jede Sekunde einmal bla auf dem Display. Wenn ich lcd Drehzahl in mytimer schreibe dann erscheint pro Sekunde einmal 0 im Display. Schreibe ich lcd "bla" in Zaehlen, dann passiert gar nichts. Auch nicht wenn ich den pb.0 (int0) mit einem Taster auf 0V ziehe.
also meine Diagnose: Timer geht, beim int0 ist was faul, nur was?!
siehst du das genau so?
edit: zu deiner 2. Frage...ich möchte eben die Impulse (Flanken) die in einer Sekunde an int0 ankommen. Diese werden dann in U/min umgerechnet und auf dem Display ausgegeben. Der Timer sollte also nach jeder Sekunde überlaufen.
Einstellung: Wenn's funzt, hat sich die Frage erübrigt, die Absicht war eh' klar.
Ich fürchte, du mußt den INT0-Eingang mit Pullup-versehen
PORTB.0 = 1 (pullup intern)
einmal vor do..loop sollte reichen.
Oder ein externer Pullup-widerstand
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
also der Code sieht jetzt so aus:
auf dem Display steht nur 0_ und wenn ich int0 auf 0 ziehe passiert trotzdem nichts.Code:$regfile = "m8def.dat" $crystal = 3686400 Dim Zaehlerstand As Byte Dim A As Integer Dim Drehzahl As Integer Const Timervorgabe = 61936 Config Timer1 = Timer , Prescale = 1024 Enable Interrupts Config Int0 = Falling Enable Int0 On Int0 Zaehlen On Timer1 Mytimer Timer1 = Timervorgabe Enable Timer1 Start Timer1 Config Lcd = 16 * 2 PORTB.0 = 1 Do Cls Lcd Drehzahl Waitms 100 Loop Zaehlen: Zaehlerstand = Zaehlerstand + 1 Return Mytimer: A = Zaehlerstand Drehzahl = A * 60 Timer1 = Timervorgabe Zaehlerstand = 0 Return End
Also, am Programm seh ich da mal nix mehr.
Du mußt am Taster messen, ob erst 5V und bei drücken 0V sind.
und, wenn geht, auch am Pin.
Nochmal nachsehen, ob's der richtige PIN ist.
GND Taster == GND Mega8 ?
Wenn's geht , ev. mit Testverbindung den Pin mal direkt auf GND ziehen.
Seltsam, mit dem INT0 kämpfen einige.
Ev. Probieren mit INT1 ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
also an pb.0 liegen 5V an, bei Drücken des Tasters sind es 0V.
Ich habe jetzt mal testweise den int1 genommen, aber es funktioniert auch nicht. int1 ist schon pb.1 oder?
Ich möchte auch einen Drehzahlmesser bauen, darum benutze ich mal diesen Thread.
All die Beispiele für Drehzahlmesser die ich hier gefunden habe funktionieren alle gleich.
Also Impulse/ Sekunde Zahlen und mit 60 multiplizieren. Ich glaube aber daß dieses Messung falsch ist, denn in einer Sekunde kann die Drehzahl sich erheblich verändern..ich möchte eben die Impulse (Flanken) die in einer Sekunde an int0 ankommen. Diese werden dann in U/min umgerechnet und auf dem Display ausgegeben. Der Timer sollte also nach jeder Sekunde überlaufen.
Mann könnte jetzt jede Zehntelsekunde messen, und dann die Drehzahl ausrechnen. Was aber meiner Meinung nach auch nicht klapp. Weil ich ja bei einer Sekunde oder Zehntelsekunde nicht unbedingt eine Vollumdrehung hab.
Ich glaube der richtige Weg ist es, die Dauer zwischen zwei Impulse zumessen, und dann die Drehzahl errechnen.
Würde mal gerne andre Meinungen zu dem Problem hören.
mfg
guy
"Kommt darauf an" ist immer eine gute Aussage. Je niedriger die Drehzahl (eigentlich die Impulszahl), desto besser der letztgenannte Weg.
Das gößte abdeckbare Bereich hast du, wenn du beide Methoden automatisch umschalten kannst.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Je nach Aufbau kann das natürlich anders sein, aber ich hab große Probleme gehabt mit nem CNY70 große Drehzahlen zu messen. Bei kleinen alles kein Problem, aber wenn's dann an die 5000UpM gingen zumindest bei mir dann viele Takte verloren.
Nur so als Tip, falls jemand ähnliches vorhat.
Grüße; ähM_Key
wenn du 8mhz oder einen 16mhz nimmst, hast überhaupt keine probleme mit 20000 u/minute. Bascom verschlingt intern zuviel zeit. ich kann mit meinem fastavr-basicprogramm mit 8 mhz über 18000 auslesen und dem cny70.
mfg pebisoft
Bei mir lag's nicht am Controller, sondern dass dem CNY70 zwar soviel licht relfektiert wurde, dass er bei langsamen Drehzahlen schaltete aber bei größeren hat's dann nicht mehr ausgereicht.
MK
Lesezeichen