Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Attiny2313 als alternative für die 74S287|KR556RT4 PROMs beim KC85!? » Themenansicht

Autor Thread - Seiten: -1-
000
15.03.2020, 14:26 Uhr
Brutzelmaster

Avatar von Brutzelmaster

Attiny2313 als alternative für die 74S287|KR556RT4 PROMs beim KC85!?

Hallo Leute, dies ist mein erster Beitrag im Forum

Zurzeit bin ich dabei einen Kompletten KC85.5 mit Tastatur aus den Original Unterlagen nachzubauen. Die Leiterplatten vom Chinaman und die meisten ICs sind inzwischen auch schon da. Das schwierigste ist es an die alten Proms zu einen vernünftigen Preis ranzukommen. Als alternative für die 74S287 entdeckte ich die russischen KR556RT4 PROMs auf eBay für 2 Euro/Stück. Nach wenigen Minuten habe ich nach der Programmieranleitung eine kleine Arduino Schaltung auf einen Steckbrett entwickelt die den Chip programmieren sollte. Leider schlug der erste Versuch fehl die ersten 4 Bits reinzubrennen. Dabei hat es gleich den ganzen Pin zerstört xD und quasi den Wert gleichzeitig auf alle Spalten reingebrutzelt und es ließen sich danach keine weiteren Bits mehr brennen. Da ich 5 PROMs bestellt habe und ich unbedingt 2 perfekte PROMs benötige habe ich mir überlegt einfach zum Testen erstmal ein Attiny2313A als PROM aus der Bastelkiste zu nehmen und den dann mit einer Schaltung zu Klonen, wenn der AVR im KC85 funktioniert. Denn ich bin mir auch nicht sicher ob der HEX Code richtig ist. Übernacht habe ich kleines mini Programm mit AVR Studio entwickelt, was sogar richtig gut funktioniert. Mit Hilfe von Bascom lässt sich der EEprom Code Adresse für Adresse einzeln bearbeiten. Dabei werden 2x 4 Bits gleich in ein Byte gespeichert so dass die 128x8Bits des AVRs voll belegt sind und genau der Speichergröße des 74S287|KR556RT4 mit 256x4Bits entsprechen. Da der Attiny wegen des größeren Gehäuses 4 Pins überstehen hat und 2 I/Os einfach verschwendet währen, habe ich eine Taste noch eingebaut, mit den sich der Dateninhalt dauerhaft per Tastendruck umprogrammieren lässt. Das funktioniert sogar richtig gut!

Hier der Code dazu:


Quellcode:

/*
* Attiny2313_74S287.cpp
*
* Created: 13.03.2020 20:28:13
* Author : Brutzelmaster
*
* Attiny2313A Prom 74S287/KR556RT4 Emulator 256x4 = 3601.
*
* -Die internen Pullups an den IOs sind deaktiviert und müssen auf festes Potential gebracht werden.
*
* -Eine Brücke muss zwischen VCC und PB6 nach den programmieren eingebaut werden und zwischen Reset\ und VCC kommt ein Pullup Widerstand mit 10K
*
* -Die Pinbelegung ist gleich mit den 74S287/KR556RT4, wobei die Pins 1,2,19,20 wegen des größeren Gehäuses überstehen.
*
* -Zusätzliche kann eine PGM Taste zwischen PD0 und PB7 eingebaut werden um den Chip auf den Steckbrett zu
*  Programmieren. Optional kann man noch in reihe ein 100NF Kondensator mit einen 220K Widerstand Parallel schalten.
*  oder man kann in Bascom im EEprom Editor die 4-Bit Adressen händisch eingeben. Zufälligerweise entspricht der Speicherplatz genau den des Emulierten Proms
*
* -Für die PGM Taste ist ein delay mit 10ms einprogrammiert um das interne EEprom nicht so schnell zerbrutzeln zu lassen
*
* -Die gemessene Schaltverzögrung beträgt max 32,5us bei 5khz. Fmax ist 10khz
*
* SELFPRGEN = [ ]
* DWEN = [ ]
* EESAVE = [X]
* SPIEN = [X]
* WDTON = [ ]
* BODLEVEL = DISABLED
* RSTDISBL = [ ]
* CKDIV8 = [ ]
* CKOUT = [ ]
* SUT_CKSEL = INTRCOSC_8MHZ_14CK_0MS
*
* EXTENDED = 0xFF (valid)
* HIGH = 0x9F (valid)
* LOW = 0xC4 (valid)
*
*/
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>

uint8_t rbyte;
uint8_t rhbyte;
uint8_t abyte;
uint8_t ebyte;
uint8_t wbyte;
uint8_t sbyte;

uint8_t A7;
uint8_t A6;
uint8_t A5;
uint8_t A4;
uint8_t A3;
uint8_t A2;
uint8_t A1;
uint8_t A0;

uint8_t D3;
uint8_t D2;
uint8_t D1;
uint8_t D0;

void init(void)
{
    DDRA|=0B00000000;
    DDRD|=0B01000001;
    DDRB|=0B00011111;
    PORTB|=0B10000000;//PGM
}

