Anwendungen / 10 MHz Uhr

10MHz kommen aus Rubidium Blechschachtel die als Surplus bei ebay.com zu finden ist.

formatting link

manche anderen Projekte sinnvolle Programmiertechniken.

MfG JRD

Reply to
Rafael Deliano
Loading thread data ...

Interessantes Projekt, im Gegensatz zum Obercholeriker beschreibst du deinen Aufbau transparent (MCU, IRQ-Frequenz, Clockrate der MCU) und machst Messungen, statt nur Behauptungen aufzustellen ("2 MHz IRQ-Frequenz!!!").

die erst in Forth geschrieben und dann optimiert oder aus Erfahrung raus direkt in ASM implementiert? Und wenn ja, hast du im ersten Fall gemessen was der Unterschied in der Laufzeit war? Der ISR sieht ja jetzt

CPU-Clock sind das 125 Clock Cycles. Habe ich nicht gemessen, aber ich vemute dass das in C direkt in Hochsprache abbildbar ist, ohne ASM.

Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

Es ist, wie unschwer erkennbar, Ralph Aichingers "Atomuhr".

aber der wird praktisch nie verwendet:

: Befehl-xyz ... FORTH ... [CODE ... Assembler ... CODE] ... FORTH ... ;

Ein Assembler-Befehl

:CODE Befehl-xyz ... Assembler ... CODE;

: Befehl-xyz ... FORTH ... ;

gleichen Namens. Wenn man low level IO programmiert und

Ein Interrupt ist in dem FORTH aber immer Assembler. Sonst

erst in FORTH, weil leichter debuggbar. Oft ist eine langsame, portable

mit ihr Testdaten erzeugen kann, macht man sich an die Portierung auf Assembler. Im Archiv der FORTH e.V. (

formatting link
)

DES

formatting link
AES
formatting link
SHA
formatting link

angegeben. FORTH ist bei sowas im Bereich 5 ... 10 (typ ) ... 20 langsamer. In der Anwendung hier war nichts an den Assmbler-Routinen kompliziert, wurden direkt in Assembler codiert und liefen auch sofort.

erzeugen. FORTH erzeugt relativ langsamen unoptimierten Code. Deshalb

MfG JRD

Reply to
Rafael Deliano

Hallo Rafael,

sogar ABORT fest war. Das ginge lt. Tom Zimmer und anderen Gurus nicht,

RT und IR sattelfest sein. Schrub ich aber schon in adnerem Beitrag (AWAIT...), samt einer TSR (Finetime.com mit TCOM), die den Windoof IR auf

1msec (100ns?) beschleunigte und dann nur alle 55ms den Orijinol Windoof Uhrentimer IR startete. Die TSR war eine Mischung von : und CODE Words

Ansonsten verwaltete Finetime 16 Timer und 16 Ticker mit 1ms, 10ms, 100ms,

Irgendwann wurde dann die Application in F-PC gestartet, die dann die IPC

Karte versorgt) in einem beliebigen Windoof Fenster. Auch mit weiteren IR, zB. Drehgeber Impulse, Wegaufnehmer, Positionsschalter, ADC und was weiss ich nicht alles. Einige IR waren in : andere (schnelle) in CODE.

Das mit der TSR hab ich dann unter W7 nicht mehr weiter probiert, da war

Eigentlich schade, aber ich brauch es nicht mehr.

Irgendwo in der FG 4.Dimension im vorigen Jahrtausend hab ich das mal

Gurus nicht ging :)

angewendet. Die F-PC Application war dann mit Kunden/Aufgaben spezifischen Worten im Kundeneigenen Sprachkontext geschrieben, so dass er sich schnellstens in die Ablaufsteuerung einlesen konnte und Modifikationen auch ohne mich hinbekam. Ua. Lenkgetriebe Justierstand bei Mercedes

Stellungsregler bei ICE-Eckardt waren die umfangreichsten.

So genug gebrunzt :) JB glaubt und begreift das eh nicht :p

Keine Ahnung, auf welchen Platten das noch rumliegt.

Wolfgang

--
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt! 

ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
(lt. alter usenet Weisheit)      iPod, iPhone, iPad, iTunes, iRak, iDiot
Reply to
Wolfgang Allinger

Yep :-)

