Elektroda.pl
Elektroda.pl
X

Search our partners

Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

jak zrobić pamieć??

c_04 18 Jul 2005 04:15 4568 32
  • #1
    c_04
    Level 21  
    witam
    mam takie pytanie jak w temacie... a ponizej kilka slow wyjasnienia:
    wiec w skrocie chcialbym zeby dalo sie wprowadzac 6 cyfr i zeby bylo takich komorek ok 300 czyli 300 x 6... chodzi o to zeby najpierw wprowadzac a pozniej odczytywac po kolei bez znaczenia w ktora strone wazne tylko zeby byla zachowana kolejnosc ciagu cyfr czyli np jak wpisze 132445 to tak samo ma odczytac 132445... najlepiej gdyby odczyt i zapis odbywal sie w formie kodu bcd dla kazdej z pojedynczych cyfr poniewaz ulatwiloby mi to dalsze sterowanie... byc moze pomocnym do wprowadzania roznych wartosci okaze sie tutaj uklad myszy do komputera... i myslalem zeby zrobic to rowniez w ten sposob zeby mysz od komputera rozlozyc i wbudowac w cos na wzor plotera wiec przesuw w obojetnie ktora strone na osi x lub y powodowalby wysylanie komunikatow tylko jest jeden problem - nie potrafie programowac:( ale byc mzoe istnieje jakis prostszy sposob na zapis i odczyt takich ciagow znakow (w kodzie bcd by bylo 6x4 stany dla jednej komorki) myslalem tez ze moze by wykozrystac jako nosnik tasme magnetofonowa tylko nie moge sobie poradzic jak zakodowac znaki na sygnal audio... moze wykorzystac uklad telefoniczny do generowania pulsowo lub tonowo?
    prosze o pomoc
    pozdrawiam
  • #2
    _jta_
    Electronics specialist
    A mógłbyś jakoś lepiej określić, o co chodzi?

    Czy to ma być coś, co zapamięta do 1800 cyfr, i pozwoli je potem odczytać w tej samej kolejności?

    Czy ma byś w miarę szybkie, czy wolne; czy ma pamiętać po wyłączeniu zasilania?

    Jakimś rozwiązaniem mogłaby być pamięć 2k x 8 (lub 2k x4), i układ DMA... ale chyba
    nie bardzo można do tego użyć jakiegoś 8237, bo trzeba go jakoś sterować, raczej już
    złożyć DMA z układów TTL (licznik, komparator...).
  • #3
    c_04
    Level 21  
    wiec wyjasniam:
    tak troche nad tym myslalem i wymyslilem ze mozna by zamieniac dane liczby na tony do tego dodac ton przesuwajacy rejest czyli miejsce w ciagu liczb np dziesiatki i setki... wymyslilem to tak zeby to nagrywac na kasete i tak by bylo chyba najprosciej zeby to pamietalo a i ilosc zapamietanych zdarzen bylaby ograniczona tylko dlugoscia kasety poza tym wszystko do powielenia... i teraz zupelnie nie mam koncepcji jak zamienic tak cyfry na dzwieki zeby je zapisac w postaci dzwiekowej (podobnie do zapisu gier w commodore 64 lub atari)... z tymi atmelami nie poradze sobie:( nie mam ani programatora ani wiedzy na ten temat no i najwazniejszego - pojecia o programowaniu... chcialbym to zorbic mzoe jakos prosto na cyfrowce moze wykorzystac uklad optyczny myszy do zadawania wartosci tylko dodac do niej moze licznik zliczacy w dol i w gore zaleznie od kierunku i tak 999 stanow dla jazdy w pionie lub poziomie (tzn os x os y) ->po trzy pozycje czyli 999 dla x i 999 dla y... po czym zapisac to jako ciag znakow ->999999 i np przekonwertowac do formy dzwieku zeby dalo sie zapisac na kasecie przy czym zmiana pozycji powinna byc rowniez sygnalizowana jakims dzwiekiem zeby uklad nie mial bledow + dodac dzwiek resetujacy 'r' (chociaz niekonieczny) oraz dzwiek zatrzymujacy 's' odczyt i czekajacy na wykonanie zadania wiec ciag by wygladal tak: r9p9p9p9p9p9s... i od nowa i np jaka inna wartosc: r7p8p4p4p7p7s... jak dodac te dzwieki dodatkowe to nie byloby specjalnie problemu... odczyt dzwiekow moze tez nie bylby problemem bo mozna by to zrobic na jakichs strojonych filtrach pasmowo przepustowych problemem moglby byc generator ale myslalem zeby moze zrobic tez ich kilka i stroic osobno dla kazdego tonu... urzadznie nie musi byc szybkie wystarczy ze bedzie robic zadana czynnosc szybciej niz czlowiek no i bedzie moglo powielac zadana prace... a nosnikiem pamieci bylaby tu kaseta lub tez cd a np zestawy sekwencji mozna by zapisac w postaci kolejnych trackow na cd... na kasecie wiadomo w jednym ciagu;)chociaz mozna by zadac jeszcze jeden ton odpowiedzialny za bezwgledny stop urzadzenia i dalszego odczytu... naliczylem ze takich dzwiekow musialoby byc ok 13-14 to stosunkowo malo... teraz tylko problem jak tozrobic fizycznie;) lub wymyslec jakies prostsze rozwiazanie robiace ta sama prace... z zapisem by bylo tak samo prosto jak z odczytem po prostu odwrocenie dzialania + dodane czasy odstepow ktore moglyby byc ustalone na 1 s... i czas pomiedzy zdarzeniami np 3 s... pozwoliloby to np przy pomylce wstrzelic sie z nagraniem poprawnych wartosci
    nie jest wymagane zeby to cos pamietalo cokolwiek po wylaczeniu zasilania... tak jak pisales z tymi licznikami i komparatorami to moze byc dobra droga bo najlepiej by bylo gdyby calosc wlasnie zrobic na cyfrowce tylko ze nie mam koncepcji wtedy jak zrobic przechowywanie danych np kiedy bym chcial w jakis sposob zarchiwizowac wpisy do takiej pamieci... kolejnosc przy odczycie wzgledem zapisu rowniez jest niewazna istotne jest zeby dalo sie zapisac ciag 6 cyfr czyli wyrazenie 999999 + 000000... na 10 bitach juz powinno sie dac to zrobic i jakos to spiac razem zeby synchronizowalo sie... ale chyba latwiej w jednym ciagu zapisac no i akurat kolejnosc kazdego ciagu tzn cyfr w nim jest bardzo wazna np 123456 musi byc zapisane tak jak jest poniewaz nie jest to to samo co 654321 natomiast czy najpierw bedzie 123456 przed 123489 czy odwrotnie to nie ma znaczenia...
    pomysle nad tym generatorem z telefonu (tonowe wybieranie numerow) do tego bym dodal tylko filtr pasmowo przepustowy przy odczycie dla kazdej z czestotliwosci i przy ktorej odczyt mialby najwieksza amplitude tam by byla jedynka... a czas mozna by ustalic wkladajac kondensator... i gdzies albo jeszcze jeden albo inny opornik dla uzyskania tej przerwy 3 sec
    tzn to nie musi byc tak dokladnie 1 i 3 s... to ma po prostu poprawnie zapisywac i odczytywac wyniki po odzczytaniu i wykonaniu jakiejs czynnosci ma wgrac nastepny ciag cyfr ->wykonac prace i tak w kolko az do uzyskania sygnalu bezwglednego stopu

    mysle ze magnetofon bylby tutaj najwygodniejszy poniewaz i tak dzisiaj takie sprzety leza bezuzyteczne a jakis sony na allegor od wiezy mozna kupic za 100 pln;) zreszta mam troche jakichs starych w domu ktore moglbym wykorzystac

    obadalem tez te czestotliwosci wykorzystywane przy wybieraniu tonowym w telefonie i okaazuje sie ze sa to dwudzwieki czyli dla zapisania 12 znakow wystarcza 7 tonow hmm a przeciez moglbym to rozwiazac jako 4 dzwieki lub 5 naraz i zapisywac liczby od razu w postaci jednego sygnalu a przyjmujac ze wszystkie brzmia naraz jest to przesuniecie pozycji na nastepna cyfre... a samo kodowanie juz zrobic tak jak jest to w kodzie bcd zostawiajac jeden dzwiek jako wyzwalajacy tzn mozna by go uzyc jako sygnalu clk a pozostale 4 jako abcd przesuniecie i zatrzymanie... a do tego mozna zbudowac jakis filtr z 4 pasmami i te 4 pasma dac jakos skrajnie od siebie np 300hz 1500hz 5khz 7khz 10khz i po prostu z wyjsc filtrow moze podpiac od razu wejscia bitow jakiegos licznika... budowalem cos takiego co pamietalo stan... nie wiem natomiast jak zrobic przesuwanie pozycji
    pozdrawiam
    a w ogole to cze jta;)
  • #4
    _jta_
    Electronics specialist
    Zrobienie układu kodującego i dekodującego to może być skomplikowana robota;
    pytanie, jak z możliwością znalezienia jakiejś pamięci statycznej RAM, do której
    byłby dostępny opis jak się nią steruje, i miałaby minimum 1kB pojemności?

    W ofercie Semiconductors Bank http://www.semiconductors.com.pl/ widzę
    6264 i 62256, każda z nich się nadaje, te drugie (32kB) są po 7.80+VAT(22%).
    A jest i z podtrzymaniem bateryjnym - ale taka to już kosztuje 41zł za 8kB...
    Do 62256 jest opis - Cypress jest jedynym producentem, który się przyznaje,
    że kiedykolwiek produkował taką pamięć, inni wyraźnie wolą nie pamiętać. ;)
  • #5
    elektryk
    Level 42  
    _jta_ wrote:
    pytanie, jak z możliwością znalezienia jakiejś pamięci statycznej RAM, do której byłby dostępny opis jak się nią steruje, i miałaby minimum 1kB pojemności?
    Praktynie dowolna pamięć statyczna np 6116, ale cały układ powinno dać się upchnąć w jakimś mikroprocesorze. Wtedy jeden chip załatwia wszystko (nawet można zrobić zapamiętywanie w EEPROM i kilka "banków").
  • #7
    c_04
    Level 21  
    hmm
    no witam panowie problem w tym ze pamiec 8-bitowa ma za krotka dlugosc slowa zeby zapisac 999 znakow w systemie dzieisietnym a po przekonwertowaniu to robi sie cos kolo 10-bitow... w tej pamieci najstarszy bit moze przyjac wartosc 256:(
    troche problemow mialbym z licznikiem przesuwajacym komorki pamieci przy zapisie i odczycie bo tutaj chyba by trzeba dac cos z 15 pozycjami wiec taki troche bardziej rozbudowany licznik... prawdopodobnie zmiana odbywa sie przy podaniu wartosci w kodzie bcd czyli najmlodszy adres: 000 000 000 000 001... nastepny: 000 000 000 000 010 i kolejany: 000 000 000 000 011... czy tak to powinno wygladac czy sie myle??
    poza tym jak zrobic zeby zapis w kolumnach byl staly? tzn przez wejscie adresowe podawana bylaby pewna wartosc 8-bitowa np: 10001110 wiec jak ominac to przyporzadkowanie do kolumn?? czyli przesuwanie tylko wierszy przy zapisie i odczycie??
    a moze mi ktos z was powiedziec co to jest -> AAA2800P-08??? mam tego niezly wor no i tak pomyslalem ze moze by to jakos uzyc...
    hmm w przypadku uzycia ktorejs ztych pamieci musialbym spiac je 2-3 i zsynchronizowac spinajac wejscia ustawiajace pozycje wierszy no a wejscia adresowe wpiac w wyjscia moich przerzutnikow czyli tam gdzie mam zakodowana wiadomosc o pozycji w moim urzadzenieu ale jeszcze w bcd... heh troche zawiklane... ma ktos moze pomysl jak zrobic przesuwanie przy wpisywaniu i odczycie pamieci?jak ten licznik zrobic z 15 pozycjami? bo to by trzeba chyba spiac 5 licznikow 4 bitowych
    i chcialbym to tal zeby dalo sie jednym przyciskiem zapisywac i przesuwac o jedna komorke w celu zapisania kolejnej wartosci i jeszcze jednym cofac w celu korektyi tak samo odczytaywac... jeden przycisk ktory bym naciskal i pojawialyby sie kolejne wpisy... heh i co zrobic z adresowaniem kolumn??? jezeli bym tego nie podpial to wartosc wpisana przez wejscie adresowe zapisze sie tak jak jest podawana czy trzeba na wszystkie wejscia ustawiajace kolumny dac 1 zeby jakby odblokowac zapis? i jeszcze jeden problem: jak to zarchiwizowac??
    z przesuwaniem wierszy jeszcze cos bym wymyslil na liczniku zliczajacym w dol lub w gore a i tak by trzeba ich spiac kilka bo nie wiem czy sa jakies 16 bitowe... 4 bitowe to sa te ktore normalnie mozna kupic
    pozdrawiam
  • #8
    elektryk
    Level 42  
    Nie konwertuj pamięci, zapisz w kodzie BCD, pamięci 8bitowe sa wystarczająco tanie. Licznik może liczyć w dowolny sposób, ważne żeby było to powtarzalne, bo nie ważne czy liczba nr 1 będzie zapisana w komórce 100 czy 999, ważne żeby cała maszyna po wskazaniu na nr 1 zapisała/odczytała z tej samej komórki. Nadal skłaniam się w kierunku upakowania tego do mikroprocesora, rozbudowanie tego układu na układach scalonych będzie bardzo duże.
  • #9
    c_04
    Level 21  
    pisalem juz ze nie poradze sobie z programowaniem mikroprocesora... a z cyfrowki korzystajac z bramek i tego calego stuffu jestem w stanie zrobic wszystko poniewaz jestem w stanie zrozumiec jak to dziala... policzylem zeby zapisac pelna informacje najlepiej zeby pamiec byla 24 bitowa czyli 3 kosci 8 - bitowe wspolnie adresowane wiersze i wspolnie zadawany odczyt lub zapis tylko wejscia adresowe przyjmowalyby rozne stany bo dla kazdej cyfry z 999 999 bedzie po 4 bity na cyfre: 4+4+4 +4+4+4 =24... takie rozwiazanie byloby najlepsze poniewaz kazde 4 bity pamieci odpowiadalyby tylko za dana cyfre a i tez wprowadzanie by mi sie ulatwilo... moglbym dac jakis licznik zliczajcy do 999 i na kazda cyfre zrobic zatrzask na 4 przerzutnikach np typu D i z tego juz wyjscie na wyswietlacz i od razu na pamiec... jeszcze tam wpinajac gdzies komparator po drodze zeby mi ta maszyna robila to co chce;) no a co do licznika to musi byc w gore/ w dol... i teraz chcialem przerobic tak mysz komputerowa zeby mi dawala informacje zakodowana na 4-bitach co do kierunku przesuwu i informacje o samym przesuwie... czyli np 1111 gdzie A-jazda w gore B-informacja zmieniajaca sie z 1 na 0 lub odwrotnie przesuw na osi y, C-jazda w prawo, D-j/w przesuw pozimy... i np 0101... jazda w dol oraz w lewo... wydaje mi sie ze informacje o pouszaniu sie myszy daloby sie zapisac na 3 bitach z tym ze jeden bit musialby obslugiwac naprzemiennie parametr np gora/prawo a pozostale 2 bity zawieralyby informacje o ruchu... heh tylko jeszcze nie wymyslilem jak ustalic kierunek jazdy myszy poniewaz nie wiem jak to zrobic np przy uzyciu komparatora ktory porownywalby 2 bity moze dac kondensatory za fotodiodami zeby rozpoznawaly stany kiedy jest ruch tylko co dalej?:P
    jeszcze takie pytanie bo czytalem gdzies o tych pamieciac np 6264 i pisalo tam ze do adresowania komorek przy odczyce lub zapisie stosuje sie scalak 74ls138 a to jeste 1 z 8... czyli gdyby tez przyjac ze programowanie wierszy odbywa sie tak samo to mam zaledwie 40 komorek pamieci:(( cos tu chyba namieszali... wiec jak to zrobic?? po prostu adresowanie kolumn i wierszy potraktpwac jako jedna szyne i programowac to bcd ale np o 15 pozycjach?? wlasnie tego nie moge znalezc jaki jest najstarszy adres do zapisu ostatniej komorki tzn kolumna i wiersz... bo tak chyba to dziala ze podaje sie ten adres i zapisuje obadz odczytuje w tym miejscu zawarta inforamcje 8-bitowa

    jak trudno byloby wpiac stacje dyskietek zamiast tego ramu?
    ciagle co z archiwizacja pamieci??
  • #10
    _jta_
    Electronics specialist
    http://www.datasheetarchive.com/search.php?search=AAA2800P&sType=part

    Part Number = AAA2800P08
    Description = General Purpose Dynamic RAM - Static column mode
    Manufacturer = Nmb Technologies
    Number of Words = 256k
    Bits Per Word = 1
    t(acc) Max. (S) = 80n
    tW Min (S) = 40n
    Output Config = 3-State
    P(D) Max.(W) Power Dissipation = 1.0
    Nom. Supp (V) = 4.5
    Status = Discontinued
    Package = DIP
    Pins = 16
    Military = N
    Technology = CMOS

    a jak szukam opisu, to nic nie znajduje...
    ma 18-bitowy adres i 16 nóg - pewnie adres podaje się na raty, po 9 bitów,
    dwie nogi do zasilania i masy, zostaje 5 - ale skąd wziąć opis która jest która?

    Mysz ma jakiś swój protokół i przerabianie na inny to za dużo roboty.

    Do stacji dyskietek jest potrzebny sterownik, i nie jest to łatwa sprawa.

    Archiwizacja - co masz na myśli? Możliwość kopiowania na inny nośnik?
  • #11
    c_04
    Level 21  
    z archiwizacja chodzi mi o to zeby jak juz raz wpisze te dane to zeby kiedys w przyszlosci nie wklepywac je od nowa tylko najpierw zrzucic na cos (kaseta by byla najlepsza jako w ogole nosnik i pamiec zarazem) i potem jak mnie najdzie potrzeba to wgrac to jeszcze raz;) i maszyna by mogla w szybki sposob powielac cos... to tak jak bym chcial robic czesci zamienne do czegos czego wykonalem tylko jedna sztuke a w miedzyczasie bym zrobil jeszcze mase innych rzeczy...

    co do tej pamieci AAA2800 wynika ze bylaby swietna;) tylko jak ja zapiac?? mam tego kolo 40 szt a moze nawet wiecej;)
    pozdrwiam

    p.s. ktos mi jeszcze podsunal pomysl z wykorzystaniem kart mmc/sd... tylko problem jak to ustrojstwo zapisac i potem odczytac:(
  • #12
    lechoo
    Level 39  
    Odpuść sobie pamięci dynamiczne, gdyż wymagają odświeżania, a to może być kopotliwe. Pamięci statyczne mogą pracować z podtrzymaniem bateryjnym przy obniżonym napięciu zasilania - pobierają w stanie nieaktywnym kilka mikroamperów.
    Jeśli zdecydujesz się na układ z mikrokontrolerem to możesz też użyć szeregowych pamięci EEPROM.
  • #13
    c_04
    Level 21  
    mikrokontrolera nie zaprogramuje:( musi byc jakies inne rozwiazanie
    a z tym aaa2800 wiesz cos wiecej? poczytalem o tych pamieciach dynamicznych i faktycznie sie nie nadadza poniewaz uklad ktory by odczytywal cala zawartosc pamieci i z powrotem by ja zapisywal zeby informacja nie zniknela - jest do zbudowania bardzo trudny a wlasciwie samo odczytywanie calej pamieci minimum 100x na sec... tak pomyslalem ze mozna by po prostu przerzucac zawartosc jednej takiej kostki do drugiej i tak miedzy soba by sie wymienialy.. byc moze potrzebne by bylo lekkie wzmacnianie informacji poniewaz moglaby zaniknac przy ktorejs kopii skoro pamiec traci ladunek juz sama w sobie

    zostaje pamiec statyczna
  • #14
    _jta_
    Electronics specialist
    Przypuszczam, że w takiej sytuacji najprostsze będzie użycie mikrokontrolera + dużej pamięci EEPROM.
    Jakikolwiek nośnik magnetyczny (taśma,dyskietka), czy karta pamięci wymagają na tyle złożonych układów
    do współpracy, że inaczej jak przy użyciu mikrokontrolera nie ma sensu, bo będzie za dużo roboty.

    Odświeżanie pamięci dynamicznej można zrobić przy użyciu DMA (np. kostka 8237), i przy okazji
    używać tego do zapisu i odczytu, ale i tak jeszcze jest potrzebny kontroler pamięci, w sumie to się robi
    dość skomplikowane - pamięci dynamiczne z dwustopniowym adresowaniem nie są do prostych układów.

    Aha, i przypominam: za 41zł+VAT (czyli za 50zł) można kupić pamięc z podtrzymaniem bateryjnym.
    Albo do pamięci statycznej zrobić podtrzymanie bateryjne, i możliwość archiwizowania na komputer.
  • #15
    marek_Łódź
    Level 36  
    Jak napisałeś do zapisu 6 cyfr BCD potrzebujesz 24 bitów (po 4 na cyfrę). najprościej zastosować równoległą pamięć EEPROM, którą możesz zaadresować równolegle i do której mozesz podać wszystkie dane równolegle. Dwie 16-bitowe kości (16 bitowe słowo danych) dają 32 bity, więc masz niezbędne 24 bity + 8 bitów na rozkurz.

    Dalej robisz swój układ wpisu/adresacji na TTL/CMOS i gotowe. Kolejność zapisu i odczytu zależy od tego jak skonstruujesz te układy adresacji.

    Podobny rezultat możesz uzyskać stosując równoległą kartę pamięci (CF) niemniej w tym przypadku konieczne jest dołożenie układów sterujacych, które zainicjują odpowiedni tryb pracy karty. Z eepromem jest prościej.

    Jeśli dane wpływają szeregowo (cyfra po cyfrze), musisz jeszcze dołożyć układ multiplekujący/demultipleksujący z licznikiem cyfr na wejściu pamięci. W tym wypadku można pozostać przy kościach 8-bitowych wpisując cyfry parzyste/nieparzyste w odpowiedniej połówce bajtu.


    Archiwizacja - pamięć EEPROM trzyma wpisane dane bez zasilania układu.

    Zamiast zrzucać dane na urządzenie zewnętrzne musisz po prostu zastosować odpowiednio duży kawałek EEPROMu. Młodsze bity adresu wykorzystujesz do adresowania słowa w pakiecie, na starszych bitach dajesz przełącznik wyboru numeru pakietu danych.

    Jeśli zabraknie miejsca wymieniasz zestaw kości w podstawce lub dokładasz dodatkowe. Pamięć można zrealizować w postaci kartridża, co da nieograniczoną ilość zestawów danycyh. Do szczęścia przydałby się jeszcze układ przepisująco porzadkujący pakiety, ale to odrębny problem.

    _jta_ wrote:
    Zrobienie układu kodującego i dekodującego to może być skomplikowana robota


    Niekoniecznie (jeśli miałeś na myśli kodowanie DTMF)

    http://phreak.pl/pdfs/tester_aparatow_telefonicznych.pdf
    http://assets.zarlink.com/DS/zarlink_MT8880C_MAY_05.pdf
  • #16
    c_04
    Level 21  
    no wlasnie o cos w tym kierunku mi chodzilo:)
    wyjscie juz jest w bcd tylko kolejnosc troche inna ale to to jest najmniej istotne bo czestotliwosci moga sobie byc jakie chca byle mi sie kolejnosc zgadzala wiec zamiast 0 bede musial uzyc D zeby bylo 0... tylko zasadnicze pytanie: jakie odchylki jest to w stanie zaakceptowac? czy da rade to odtwarzac z kasety i zostana poprawnie odczytane dane?
    powiem szczerze ze myslalem o wyrwaniu z jakiegos starego tel calej kostki do kodowania tonowego... to byl jakis samsung (ta kosc) ale patrzalem ten pierwszy link i tam jest dekoder ktory kosztuje 5 pln a spelnia wszystko (prawie) czego potrzebuje... jeszcze bym musial wymyslec jak zrobic przesuwanie pozycji na odczyt kolejnej liczby... tony bym sobie puszczal z kasety czyli nagrane by byly po prostu po kolei... muusialoby sie to jakos odbywac tak zeby moze zboczem opadajacym wyzwalane bylo przesuwanie... tzn kiedy na kasecie pojawia sie cisza (0) to nastepuje przesuw o jedna pozycje wyswietlacza... moze jakas negacje dac po drodze;)i licznik albo cos 1 z 8... z czego 2 ostatnie pozycje ktore by nie byly potrzebne do zapisu liczb uzyc jako sterowanie maszyna i np jezeli odczyt zatrzymalby sie na 7 pozycji to maszyna wykonalaby prace ale juz nie przesuwala tasmy... i to np musialoby nastapic w jakims czasie tzn nastapienie tych 2 ostatnich pozycji po sobie... heh moze to troche zawile ale jak zadziala ten koder/dekoder z magnetofonem to juz gitara;) reszte sobie jakos wymysle;)
    cieszy mnie fakt ze akceptowalny czas dla rozszyfrowania tonow to tylko 50ms... troche bym go wydluzyl ale i tak pojemnosc kasety w tym wypadku moze byc bardzo duza
  • #17
    elektryk
    Level 42  
    c_04 wrote:
    pisalem juz ze nie poradze sobie z programowaniem mikroprocesora... a z cyfrowki korzystajac z bramek i tego calego stuffu jestem w stanie zrobic wszystko poniewaz jestem w stanie zrozumiec jak to dziala
    Moim zdaniem w pewnym momencie zabraknie Ci głowy to zapamiętania co i do czego było i jak działa. Można to zrealizować w układach logicznych, ale pozostaje drobny problem, że jeśli się np okaże że taśma magnetyczna będzie miała jakiś bardzo mały procent błędów, to zrealizowanie układu np kontroli parzystości na bramkach będzie kolejnym rozbudowaniem układu.

    A co do taśmy magnetofonowej, to możesz sobie przyjąć że jedna częstotliwość oznacza 1, inna oznacza 0 a jeszcze inna oznacza następną cyfre a całkiem inna następną liczbe. Możesz wykorzystać kodery/dekodery DTFM i np w jednym tonie zapisać od razu 4 bity (cyfra albo dodatkowy symbol). One są przystosowane do linii telefonicznych o słabej jakości i mają bardzo niską stope błędów.
  • #18
    c_04
    Level 21  
    z tym zapamietywaniem co do czego bylo to bez obaw;) jak cos robie to najpierw w modulach przede wszystkim z racji ew modernizacji lub po prostu szybkiego kojarzenia co jaki modul w danym ukladzie robi, jaka pelni funkcje... do tej pory nie mialem problemow z przypomnieniem sobie co ma co robic;) czasami tylko musze zerknac co dany scalak w sobie zawiera zeby ustalic ktora to czasc ukladu;)

    z tymi dtmf troche sie obawiam kolysania/drzenia dzwieku podczas transmisji... w linaich moga wystepowac zieksztalcenia ale innego typu... np tlumienie jakichs czestotliwosci a w przypadku kasety moge miec zupelna zmiane tonow... bo co sie stanie jak nagram np 1 zakodowane jako dtmf i puszcze sobie to troche szybciej??;)
    musialbym zrobic jakis prosty test z modulacja czestotliwisci zapisujac tonowo np znaki 1 2 3 4 5 6 7 8 9 0 i sprawdzic przy jakich odchylkach sa poprawnie odczytywane... jezeli margines bledu jest bardzo maly to caly uklad jest bez sensu... za to moglbym go wykorzystac jako generator tonow przy innym kodowaniu a wymyslilem sobie juz wlasnie do tej maszyny 5 sposobow albo wiecej szczegolnie gdyby doliczyc ich kombinacje
    pozdrawiam
  • #20
    Nemo
    Level 31  
    Czytając ten temat mam wrażenie "drapania się lewą ręką za prawym uchem". Skoro urządzenie (przypuszczam, że jakaś obrabiarka) ma wyjście cyfrowe (lub tego typu ze stanami +24V/0V), to po co bawić się w zamianę na analog i potem z powrotem na BCD. Zdecydowanie zrobiłbym to przy pomocy mikrokontrolera i pamięci EEPROM, lub podobnej. W ten sposób odpada konieczność podwójnych konwersji, a koszt elementów w układzie wahałby się w granicach kilkudziesięciu PLN - że o funkcjonalności nie wspomnę. Wyjście danych do komputera po RS232 i jest dodatkowa archiwizacja na dyskietkach, CD itp.

    Sterowanie przy pomocy myszki - przy wprawnych palcach może być warte uwagi - widziałem nawet taki temat na tym Forum odnośnie sterowania frezarki CNC myszką od PC. :) A może to ten sam temat?

    Co do użycia mikrokontrolera - przy elementach SMD taki układ może być naprawdę znikomych rozmiarów - zatem będzie zużywał mniej energii, a poza tym będzie tańsza płytka. Samo zaprogramowanie mikrokontrolera to betka, trudniej byłoby napisać program, lecz do tego można kogoś znaleźć. ;)

    Pozdrawiam.
  • #21
    c_04
    Level 21  
    cze nemo;)
    no wlasnie ja sobie nie zaprogramuje mikrokontrolera a poza tym lepiej juz byloby mi uzyc - jak ktos mi juz podsuwal pomysl - pamieci statycznych np 62256 np 4 kosztek i na 3 bym sobie trzymal informacje o pozycji maszyny a na tej jednej bylaby zapisywana informacja ktory to program i np ktora jego linia (na 8 bitach da sie duzo zapisac) a poza tym to pamiec 32kb wiec mozna by wiele zapisac no i tak jak ktos mi sugerowal zrobic ja w postaci wymiennych kartridzy... wszystkie 4 kostki ze soba synchronizowac i nawet nie trzeba mikrokontrolera... poza tym ja nie pytam jjak zrobic cos na mikrokontrolerze bo jak bym to umial zaprogramowac to ten temat tutaj nie bylby potrzebny

    interesuje mnie tylko jak zrobic jakis w miare prosty sposob archiwizacji a obawaim sie ze nawet gdybym caly moj uklad robil na scalakach cyfrowych to i tak bedzie koszt porownywalny do zastosowania mikrokontrolera z ta roznica ze kiedy wlutuje scalaki cyfrowe uklad poprawnie zaprojektowany mi zadziala a mikrokontroler bez wsadu... i chyba kazdy wie co dalej;)
    pozdro

    p.s. moze wyjasni wam dlaczego chce zastosowac jako pamiec kasete...
    maszyna ktora chce zrobic powinna dzialac jakby w 2 strony czyli sama byc programatorem i odczytywac zapisane informacje... po prosty kompletna maszyna ktora nie potrzebuje dodatkowych akcesorii do wprowadzania danych o polozeniu ktore pozniej wyzej opisywana maszyna moglaby wykonywac... a ma sie to odbywac tak ze przesuwajac np 1 walek z kolkiem od myszy i czujkami bedzie wysylala informacje o pozycji... tzn na jakiej sie zatrzyma taki zrzut bym zrobil do pamieci a pozniej np losowo przekrece walek i maszyna za pomoca komparatora odnajdzie pozycje w ktorej zostal dokonany wpis... wiec najlepiej by bylo zatsosowac zintegrowany magnetofon z reszta maszyny a nie targac za kazdym razem komputer... szczerze top najbardziej przypadla mi do gustu czyjas propozycja z zastosowaniem pamieci statycznych poniewaz laczac 4 moge dokonywac tylko zrzutow aktualnych ustawien podpinajac wyjscia licznikow w bcd bezposrednio pod wejscia adresowe pamieci... do tego trzeba by zastososwac jakies proste liczniki spiete razem tak zeby kiedy na jednym jest stan 11111 (poniewaz jest chyba 5 bitow adresujacych kolumne) przelaczalo np z 0000 0001 na 0000 0010 itd a poprzedni licznik ustawial sie na stan 00001 po czym znowu zliczl do 11111 i dodawal o 1 wiecej do drugiego... to byloby proste ustawianie komorek do odczytu/zapisu... do tego mozna by dolozyc zwieranie przelaczania zapis/odczyt... i np zrobic to na 2 przyciskach tzn jeden by sluzyl do przechodzenia i zapisywania nastepnej komorki a drugi np do cofania i odczytu poprzedniej... mozna by takze zastosaowac pare przyskow do nawigacji i przewijania pozycji lini programu a takze jeszcze 2 (gora/dol) do lokalizacji programow np program 1... 2... 3... w pamieci 32 kb chyba zmiesciloby sie troche takich programow;)
    teraz jeszcze by trzeba wymyslec jakies proste podtrzymanie bateryjne albo pominac pamiec w postaci kosci i zrobic bezposredni zrzut na tasme nad czym jeszcze pomysle
  • #22
    _jta_
    Electronics specialist
    Zapis na taśmie magnetycznej, bądź na innym nośniku, jest trudny do wykonania, a nawet
    dobrze zrobiony jest dość zawodny - dlatego stosuje się systemy korygowania błędów,
    i raczej takiego nie zrobisz, kiedyś robiono do taśm magnetycznych, ale to spora szafka.

    Może zamiast taśmy zastosować przesyłanie na PC - wysyłać 2-3 razy i porównywać, jeśli
    będzie za każdym razem to samo, to uznawać, że jest dobrze - albo zrobić liczenie CRC,
    to w końcu nie jest takie trudne, nawet jak się to robi na układach TTL.

    Przesyłać najłatwiej przez port szeregowy - do swojego układu najlepiej jakbyś znalazł
    UART, który by mógł działać bez programowania (były takie, że zamiast konfigurować to
    poleceniami z komputera robiło się to przez odpowiednie połączenia końcówek).
    To może się sprawdzić na odległość do około 100m, na duże odległości musiałby być
    modem (i wtedy trzeba mu posłać sekwencję konfigurującą, nie ma rady), to pozwoli
    nawet połączyć się z komputerem przez telefon praktycznie gdziekolwiek w świecie.

    Jeszcze co do pamięci: nie jest trudne zrobienie czegoś takiego, żeby mając pamięć
    32kB 8-bitową zapisywać i odczytywać "słowa" o większej długości, np. 32-bitowe.
    Tak, że podstawą do wyboru pamięci powinna być raczej jej pojemność.
    I może warto przeznaczyć kawałek pamięci na początku na adresy startu sekwencji,
    które zapisujemy, żeby nie było potrzebne wyszukiwanie. Można by też rozważyć
    możliwość wpisania komentarza do każdej sekwencji, i wyświetlania go - ale na czym?
  • #23
    marek_Łódź
    Level 36  
    Jeszcze raz. Równoległa pamięć EEPROM wymaga dokładnie takich samych układów adresacji jak pamięć statyczna, nieco zmodyfikowanego układu zapisu (jeśli zapis jest na 12V). Te kosci mają ten sam układ wyprowadzeń co pamięć statyczna a nie wymagają baterii. Z pamięci statycznych z wbudowaną bateryjką bardzo popularne były kości Dallasa (gwarancja 10 letniego podtrzymania + w niektórych zegar RT). Masz wreszcie (chociażby w ofercie tme.pl) kości z podtrzymaniem bez baterii typu FRAM.

    Odpuść sobie ten magnetofon, bo układ zapisu/edycji pamięci nawet wykonany w technologii klasycznej (TTL) będzie znacznie prostszy do uruchomienia i wielokrotnie bardziej niezawodny. A gdybyś potrzebował większą pojemność to zrób to w formie kartridży dopinanych przez złącze.
  • #24
    _jta_
    Electronics specialist
    To może warto by zastosować EEPROM, i zrobić z tego moduł, który można podłączyć do komputera,
    żeby skopiować na dysk jego zawartość, albo wgrać poprzednią wersję? Kości z bateryjką są trochę
    kosztowne (ze 40zł). Pytanie: jakie EEPROM-y są łatwo dostępne, i jak wygląda zapisywanie do nich?

    Pewnie warto przemyśleć jakiś sposób organizacji danych, który ułatwi wyszukiwanie, jeśli by się miało
    użyć EEPROM-u o dużej pojemności, i zapisywać do niego setki sekwencji ("czy to ta sekwencja?").

    Z tymi pamięciami EEPROM jest ciekawostka co do ceny: 29C020 (256kB) kosztuje 20zł,
    a 29C040 (512kB) 13zł (obie w Semiconductors Bank, chyba obie w obudowie DIP32, obie
    programowane napięciem 5V - czyli powinien być prosty układ).
    No i pojawia się kwestia rozpoznania właściwej sekwencji spośród setek innych...
  • #25
    c_04
    Level 21  
    z rozpoznawaniem to moze adresowac kazdy wpis szesnastkowo... tylko przeznaczyc na to by trzeba znowu z 8 bitow... a co do zrobienia ukladu odczytu/zapisu na razie wymyslilem tylko zeby spiac pamieci rownolegle i pogajac te same informacje o polozeniu komorek i ta sama czestotliwosc - zapisywac badz odczytywac na roznych pozycjach ciagu bitow... po prostu zrobic np z s kosci 8 bitowych - jedna 16 bitowa itd az mi wystarczy bitow do zapisania wszystkich informacji ktore bym chcial zapisac... a magnetofon zawsze sobie moge dorobic;)

    jak by mialo wylgadac latwe zapisywanie wyrazen dluzszych niz 8 bitow na jednaj pamieci 8 - bitowej?
  • #26
    marek_Łódź
    Level 36  
    c_04 wrote:
    z rozpoznawaniem to moze adresowac kazdy wpis szesnastkowo... tylko przeznaczyc na to by trzeba znowu z 8 bitow... a co do zrobienia ukladu odczytu/zapisu na razie wymyslilem tylko zeby spiac pamieci rownolegle i pogajac te same informacje o polozeniu komorek i ta sama czestotliwosc - zapisywac badz odczytywac na roznych pozycjach ciagu bitow... po prostu zrobic np z s kosci 8 bitowych - jedna 16 bitowa itd az mi wystarczy bitow do zapisania wszystkich informacji ktore bym chcial zapisac... a magnetofon zawsze sobie moge dorobic;)

    jak by mialo wylgadac latwe zapisywanie wyrazen dluzszych niz 8 bitow na jednaj pamieci 8 - bitowej?


    Ja bym poszedł w szerokie słowo (2x16 bitów na kościach szesnastobitowych - dwie kości) co zdecydowanie uprości wpisy. Do zapisu w kości 8-bitowej musiałbyś dorobić dodatkowy układ sekwencyjny (generator, licznik, układ zapisu).

    Mając 32 bity wpisujesz dane do 24 a pozostałe 8 możesz wykorzystać do zapisu numeru sekwencji (ID CODE) . Sekwencje adresujesz przy pomocy przełącznika 8 segmentowego typu dip switch, co w jednym zestawie kości umożliwi zaadresowanie do 255 sekwencji (jeden kod np. $FF trzeba pozostawić do oznaczania wolnego miejsca). Część tego kodu podajesz jednocześnie na najstarsze bity adresu.

    Oczywiście i tak musisz pilnować gdzie to robisz, chyba że dorobisz sobie dalszą część tego "komputera", która automatycznie będzie wyszukiwać zadaną sekwencję lub wolne miejsce na tym "dysku elektronicznym". Możesz też dorobić ochronę, która zabroni wpisu w miejscu, gdzie już jest coś wpisane (chyba że wciśniesz specjalny przycisk).

    Niezależnie od tego taki kartridż można sprząc z PCtem np przez CENTRONICS. Przykładowy schemat znajdziesz tu:

    https://www.elektroda.pl/rtvforum/viewtopic.php?p=1360493&highlight=#1360493

    Zresztą pod tym adresem znajdziesz również nieudaną próbę zastosowania kart pamięci do rozwiązania problemu podobnego do Twojego.
  • #27
    Nemo
    Level 31  
    c_04 wrote:
    ...nawet gdybym caly moj uklad robil na scalakach cyfrowych to i tak bedzie koszt porownywalny do zastosowania mikrokontrolera z ta roznica ze kiedy wlutuje scalaki cyfrowe uklad poprawnie zaprojektowany mi zadziala a mikrokontroler bez wsadu... i chyba kazdy wie co dalej;)


    Poprawnie zaprojektowany układ będzie działał od poczatku - PRAWDA. Jednakże takowe zaprojektowanie może być trudne w pierwszym podejściu. Ale na pewno sobie poradzisz. Poza tym to będzie kilkanaście (-dziesiąt) scalaków. Płytka drukowana spooora. O koszcie nie wspominam.

    :arrow: _jta_: 29C020 i podobne 29XXX to są pamięci Flash, a nie EEPROM. Nie można w nich zapisywać pojedynczych bajtów. EEPROM równoległy o dostępie swobodnym, zasilany tylko z +5V to np. 28C256 - kosztuje 28.9 netto za sztukę w http://www.tme.pl, zaś 28C010 kosztuje bagatela 169 PLN/szt. - śmiech na sali...

    Jako nośnik danych użyłbym 24C512 - szeregowy EEPROM, 64kB, kosztujący 10PLN netto, do tego np. AT89C2051, lub większy w zależności od potrzeb za niecałe 4PLN netto. Do tego dodać nawet konwerter dla RS232 za 4pln i ostatecznie LCD za 18PLN. Funkcjonalność takiego urządzenia byłaby o niebo większa.

    Co do programu - a nie pomyślałeś, że ktoś mógłby Tobie taki program napisać?

    Pozdrawiam.
  • #28
    c_04
    Level 21  
    hello wszystkim:)
    nemo: pomyslalem ze ktos moglby napisac taki program ale takie pisanie chyba mocno odbiega od pomocy ktorej sie tu oczekuje (na forum)
    poza tym chyba ktos kto pisalby mi ten program musialby miec w/w uklad a nawet chyba go poskaldac zeby wiedzial co programowac

    co do wyswietlania to mam cala kupe wyswietlaczy led - udalo mi sie kupic na jakiejs wyprzedazy (dwucyfrowe) po bodajze 1 pln tylko nie pamietam co maja wspolne;) a drugi patent to do woltomierza lutowalem wyswietlacz z pojedynczych plaskich diod led... po przeliczeniu kosztu za segment ledy wychodza 2x taniej szczegolnie jak sie kupuje hurtem np 100 szt po 10-20 gr... jedyne przy czym jest troche roboty to wytrawienie i powiercenie plytki ale ja mam czas;)
    zastanawiam sie jeszcze jakie silniki zastosowac poniewaz gdybym dal zwykle na prad staly to odpada mi problem ze sterownikiem krokowych no a stosujac krokowe znowu powinna byc wieksza dokladnosc i odpada problem z hamowaniem... chociaz w przypadku silnikow zwyklych wymyslilem moze taki prosty sposob hamowania zeby dawac prad w odwrotnym kierunku ale duzo nizszy nie powodujacy obrotu silnika... natomaist sterownik do silnika krokowego wymyslilem sobie taki ze dalbym licznik 1 z 8 i do tego np na wyjscia 2 4 6 8 tranzystory zwierajace wejscia 1-3 dla aktywnej 2 itd... moze troche niejasno to opisuje ale jedyne co mi trzeba to generator CLK a od jego szybkosci bylaby zalezna predkosc takiego silnika... gdyny zastosowac licznik up/down to mozna wpiac to od razu przed licznikiem wyswietlaczy na schemacie kolegi powyzej... taki rodzaj sterowania jeszcze dawalby mi jedna rzecz - mianowicie odpadalby problem z hamowaniem lub z ewentualna zmiana pozycji silnika podczas kiedypowinien on byc zablokowany w celu wykonania pracy innej czesci maszyny

    pozdrawiam

    p.s. dlaczego lepiej stosowac eepromy od pamieci statycznych (poza tym ze eepromy nie wymagaja napiecia do podtrzymywania danych)?? przeciez ta 62256 kosztuje jakies grosze wiec za jedna ta o ktorej pisze nemo (10 pln) tamte moglbym kupic 2... tyle ze sa 8 bitowe i trzeba by je spinac razem... ale jest ok poniewaz w jednej pamieci mozna zapisac 2 cyfry w bcd oczywiscie w jednej komorce
    no i kolejna sprawa: a jakby tak zakupic akumlator R6 i dorobic uklad jak do ladowania akumulatorow i wlasnie w ten sposob zrobic podtrzymanie pamieci? tzn tak zeby byly w postaci wymiennych kartridzy albo dorobic dodatkowy port do wkladania takowych i robienia zrzutow... no idealem by bylo zrzucanie do kompa... tylko znowu program na kompa potrzeba:(
    jaka jest roznica w adresowaniu eepromow w stosunku do pamieci statycznych? ktorys z kolegow pisal ze uklad adresowaia bedzie wymagal modyfikacji... i kolejna rzecz: dlaczego piszecie o ttlach a nie cmosach? wydaje mi sie ze cmosy sa mniej zawodne albo faktycznie tylko mi sie wydaje;)
    ehhh
  • #29
    _jta_
    Electronics specialist
    Właśnie się doczytałem, że w Semiconductors Bank mają 6264 po 3.60+VAT,
    więc można by tego użyć; co do wyboru pamięci do przechowywania na dłużej,
    to flash byłby najtańszy przy dużej pojemności, i nawet w miarę prosto się do
    niego zapisuje - trzeba wpisać 256 bajtów do jednego sektora, adresując tak,
    jak "normalną" pamięć, a potem zaczekać 10ms, i sektor jest zapisany.

    Natomiast ze względu na to, że zapisywanie sektora startuje automatycznie,
    jak tylko przez 150us nie ma wpisywania kolejnych bajtów, flash nie da się użyć
    bezpośrednio do zapisywania danych, a jedynie można do niego przepisywać
    z innej pamięci (i chyba najlepiej statycznej RAM).

    Zastosowanie pamięci z szeregowej (I2C - 24Cxx) do przechowywania danych
    po wyłączeniu zasilania - komplikuje się dostęp, natomiast są dość tanie dla
    małych pojemności (np. 8kB kosztuje 2.70+VAT).

    Lub zastosowanie samej 28C64 (13.80+VAT, 8kB - starczy na 4 sekwencje).

    Lub zrezygnować z EEPROM-ów, użyć nawet 3 62256 - i Piekarza są taniej
    (http://www.piekarz.pl/) i zrobić zasilanie z akumulatorka, jak napisałeś...
    Wtedy archiwizacja musiałaby być wyłącznie na komputer.
  • #30
    c_04
    Level 21  
    czy dobrze kojarze ze zapis w pamieci szeregowej bylby podobny do zapisu na kasecie czyli ciag zer i jedynek i zegar ustawia te stany w pamieci (zapis)?

    przy flashu jak pisze jta 10ms to nie czekanie;) ale pamiec 6264 a 62256 to nie to samo tylko ze ta druga jest wiekszej pojemnosci?? hmm wiec dlaczego pisal tu gdzies ktos ze to pamiec statyczna?? heh powoli mlynu dostaje:P a mialo sie uproscic;)
    dobra to mzoe jeszcze taka opcja: jedna pamiec na stale w maszynie i do tego gniazdo cos jak kartridz do ktorego podpinaloby sie wymienne kostki pamieci do przechowywania danych... a potem ewentualnie zrobic cos czytajacego te pamieci i sciagajacego do kompa...

    albo inaczej rozwiazac ta maszyne... czy nei daloby sie w jakis prosty sposob sterowac np z portu lpt? potrzebne by byly 4 wejscia i 4 wyjscia amoze nawet tylko 2 wyjscia tylko jeszcze nei wiem jak zmieniac kierunek obrotow silnikow na 2 wyjsciach... tzn gdzies czytalem ze z ktoregos portu napiecia maja przedzial od - do + przechodzac przez 0... czyli mozna by tylko dac cos jak wzmacniacz gdzie lpt by np sterowalo tranzystorami i zaleznie jakie napiecie jest puszczane tak silniki by sie krecily... np przy '-' w lewo a przy '+' w prawo... heh tylko ze tez potzrebny by byl program ktory to obsluzy... no i znowu jestem w punkcie wyjscia:(

    pozdr