int main(void)
{
    init();
    while (true)
    {
        A0=(PIND&(1<<PD3)?0x01:0x00);
        A1=(PIND&(1<<PD4)?0x02:0x00);
        A2=(PIND&(1<<PD5)?0x04:0x00);
        A3=(PIND&(1<<PD2)?0x08:0x00);
        A4=(PINA&(1<<PA0)?0x10:0x00);
        A5=(PINA&(1<<PA1)?0x20:0x00);
        A6=(PIND&(1<<PD1)?0x40:0x00);
        A7=(PINB&(1<<PB5)?0x80:0x00);
        rbyte=A0|A1|A2|A3|A4|A5|A6|A7;
        rhbyte=rbyte/2;
        while (!eeprom_is_ready()) ;
        ebyte=eeprom_read_byte((uint8_t*) rhbyte);
        if(!(PINB&0B10000000)){
            DDRD&=~0B01000000;
            DDRB&=~0B00000111;
            _delay_us(0x32);
            D0=(PINB&(1<<PB2)?0x01:0x00);
            D1=(PINB&(1<<PB1)?0x02:0x00);
            D2=(PINB&(1<<PB0)?0x04:0x00);
            D3=(PIND&(1<<PD6)?0x08:0x00);
            wbyte=D0|D1|D2|D3;
            if((rbyte%2)>0)
            {
                wbyte=wbyte&0B00001111;
                sbyte=ebyte&0B11110000;
                sbyte|=wbyte&0B00001111;
            }
            else
            {
                wbyte=wbyte<<4;
                wbyte=wbyte&0B11110000;
                sbyte=ebyte&0B00001111;
                sbyte|=wbyte&0B11110000;
            }
            while (!eeprom_is_ready()) ;
            eeprom_write_byte((uint8_t*)rhbyte,sbyte);
            _delay_ms(0x0A);
            DDRD|=0B01000000;
            DDRB|=0B00000111;
        }
        if(PINB&0B00011000)
        {
            PORTB|=0B00000111;
            PORTD|=0B01000000;
        }
        else
        {
            if((rbyte%2)>0)
            {
                if(ebyte&0B00000001)PORTB|=0B00000100; else PORTB&=~0B00000100;
                if(ebyte&0B00000010)PORTB|=0B00000010; else PORTB&=~0B00000010;
                if(ebyte&0B00000100)PORTB|=0B00000001; else PORTB&=~0B00000001;
                if(ebyte&0B00001000)PORTD|=0B01000000; else PORTD&=~0B01000000;
                }else{
                if(ebyte&0B00010000)PORTB|=0B00000100; else PORTB&=~0B00000100;
                if(ebyte&0B00100000)PORTB|=0B00000010; else PORTB&=~0B00000010;
                if(ebyte&0B01000000)PORTB|=0B00000001; else PORTB&=~0B00000001;
                if(ebyte&0B10000000)PORTD|=0B01000000; else PORTD&=~0B01000000;
            }
        }
    }
}



Und hier ist der HEX Code, den ich in das EEprom eingetippt habe. Dabei handelt es sich um die Daten des ICs D005


Quellcode:

7 F 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 7 7 7 7 7 7 7 7
7 F 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 7 7 7 7
7 F 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 6 6 6 6 7 7 7 7
7 F 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5 5 5 5 7 7 7 7
7 F 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 7 7 7 7 5 5 5 5
7 F 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 5 5 5 5 5 5 5 5
7 F 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 6 6 6 6 5 5 5 5
7 F 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 5 5 5 5 5 5 5 5



Hier noch ein Paar Fotos. Zusätzlich habe ich noch 4 LEDs an die Outputs gehangen, damit das Steckbrett nicht so voll ist.





















Leider Musste ich nach den ersten Messungen feststellen, dass der AVR nicht so gut geeignet ist und nicht wirklich mehr als 10khz schafft. Da mein KC85 noch in einer Millionen Teile vor mir liegt und drauf wartet zusammengelötet zu werden habe ich noch ein wenig Zeit um das PROM Problem zu lösen.

Vielleicht kann jemand, der ein KC85 besitzt und bei den auch die Proms gesockelt sind den Attiny Mod testen und die Erfahrungen Posten, ob es funktioniert oder nicht. Denn sonst habe ich keine Ahnung, ob der KC85 nicht funktioniert, weil der AVR zu langsam ist, ich einen falschen Hex Code habe, oder ein anderer Fehler vorliegt.

Gerne würde ich die Russen Proms einbauen da es schon eine bösartige Sünde ist µC als Adressendecoder einzubauen, die ein Vielfaches der Rechenleistung haben als das restliche System. Kennt da jemand ein Datenblatt mit vollständiger Programmieranleitung? Meine Vermutung ist das es an der Fehlenden Strombegrenzung von der Programmierspannung lag. Ich habe auch schon gelesen, dass die Versorgungsspannung des ICs auch zuerst auf die Programmierspannung gebracht werden muss. Das habe ich auch nicht gemacht. Vielleicht stimmt auch das ganze Datenblatt was ich habe nicht für diesen IC. Denn da steht für alle bipolaren ICs xD







Falls jemand Ideen hat schon mal Danke im Voraus =)
--
---------------------------------
Brutzelmaster - liebe es, zerstöre es!

+++Brutzelmaster(25) sucht nette hübsche Freundin (18-27) in Dresden+++

https://www.youtube.com/channel/UCYaez6mdLmmFa1EBcOuALtg/about

Dieser Beitrag wurde am 15.03.2020 um 15:40 Uhr von Brutzelmaster editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
15.03.2020, 14:36 Uhr
wpwsaw
Default Group and Edit


