Wenn du möchtest habe ich ein Kompletten schaltplan mit Code in "Codevision" für dich. Wenn es dir hilft bei mir Funktioniert es.!!!
MFG: Fichte
Von da brauchst du "nur" mehr x60 multiplizieren. Also am besten nochmal 4x Schieben, dann 1x den Originalwert abziehen -> x15. Das noch 2x Schieben entspricht x4. x15 x 4 => x60
Wenn du möchtest habe ich ein Kompletten schaltplan mit Code in "Codevision" für dich. Wenn es dir hilft bei mir Funktioniert es.!!!
MFG: Fichte
Gerade bei solchen Berechnungen liegen auch die großen Vorteile von Hochsprachen wie Basic oder C. Bei einem Prescaler von 1024 ist der Genauigkeitsverlust durch die paar Takte, die ein Compiler vielleicht verschenkt, sicher zu vernachlässigen(wenn bei dir an der Stelle nicht der Weg das Ziel ist).
it works best if you plug it (aus leidvoller Erfahrung)
@Fichte
Danke für dein Angebot aber ich kann nur in Assembler programmieren. Außerdem möchte ich ja auch was lernen.
Vielleicht kannst du mir ja bei einem anderen Problem weiterhelfen. Ich habe z.Z. ein Programm für die Drehzahlmessung geschrieben und möchte das errechnete Ergebnis (16Bit) an ein LCD ausgeben.
Also wenn ich zum beispiel diese Zahl errechnet habe:
0b0001100101100100 = 6500(Dezimal)
dann muss ich die 6,5,0,0 jeweils als (8Bit) Dualzahl an das LCD
schicken. Wie kann ich das realisieren?
Schau mal auf www.avr-asm-tutorial.net
Herr Schmidt hat dort alles schön zusammengefasst und sogar als PDF zum Ausdrucken zusammengestellt. Dort erklärt er ausführlich, wie man mit Assembler von Binär auf BCD auf ASCII kommt.
Ich habe das auch schon benutzt und funktioniert einwandfrei.
lg
Alex
Hallo Ihrs
Ich habe sowas ähnliches schonmal in der FH programmieren müssen.
ich habe zuerst mit auch mit timer start/stop gearbeitet, was zwar ergebnisse geliefert hat aber insgesamt sehr langsam war.
Ich habe dann mir das gaze nochmal genauer angeschaut und bin dann auf input capture gekommen. dabei läuft der timer die ganze zeit und sobald ein signal kommt legt er den aktuellen wert in einem extra register ab und cleared den counter, der danach wieder hochläuft bis zum nächsten signal. man muss dann nur noch den wert aus dem register rauslesen und weiterverabeiten. dadurch entfällt das ganze start/stop gedöns und der prozessor macht das alles in der hardware.
okay wir haben da mit einem hitachi H8S/2357 prozessor gearbeitet aber soweit ich mich erinnere hat der atmega 16 auch input capturing
gruß
mac
Whow mac
Ich will die Impulslaenge von einem Empfaenger einer Fernsteuerung an die Servos dekodieren, dabei kommen die Impulse der z.B. 8 Kanaele immer zeitlich direkt nacheinander so dass mich die Verzoegerung beim Umschalten beunruhigt. Deine Technik ware ideal. Werde es pruefen. Danke
Hallo,
vom Timing her würde ich mir nicht allzuviele sorgen machen. Wenn du z.B. mit 4 oder 8Mhz taktest, braucht 1 Befehl 250ns bzw. 125ns, erreichen mußt du für Servos 1ms - 2ms. Während dieser Zeit laufen also 4000-8000 Takte. Das geht problemlos. Wenn du in Assembler programmierst, kannst du die Takte deines Programms zählen und gegebenfalls als Korrekturwert noch hinzufügen. Nur wird der Servo ein paar us Fehler gar nicht darstellen, deswegen brauchst du dir darum nicht den Kopf zu zerbrechen. Zwischen den Einzelnen Servoimpulsen ist auch noch viel zeit über.
Ich hab mir erst kürzlich auch so etwas ähnliches gebaut. Ich messe den Servoimpuls und Schalte je nach Impulslänge verschiedene Ausgänge (5 Stück).
lg
Alex
Moin
ich hab mal hier nen link zur doku von o.g. FH Projekt
http://www.geisterstunde.org/report/
und dann Content->TPU Second Attempt.
gruß
mac
Lesezeichen