Ja, hilft aber eben auch bestimmte Teilaspekte genau zu verstehen, wenn sie gut dokumentiert sind.

Ah, du implementierst also die komplette Funktion in ASM und zwar so, dass sie der jeweiligen Forth-Calling Convention entspricht.

Zeugs. Solange es nur ASM alleine ist, ist das schon okay, z.B. meinen Startup-Code implementiere ich in reinem ASM, siehe

formatting link
-- aber sobald

alles richtig Deklariert hat, insbesondere Clobber-Register und Seiteneffekte. Sonst hat man teilweise den Effekt, dass der Code zwar funktioniert, bei einer neuen Compilerversion dann aber zu undefiniertem

mal auf dem x86 gesprochen, wenn ich da ein IDIV mache sieht man nicht, dass das eine drei-Register-Operation ist (idiv %rbx macht %rax = (%rdx:%rax) / %rbx, %rdx = %rax = (%rdx:%rax) % %rbx). Einmal den Remainder vergessen und der Compiler glaubt, das was vorher drin war ist auch nachher noch drin...

Hm, interessant. Weil die Forth-Entwicklungsumgebung auf dem jeweiligen

der IRQ ja komplett transparent.

Yep, das haben die Hipsterprogrammierer auch wiederentdeckt und nennen

eben ziemlich sicher korrekte) Implementierung zu haben, mache ich in anderen Sprachen ebenso.

Sehr cool, auch toll geschriebene Artikel. Hat bestimmt viel Zeit gekostet. Beim DES Key Schedule gibt es gar keine Performance Penalty,

Schedule hast du deswegen vermutlich gleich nur in Forth implementiert?

Das sind Ergebnisse, die auch viel praktikabler wirken, also so Faktor

5-20. Ich frage mich, warum bei meinem Messungen auf x86_64 dann so ein

Aber habe ich das schon richtig verstanden, dass jeweils Forth-Unterroutinen keinerlei feste Calling Convention haben, d.h. sich das jeweils von Funktion zu Funktion unterscheiden kann? D.h. also auch

Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

aber eigentlich alles irgendwie unten, also sub...).

Man sollte dazusagen, dass bei ASM-Gebrauch (im Forth-Slang: Forth-Worte als

Forth-Maschine selbst drauf, wg. 2 Stacks und fixem Instruction-Pointer plus Umladeregister, dann gern auch Top-Of-Stack im Register.

auch in Asm,

: def-wort CREATE dies und das ;CODE methode in asm endcode

statt des secondary-Aufbaus

: def-wort CREATE dies und das ;DOES methode in forth-worten ;

(mit diesem universellen Konstrukt braucht es auch keine Arrays, die sind mit einem Fingerschnippen billig zu haben, wie immer man sie braucht.)

Speicherplatzes an Top of Stack (nennt sich sinnigerweise HERE ), kann im Definitionswort oder im Zuge der Definition ad hoc mit ALLOT reserviert werden, oder mit ',' (Komma), was immer das Objekt so braucht, damit wandert das HERE weiter.

Reply to
Ewald Pfau

es durcharbeiten wenn ich "meinen" ersten Arduino-Prototypen soweit fertig habe.

lg Ralph

--
----------------------------------------------------------------------------- 
                                                              https://aisg.at 
                                                   ausserirdische sind gesund
Reply to
Ralph Aichinger

[...]

weil du deiner Zeit 100 Jahre voraus bist. Niemand versteht deine Brillianz. Selbst die sogenannten Gurus sind reinste Amateure im Vergleich mit dir, aber niemand merkt es, weil du allen einfach so

Programmiersprachen. Jemand, der mit Leonardo da Vinci quasi verpflichtend und voller Ehrfurcht in einem Satz genannt werden wird.

Ja, sicher auf irgendwelchen Platten, die gerade eben nicht zur Hand

Problem, sodass man den Inhalt nicht mehr lesen kann. Aber wenn man den

unter den strengsten NDAs, die man sich so vorstellen kann. Und wenn die

Problem in deinem Newsreader verhindern, dass du Fakten lieferst.

Denn dass das alles genau so stimmt, darauf gibst du uns sicherlich dein Ehrenwort. Ich wiederhole, dein Ehrenwort.

Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

sind so trivial dass Debugging auch selten ein Thema ist.

und Assembler leicht mischen kann. Die meisten Implementierungen

heute nur noch selten Assembler. Sie verlieren damit aber

haben den Drang weg von simplen 8 Bit Prozessoren auf denen

C sollte da wenig Problem haben, weil es Assembler erzeugt.

verwenden etwa 8 ... 12 Byte RAM. Das alles auf Stack sichern

Und wie ja gesagt: ich habe ja die Wahl ob ich einen Befehl in FORTH oder Assembler codiere. Bei Interrupt ist Assembler naheliegend.

Der wird ja nur im Startup einmal aufgerufen, den zu optimieren bringt nicht viel.

minimale Wortbreite, in diesem FORTH 16 Bit. Der Stack wird durch ein Index-Register, bei Motorola typisch X adressiert:

0,X High Byte Top of Stack 1 ,X Low Byte Top of Stack 2 ,X High Byte Second 3 ,X Low Byte Second

:CODE + \ ( N1 N2 --- N3 ) \ N1 + N2 = N3 3 ,X LDA, 1 ,X ADD, 3 ,X STA, 0,X LDA, 2 ,X ADC, 2 ,X STA, INX, INX, RTS, CODE;

D.h. der 1. und der 2. Wert wurden addiert und in den

  1. Werten gespeichert. Dann wurde der Zeiger hochgesetzt

Benutzung sieht auf der Kommandozeile so aus:

---- ---- ---- | 3

---- ---- 0003 | 5

---- 0003 0005 | +

---- ---- 0008 |

32 Bit werden aus zwei 16 Bit Werten simuliert. Der obere Stackwert ist das obere 16 Bit Datenwort. Bei mir sind auch Portpins per Konvention zwei 16 Bit Zahlen:

PB 0 B1! \ Bit 0 an Port PB auf 1 setze PB 0 B0! \ Bit 0 an Port PB auf 0 setzen PB 0 B@ \ --- flag ) Bit 0 an Port PB lesen