möchstest du nicht lieber 2 fertige Proms nutzen und nicht das Rad neu erfinden?
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 15.03.2020 um 14:37 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
15.03.2020, 14:50 Uhr
Enrico
Default Group and Edit


Controller statt PROM zu nehmen ist Unsinn.
Der ist immer zu langsam.
Statt PROM kann man noch noch GAL, o.ä.
nehmen.
Aber so schnell gehen PROMs nicht kaputt.
Das ist im Prinzip nichts weiter als ein größerer
Haufen Sicherungen.

Deine Fotos gehen nicht....
--
MFG
Enrico

Dieser Beitrag wurde am 15.03.2020 um 14:50 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
15.03.2020, 14:59 Uhr
ralle



Eigentlich ist der PROM als Ersatz für die TTL, wo sonst mehrere Chips verschwendet werden müssten. Beim M030 ersetzt der PROM 2TTL. Dafür sollte ein GAL auch gehen, obwohl die Abgekündigt sind.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
15.03.2020, 15:07 Uhr
wpwsaw
Default Group and Edit


wie schon geschrieben, ich könnte den roten und den weißen anbieten
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
15.03.2020, 16:17 Uhr
Brutzelmaster

Avatar von Brutzelmaster

So das mit den Bildern müsste jetzt funktionieren.

@wpwsaw

Zitat:
möchstest du nicht lieber 2 fertige Proms nutzen und nicht das Rad neu erfinden?



Ja, nur gibt es die leider nirgends zu kaufen und da ich Theoretisch alle Teile bei mir habe, wollte ich das Programmiergerät gleich selber bauen. Mit einen Arduino und ein paar Kleinteilen müssten mit einen kleinen Mini Programm die paar Bits schnell geschrieben sein. Das mit den Attiny soll nur eine Alternativlösung sein, falls doch nix funktioniert.

Meinst du mit den Roten und den weißen die PROMs?

@Enrico

Mit den GALs habe ich mich noch nicht beschäftigt und würde PROMs und andere alternativen vorziehen da ich wahrscheinlich auch ein Programmiergerät dafür benötige was ich nicht habe
--
---------------------------------
Brutzelmaster - liebe es, zerstöre es!

+++Brutzelmaster(25) sucht nette hübsche Freundin (18-27) in Dresden+++

https://www.youtube.com/channel/UCYaez6mdLmmFa1EBcOuALtg/about
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
15.03.2020, 16:26 Uhr
schlaub_01



Hallo Brutzelmaster,

wo hast Du denn die Leiterplatten her? Hast Du das Routing selber gemacht oder gibt es irgendwo die Daten?

Viele Grüße,
Sven.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
15.03.2020, 16:51 Uhr
wpwsaw
Default Group and Edit


ich habe doch geschrieben, dass ich die beiden Typen habe (rot und weiß)
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
15.03.2020, 17:47 Uhr
Enrico
Default Group and Edit



Zitat:
Brutzelmaster schrieb
....

Ja, nur gibt es die leider nirgends zu kaufen und da ich Theoretisch alle Teile bei mir habe,
...



Aber sowas hat man, frau und d doch zu liegen....

.... oder kauft.
https://www.ebay.de/itm/5pcs-KR556RT4-TTL-PROM-256x4-3601-74S287/124102831381
--
MFG
Enrico

Dieser Beitrag wurde am 15.03.2020 um 17:48 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
15.03.2020, 18:07 Uhr
wpwsaw
Default Group and Edit


und noch einmal ich habe beide PROMs fertig programmiert liegen
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
15.03.2020, 18:37 Uhr
Brutzelmaster

Avatar von Brutzelmaster


Zitat:

Enrico schrieb

Aber sowas hat man, frau und d doch zu liegen....



Ja von da habe ich die bereits gekauft. Ich muss es nur noch schaffen die Dinger zu programmieren. Ich bin gerade dabei das Programmiergerät auf eine Lochrasterplatte zu löten. Mir fehlen nur nähere technische Daten des ICs.

Zitat:

wpwsaw schrieb

ich habe doch geschrieben, dass ich die beiden Typen habe (rot und weiß)



Achso, ich habe nochmal gefragt, weil ich in den Originalen keine Farbmarkierung gesehen habe und mir nicht sicher war. Da werde ich auf dich zukommen, falls nix funktionieren möchte


Zitat:

schlaub_01 schrieb

wo hast Du denn die Leiterplatten her? Hast Du das Routing selber gemacht oder gibt es irgendwo die Daten?



Die Leiterplatten habe ich nach den originalen technischen Unterlagen in einen Layoutprogramm erstellt und in China produzieren lassen. Habe wegen der Mindestbestellmenge noch ein paar Sätze da












--
---------------------------------
Brutzelmaster - liebe es, zerstöre es!

+++Brutzelmaster(25) sucht nette hübsche Freundin (18-27) in Dresden+++

https://www.youtube.com/channel/UCYaez6mdLmmFa1EBcOuALtg/about

Dieser Beitrag wurde am 15.03.2020 um 21:27 Uhr von Brutzelmaster editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
15.03.2020, 19:08 Uhr
Enrico
Default Group and Edit



Zitat:
Brutzelmaster schrieb

Zitat:

Enrico schrieb

