Search Results

Search results 1-20 of 1,000. There are more results available, please enhance your search parameters.

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Was mir dazu noch einfällt: Da gibt's noch eine bcd.lib im Lib-Verzeichnis. Die kann wohl 4 Stellen. Ob die allerdings bei der freien Version dabei ist must du schauen.

  • So jetzt kann ich mal ein Ergebnis liefern. Also das AB-Signal in Software zu generieren scheitert, da es zittert (was mich stört) und die Ausgabefrequenz nach oben sehr durch den Controller-Takt begrenzt ist. 100kHz (n=6000 mit Inkrementalgeber mit 1000 Pulsen) wird nicht erreicht. Rein per Hardware-PWM, also nur durch interne Hardware, zu generieren scheitert auch, weil die Phasenlage nicht zu kontrollieren ist. Mischlösungen, also ein Signal per PWM oder Toggeln zu erzeigen und die 2. Phase p…

  • Ich probiere gerade deine Variante. Compare A per Hardware toggeln lassen. Compare B löst Interrupt aus, um 2. Kanal zu steuern.

  • Quote from Pluto25: “Mit mem Kondensator am Poti gehts so ” Am Schleifer vom Poti hab ich auch nen 100nF dran gehabt. Quote from Pluto25: “aber das Toggeln ist unschön weil die Laufrichtung unsicher ist. ” Man kann aber den Pin z.B. Kanal A abfragen und dann angängig vom A-Signal und von der gewünschten Richtung den Kanal B in der ISR steuern. Quote from Pluto25: “Oca_isr: Loadadr A , Y !ld r16,-y !out Ocr1bh,r16 !ld r16,-y !out Ocr1bl,r16 !ld r16,-y !out Ocr1ah,r16 !ld r16,-y !out Ocr1al,r16 Di…

  • Ich habe oben gelesen, dass das wohl mit dem jittern nicht so ganz klar war. Wenn ich per ISR einen Pin toggeln lasse, ergibt sich daraus eine Ausgabefrequenz. Soweit klar. Um eine vollständige Periode auszugeben, braucht es 2 Interrupts. Nun kann es passieren, dass der Interrupt verzögert ausgelöst wird, weil noch ein Befehl abgearbeitet werden muss. In Assembler brauchen die Codes aber 1 bis 3 Takte. (vielleicht auch mehr). Das bedeutet dann, dass die 2. Flanke um bis zu 3 Systemtakte später k…

  • @Franz Ich habe mich erst gefragt, wie denn deine Pins toggeln sollen, wenn du nur auf die Pin.x schreibst. Ich hätte jetzt zudem Port.x erwartet. Mittlerweile ist mir das jetzt klar. Im Simulator braucht deine ISR mit Hin- und Rücksprung 17 Takte. Damit wäre eine Ausgabefrequenz von 216kHz möglich bei Systemtakt 14,7456MHz. (4 ISR-Aufrufe für eine komplette Periode) Die Idee ist sehr interessant und der kurze Code auch. Nachteil ist aber, dass keine Register gesichert werden. R12 und R13 könnte…

  • Die Idee ist geplatzt, Denkfehler

  • Ich hab jetzt eine Idee, wie es vollständig in Hardware klappen könnte. Will es erst ausprobieren, ob es tatsächlich funktioniert.

  • Kannst du dazu mal ein Oszillogramm machen und einstellen? Wie groß ist das jittern?

  • @Franz Ich glaube dein Vorschlag klappt so nicht. Wenn du fast-PWM hast und OC1A ist der Top-Wert, Dann hast du ja einen Puls und eine Pause schon komplett (Kanal A beispielsweise). Wenn du dann auf OC1A einen Interrupt auslöst und ein Kanal B setzt, ist der phasengleich oder 180° gedreht, aber nicht um 90°. Genau deswegen habe ich kein Fast-PWM genommen. Das spielt dann auch keine Rolle, ob OC1A oder ICR1 der Top-Wert darstellt. Hast du deinen Code ausprobiert?

  • Quote from HansHans: “Hallo, darf ich fragen wozu du den Simulator / Emulator brauchst? Ich habe beruflich auch öfters mit Zählern zu tun und finde das sicher ein: „nice-to-have“ habe aber bis jetzt auch ohne Überlebt Hast du mit Eichung/ Kalibrieren tun? ” Eigentlich brauche ich den nicht. Ich will eigentlich so ein Signal in Analog +-10V umwandeln. Da ich aber keinen Motor und keinen Inkrementalgeber habe, war der Emulator meine Idee. Macht weniger Krach, passiert weniger und alles is gut. Kan…

  • Quote from Pluto25: “Wie wärs mit WGM 4 (ocr1a=top) Nur Oc1B auf toggeln, Oc1a normale Pin funktion in der Oc1a_isr dann toggle Wunschpin darf aber muß nicht oc1a sein und falls neue Werte da sind Oc1b=neuer Wert/2 oc1a=neuer Wert Das braucht nur halb so oft aufgerufen werden und kann neue Werte synchron eingeben ” Da muss ich mal drüber nachdenken. Übrigens das jittern sind 140ns gewesen. Kleines Rechenbeispiel Bei Ausgabe-Frequenz 100kHz: 1/100000 = 10µs 10µs + 140ns = 10,14µs = 98619Hz 6000 u…

  • Meine Routine sah so aus (extra nochmal programmiert). BASCOM Source Code (44 lines)Abhängig von I_State braucht die ISR mit Aufruf und Rücksprung max. 41 Takte. Max. 31 Takte ohne Hin und Rücksprung. Die 100kHz Ausgabesignal mit 400Kh ISR wäre dann nicht ganz erreicht. Aber auf das käme es jetzt nicht an. Ich habe herausgefunden, dass man die Pins doch abfragen kann, auch wenn mit COM1Bn gesetzt ist. Ich konnte 2 Pulse ausgeben, wenn das OC1A in der ICP-ISR gesetzt war, sonst nur 1 Puls. Das kl…

  • Quote from Pluto25: “Aber doch keine 140 Takte vielleicht 2. ” Da konnte ich mir auch keinen Reim machen. Es war deutlich länger als ein Prozessortakt. Es war ungefär 1/4 von der Frequent (400kHz) die ist per ISR erzeugt habe. Quote from Pluto25: “Da muß was anderes dazwischen hauen. Verhindert die Long Berechnug Ints? ” Ich wüßte nicht was. Am Long liegts nicht. Quote from Pluto25: “Oder ein Getadc? Gibts eine ADC-Isr? ” GetADC verwendet keine ISR, außer Freerun oder wenn man selbst eine ADC-IS…

  • Bei dem Test, wo ich die Pins per Hand in der ISR gesetzt habe, hatte ich ein Jittern. Grund ist nicht die Auslastung der MCU, sondern dass die Befehle unterschiedlich lange Ausführungszeit haben. Um per Hand die 4 Zustände auszugeben, muss bei Incrementalgeber mit 1024 Pulsen pro Umdrehung die ISR mit 400kHz aufgerufen werden. In der Hauptschleife lief nur die ADC-Abfrage, Berchnung der Ausgabefrequenz/Registerwerte und das setzen der Register. Das Jittern lag, wenn ich jetzt richtig gerechnet …

  • Ich habe die Variante mit anderen Pins schon durch. Das Signal zittert wie Espenlaub. Daher kommt nur die Generierung der AB-Signale per Timer in Frage. Und ja ich habe versucht die Pins zu beeinflussen in der ISR. Das geht aber nicht, weil die Pins mit der COM1xn Funktion überschrieben werden. Ich kann also in der ISR an den Pins OC1A und OC1B wackeln, aber das wird völlig ignoriert. Ich kann die Pins nur ändern, wenn COM1Axn auf 0 ist. Quote from Pluto25: “Vielleicht noch ein Set OVF1 zu begin…

  • Nein, an der Hardware direkt probiert. On OVF1 ISR_OC1A NoSave Enable OVF1 Es wird kein Nadelpuls ausgegeben! Aber so schon: On ICP1 ISR_OC1A NoSave Enable ICP1 Ich glaube ich weiß jetzt, warum ich den Pegel am OC2B nicht ändern kann. Der Port wird wohl durch die Timer-Konfiguration mit der Toggle-Funktion überschrieben. Ein Lösung hab ich noch nicht.

  • Die Fehlermeldung mit TOV1 Error : 117 Line : 126 Unknown interrupt [TOV1] , in File : C:\Users\Michael\Documents\Projekte\Experimente\Temp\Drehzahl_Linearisierung\Geber\Main.bas Error : 85 Line : 127 Unknown interrupt source [TOV1] , in File : C:\Users\Michael\Documents\Projekte\Experimente\Temp\Drehzahl_Linearisierung\Geber\Main.bas Wenn dann OVF1 Aber der wird nicht ausgelöst. Habe es eben nochmal versucht.

  • Mir ist schon klar, dass es den TOV1-Interrupt gibt. Der wird in dem Mode aber nicht ausgelöst. Aber ich kannst ja nochmal prüfen. Und per Hand is nicht. Da ist das Jittern zu stark. Das fällt weg.

  • Quote from Pluto25: “Die Änderung mit dem Timer synchronisieren. z.B. aufs Overlow-flag warten um dann erst die Werte ändern. (Jedoch vorher berechnen) ” Gleiches wie zuvor. BASCOM Source Code (32 lines)Ein Overflow gibts in dem Mode nicht. Nur OC1A, OC1B und den ICP-Interrupt, was dem Overflow entspricht. Aber es klappt so auch nicht.