Adresse sein. Da ja 65kByte MemoryMap.

Es gibt keinerlei typechecking durch den Compiler. Sonst

Kommanozeile. Bei mir werden immer die drei obersten Wert angzeigt:

RESET

---- ---- ---- | 1

---- ---- 0001 | drop

---- ---- ---- | drop

0000 0000 0000 |

Ein Wert zu viel ist leicht zu sehen. Ein Wert zu wenig sieht wie

Im Abschnitt FORTH ist auf S.10 z.B. die Laufzeit der

so ein FORTH intern funktioniert:

formatting link

MfG JRD

Reply to
Rafael Deliano

Mein FORTH ist JSR,-threaded, ich habe kein NEXT. Ich hatte NEXT auf dem AIM65 anno 1980. Konkurrierte dort mit interpretiertem Microsoft BASIC. Aber Implementierungstechniken der 70er Jahre waren auf 8 Bit CPUs Ende der 90er Jahren nicht mehr praktikabel. Der trade off Speicherverbrauch vs.

Der erste C-Compiler mit dem ich arbeitete war

stehengeblieben.

Die VD sucht immer noch Artikel. Hat aber wohl auch Mindestanforderungen was den Inhalt und seine Darstellung angeht.

MfG JRD

Reply to
Rafael Deliano

Johannes Bauer schrieb:

Wo liegt eigentlich dein Problem?

Peinlich sowas...

MfG Rupert

Reply to
Rupert Haselbeck

Guter Vorschlag :)

Wolfgang

--
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt! 

ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p 
(lt. alter usenet Weisheit)      iPod, iPhone, iPad, iTunes, iRak, iDiot
Reply to
Wolfgang Allinger

Am 31.08.2019 um 00:50 schrieb Rupert Haselbeck:

Reply to
Uhu

Am 31.08.2019 um 02:14 schrieb Wolfgang Allinger:

Klar, dass du Prahlhans das lustig findest.

Reply to
Uhu

Wieso ist das ein Problem, wenn man Brillianz neidlos anerkennt?

Dann sollte man aber auch nicht rumflennen, wenn es genauso herausschallt.

Habe momentan keine Ambitionen bei dir einzuziehen, aber falls ich so

Alles Liebe, Dein Johannes

--

selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Reply to
Johannes Bauer

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.