Aber sowas hat man, frau und d doch zu liegen....



Ja von da habe ich die bereits gekauft. Ich muss es nur noch schaffen die Dinger zu programmieren. Ich bin gerade dabei das Programmiergerät auf eine Lochrasterplatte zu löten. Mir fehlen nur nähere technische Daten des ICs.



Das liegt aber daran, dass Du die noch gar nicht haben wolltest.

Zitat:


Zitat:

wpwsaw schrieb

ich habe doch geschrieben, dass ich die beiden Typen habe (rot und weiß)



Achso, ich habe nochmal gefragt, weil ich in den Originalen keine Farbradierung gesehen habe und mir nicht sicher war. Da werde ich auf dich zukommen, falls nix funktioniert möchte



Also machst Du es dir gerne kompliziert....

Zitat:


Zitat:

schlaub_01 schrieb

wo hast Du denn die Leiterplatten her? Hast Du das Routing selber gemacht oder gibt es irgendwo die Daten?



Die Leiterplatten habe ich nach den originalen technischen Unterlagen in einen Layoutprogramm erstellt und in China produzieren lassen. Habe wegen der Mindestbestellmenge noch ein paar Sätze da



Also nochmals neu gemacht...
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
15.03.2020, 20:26 Uhr
Brutzelmaster

Avatar von Brutzelmaster

Mein Ziel ist es einen kompletten KC85 selber zu bauen. Ich mache es aus Spaß da es mir gefällt komplexe Geräte nach Anleitung zusammenzubauen und das Erfolgserlebnis ist unbezahlbar wenn die Kiste das erste Mal laufen wird und das erste Retro Spiel läuft . Andere sammeln Briefmarken und ich bau Computer. Macht sich auch gut richtig gut in einer Bewerbung. Habe schon den BCS3 und den Hübler Grafik erfolgreich gebaut. Damals war ich noch in der 10 Klasse. Natürlich hätte ich einen defekten KC85 von eBay kaufen und den Reparieren können, aber ich suche die Herausforderung!!!

Die PROMs hatte ich schon vor einer Woche gekauft und ich möchte nicht nochmal PROMs kaufen, wenn ich die Möglichkeit habe die auch selber zu brennen. Die technischen Bauteile habe ich theoretisch alle da. Wenn doch nix funktioniert werde ich mal Nachfragen. Wenn jemand den Attiny Mod in seinen KC erfolgreich getestet hat und ich die PROMs nicht hinbekomme würde ich fürs erste den Attiny nehmen.

Mir fehlt noch das Wissen, wie genau der Programmierimpuls in welcher reinfolge angelegt werden muss und ob der Datenblatt korrekt ist. Denn da steht für alle bipolaren ICs.

Nicht das da die Programmierspannung zu hoch angegeben ist, oder VCC auch an die Programmierspannung angelegt werden muss. Und mir ist noch nicht ganz klar ob der Chip max 100mA zieht beim Programmieren, oder ob ich es selber noch begrenzen muss (da sonst Ptot xD)
--
---------------------------------
Brutzelmaster - liebe es, zerstöre es!

+++Brutzelmaster(25) sucht nette hübsche Freundin (18-27) in Dresden+++

https://www.youtube.com/channel/UCYaez6mdLmmFa1EBcOuALtg/about
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
15.03.2020, 20:47 Uhr
wpwsaw
Default Group and Edit


ich verkaufe auch nichts. Euros werden überbewertet. Ich gehöre zu den Sammlern und tausche
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
15.03.2020, 21:04 Uhr
Enrico
Default Group and Edit


Im Datenblatt steht da das Maximum drin.
Die westlichen sind dort etwas genügsamer.
Da die PROMs nichts weiter als Schmelzsicherungen sind,
ergibts sich das dann von allein.

Ich könnte Dir was an Daten schicken, falls Du noch was brauchst.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
15.03.2020, 22:31 Uhr
mark1111



Hier ist ein einfaches Programmiergerät für den K556RT4 beschrieben (in Russisch).

https://ingeneryi.info/radio-kom/rd-kom/ms-kom/1736-programmator-ppzu-k556rt4-155re3.html

Wenn man die Quellenangaben (ganz unten im Artikel) bei Google eingibt, kommen als Ergebnis noch weitere Schaltungen zum programmieren des K556RT4.

mark1111

Dieser Beitrag wurde am 15.03.2020 um 22:45 Uhr von mark1111 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
16.03.2020, 15:49 Uhr
Thyratron



Schöne Platinen
Hast Du denn die vielen unsäglichen Korrekturen, d.h. duchtrennte Leiterzüge und
die Drahtbrücken mit eingearbeitet ?

Wenn Ja, wo hast Du denn die Pläne her?
Korrigierte Pläne such ich auch.

vG Thomas
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
16.03.2020, 23:44 Uhr
Brutzelmaster

Avatar von Brutzelmaster


Zitat:

Thyratron schrieb
Schöne Platinen
Hast Du denn die vielen unsäglichen Korrekturen, d.h. duchtrennte Leiterzüge und
die Drahtbrücken mit eingearbeitet ?



