Nein er braucht keine Clock. Bin in der Simulation nur alle Möglichkeiten durchgegangen.
Wenn du willst kann ich auch noch den Simulationscode posten.
Beiträge von kayms
-
-
Hab EDWinXP gefunden, nach bisschen Syntax anpassung hat er mir das rausgeschmissen:
Code
Alles anzeigen/* Created by EDWin CUPL Converter 1.0.0 */ Name AAA; Partno None; Date 9/19/2002; Revision None; Designer None; Company None; Location None; Assembly None; Device Virtual; /*** Declarations ****/ /*** Inputs ****/ Pinnode = ADR_0; Pinnode = ADR_1; Pinnode = ADR_2; Pinnode = ADR_3; Pinnode = ADR_4; Pinnode = ADR_5; Pinnode = ADR_6; Pinnode = ADR_7; Pinnode = ADR_8; Pinnode = ADR_9; Pinnode = ADR_10; Pinnode = ADR_11; Pinnode = MEMOP; Pinnode = DATCP; /*** Outputs ****/ Pinnode = ENDABN; Pinnode = ADBF0N; Pinnode = WSC00; Pinnode = WSC01; Pinnode = SEL0; Pinnode = SEL1; Pinnode = BSP16N; Pinnode = ENNCS; /*** Nodes ****/ Pinnode = UN35903; Pinnode = UN35307; Pinnode = UN33367; Pinnode = UN35302; Pinnode = UN33375; Pinnode = UN34504; Pinnode = UN35904; Pinnode = UN35313; Pinnode = UN35849; Pinnode = UN31964; Pinnode = UN34532; Pinnode = UN35905; Pinnode = UN35896; Pinnode = UN35835; Pinnode = UN35304; Pinnode = UN35314; Pinnode = UN35297; Pinnode = UN35848; Pinnode = UN34497; Pinnode = UN30587; Pinnode = UN30592; Pinnode = UN30606; Pinnode = UN30567; Pinnode = UN29058; Pinnode = UN29045; /*** Logic Equations ****/ UN35903 = DATCP & BSP16N; UN35307 = MEMOP & (!ADR_11) & (!ADR_10) & ADR_9; UN33367 = MEMOP & ADR_11 & (!ADR_10) & (!ADR_9); UN35302 = MEMOP & ADR_11 & ADR_10 & ADR_9 & ADR_8; UN33375 = MEMOP & (!ADR_11) & (!ADR_9) & ADR_8 & ADR_7 & ADR_6 & ADR_5; UN34504 = (!MEMOP) & DATCP & (!ADR_11) & (!ADR_10) & (!ADR_9) & (!ADR_8) & (!ADR_7) & (!ADR_6) & (!ADR_5) & (!ADR_4) & ADR_3 & (!ADR_2); UN35904 = (UN35307 & (!ADR_8)) # (UN33367 & ADR_8) # (UN35302 & (!ADR_7)) # (UN33375 & (!ADR_3)) # (UN34504 & (!ADR_1)); UN35313 = MEMOP & ADR_11 & (!ADR_10); UN35849 = MEMOP & (!ADR_11) & (!ADR_10); UN31964 = (!ADR_11) & (!ADR_9) & ADR_8 & ADR_7 & ADR_6 & ADR_5 & (!ADR_4); UN34532 = MEMOP & (!ADR_11) & (!ADR_10) & (!ADR_9) & (!ADR_7); UN35905 = (UN35313 & ADR_8) # (UN35849 & (!ADR_8)) # (UN31964 & (!ADR_3)) # (UN34532 & (!ADR_6)) # (UN34504 & (!ADR_1)); UN35896 = (UN35903 & UN35904) # (MEMOP & BSP16N) # (DATCP & UN35905) # (MEMOP & UN35905); ENDABN = !UN35896; UN35835 = MEMOP & (!ADR_11) & (!ADR_10) & (!ADR_9) & ADR_8 & ADR_7 & ADR_6 & ADR_5 & ADR_4 & (!ADR_3) & (!ADR_2) & (!ADR_1) & (!ADR_0); ADBF0N = !UN35835; UN35304 = MEMOP & ADR_11 & ADR_10 & ADR_9; UN35314 = MEMOP & (!ADR_11) & (!ADR_10) & ADR_8 & ADR_7 & ADR_6 & ADR_5 & (!ADR_4); UN35297 = (UN35304 & ADR_8) # (UN35307 & (!ADR_8)) # (UN35313 & ADR_8) # (UN35314 & (!ADR_3)); WSC00 = !UN35297; UN35848 = MEMOP & (!ADR_11) & (!ADR_10) & (!ADR_9); UN34497 = (UN34504 & (!ADR_1)) # (UN35848 & (!ADR_8)) # (UN35304 & ADR_8) # (UN34532 & (!ADR_6)); WSC01 = !UN34497; SEL0 = !UN35904; SEL1 = !UN35905; UN30587 = MEMOP & (!ADR_11) & (!ADR_6) & ADR_5 & ADR_4 & ADR_3 & ADR_2; UN30592 = (!MEMOP) & DATCP & ADR_0 & (!ADR_11) & (!ADR_10) & (!ADR_9) & (!ADR_8) & (!ADR_7) & (!ADR_6) & (!ADR_5) & (!ADR_4); UN30606 = (!MEMOP) & DATCP & (!ADR_11) & (!ADR_10) & (!ADR_9) & (!ADR_8) & (!ADR_7) & (!ADR_6) & (!ADR_5) & (!ADR_4) & (!ADR_3); UN30567 = (UN35313 & (!ADR_9)) # (UN35307 & (!ADR_8)) # (UN35313 & ADR_8) # (UN30587 & (!ADR_3)) # (UN30592 & (!ADR_3)) # (UN30606 & ADR_2); BSP16N = !UN30567; UN29058 = (!ADR_11) & (!ADR_10) & (!ADR_9) & (!ADR_8) & (!ADR_7) & (!ADR_6) & (!ADR_5) & (!ADR_4) & (!ADR_3) & (!ADR_2) & (!ADR_1) & (!ADR_0); UN29045 = (UN35848 & (!ADR_8)) # ((!MEMOP) & UN29058) # ((!MEMOP) & (!DATCP)); ENNCS = !UN29045;
Das sollte mit WinCUPL übersetzbar sein, hab ich jetzt noch nicht ausprobiert.
-
Einmal die Übersicht über die Ausgabe:
und hier der Code:
Code
Alles anzeigen-- Maho Chip Selector (from Pal) -- written by kayms 13.05.2022 library ieee; use ieee.std_logic_1164.all; entity chipSelect is port( --inputs adr : in std_logic_vector(11 downto 0); -- A23 -> A12 memop : in std_logic; datcp : in std_logic; --outputs endabn : out std_logic := '1'; adbf0n : out std_logic := '1'; wsc00 : out std_logic := '1'; wsc01 : out std_logic := '1'; sel0 : out std_logic := '1'; sel1 : out std_logic := '1'; bsp16n : out std_logic := '1'; enncs : out std_logic := '1' ); end chipSelect; architecture rtl of chipSelect is signal s_bsp16n : std_logic := '1'; signal s_sel0 : std_logic := '1'; signal s_sel1 : std_logic := '1'; begin process (adr, memop, datcp) is begin if((memop = '1' and adr(11 downto 8) = "0000") or (memop = '0' and adr = "000000000000") or (memop = '0' and datcp = '0')) then enncs <= '0'; else enncs <= '1'; end if; if((memop = '1' and adr(11 downto 9) = "100") or (memop = '1' and adr(11 downto 8) = "0010") or (memop = '1' and adr(11 downto 10) = "10" and adr(8) = '1') or (memop = '1' and adr(11) = '0' and adr(9 downto 5) = "01111" and adr(3) = '0') or (memop = '0' and datcp = '1' and adr(11 downto 3) = "000000000" and adr(0) = '1') or (memop = '0' and datcp = '1' and adr(11 downto 2) = "0000000001") )then s_bsp16n <= '0'; else s_bsp16n <= '1'; end if; if((memop = '1' and adr(11 downto 10) = "10" and adr(8) = '1') or(memop = '1' and adr(11 downto 10) = "00" and adr(8) = '0') or(adr(11) = '0' and adr(9 downto 3) = "0111100") or(memop = '1' and adr(11 downto 9) = "000" and adr(7 downto 6) = "00") or(memop = '0' and datcp = '1' and adr(11 downto 1) = "00000000100") )then s_sel1 <= '0'; else s_sel1 <= '1'; end if; if((memop = '1' and adr(11 downto 8) = "0010") or(memop = '1' and adr(11 downto 8) = "1001") or(memop = '1' and adr(11 downto 7) = "11110") or(memop = '1' and adr(11) = '0' and adr(9 downto 5) = "01111" and adr(3) = '0') or(memop = '0' and datcp = '1' and adr(11 downto 1) = "00000000100") )then s_sel0 <= '0'; else s_sel0 <= '1'; end if; if((memop = '0' and datcp = '1' and adr(11 downto 1) = "00000000100") or (memop = '1' and adr(11 downto 8) = "0000") or (memop = '1' and adr(11 downto 8) = "1111") or (memop = '1' and adr(11 downto 9) = "000" and adr(7 downto 6) = "00") )then wsc01 <= '0'; else wsc01 <= '1'; end if; if((memop = '1' and adr(11 downto 8) = "1111") or (memop = '1' and adr(11 downto 8) = "0010") or (memop = '1' and adr(11 downto 10) = "10" and adr(8) = '1') or (memop = '1' and adr(11 downto 10) = "00" and adr(8 downto 3) = "111100") )then wsc00 <= '0'; else wsc00 <= '1'; end if; if(memop = '1' and adr(11 downto 0) = "000111110000")then adbf0n <= '0'; else adbf0n <= '1'; end if; end process; process (memop, datcp, s_bsp16n, s_sel0, s_sel1) begin if((datcp = '1' and s_bsp16n = '1' and s_sel0 = '0') or (memop = '1' and s_bsp16n = '1') or (datcp = '1' and s_sel1 = '0') or (memop = '1' and s_sel1 = '0') )then endabn <= '0'; else endabn <= '1'; end if; end process; process (s_bsp16n, s_sel0, s_sel1) begin sel0 <= s_sel0; sel1 <= s_sel1; bsp16n <= s_bsp16n; end process; end architecture;
Den Code habe ich bis jetzt nur händisch anhand gtkwave geprüft. Wenn du willst generiere ich dir ein Format damit du das nochmal durch den Disassembler laufen lassen kannst. Bräuchte dann aber infos über des Format für den Disassmbler.
-
naja dazu müssten wir die Stelle erst mal im 1MByte Firmware Code lokalisieren. Die UPI wird ja vom 386er mit code gefüttert. Da dort ein eigenes 32k CodeRam verbaut ist ist der x51 code kleiner 32k.
Das Bootprom hab ich schon mal disassembliert, das ist nur ein kurzer Testcode und die Weiterleitung der IRQ Vectoren nach 0x8000.
wir mal der Code schon mit den VarNamen aus dem Schaltplan
Code
Alles anzeigen; JED2EQN -- JEDEC file to Boolean Equations disassembler (Version V063) ; Copyright (c) National Semiconductor Corporation 1990-1993 ; Disassembled from maho1.jed. Date: 4-18-122 chip maho1 PAL20L8 ADM23 = 1 ; i1 ; A23 ADM22 = 2 ; i2 ; A22 ADM21 = 3 ; i3 ; A21 ADM20 = 4 ; i4 ; A20 ADM19 = 5 ; i5 ; A19 ADM18 = 6 ; i6 ; A18 ADM17 = 7 ; i7 ; A17 ADM16 = 8 ; i8 ; A16 ADM15 = 9 ; i9 ; A15 ADM14 = 10 ;i10 ; A14 ADM13 = 11 ;i11 ; A13 GND = 12 ;0V ADM12 = 13 ;i13 ; A12 MEMOP = 14 ;i14 ;1: Mem 0: I/O check table 3.2 DATCP = 23 ;i23 ;1: Data 0: Code ;outputs ENDABN = 15 ; o15 ; enable internal Bus buffer ADBF0N = 16 ; o16 ; enable X1000 Bus WSC00 = 17 ; o17 ; waitstates WSC01 = 18 ; o18 SEL0 = 19 ; o19 ; selectors decoder SEL1 = 20 ; o20 ; BSP16N = 21 ; o21 ; 0: 16Bit 1: 32Bit ENNCS = 22 ; o22 ; enable Decoder VCC = 24 ; equations ;Enable Chipselect decoder D61 ;note in real this is high activ ;************************************************** ;disable on MEM 2 xxxx xxxx ;disable on IO < 1000 ;disable on INT Ack (Table 3.2 BusCycle def) ;************************************************** ENNCS.oe = vcc !ENNCS = MEMOP & !ADM23 & !ADM22 & ADM21 & !ADM20 # !MEMOP & !ADM23 & !ADM22 & !ADM21 & !ADM20 & !ADM19 & !ADM18 & !ADM17 & !ADM16 & !ADM15 & !ADM14 & !ADM13 & !ADM12 # !MEMOP & !DATCP ;Mem 8x , 9x ;100x ;line1 8. MByte 9. Mbyte ;Mem 2x ;0010 ;line2 2. MByte ;MEM 9x , Bx ;10x1 ;line3 9. MByte 11.MByte ;MEM 1E , 3E ;0x01 111x 0 ;line4 0x1E 0000 - 0x1F 0FFF ; 0x5E 0000 - 0x5F 0FFF ;IO ;0000 0000 0xx1 ;line5 strange?? todo ;IO ;0000 0000 01xx ;line6 ;16 bit selector BSP16N.oe = vcc !BSP16N = MEMOP & ADM23 & !ADM22 & !ADM21 # MEMOP & !ADM23 & !ADM22 & ADM21 & !ADM20 # MEMOP & ADM23 & !ADM22 & ADM20 # MEMOP & !ADM23 & !ADM21 & ADM20 & ADM19 & ADM18 & ADM17 & !ADM15 # !MEMOP & DATCP & !ADM23 & !ADM22 & !ADM21 & !ADM20 & !ADM19 & !ADM18 & !ADM17 & !ADM16 & !ADM15 & ADM12 # !MEMOP & DATCP & !ADM23 & !ADM22 & !ADM21 & !ADM20 & !ADM19 & !ADM18 & !ADM17 & !ADM16 & !ADM15 & ADM14 ;MEM 9 , B ;line1 10x1 -> code 0 ;MEM 0 , 2 ;line2 00x0 -> ;MEM+IO 0 , 4 ;line3 0x00 1110 0 -> ;MEM 0 , 1 ;line4 000x 00xx x -> ;IO ;line5 !SEL1 = MEMOP & ADM23 & !ADM22 & ADM20 # MEMOP & !ADM23 & !ADM22 & !ADM20 # !ADM23 & !ADM21 & ADM20 & ADM19 & ADM18 & ADM17 & !ADM16 & !ADM15 # MEMOP & !ADM23 & !ADM22 & !ADM21 & !ADM19 & !ADM18 # !MEMOP & DATCP & !ADM23 & !ADM22 & !ADM21 & !ADM20 & !ADM19 & !ADM18 & !ADM17 & !ADM16 & ADM15 & !ADM14 & !ADM13 SEL1.oe = vcc ;MEM 2 ;line1 0010 -> code ;MEM 9 ;line2 1001 -> code 0 ;MEM F ;line3 1111 0 -> code 6 ;MEM 1 E ;line4 0x01 111x 0 -> code ;IO 0 0 00 ;line5 0000 0000 000 -> code !SEL0 = MEMOP & !ADM23 & !ADM22 & ADM21 & !ADM20 # MEMOP & ADM23 & !ADM22 & !ADM21 & ADM20 # MEMOP & ADM23 & ADM22 & ADM21 & ADM20 & !ADM19 # MEMOP & !ADM23 & !ADM21 & ADM20 & ADM19 & ADM18 & ADM17 & !ADM15 # !MEMOP & DATCP & !ADM23 & !ADM22 & !ADM21 & !ADM20 & !ADM19 & !ADM18 & !ADM17 & !ADM16 & ADM15 & !ADM14 & !ADM13 SEL0.oe = vcc ;waitstates WSC01.oe = vcc !WSC01 = !MEMOP & !ADM23 & !ADM22 & !ADM21 & DATCP & !ADM20 & !ADM19 & !ADM18 & !ADM17 & !ADM16 & ADM15 & !ADM14 & !ADM13 # MEMOP & !ADM23 & !ADM22 & !ADM21 & !ADM20 # MEMOP & ADM23 & ADM22 & ADM21 & ADM20 # MEMOP & !ADM23 & !ADM22 & !ADM21 & !ADM19 & !ADM18 WSC00.oe = vcc ;20 0000 .. 2F FFFF ;90 0000 .. 9F FFFF + B0 0000 .. BF FFFF ;9E 8000 .. 9E FFFF + BE 7000 .. BE 7FFF ;Fx xxxx !WSC00 = MEMOP & ADM23 & ADM22 & ADM21 & ADM20 ; Fx xxxx # MEMOP & !ADM23 & !ADM22 & ADM21 & !ADM20 ; 2x xxxx # MEMOP & ADM23 & !ADM22 & ADM20 ; 9x + Bx # MEMOP & !ADM23 & !ADM22 & ADM20 & ADM19 & ADM18 & ADM17 & !ADM16 & !ADM15 ; ;0x1F 0xxx X1000 Bus ADBF0N.oe = vcc !ADBF0N = MEMOP & !ADM23 & !ADM22 & !ADM21 & ADM20 & ADM19 & ADM18 & ADM17 & ADM16 & !ADM15 & !ADM14 & !ADM13 & !ADM12 ENDABN.oe = vcc !ENDABN = DATCP & BSP16N & !SEL0 ; # MEMOP & BSP16N ; # DATCP & !SEL1 # MEMOP & !SEL1 ;
Ich kenne mich mit Fpga programmierung aus. Kann dir draus in den nächsten Tagen vhdl code machen.
Vielleicht tut es ein Eprom chip aber auch, der muss natürlich schnell genug sein, wäre vielleicht einfacher. -
Was genau ist unklar ?
Was ist eigentlich mit dem Programmcode für den 80452, bei dem könnte ich mir am besten Vorstellen das die Übertragung verbessert werden kann.Wenn der Programmcode nicht zu groß ist könnte ich sonst anfangen den zu decodieren.
Natürlich nicht für das jetzige Board aber auf zukünfitigen vielleicht.
-
ein kleines update zur CPU Karte:
I/O ist fertig, SRAM Speicher zu 90% geroutet, CPU zu 70%. Als nächstes ist das Durcheinander unten links dran. Das sind im wesentlichen die Puffer zwischen CPU und System Bussen. Es wird so langsam.
Als Tipp wenn du es noch nicht wissen solltest: Du kannst auch bestimmte Airwire ausblenden, hat mir teilweise bezüglich der Übersicht geholfen.
Wenn du willst kann ich dir/euch auch helfen. -
nur in der Theorie. Praktisch hab ich das noch nicht gebraucht, und das ist hier auch nicht notwendig, Der USB Chip ist auch nur Fullspeed, da spielt das keine große Rolle.
Eagle unterstützt das glaube ich auch nur unzulänglich. Was mich schon immer an Eagle geärgert hat, ist dass Sie immer noch keine vernüftigen Offpage Symbole haben. Meine Versuche sowas in der Lib zu machen sind bisher nicht zufriedenstellend. Deshalb sehen Eagle Schaltpläne immer etwas hässlich aus. Da bin ich von PADs und anderen Systemen verwöhnt.
also wenn du schon ein Usb Interface einbaust würde ich darauf schon achten, nicht das deswegen nachher ein Bottleneck entsteht. Ich habe differential routing schon mit Egal gemacht, für eine Usb-Leitung ist das jetzt nicht so schlimm. Als Rechner kann ich dir diesen hier empfehlen: https://saturnpcb.com/saturn-pcb-toolkit/
-
Kennst du dich mit Routen von differential pairs aus ?
-
Perfekt florian !
Habe auch nochmal recherchiert und muss meine Aussage zu dem Kabelschirm auch revidieren. Einseitiges anlegen des Schirmes macht nur in speziellen fällen Sinn und beiseites auflegen von Schirmung macht in unserem Fall am meisten Sinn. Sry für die Verwirrung
-
Es gibt als nicht wirklich ein Konzept für Grounding, die haben einfach alles miteinander verbunden
Meinst du die Maho hat kein Konzept für Grounding oder es gibt generell kein Konzept für Grounding ?
Vielleicht ist das Konzept auch durch den Schaltplan nicht zu erkennen.Im ersten Moment scheint es egal zu seinen wo Chassie mit GND verbunden ist, das ist es aber nicht. Es mag bei der Maho vielleicht nicht so relevant sein wie bei moderen Schaltungen, die mit wesendlichen empfindlicher seinen können. Das mag und kann ich aber nicht beurteilen.
-
Es geht hier ja um die RS232 Schnittstelle, für die sind die 5V sowie die +-12V irrelevant. Solange keiner ein Lochstreifenlesegerät (etc.) anschließen will werden diese nicht benötigt.
Entweder sie werden weggelassen, so wie es PdVgA schon meinte oder sie können optional mit Jumpern gesetzt werden. -
Das Grounding Thema ....
Dazu gibt es verschiedene Meinungen, hier ein Link dazu:
https://electronics.stackexcha…ttached-to-digital-ground
Mit dem Style habe ich schon Boards Entwickelt (mit Ethernet uns SATA) und es gab keine Probleme.
Ansonsten wurde ich den Style nehmen der verwendet wurde.
Zu der Frage Schirm auf beiden Seiten Auflegen:Ich würde es vermeiden "Ground Loops" aufzubauen daher nur auf einer Seite. Wenn es ein Potenzialunterschied gibt fließt über (PE,Chassie) Strom und das sollte vermieden werden.
Bei der Aussage gehe ich davon aus das Beide Baugruppen mit (PE,Chassie) verbunden sind. Was im Falle der RS232 Schnittelle der Fall sein sollte. -
Bei ESD verlassen die sich auf den Schutz der Treiber ICs (2KV lt Datenblatt) Die EA Signale gehen nicht an die CPU sondern an die UPI.
hier die Beschaltung:
sind die +5V die auf den Anschuss geführt werden direkt mit der CPU verbunden ?
Da hatte ich mich vielleicht etwas unklar ausgedrückt. Das die Datenleitungen nicht direkt an die CPU gehen dachte ich mich schon aber wie sieht es mit der Versorgung aus ?
Also wir sprechen hier von einem sehr unwahrscheinlichen Fall daher würde ich es so lassen oder so wie PdVgA sagt einfach weglassen. -
Genrell hast du Recht, das ist nicht gut. Die Frage ist eher wie viel Leistung liefert das Netzteil ? Bei einem Kurzschluss bricht nur die Spannung zusammen und das System bootet nach dem Kurzschluss neu.
Ansonsten müsstes du die Leiterbahndicke groß genug wählen, damit sie nicht durchbrennen kann. Wobei ich da eher eine Sicherung einbauen würde.
Ich denke es sollten Komponeten gespart werden und das Netzteil wurde so designed, dass bei zu hoher Last die Spannung zusammenbricht und nichts weiter passiert.
Was mich eher stört ist ein Schutz gegen kurzzeitige Überspannung (ESD), das wäre eher ein Punkt warum eine CPU kaputt gehen kann. Zudem sind ESD Schutzdioden nicht teuer.
-
Ok also software für den Arduino. Am besten du machst ein git repo auf packst eine todoliste rein und ich guck mal was ich machen kann.
-
Das kann man jetzt faktisch unendlich weiter spinnen -
ich werde noch die Hardware Flusskontrolle umsetzen, und wenn sich 10 Leute finden die sowas haben wollen kann ich ja eine Platine zeichnen.
Wenn kayms will könnte er sich um die Software kümmern, ich laufe hier nen Marathon mit Krücken und gebrochenem Becken,.. ich muss mir da alles zusammensuchen da ich definitiv kein Programmeirer bin!
folgende features könnte man dann einfach umsetzen
- datenzufgriff per W-lan (netzlaufwerk) auf die SD Karte / man zieht am PC nur ein file in einen Netzwerkordner 2sec später kann man auf der Maschine auf [DATA I/O] und [INPUT] drücken und das Programm wird seriell eingelesen
- Maschinenkonstanten speicher per "knopfdruck" // also das device anstecken und einfach Masch konstanten drauf speichern
- Maschinenkonstanten wieder in die Maschine laden per knopfdruck
- USB SD card reader implkementieren damit es zum "USB Stick" wird
dann würde ich mich um die Platinen und die Bestückung kümmern
auch wenn ich das mit der Software vermutlich irgendwie zusammen stehlen kann / wäre es cool wennd as wer machen mag der im gegensatz zu mir programmieren kann
Klar kann ich die Software schreiben.
Wir müssten zusammen aber die Anforderungen festsetzen. Natürlich nicht nur die funktionalen Anforderungen auch die Desginbedingungen und Prozessbedingungen.
Also einfacher gesagt:
Was genau soll die Software können und wie soll es funktionieren?
Auf was soll die Software laufen?
Wie sieht das User interface aus?
Das sind erstmal die gröbsten Fragen
Zum Thema Blackbox:
Die das System damals entworfen haben werden keine Magie angewendet haben.
Es wird im Speicher einen Indextable geben und die gespeicherenten Daten. Glaube kaum das die Daten verschlüsselt sind etc.
Aber ja klar habt ihr recht wenn ihr sagt das ist eine "Black box" das die der Indextable wahrscheinlich auf der CPU karten gespeichert wird und daran schwer ranzukommen ist.
-
MEINE HERREN!
ich hab heute Nachmittag begonnen etwas zu basteln,..
und es funktioniert..
ein kleiner SD-Karte zu Maho adapter
war etwas anstrengend das Serielle Signal zu hin zu trimmen dass das auch von der Maho gelesen wird, und dann noch ein bisschen "Sicherheit" dass das ding nur los quatscht wenn die Maho auch auf empfang ist,..
Man kann ein txt oder nx oder what ever file in dem der ISO-code gespeichert ist auf die SD Karte Laden, und diese dann in den Wandler stecken, damit zur maho maschieren und von der SD Karte wird das Programm auf die Maschine geladen,..
würde das einigen hier das Leben erleichtern ? soll ich euch sowas basteln?
Sieht gut aus,
greifst du direkt auf den Speicher zu und der Arduino schreibt das Programm von der SD Karte direkt auf den Speicher ?
Oder funktioniert das immer noch über die serielle Schnittstelle ?
-
https wäre nicht schlecht
-
Sieht richig gut aus !
-
ok das ist doch schonmal gut.
Ich verstehe deine Idee aber den Verwendungszweck nicht ganz.
Zudem ist das ein Projekt was einiges an Stunden kosten wird und ich sehe gerade nicht wie das den Platinien für die Maho weiterhelfen soll ?
-
Wenn du willst kann ich dir was für das Auslesen des Pal chips entwerfen. Wenn du das noch nicht hast
-
habe das mal hier her verschoben kayms
ist auch besser denke ich
nene da sind pro Baustein einer und dann noch circa 500 "Angstkondensatoren" die habe ich aber noch nicht in den Schaltplan übernommen, also alles was keine Rolle für Signale spielt fehlt so zu sagen noch, ein paar sind wohl schon dabei, aber mit dem Speichertherma musste ich mal die ganze chip select logik verstehen und zeichnen,..
und ein paar habe ich noch nicht aufs Board sortiert.. ich würde sagen ich bin so bei 65% bis zu nem bestellbaren PCB Signale sind schon 100% fertig - ein paar C und R fehlen noch, das ganze seriell RS232 und X100 Bus zeug fehlt auch großteils noch,.. mal sehen was ich die nächsten Tage so schaffe..
die Kondensatoren können wichtig sein sonst verhält sich die Schaltung nachher vielleicht nicht richtig. Also im schlimmsten Fall
Ist auf keinen der Datenblätter einer Adress range für den Ram und Rom angegeben, dann wäre das easy ?
-
Ist es auf dem Original auch so, dass auf der cpm Karte so wenige decoupling Kondensatoren vorhanden sind ?
-
größeres Thema ist das CPM modul, da sind viel größere Herausforderungen zu meistern...
wo denkst du werden die Herausforderungen liegen?
Habe schon gesehen das es den Prozessor noch zu kaufen gibt.
Willst du das Ding 1:1 nachbauen oder gibt es Chips die nicht mehr zu bekommen sind ?
-
hab gestern mein erstes Programm in C geschrieben,..
ich muss noch zum Conrad Optokoppler besorgen, dann kann ich eine Platine fertig machen, mit nem Arduino Nano das man direkt in das Flachbandkabel der Ausgangsplatine pressen kann.
Code
Alles anzeigenvoid setup() { Serial.begin(9600); pinMode(2, INPUT); // BCD Enable pinMode(3, INPUT); // BCD number 1 pinMode(4, INPUT); // BCD number 2 pinMode(5, INPUT); // BCD number 4 pinMode(6, INPUT); // BCD number 8 pinMode(7, INPUT); // BCD number 10 pinMode(8, INPUT); // BCD number 20 pinMode(9, INPUT); // BCD number 40 pinMode(10, INPUT); // BCD number 80 pinMode(13, OUTPUT); // sets the digital pin 13 as output } void loop() { int I0; I0 = digitalRead(2); int I1; I1 = digitalRead(3); int I2; I2 = digitalRead(4); int I3; I3 = digitalRead(5); int I4; I4 = digitalRead(6); int I5; I5 = digitalRead(7); int I6; I6 = digitalRead(8); int I7; I7 = digitalRead(9); int I8; I8 = digitalRead(10); int BCDnum = 0; if (I0 == HIGH){ BCDnum = I1*1 + I2*2 + I3*4 + I4*8 + I5*10 + I6*20 + I7*40 + I8*80; //adding the BCD number up } if (I0 == HIGH && BCDnum > 0 && BCDnum < 100) { Serial.print ("BCD Number: "); Serial.println (BCDnum, DEC); } if (I0 == HIGH && BCDnum == 20){ digitalWrite(13,HIGH); } else { digitalWrite(13,LOW); } delay(30); }
Vorab sieht gut aus für ein erstes c Programm.
Habe einen Verbesserungsvorschlag.
Initialisiere die Integer vor der Main loop und nicht in der Main loop. Das macht den Code nur unnotig langsamer.
Wenn der Code sonst schnell genug arbeitet ist das quasi egal aber sieht halt nicht so schön aus -
ja schau, der Kay ist auch wieder aktiv
lass deine HW jungs nur mit den augen rollen, lass die mal nen G-code schreiben, oder was fräsen,.. kannst sicher besser routen als die fräsen
ja ich lese hier hin und wieder mit, bin aber gerade noch mitten in meiner Arbeit
-
Hallo FrankP,
ich würde die für Platinenlayouts KiCad (ist kostenlos) oder Eagle empfehlen. Dafür gibt es online genug Tutorials, dann klappt das auch mit den "Netzen".
Der Grund warum die "HW-Leute" kein Autorouting mögen ist eher ein persönliches Ding. Ich meine in vielen Fällen haben Sie recht und der Auto-router macht nur Müll aber für die Tastatur mit den niedrigen Multiplex-Frequenzen ist das nahezu irrelvant.
Eine Platine "schön" zu routen ist eher eine Kunst, die in dem Fall egal ist, weil es auch "unschön" funktionieren sollte
Besten Gruß
Kay
-
Hey,
Grundlegend gibt es ja einige Programme um G-Code zu testen. Ich weiß jetzt gerade nicht genau wo die Maho da ihre Eigenheiten hat aber mit solchen Tools sollte es doch möglich sein sich selbstgeschriebenen Code anzugucken. Wo liegt die genau die Schwierigkeit?
-
Ok, komisch bei mir funktioniert das. Was sagt den deine Konsole?
Willst du das hier im Form ausführen lassen ? Das wird warscheinlich nicht so einfach möglich sein in einem Post, da das Forum kein Javascript ausführen wird. Das wäre auch Sicherheitstechnisch überhaupt nicht gut -
Hey,
du musst schon eingabe2 definieren sonst kann das nicht gehen.<form name="exmplform">
<input type="number" name="eingabe" value="202"><br>
<input type="number" name="eingabe2" value="204"><br>
<input type="button" value="Berechnen" onclick="get_c()">
</form>
<object id="mc202"></object>
<object id="mc204"></object>
<script type="text/javascript">
function get_c() {
var eingabe = document.exmplform.eingabe.value;
var eingabe2 = document.exmplform.eingabe2.value;
var MC202a = eingabe * -1;
var MC204a = eingabe2 * -1;
document.getElementById('mc202').innerHTML = MC202a;
document.getElementById('mc204').innerHTML = MC204a;
}
</script>
so geht es bei mir
-
Error I 58 heißt "No Tool On Requested Toolplace",
ich weiß jetzt nicht genau wie die Tools erkannt werden aber daran wird es wohl liegen. -
Hallo ich bin Kay,
ich komme aus der nähe von Bremen und bin momentan noch Systems Engineering Bachelor Student an der Uni Bremen.
Momentan habe ich noch nicht viel Ahnung wenn es um Zerspanung geht, möchte mir dieses aber selber beibringen. Deshalb habe ich mir gerade erst eine Maho 600 zugelegt, hatte vorher eine selbstgebaute cnc fräse mit der ich holz fräsen konnte. Durch die Recherche über die Benutzung der Maschine bin ich auf die Videos von Florian gestoßen.
Mir hat die Idee die alten Karten zu verbessern sehr gefallen und möchte deswegen zu dem Projekt gerne etwas beitragen.
Ich kenne mich relative gut mit Elektronik und Programmieren aus und kann Plantinen designen, bestücken und programmieren.
Daher hoffe ich das ich etwas zur Community beitragen kann.