OldComp.cz
http://oldcomp.cz/

Paměťová klávesnice pro MK14
http://oldcomp.cz/viewtopic.php?f=89&t=5391
Stránka 1013

Autor:  microlan [ 07.02.2018, 23:45 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Není tu někdo, kdo by uměl rychleji než já napsat program do windows, který by četl bajty ze souboru, rozdělil je na nible, ke každýmu doplnil 0 za to vložil 4D a skládal do novýho souboru?

příklad:
7F > 07 0F 4D

Autor:  jirka_holub [ 08.02.2018, 00:46 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

to Microlan: ta pametova klavesnice je super
to Mikes21: drzim palce at se to povede.

Autor:  hynek [ 08.02.2018, 09:28 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

microlan píše:
Není tu někdo, kdo by uměl rychleji než já napsat program do windows, který by četl bajty ze souboru, rozdělil je na nible, ke každýmu doplnil 0 za to vložil 4D a skládal do novýho souboru?

příklad:
7F > 07 0F 4D


Zakladni command-line provedeni:
Kód:
#include <stdio.h>

int main (int argc, char *argv[]) {
FILE *fi, *fo;
  if (argc < 3) {
    printf ("BIN to MK-14 key convertor\n");
    printf ("Usage: %s file.bin file.key\n", argv[0]);
    return 0;
  }
  if ((fi = fopen (argv[1], "rb")) == NULL) {
    printf ("Can't open file %s!\n", argv[1]);
    return 1;
  }
  if ((fo = fopen (argv[2], "wb")) == NULL) {
    printf ("Can't create file %s!\n", argv[2]);
    fclose (fi);
    return 2;
  }
  printf ("Converting %s to %s...\n", argv[1], argv[2]);
  while (!feof (fi)) {
    int c = fgetc (fi);
    if (c < 0)
      break;
    fputc ((c >> 4) & 0x0F, fo);
    fputc (c & 0x0F, fo);
    fputc (0x4D, fo);
  }
  fclose (fo);
  fclose (fi);
  printf ("Done.\n");
  return 0;
}

Autor:  Mikes21 [ 08.02.2018, 10:58 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Uau, super. Zkousel jsem to sestavit a vygenerovat soubor, slape na prvni dobrou. Dobra prace ;-)

Autor:  microlan [ 08.02.2018, 14:56 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Chjo, dal jsem si předsevzetí, že místo čumění na OC budu programovat ... někdo to má hotové o půl deváté, já se s tím pinožím půl dne...

Kód:
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    include \masm32\include\masm32rt.inc
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

comment * -----------------------------------------------------
                        Build this  template with
                       "CONSOLE ASSEMBLE AND LINK"
        ----------------------------------------------------- *

    .code

start:
   
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

    call main
    inkey
    exit

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

main proc

   LOCAL hFile:DWORD
   LOCAL hFilew:DWORD
    LOCAL getbyte:DWORD
    LOCAL pocet:DWORD
    LOCAL delkaSouboru:DWORD
    LOCAL cloc:DWORD
 


                push esi
                   push fopen("MK14.bin")
                pop eax
                mov hFile, eax
 
                invoke GetFileSize,hFile,NULL
                mov delkaSouboru, eax
 
                .if rv(exist,"file.m14") != 0           ; if file already exists
                    test fdelete("file.m14"), eax         ; delete it
                 .endif
              
              
                 mov hFilew, fcreate("file.m14")          ; create the file
                 mov   ebx, 0 
smycka:
              invoke ReadFile, hFile, ADDR getbyte, 1, ADDR pocet, 0      ; čte byty
              .if !eax
                 print LastError$(), 13, 10            ; good to know if an error occurred
              .endif
              
              print str$(getbyte), " "               ;vypíše načtené byte
              mov eax, getbyte
              ;mov      dl,4
              push   eax
              shr       eax, 4                        ;vyrotuje o 4 dprava
              and      eax, 0Fh                     ;vymaskuje nejnižší byte
              mov      getbyte, eax
              
              mov cloc, fseek(hFilew,0,FILE_END)           ; set the file pointer to the end
              invoke WriteFile, hFilew, ADDR getbyte, 1, ADDR pocet, 0      ;a uloží do souboru
              
              pop      eax
              and      eax, 0Fh                     ;vymaskuje nejnižší byte
              mov      getbyte, eax
              
              mov cloc, fseek(hFilew,0,FILE_END)           ; set the file pointer to the end
              invoke WriteFile, hFilew, ADDR getbyte, 1, ADDR pocet, 0      ;a uloží do souboru
             
              mov      eax, 'M'                     ;dosadí "M"
              mov      getbyte, eax

              mov cloc, fseek(hFilew,0,FILE_END)           ; set the file pointer to the end
              invoke WriteFile, hFilew, ADDR getbyte, 1, ADDR pocet, 0      ;a uloží do souboru
              
              inc     ebx
              cmp     ebx, delkaSouboru
              jne     smycka
 
              print " ",13,10,0
              print str$(ebx), " bytes read", 13, 10


              invoke CloseHandle,hFile
              invoke CloseHandle,hFilew
   

              pop esi

              ret

main endp

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

end start

Autor:  microlan [ 08.02.2018, 15:14 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Takže tady jsou známé programy pro MK14 v intelHEX:

http://www.dougrice.plus.com/dev/seg_mk14.htm

převést do bináru a výše uvedenými rutinami do sekvence kláves

předřadit adresu začátku dat, např: 00 0F 00 00 54 ; 54 je znak T jako "Term" čímž se ukončí vkládání adresy

na konec připojitt 41 ;41 je znak A jako "Abort" ukončení zadávání dat do paměti
a za to startovací adresu, např: 00 0F 20 00

mohlo by následovat ještě "G" čímž by se program sám spustil, ale je lepší ho následně odpálit ručně, pro případnou editaci kódu.

Autor:  microlan [ 12.02.2018, 16:13 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Mikeš píše v jiném vlákně:
Citace:
Jasne, pak jsem si to uvedomil taky, ze to pouzivas i pro zaznam stisknutych klavesovych sekvenci. Jak to mas vymyslene s opravou, kdyz se preklepnes nebo chces neco opravit?
Schema jsem nasel, ale hledal jsem jeste sw do GALu a do CPU. Das to taky k dispozici? Bez toho je ten popis 'nepopis' ;-)


Je tam i popis toho galu. Kdyby se vlákna nezasírala (tím rozhodně nemyslím Mikeše) tak by se tam daleko lépe orientovalo. Obsah GALu tam samozřejmě je, ale asi ne poslední verze. Důležité je, že hodně GALů vlastní Danhard a myslím, že je rád prodá už naprogramoané, jak už jsm jednou psal. SW do procesoru taky pošlu, jak bude chvilka.

//Kdyby tak byla možnost, to vlákno promazat od OT.

Autor:  microlan [ 12.02.2018, 22:39 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Zpráva od danharda, naprogramovaný GAL20V8 za světovou cenu 30 Kč. Kdo má zájem, ozvěte se u mně, objednám to v Jesenici hromadně a rozešlu s DPS, případně i s naprogramovaným 89S52, pokud to někdo neumí.

Vzhledem k neustálému nabalování vlákna, se začínají důležité informace ztrácet v balastu, umístil jsem technické informace na jedno místo:

Paměťová klávesnice pro MK14

Autor:  microlan [ 13.02.2018, 10:22 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Chybička se vloudila, teď při hledání dodavatele EEPROM jsem zjistil, že je ten odvod určen pro 3,3V napájení, co na to zkušení vývojáři, jak dlouho to bude takhle fungovat?

Autor:  microlan [ 14.02.2018, 10:33 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Důležitá informace. Vzhledem k výše uvedené chybě, která vznikla mojí neznalostí, se omlouvám všem zájemcům o tuto klávesnici. Bohužel není na trhu žádná alternativa pro napájení 5V, kterou by se dala paměť klávesnice nahradit. Jedinou čistou cestou by bylo vytvořit 3,3V napájecí hladinu a do SPI obvodů zařadit "level shift" obvody, což sice není nic složitého, ale vzhledem ke skutečnosti, že se mě nechce utrácet další peníze za nový film na DPS, tak to nechám tak, jak to je. Zatím to funguje a vzhledem k faktu, že to běží na 125 kHz s odběrem při čtení pod 3 mA (obvod umí 100 MHz s odběrem cca 25 mA) tak se nebojím výkonového přetížení obvodu. jediné co mu hrozí je asi průraz některého gejtu. To se nechám překvapit a beru celou situaci jako experiment s napěťovým přetížením FLASH pamětí.
Další řešení je udělat do soklu malou desku s diodovým omezením napájení a s příslušnými úpravami úrovní.
3. možnost, je že někdo navrhne a nechá udělat nové desky, já už se tomu věnovat nechci.

//navíc, jediné co hrozí je asi chybovost obvodu po určitém čase, takže mít po ruce nový kus se zálohou a jede se dál.

Autor:  danhard [ 14.02.2018, 11:32 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Bych to nehrotil, když to funguje a brouk je studenej :)
Můžeš zkusit škrábnout napájení před blokovacím kondem a zařadit dvojitou smd diodu, třeba bav99.
S úrovněma nemusíš dělat nic, ty k sobě pasujou.

Autor:  microlan [ 14.02.2018, 11:53 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Dík, že jsi mně to potvrdil, hned se mě bude líp spát :) O mě nejde, ale chce to pár lidí realizovat, tak abych jim nezpůsobil nějakou újmu. Je to fakt studený, tady je důkaz. Foceno při čtení.

//kdo nezná rozložení součástek, tak A25L080 je pod jádrem procesoru, mírně vlevo.

Přílohy:
IR_0273.jpg
IR_0273.jpg [ 175.89 KiB | Zobrazeno 19393 krát ]

Autor:  danhard [ 14.02.2018, 12:05 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Na 5V napájení jenom menší 23LCV1024-I/P
Ale ani 5V, ani DIP8 pouzdro už není v módě.

Autor:  microlan [ 14.02.2018, 12:47 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Bych tu pitomou módu... :gunjozo:

Ještě uvažuju, že stejně 99% programování (zapisování) bude z PC, čili při standardních podmínkách napájení. Tam si myslím že je největší problém, při tom zápisu a mazání.

Autor:  danhard [ 15.02.2018, 11:13 ]
Předmět příspěvku:  Re: Paměťová klávesnice pro MK14

Taky by šla udělat redukce na smd provedení a ta by na sobě měla možnost bav99 a 100n v napájení.

Stránka 1013 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/