Ich denke mal ja. Den Hauptplan für den KC85 habe ich von hier. Da waren schon einige Zahlendreher und co. drin. Durchgetrennte Leiterzüge sind mir nicht aufgefallen. Das Layout habe ich mit dem Schaltplan abgeglichen und wenn Unstimmigkeiten drin waren habe ich die Kc85.4 Pläne mit den KC85.2 Plänen und Originalaufnahmen der Leiterplatte verglichen und dann die passende Entscheidung getroffen. An einer Stelle war es dann doch nicht ganz ersichtlich und habe deshalb SMD Lötbrücken vorgesehen, sodass man die Platte nicht zerkratzen muss (bei D426). Die Stromführenden Leitungen sind alle verstärkt und haben mehrere Vias und die Widerstände, die seitlich an den ICs rankommen, können auch als SMD gelötet werden. Bei der oberen Platte musste ich viel selber Layouten. Da wird es sehr wahrscheinlich sein, dass ich die Lötbrücken schon unbemerkt eingearbeitet habe. Sonst suchen, kratzen und freuen! xD


Zitat:

mark1111 schrieb
Hier ist ein einfaches Programmiergerät für den K556RT4 beschrieben (in Russisch).

https://ingeneryi.info/radio-kom/rd-kom/ms-kom/1736-programmator-ppzu-k556rt4-155re3.html

Wenn man die Quellenangaben (ganz unten im Artikel) bei Google eingibt, kommen als Ergebnis noch weitere Schaltungen zum programmieren des K556RT4.

mark1111


Perfekt, genau sowas habe ich gesucht, danke!
Da war eine Programmierspannung von 21V doch zu hoch xD


Zitat:

Enrico schrieb
Im Datenblatt steht da das Maximum drin.



Und das war wohl meine zweite Todsünde!



----------------------



Das Programmiergerät ist nun 65% fertig und die Software 10%. Verbaute Teile sind Atmega8 (mit Arduino), FTDI Schnittstelle zum Auslesen, ULN2003A, Dl008, 2x LM317, 3x FDS4935 und Kleinkram.

Neuigkeiten folgen…




--
---------------------------------
Brutzelmaster - liebe es, zerstöre es!

+++Brutzelmaster(25) sucht nette hübsche Freundin (18-27) in Dresden+++

https://www.youtube.com/channel/UCYaez6mdLmmFa1EBcOuALtg/about

Dieser Beitrag wurde am 17.03.2020 um 00:34 Uhr von Brutzelmaster editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
17.03.2020, 12:21 Uhr
mark1111



Noch etwas zum K556RT4:

http://lib2.znate.ru/docs/index-350180.html?page=5

mark1111
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
21.03.2020, 17:46 Uhr
Brutzelmaster

Avatar von Brutzelmaster

Gestern Nacht hatte ich viel Zeit den Programmer fertigzustellen und ich habe gleich meine ersten Russen gebrutzelt! Die werden schon ordentlich heiß beim Programmieren, sodass ich die vorsichtshalber mit pusten gekühlt habe. Der Programmiervorgang dauert etwa 2 min. Das Gerät kann von einer beliebigen Seriellen Konsole wie PuTTY vom PC aus gesteuert werden.








Quellcode:

Eingestellt habe ich:


Programmierspannung               = 11        V
Brenndauer                        = 50        ms
Pause                             = 50        ms
Programmierimpulse                = 1         mal
Strombegrenzung (D0-3)            = 29        mA
Programmierspannung VCC Totzeit   = 100       µs





Das Programmiergerät wird über eine Standard FTDI Leiterplatte mit den PC verbunden und kann bequem über einen seriellen Monitor aus benutzt werden. Die Leiterplatte hat zwei PROM Fassungen. Dabei wird die obere Fassung für den Master und die untere Fassung für den Slave vorgesehen. Der Programmer hat bis jetzt zwei Funktionen. Er kann den Slave PROM auslesen und kann die Daten vom Master auf den Slave kopieren. Oft ist es so, dass man an Anfang keine Vorlage zum kopieren hat, was solche Kopierer nutzlos macht. Dank des oben in dem Thred beschriebenen Attiny2313 kann man sich neue PROM Images erzeugen. Die HEX-Daten können dann in BASCOM Adresse für Adresse per Hand eingetragen werden, was bei 128 Adressen (8-Bit sind 256 Zeichen) noch ziemlich schnell geht.























Oszilloskopbild während eines Programmiervorgangs. Oben VCC [Gelb] und unten der Daten Pin D0 [Blau]
(5V/Div,100ms/Div)







Die AVRs habe ich mit einen STK500 über Atmel Studio programmiert. Als Adapterleiterplatte verwendete ich das Pollin AVR Board. Auf den Atmega328 habe ich den Arduino Bootloader draufgebrannt [optiboot_atmega328.hex] und die Fuse-Bits stehen in der [boards.txt]


Quellcode:

arduino-1.6.5-r5\hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex
arduino-1.6.5-r5\hardware\arduino\avr\boards.txt



Nach dem einmaligen Programmieren des Atmega328 kann er mit der Arduino IDE über die FTDI Schnittstelle programmiert werden.
Da ich mir vorher keine Schaltung/Pläne aufgezeichnet habe und ich während des zusammenbauens immer wieder neue Ideen hatte, wurde die kleine Leiterplatte immer und immer voller bis interessante 3D-SMD Konstrukte drauf entstanden sind .



Da das Gerät so einwandfrei funktioniert habe ich aus Russland gleich Nachschub an ICs zum zerbrutzeln geholt.
Danke nochmal an @mark1111 für die russischen Links. Da standen viele nützliche Infos drin

Wenn Interesse für den Programmer besteht kann ich noch die Pläne dazu zeichnen.
--
---------------------------------
Brutzelmaster - liebe es, zerstöre es!

+++Brutzelmaster(25) sucht nette hübsche Freundin (18-27) in Dresden+++

https://www.youtube.com/channel/UCYaez6mdLmmFa1EBcOuALtg/about

Dieser Beitrag wurde am 21.03.2020 um 17:54 Uhr von Brutzelmaster editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
21.03.2020, 18:12 Uhr
Brutzelmaster

Avatar von Brutzelmaster

Die Fuse-Bits des Attiny2313 habe ich angepasst, da das Programm nach dem Einschalten nicht immer loslief.



Quellcode:

*SELFPRGEN = [ ]
*DWEN = [ ]
*EESAVE = [X]
*SPIEN = [X]
*WDTON = [ ]
*BODLEVEL = 4V3
*RSTDISBL = [ ]
*CKDIV8 = [ ]
*CKOUT = [ ]
*SUT_CKSEL = INTRCOSC_8MHZ_14CK_65MS
*
*EXTENDED = 0xFF (valid)
*HIGH = 0x99 (valid)
*LOW = 0xE4 (valid)


--
---------------------------------
Brutzelmaster - liebe es, zerstöre es!

+++Brutzelmaster(25) sucht nette hübsche Freundin (18-27) in Dresden+++

https://www.youtube.com/channel/UCYaez6mdLmmFa1EBcOuALtg/about

Dieser Beitrag wurde am 21.03.2020 um 18:16 Uhr von Brutzelmaster editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
20.03.2021, 20:41 Uhr
felge1966



Kannst du die Schaltung und den aktuellen Code noch anhängen?
Wäre ja ein interessantes Objekt, wenn mal ein TTL-PROM programmiert werden muss.

Gruss Jörg
--
http://felgentreu.spdns.org/bilder/jacob120.gif
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
20.03.2021, 23:57 Uhr
Brutzelmaster

Avatar von Brutzelmaster

Ich sehe mir gerade den Programmer an und es könnte etwas an Zeit beanspruchen die Schaltung zu extrahieren. Irgendwie war ich damals im God Mode als ich die Schaltung gelötet hab. Einfach alles genommen und verbaut, was so rumlag ohne Plan :D

Das Programm hab ich noch nicht weiterentwickelt. Es funktioniert seit den ersten Mal

Russenbrutzler.ino

Quellcode:

/*
  #define PIN_CS_SLAVE PC5
  #define PIN_PGM_VCC  PC4

  #define PIN_READ_D3 PC3
  #define PIN_READ_D2 PC2
  #define PIN_READ_D1 PC1
  #define PIN_READ_D0 PC0

  #define PIN_A7      PD7
  #define PIN_A6      PD6
  #define PIN_A5      PB5
  #define PIN_A4      PB4
  #define PIN_A3      PB3
  #define PIN_A2      PB2
  #define PIN_A1      PB1
  #define PIN_A0      PB0

  #define PIN_WRITE_D3 PD2
  #define PIN_WRITE_D2 PD3
  #define PIN_WRITE_D1 PD4
  #define PIN_WRITE_D0 PD5
*/
#define BENUTZER "user"

#define Brenndauer 50 //50...100ms
#define Pause      50//ms

uint8_t readSerial;
uint8_t menu = 0;
uint8_t printtext = 0;

uint8_t zeilenbyte = 0;
int adress = 0;
uint8_t data = 0;

uint8_t PIN_D0;
uint8_t PIN_D1;
uint8_t PIN_D2;
uint8_t PIN_D3;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
  }

  delay(200);
  Serial.println(F("----------------------------"));
  Serial.println(F("74S287|KR556RT4 PROM-Brutzler"));
  Serial.println(F("von Brutzelmaster 3/2020"));
  Serial.println(F("----------------------------"));
  delay(2000);
  Serial.println();
  Serial.println(F("Programmer bereit!"));
  Serial.println();
  Serial.println(F("0 = Slave Prom Auslesen"));
  Serial.println(F("1 = Master klonen"));
  Serial.println(F("----------------------------"));
  Serial.println();

  //PORT C init
  DDRC  = 0B00110000;
  PORTC = 0B00000000;

  //PORT B init
  DDRB   = 0B00000000;
  PORTB  = 0B00000000;

  //PORT D init
  DDRD  =  0B00111100;
  PORTD =  0B00000000;
}

void loop() {
  delay(50);

  if (Serial.available() > 0) {
    // Lies das eingehende Byte:
    readSerial = Serial.read();
    if (!(readSerial < 48 || readSerial > 57)) //48-57
    {
      Serial.print(BENUTZER);
      Serial.print("> ");
      Serial.print((char) readSerial);
      Serial.println();
    }

    switch (menu)
    {
      case 0://Hauptmenu
        if (readSerial == 48)//0 - Slave Prom Auslesen
        {
          Serial.println();
          Serial.println(F("Alle 8 Kanäle des Adressenschalters auf AUS stellen!"));
          Serial.println();
          Serial.println(F("0 = Abbrechen"));
          Serial.println(F("1 = Slave Prom Auslesen"));
          Serial.println();

          menu = 1;
        }
        if (readSerial == 49)//1 - Master klonen
        {
          Serial.println();
          Serial.println(F("Jumper für die Programmierspannung stecken und"));
          Serial.println(F("Alle 8 Kanäle des Adressenschalters auf AUS stellen!"));
          Serial.println();
          Serial.println(F("0 = Abbrechen"));
          Serial.println(F("1 = Master klonen"));
          Serial.println();

          menu = 2;
        }
        break;

      case 1://Slave Prom Auslesen
        if (readSerial == 48)//0 - Abbrechen
        {
          Serial.println(F("----------------------------"));
          Serial.println(F("Programmer bereit!"));
          Serial.println();
          Serial.println(F("0 = Slave Prom Auslesen"));
          Serial.println(F("1 = Master klonen"));
          Serial.println(F("----------------------------"));
          Serial.println();
          menu = 0;
        }
        if (readSerial == 49)//1 - Slave Prom Auslesen"
        {
          PROM_Lesen();
        }
        break;

      case 2://Master klonen
        if (readSerial == 48)//0 - Abbrechen
        {
          Serial.println(F("----------------------------"));
          Serial.println(F("Programmer bereit!"));
          Serial.println();
          Serial.println(F("0 = Slave Prom Auslesen"));
          Serial.println(F("1 = Master klonen"));
          Serial.println(F("----------------------------"));
          Serial.println();
          menu = 0;
        }
        if (readSerial == 49)//1 - Master klonen"
        {
          PROM_Klonen();
        }
        break;

      case 3://Auslesen beliebige Taste drücken!
        if (!(readSerial < 48 || readSerial > 57)) //48-57
        {
          Serial.println(F("----------------------------"));
          Serial.println(F("Programmer bereit!"));
          Serial.println();
          Serial.println(F("0 = Slave Prom Auslesen"));
          Serial.println(F("1 = Master klonen"));
          Serial.println(F("----------------------------"));
          Serial.println();
          menu = 0;
        }
        break;
    }
  }
}

void PROM_Klonen()
{
  PORTB = 0x00;
  PORTD &= ~0B11000000;
  DDRB  = 0B00111111;
  DDRD |= 0B11000000;

  PORTC |= 0B00100000; //Slave CS\ HIGH
  Serial.println();
  Serial.println();
  Serial.println();
  delay(500);
  for (adress = 0; adress < 256; adress++)
  {
    data = 0;
    if (adress & 0B00000001)PORTB |= 0B00000001; else PORTB &= ~0B00000001;
    if (adress & 0B00000010)PORTB |= 0B00000010; else PORTB &= ~0B00000010;
    if (adress & 0B00000100)PORTB |= 0B00000100; else PORTB &= ~0B00000100;
    if (adress & 0B00001000)PORTB |= 0B00001000; else PORTB &= ~0B00001000;
    if (adress & 0B00010000)PORTB |= 0B00010000; else PORTB &= ~0B00010000;
    if (adress & 0B00100000)PORTB |= 0B00100000; else PORTB &= ~0B00100000;
    if (adress & 0B01000000)PORTD |= 0B01000000; else PORTD &= ~0B01000000;
    if (adress & 0B10000000)PORTD |= 0B10000000; else PORTD &= ~0B10000000;
    delay(5);


    PORTC &= ~0B00100000; //Slave CS\ LOW
    //PGM
    PORTC |= 0B00010000; //VCC auf PGM
    delayMicroseconds(100);
    PORTD |= 0B00000100; //D3
    delay(Brenndauer);
    PORTD &= ~0B00111100;
    delayMicroseconds(100);
    PORTC &= ~0B00010000; //PGM Aus
    delay(Pause);

    PORTC |= 0B00010000; //VCC auf PGM
    delayMicroseconds(100);
    PORTD |= 0B00001000; //D2
    delay(Brenndauer);
    PORTD &= ~0B00111100;
    delayMicroseconds(100);
    PORTC &= ~0B00010000; //PGM Aus
    delay(Pause);

    PORTC |= 0B00010000; //VCC auf PGM
    delayMicroseconds(100);
    PORTD |= 0B00010000; //D1
    delay(Brenndauer);
    PORTD &= ~0B00111100;
    delayMicroseconds(100);
    PORTC &= ~0B00010000; //PGM Aus
    delay(Pause);

    PORTC |= 0B00010000; //VCC auf PGM
    delayMicroseconds(100);
    PORTD |= 0B00100000; //D0
    delay(Brenndauer);
    PORTD &= ~0B00111100;
    delayMicroseconds(100);
    PORTC &= ~0B00010000; //PGM Aus
    delay(Pause);


    PORTC &= ~0B00100000; //Slave CS\ LOW
    delay(1);
    PIN_D0 = (PINC & (1 << PC0) ? 0x00 : 0x01);
    PIN_D1 = (PINC & (1 << PC1) ? 0x00 : 0x02);
    PIN_D2 = (PINC & (1 << PC2) ? 0x00 : 0x04);
    PIN_D3 = (PINC & (1 << PC3) ? 0x00 : 0x08);
    data = PIN_D0 | PIN_D1 | PIN_D2 | PIN_D3;
    PORTC |= 0B00100000; //Slave CS\ HIGH
    Serial.print(data, HEX);
    if ((adress % 2) > 0) {
      Serial.print(" ");
    }
    zeilenbyte++;
    if (zeilenbyte > 0x1F) {
      zeilenbyte = 0;
      Serial.println();
    }
  }
  PORTC |= 0B00100000; //Slave CS\ HIGH

  DDRB  = 0B00000000;
  DDRD &= ~0B11000000;
  PORTB = 0x00;
  PORTD &= ~0B11000000;
  delay(500);
  Serial.println();
  Serial.println();
  Serial.println();
  Serial.println(F("Fertig!"));
  Serial.println(F("Jumper für Programmierspannung ziehen!"));
  Serial.println(F("Beliebige Taste zwischen 0-9 drücken!"));
  Serial.println();
  Serial.println();
  menu = 3;
}


void PROM_Lesen()
{
  PORTB = 0x00;
  PORTD &= ~0B11000000;
  DDRB  = 0B00111111;
  DDRD |= 0B11000000;

  PORTC &= ~0B00100000; //Slave CS\ LOW
  Serial.println();
  Serial.println();
  Serial.println();
  delay(500);
  for (adress = 0; adress < 256; adress++)
  {
    data = 0;
    if (adress & 0B00000001)PORTB |= 0B00000001; else PORTB &= ~0B00000001;
    if (adress & 0B00000010)PORTB |= 0B00000010; else PORTB &= ~0B00000010;
    if (adress & 0B00000100)PORTB |= 0B00000100; else PORTB &= ~0B00000100;
    if (adress & 0B00001000)PORTB |= 0B00001000; else PORTB &= ~0B00001000;
    if (adress & 0B00010000)PORTB |= 0B00010000; else PORTB &= ~0B00010000;
    if (adress & 0B00100000)PORTB |= 0B00100000; else PORTB &= ~0B00100000;
    if (adress & 0B01000000)PORTD |= 0B01000000; else PORTD &= ~0B01000000;
    if (adress & 0B10000000)PORTD |= 0B10000000; else PORTD &= ~0B10000000;
    delay(10);
    PIN_D0 = (PINC & (1 << PC0) ? 0x00 : 0x01);
    PIN_D1 = (PINC & (1 << PC1) ? 0x00 : 0x02);
    PIN_D2 = (PINC & (1 << PC2) ? 0x00 : 0x04);
    PIN_D3 = (PINC & (1 << PC3) ? 0x00 : 0x08);
    data = PIN_D0 | PIN_D1 | PIN_D2 | PIN_D3;

    Serial.print(data, HEX);
    if ((adress % 2) > 0) {
      Serial.print(" ");
    }
    zeilenbyte++;
    if (zeilenbyte > 0x1F) {
      zeilenbyte = 0;
      Serial.println();
    }
  }
  PORTC |= 0B00100000; //Slave CS\ HIGH

  DDRB  = 0B00000000;
  DDRD &= ~0B11000000;
  PORTB = 0x00;
  PORTD &= ~0B11000000;
  delay(500);
  Serial.println();
  Serial.println();
  Serial.println();
  Serial.println(F("Fertig!"));
  Serial.println(F("Beliebige Taste zwischen 0-9 drücken!"));
  Serial.println();
  Serial.println();
  menu = 3;
}


--
---------------------------------
Brutzelmaster - liebe es, zerstöre es!

+++Brutzelmaster(25) sucht nette hübsche Freundin (18-27) in Dresden+++

https://www.youtube.com/channel/UCYaez6mdLmmFa1EBcOuALtg/about
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
22.05.2021, 17:32 Uhr
Brutzelmaster

Avatar von Brutzelmaster

Hallo, nun habe ich mir Zeit genommen und habe den Schaltplan gezeichnet und gleich Digitalisiert. Viel Spaß beim Nachbauen!

Der Programmer kann natürlich noch optimiert und erweitert werden. Ich hatte ihn aus Zeug gebastelt, was wortwörtlich so Random gerade rumlag xD



Hier klicken für die volle Größe
--
---------------------------------
Brutzelmaster - liebe es, zerstöre es!

+++Brutzelmaster(25) sucht nette hübsche Freundin (18-27) in Dresden+++

https://www.youtube.com/channel/UCYaez6mdLmmFa1EBcOuALtg/about
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
13.03.2022, 08:40 Uhr
1948



Hallo Brutzelmaster,
du hast das Bitmuster vom 74S287-ROM D005 dargestellt.
Das ist aber nicht vom D005(rot) sondern vom D202 (weis).
Nur als Hinweis...
Sonst ein tolles Projekt - Hut ab ....
Ich baue gerade den KC85/5 in einer etwas abgespeckter Version mit S-Ram nach.
Da ist mir aufgefallen, das die Rom´s vertauscht sind.
Viel Spaß mit dem Hobby
LG
Vy73
Helmut
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
13.03.2022, 09:06 Uhr
wpwsaw
Default Group and Edit


wie schon mal geschrieben, ich habe noch einige fertige programmierte mit rotem und weißem Punkt....

wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
13.03.2022, 09:40 Uhr
1948



Hallo wpw,
Vielen Dank für das Angebot.
Ich habe mir einen Programmer gebaut und erfolgreich die 2 Prom´s programmiert.
Vielleicht lesen ja andere dein Angebot und sind froh, da was zu bekommen.
Viel Erfolg...
LG
Helmut
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek