Forum: Mikrocontroller und Digitale Elektronik 82S129 PROM emulieren mit Attiny


von Stefan (Gast)


Lesenswert?

Hallo,
ich versuche mit einem Attiny26 ein 82S129 PROM zu emulieren. Wenn ich 
LEDs am PROM anschließe und am attiny funktionieren beide völlig 
identisch, doch an das Gerät angeschlossen geht es nicht (ein TDD1742T 
PLL-Generator liest das PROM aus). Ich habe nun schon alles in Assembler 
programmiert (ich hab vorher nie avr-assembler (nur SSE etc. auf x86) 
programmiert, der code ist daher vielleicht nicht ganz optimal, sieht 
aber meines Empfindes immer noch sehr viel besser aus als das was 
avr-gcc aus meinem C-Code gemacht hat), start-up fuses auf 0 gesetzt und 
auf 16MHz Takt, doch ich weiß nicht woran es liegt, an sich dürfte der 
AVR jetzt nicht langsamer sein als das PROM. Ich habe leider kein 
Oszilloskop zur Verfügung, daher kann ich nicht messen was passiert.
Zuerst hab ich die daten aus dem EEPROM gelesen, doch das EEPROM geht 
nicht zuverlässig mit SUP-Fuses auf 00. Bevor ich das mit Interrupt 
hatte, hab ich auch schon ein loop ausprobiert, genau das gleiche.
1
.include "tn26def.inc"
2
 
3
.def temp = r16
4
.def pll_val = r17
5
.def zero = r18
6
.def ddrout = r19
7
.def eep = r20
8
.org 0x000
9
  rjmp main
10
.org PCI0addr
11
  rjmp PIN_change
12
13
main:
14
  ldi   temp, RAMEND
15
  out   SP, temp
16
  eor   zero, zero
17
  eor   eep, eep
18
  out   DDRA, zero
19
  out   DDRB, zero
20
  out   PORTA, zero
21
  out   PORTB, zero
22
  ldi   ddrout, 0x0f
23
  ldi   YL, LOW(PLLVALS)
24
  ldi   YH, HIGH(PLLVALS)
25
  mov   pll_val, YL
26
  ldi   ZL, LOW(PLL_data*2)
27
  ldi   ZH, HIGH(PLL_data*2)
28
  lpm
29
  st    Y, r0
30
  adiw  ZL, 1
31
  inc   YL
32
  out   PORTA, r0
33
  lpm
34
  st    Y, r0
35
  adiw  ZL, 1
36
  inc   YL
37
  lpm
38
  st    Y, r0
39
  adiw  ZL, 1
40
  inc   YL
41
  lpm
42
  st    Y, r0
43
  adiw  ZL, 1
44
  inc   YL
45
  lpm
46
  st    Y, r0
47
  adiw  ZL, 1
48
  inc   YL
49
  lpm
50
  st    Y, r0
51
  adiw  ZL, 1
52
  inc   YL
53
  lpm
54
  st    Y, r0
55
  adiw  ZL, 1
56
  inc   YL
57
  lpm
58
  st    Y, r0
59
  ldi   temp, (1<<PUD)
60
  out   MCUCR, temp
61
  ldi   temp, (1<<PCIE0)
62
  out   GIMSK, temp
63
  out   DDRA, ddrout
64
  sei
65
loop:
66
  rjmp  loop
67
68
PIN_change:
69
  out   DDRA, zero
70
  in    temp, PINB
71
  andi  temp, 0x07
72
  mov   YL, pll_val
73
  add   YL, temp
74
  ld    temp, Y
75
  out   PORTA, temp
76
  out   DDRA, ddrout
77
  reti
78
79
PLL_data:
80
  .db 0x04, 0x01, 0x0C, 0x04, 0x0F, 0x08, 0x00, 0x09
81
82
.DSEG
83
84
PLLVALS:      .BYTE  8
Irgendeine Idee wo das Problem liegt? Der PLL-Generator wird übrigens 
mit 6MHz getaktet, die Frequenz wird intern nochmal mindestens durch 48 
geteilt (wenn ich das TDD Datenblatt korrekt interpretiere), heißt mit 
mehr als 125kHz kann das PROM nicht ausgelesen werden, da sollte der 
Attiny doch deutlich schneller sein. Gibt es vielleicht irgendwelche 
elektrischen Inkompatibilitäten weshalb der Attiny nicht am TDD1742T 
will?
Vielen Dank
Stefan

von Pieter (Gast)


Lesenswert?

moin moin,

so wat das nix!

Der PROM hat eine Zugriffszeit von ca. 50ns, wofür wird er genutzt. 
Spielt diese Zeit eine Rolle?

ICH würde das per Tabelle umsetzen.
Da ich 8051-Fan bin mit einem 89LP2051 und so:

   ORG  0
   Mov  DPTR, #T    ;Pointer auf Tabellenanfang
L: Mov  A,P1        ;Adr. lesen
   MovC A, @A+DPTR  ;A = TAB[A]
   Mov  P3, A       ;Wert ausgeben
   AJMP L           ;loop
   ORG  100H
T: ;hier stehen die 256 Bytes der Tabelle

Die Schleife braucht 10 Takte, bei 20MHz läge die "Zugriffszeit" bei 
500ns.
In C könnte das so gehen:

While { P3 = TAB[P1] };

Mit Gruß
Pieter

von Mikrowilli (Gast)


Lesenswert?

Alternativ könnte man statt des nicht mehr erhältlichen und umständlich 
zu programmierenden PROMs ein EPROM benutzen - falls denn genug Platz 
dafür vorhanden ist.

von Peter D. (peda)


Lesenswert?

Der Code braucht viel zu lange.
Schon der Interrupt braucht 10 Zyklen nur zum Aufrufen und Verlassen.
Mach einfach ne Schleife:
1
.include "tn26def.inc"
2
        ldi     zl, 0x0F
3
        out     DDRA, zl
4
        ldi     zh, high(pll_data * 2)
5
loop:
6
        in      zl, PINB
7
        andi    zl, 0x07
8
        lpm
9
        out     PORTA, r0
10
        rjmp    loop                    ; = 8 cycle
11
12
        .org    (pc + 0x7F) & 0xff80
13
PLL_data:
14
        .db     0x04, 0x01, 0x0C, 0x04, 0x0F, 0x08, 0x00, 0x09

Als Takt die interne PLL (16MHz).


Peter

von Stefan (Gast)


Lesenswert?

Das Interrupts so langsam sind wusste ich nicht. Habe mir aus euren 
Vorschlägen jetzt das hier gebaut:
1
.include "tn26def.inc"
2
 
3
.def temp = r16
4
.def zero = r18
5
.def ddrout = r19
6
7
.org 0x000
8
  eor   zero, zero
9
  out   DDRA, zero
10
  out   DDRB, zero
11
  out   PORTA, zero
12
  out   PORTB, zero
13
  ldi   ddrout, 0x0f
14
  eor   YL, YL
15
  eor   YH, YH
16
  ldi   ZH, 1
17
;  in    ZL, PINA
18
;  lsr   ZL
19
;  andi  ZL, 0x78
20
  eor   ZL, ZL
21
  lpm
22
  st    Y+, r0
23
  out   PORTA, r0
24
  inc   ZL
25
  lpm
26
  st    Y+, r0
27
  inc   ZL
28
  lpm
29
  st    Y+, r0
30
  inc   ZL
31
  lpm
32
  st    Y+, r0
33
  inc   ZL
34
  lpm
35
  st    Y+, r0
36
  inc   ZL
37
  lpm
38
  st    Y+, r0
39
  inc   ZL
40
  lpm
41
  st    Y+, r0
42
  inc   ZL
43
  lpm
44
  st    Y, r0
45
  out   DDRA, ddrout
46
loop:
47
  in    YL, PINB
48
  andi  YL, 0x07
49
  ld    temp, Y
50
  out   PORTA, temp
51
  rjmp  loop
52
53
.org 0x080
54
  .db 0x04, 0x01, 0x0C, 0x04, 0x0F, 0x08, 0x00, 0x09
Das ganz kurze geht nicht, da noch am Anfang zusätzliche 4 Bits 
ausgelesen werden sollen (ist in meiner Testschaltung noch nicht 
vorhanden, daher auskommentiert). Den Loop hab ich jetzt auf 7 
Taktzyklen runter. Es klappt jetzt schon etwas besser: Er liest 
zumindest irgendwas, in ca. 50% der Fälle bekomme ich ein PLL-Lock, 
Frequenz passt aber nicht. Vermutlich bekommt er nicht alle Bits 
korrekt.
Irgendwelche Ideen wie ich den Loop noch kürzer machen kann oder die 
Geschwindigkeit sonst erhöhen?

An ein Parallel-EEPROM habe ich schon gedacht, nur leider gibt es keine 
kleinen mehr. 4 Bit Ausgang und 7 Bit Adressleitung bräuchte ich. Das 
kleinste was ich gefunden hab ist 13 Bit Adresse und 8 Bit Ausgang. Das 
hat dann aber so viel Pins das ich es nicht einfach als SMD auf eine 
Platine tun kann die dann nicht größer ist als das 16-Pin PDIP PROM.

Irgendwelche Ideen?

Vielen Dank,
Stefan

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Nur mal so 'ne ganz blöde Frage: Du schreibst deine Daten an RAM-Adresse 
0x00 bis 0x07? Das geht leider nicht, denn der RAM beginnt erst bei 
0x60. ;)


Gruß
Jonathan


P.S.: Man merkt, dass Du aus der x86-Richtung kommst, denn Du benutzt 
anstatt "CLR rX" "EOR rX, rX" :D (welche auf AVRs übrigens gleichschnell 
sind ;) )

von Reinhard Kern (Gast)


Angehängte Dateien:

Lesenswert?

Stefan schrieb:
> Irgendwelche Ideen?

Hallo Stefan,

ich habe in einer Z80-Schaltung so ein bipolares PROM als 
Bootstrap-Programmspeicher verwendet, der ebenfalls schon lange nicht 
mehr lieferbar ist (512 x 8 im DIL20), dafür habe ich mir einen Adapter 
gemacht von PLCC32 auf DIL20 und setze Flashspeicher 128k x 8 ein - ist 
brutalstmöglicher Overkill, funktioniert aber einwandfrei. Was solls 
dass der Speicher viel zu gross ist, er kostet ja weniger als die PROMs 
je gekostet haben und reprogrammierbar ist er auch noch. Foto anbei.

Gruss Reinhard

von Stefan (Gast)


Lesenswert?

RAM erst ab 0x60, habe gerade gegooglet was bei 0 bis 7 ist, es sind die 
Register 0 bis 7, sollte aber doch kein Problem sein solange ich die 
Register nicht anders verwende (was ich im Moment allerdings tue)? Bei 
den I/O-Ports geht es angeblich laut diesem Forum (brauch halt bloß 2 
Takte statt einen bei in/out-Befehlen).
Sehe im Moment bloß leider keine Möglichkeit wie ich das für zusätzliche 
Geschwindigkeit nutzen kann, kann die Register ja nicht direkt 
adressieren im loop.
Habe den code jetzt so umgeschreiben und mit LEDs geprüft, geht 
problemlos:
1
.include "tn261def.inc"
2
 
3
.def temp = r16
4
.def zero = r18
5
.def ddrout = r19
6
7
.org 0x000
8
  eor   zero, zero
9
  out   DDRA, zero
10
  out   DDRB, zero
11
  out   PORTA, zero
12
  out   PORTB, zero
13
  ldi   ddrout, 0x0f
14
  eor   YL, YL
15
  eor   YH, YH
16
  ldi   ZH, 1
17
;  in    ZL, PINA
18
;  lsr   ZL
19
;  andi  ZL, 0x78
20
  eor   ZL, ZL
21
  lpm   r0, Z
22
  out   PORTA, r0
23
  inc   ZL
24
  lpm   r1, Z
25
  inc   ZL
26
  lpm   r2, Z
27
  inc   ZL
28
  lpm   r3, Z
29
  inc   ZL
30
  lpm   r4, Z
31
  inc   ZL
32
  lpm   r5, Z
33
  inc   ZL
34
  lpm   r6, Z
35
  inc   ZL
36
  lpm   r7, Z
37
  out   DDRA, ddrout
38
loop:
39
  in    YL, PINB
40
  andi  YL, 0x07
41
  ld    temp, Y
42
  out   PORTA, temp
43
  rjmp  loop
44
45
.org 0x080
46
  .db 0x04, 0x01, 0x0C, 0x04, 0x0F, 0x08, 0x00, 0x09
Macht den loop bloß nicht schneller.
Hab nachgeschaut: clr rX ist genau das gleiche eor rX, rX, das ist nur 
eine kurze Schreibweise, wird aber genau gleich übersetzt.

Gruß
Stefan

von Stefan (Gast)


Lesenswert?

Hallo Reinhard,
das mit dem Adapter ist eine gute Idee, Problem ist nur der Sockel ist 
laut Datenblatt 18,75mm breit, das ist zu groß.
An sich unglaublich das man ein 30 Jahre altes IC heute nicht einfach 
ersetzen kann wegen a) zu langsam oder b) zu groß...

Gruß
Stefan

von Stefan (Gast)


Lesenswert?

Es funktioniert (meistens)!
Hab ohne große Hoffnung nochmal den AVR mit der letzten Codeversion (es 
ist noch der gleiche Attiny26, hab Attiny261 in die include geschrieben 
weil der assembler ldi mit register für den Attiny26 nicht kennt) an den 
PLL angeschlossen und siehe da, es geht (in 90% der Fälle). Entweder es 
lag an dem einen fehlerhaften Byte (was ich nicht glaube, dann wäre es 
nicht so zufällig) oder daran das ich beim Start jetzt 16 Takte 
einspare. Wenn ich ein Attiny261 nehme der ldi mit Z+ kann spar ich 
nochmal 7 Takte, vermutlich gehts dann noch besser.
Ursprünglich wollte ich ein Attiny24 nehmen, weil der kleiner ist, 
dummerweise hat der kein PLL und läuft nur auf 8 MHz, oder kann ich den 
ohne externen Takt auch irgendwie auf 16 MHz takten?
Hab gerade in das Datenblatt des Attiny261 geschaut: aaarghhh! Der kann 
nicht sofort starten wie der Attiny26 sondern hat selbst bei Start-Up 
Fuses auf 00 noch 4ms + 1038 Takte bei PLL. Was soll das denn?
Scheint wohl darauf hinauszulaufen das der einzige geeignete 
Mikrocontroller der Attiny26 ist, den ich zufällig rumliegen hatte oder 
kennt jemand einen besser geeigneten?

Gruß
Stefan

von Pieter (Gast)


Lesenswert?

moin moin,

habe in meiner Bastelkiste noch 3 x 74S287 liegen....

Mit Gruß
Pieter

von spess53 (Gast)


Lesenswert?

Hi

>Ursprünglich wollte ich ein Attiny24 nehmen, weil der kleiner ist,
>dummerweise hat der kein PLL und läuft nur auf 8 MHz, oder kann ich den
>ohne externen Takt auch irgendwie auf 16 MHz takten?

Kannst du auch nicht mit dem internen Takt. Die PLL der ATTiny26/261 
wirkt nur auf Timer1. Beide Controller laufen intern mit max. 8MHz.

>Wenn ich ein Attiny261 nehme der ldi mit Z+ kann spar ich
>nochmal 7 Takte, vermutlich gehts dann noch besser.

Was soll 'ldi mit Z+' sein?

MfG Spess

von Reinhard Kern (Gast)


Lesenswert?

Stefan schrieb:
> Problem ist nur der Sockel ist
> laut Datenblatt 18,75mm breit, das ist zu groß.

Es gibt inzwischen auch Flash memory im 8mm breiten Gehäuse (TSOP32). 
Ist aufwendig zu adaptieren (Multilayer), aber möglich wärs.

Gruss Reinhard

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

eine Frage ist bisher völlig unter den Tisch gefallen: warum kaufst du 
nicht einfach 82S129, solange es noch welche gibt?

Das ist vielleicht keine langfristige Lösung, aber langfristig sind wir 
bekanntlich alle tot.

Gruss Reinhard

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

Reinhard Kern schrieb:
> Hallo,
> eine Frage ist bisher völlig unter den Tisch gefallen: warum kaufst du
> nicht einfach 82S129, solange es noch welche gibt?

Das ist eine gute Frage, wobei ich allerdings aus eigener Erfahrung 
durchaus einige Fälle kenne wo das gerade keine Alternative ist.
Beispielsweise fällt mir da ein Projekt ein wo wir Betriebsfunkgeräte 
der Serie Teletron T8000 die als 16Kanalgeräte deren "Programmierung" 
durch 2 Proms des Typ 82S23 auf dem MArkt gekommen sind mit hilfe von 
anderen Speicherbausteinen in Vielkanalgeräte mit einigen hundert 
einstellbaren KAnälen ausgestattet haben. (Sowohl der Umbau in eine 
Amateurfunkversion wo dann ehemalige 5Toneinstellung zur 
Frequenzdirekteingabe wurde als auch in einer (illegalen) BOS Version wo 
dann alle Kanäle in allen vier Bandlagen einstellbar waren)

Selbst wenn jemand dieses nur als Wenigkanalgerät -z.B. OV Telefon- 
weiterbetreiben will mag so ein Austausch Sinn machen, denn man muss ja 
auch erst einmal die Leerproms bekommen UND Programmieren können.

Etwas ähnliches haben wir (einige AFU & gleichzeitige BOSler) mit 
Ausgesonderten FuG8b von Bosch (Bauserie KF802) gemacht deren 
Kanalspeicher noch mit hilfe von PROMs realisiert war und nicht wie bei 
den Nachfolgern, bsp- SEL FuG8b1/Später Bosch FuG8b1z,  durch direkte 
Einwirkung auf die TEiler in der FAB- um den Frequenzbereich ein paar 
MHz zu verschieben da in Absprache mit der der damals noch RegTP eine 
kurzzeitige Sonderzuteilung für uns geplant war. ISt dann aber aufgrund 
von Problemen auf unserer Seite eingeschlafen, von den Sachbearbeitern 
der Behörde hatten wir schon grünes Licht signalisiert bekommen...
(Diese Geräte verwenden im übrigen genau wie die T8000 und die erste 
Version der BOSCH KF3 Serie den Siemens S187 als PLL Baustein)

Das sind dann schon gute Gründe das anders zu machen.

GEht es aber nur um eine statische Anwendung wo der Speicherplatz im 
Original ausreicht und das soll nicht verändert werden würde ich mich 
der Frage anschließen.

Zudem schließe ich mich gleich mal mit der Frage an ob es denn eine neue 
Schaltung sein soll oder es aber um die Umrüstung einer bestehenden 
Schaltung geht.
Wenn es um die Umrüstung bestehender Schaltungen geht - wie mein 
Funkgerätebeispiel oben- Klar dann sind große Teile vorgegeben und man 
muss versuchen so wenig Aufwand mit möglich zu haben, alles was man 
rausschmeisst muss zudem noch an den Platz des Bauteils passen UND das 
ganze sollte auch Mechanisch stabil sein.

Geht es aber um NEUE Aufbauten frage ich mich warum denn ausgerechnet 
diese Alte PLL zur Anwendung kommen soll?
Entweder man möchte wirklich noch etwas über die PLL Technik lernen, 
dann sind aber noch ältere Konzepte eher Besser geeignet - wie wenn es 
einigermaßen Luxuriös sein soll der S187 den man aber PArallel via Dip 
Programmieren kann - oder für ganz heisse Dinge noch richtig zu Fuss mit 
4046 und Programmierbarer Teiler usw. in der Peripherie.
Ein wirklich "professionelles" Gerät was nach dieser Methode seine 
Frequenzen Erzeugt wurde besipielsweise von den späten 70ern bis in die 
zweite hälfte der 90er Jahre erfolgreich gebaut und wennman von den 
altersschwachen Kondensatoren absieht die man durchaus alle mal tauschen 
sollte wenn man das Ding eh schon aufhat sind die "alten" Geräte mit 
30Jahren auf dem Buckel heute im Schnitt Zuverlässiger als die nach 
96gebaute -optisch identischen- NAchfolger wenn die erst einmal 5 JAhre 
hinter sich haben. Und man lernt richtig was wenn man die Technik 
analysiert. (Bosch FuG8b1z fü 75-87Mhz und FuG9c für 168-174Mhz)

Soll es später nur Funktionieren würde ich etwas moderneres Nehmen, da 
gibt es heute doch eine Reihe Bausteine die dann direkt vom µC mit I2C 
oder SPI programmiert werden können. Teilweise sogar derart hoch 
integriert das nur 4-5 externe Bauteile nötig sind und man hat VCO+PLL 
in einem Baustein, teilweise sogar drei komplette Blöcke gleichzeitig 
mit denen man dann mal den Frequenzbereich von 0- >1GHz überstreicht!
(Ok, dann legt man auch mal 9Euro/IC hin)

Aber BTT, eines fällt mir noch ein:

>
> Das ist vielleicht keine langfristige Lösung, aber langfristig sind wir
> bekanntlich alle tot.
>
> Gruss Reinhard

Stefan schrieb:
> Hab gerade in das Datenblatt des Attiny261 geschaut: aaarghhh! Der kann
> nicht sofort starten wie der Attiny26 sondern hat selbst bei Start-Up
> Fuses auf 00 noch 4ms + 1038 Takte bei PLL. Was soll das denn?
> Scheint wohl darauf hinauszulaufen das der einzige geeignete
> Mikrocontroller der Attiny26 ist, den ich zufällig rumliegen hatte oder
> kennt jemand einen besser geeigneten?

Wenn es nur ums Start-Up geht:
Dein PLL hat doch einen Reset Eingang. Warum lässt du nicht erst mal 
deinen µC in ruhe hochlaufen (Ok, der Synth. liest in der Zeit nur Mist, 
kann dir egal sein) - Und DANN nachdem der µC ins Hauptprogramm springt 
löst du einen Reset am PLL aus! Dadurch lädt dieser dann dank 
betriebsbereiten µC die richtigen Daten.

Ansonsten bleibt halt nur der Rückgriff auf schnellere µC...
Man könnte für den konkreten Programmcode mal schauen ob das auf einem 
gängigen 8Bitter irgendwie schneller läuft, also ob man einen 
Geschwindigkeitsvorteil hat wenn man bsp. einen PIC18F25K20 verwendet 
der mit 64Mhz intern laufen kann was zwar auch einem Befehlstakt von 
16Mhz entspricht, aber dieser hat durch die Taktviertelung deultich mehr 
Befehle die in einem Befehlstaktzyklus abgearbeitet sind.
Große Sprünge bekommt so auch nicht hin.

Alternativ bleibt noch der Blick in die 16 oder gar 32Bit Welt wo es 
auch viele kleine µC gibt die >>60Mhz echtem Befehlstakt haben und die 
auch nicht wirklich teurer sind als ein normaler AVR oder 8Bit Pic. 
(Pic24, kleine PIC32, CortexM0 usw. usf. alles ab ca. 2 Euro, geht je 
nach interer Ausstattung aber auch weit darüber hinaus)

Gruß
Carsten

von Peter D. (peda)


Lesenswert?

Reinhard Kern schrieb:
> eine Frage ist bisher völlig unter den Tisch gefallen: warum kaufst du
> nicht einfach 82S129, solange es noch welche gibt?

Gibt es die wirklich?
Ich hatte auch das Problem und der Händler hat mir dann einfach nur 
einen ähnlichen Ersatz geschickt.
Nicht immer, wenn der Original-Typ angeboten wird, kriegt man ihn auch.

Den Original-Typ konnte ich mit meinem alten Programmer auslesen, der 
Ersatz war jedoch nicht in der Liste. Und moderne Programmer können 
solche Uralt-Typen auch nicht mehr.

Ich hab dann einfach einen GAL genommen und die Daten als Truth-Table 
programmiert. Geht gut. Der GAL steht nur etwas über.


Peter

von Reinhard Kern (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Ich hab dann einfach einen GAL genommen und die Daten als Truth-Table
> programmiert. Geht gut. Der GAL steht nur etwas über.

Hallo Peter,

leider haben die GALs inzwischen das gleiche Beschaffungsproblem. Da 
gibts noch viel mehr zu ändern als mit den paar bipolaren PROMs.

Beim 82S129 habe ich kurz gegoogelt ("82s129 preis") und hätte mir einen 
für 5 Euro in den Warenkorb laden können, ich verlinke hier mal:

http://www.arcadiabay.de/source/item.aspx?id=3206

Ich könnte wahrscheinlich alle aufgeführten Typen programmieren. 
Vielleicht sogar gegen Bezahlung als Service.

Gruss Reinhard

PS ich müsste mal im Keller nachsehen, da war mal eine Stange bipolare 
Proms 256x4. Wenn ich sie nicht weggeworfen habe wegen mangelnder 
ökonomischer Verwertbarkeit. Abgeschrieben nach AFA sind sie seit 25 
Jahren.

von Peter D. (peda)


Lesenswert?

Reinhard Kern schrieb:
> leider haben die GALs inzwischen das gleiche Beschaffungsproblem.

Ne, die sind noch voll in Produktion und z.B. bei Farnell Lagerware.
Aber nicht mehr von Lattice, sondern von Atmel und heißen daher ATF16V8, 
ATF20V8 bzw. ATF22V10.


Peter

von Reinhard Kern (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Aber nicht mehr von Lattice, sondern von Atmel und heißen daher ATF16V8,
> ATF20V8 bzw. ATF22V10.

Danke für den Hinweis. Die habe ich bisher nicht gefunden, weil Farnell 
eine völlig bescheuerte Einteilung und Suchfunktion hat, unter der 
Gruppe PALs/GALs sind sie nämlich NICHT aufgeführt, die haben für Atmel 
eine neue Gruppe definiert.

Ich sehe auch noch Marktbedarf, es gibt noch viele Anwendungen mit GALs.

Gruss Reinhard

von Stefan (Gast)


Lesenswert?

Hallo,

> Was soll 'ldi mit Z+' sein?
Gemeint war natürlich lpm mit Z+, kann der Attiny26 nur in den ersten 
256 Byte.

> Kannst du auch nicht mit dem internen Takt. Die PLL der ATTiny26/261
> wirkt nur auf Timer1. Beide Controller laufen intern mit max. 8MHz.
Den internen Takt kann man doch kalibrieren? Der PLL wird damit auch 
getaktet laut Datenblatt des Attiny261 und da wird gewarnt den Takt groß 
zu verändern wenn der PLL verwendet wird (sonst kein PLL-Lock mehr). Das 
Datenblatt des Attiny26 schweigt sich dazu aus, das Diagramm mit der 
Taktverteilung ist aber das gleiche. Man kann bei beiden Controllern den 
PLL als Taktquelle über die Fuses einstellen.

> Es gibt inzwischen auch Flash memory im 8mm breiten Gehäuse (TSOP32).
> Ist aufwendig zu adaptieren (Multilayer), aber möglich wärs.
Dual Layer kann ich selber machen, alles darüber hinaus müsste ich 
machen lassen und das wird teuer. Für 12 Stück lohnt sich das nicht.

> eine Frage ist bisher völlig unter den Tisch gefallen: warum kaufst du
> nicht einfach 82S129, solange es noch welche gibt?
a) Ich hab kein Programmiergerät dafür und auch kein Schaltplan etc. 
dafür im Inet gefunden (aber auch nicht intensiv gesucht)
b) kann ich nicht neu programmieren. Damit wäre ich auf die Frequenzen 
festgelegt. Ich hab zwar nicht die Absicht immer den Controller 
auszubauen und neu zu programmieren, aber ich möchte nicht in einem Jahr 
wieder vor dem gleichen Problem stehen, weil ich aus irgendeinem Grund 
die Frequenzen ändern muss.

> Zudem schließe ich mich gleich mal mit der Frage an ob es denn eine neue
> Schaltung sein soll oder es aber um die Umrüstung einer bestehenden
> Schaltung geht.
Es geht um die Umrüstung einer bestehenden Schaltung, sonst würde ich 
einfach das Layout ändern das auch ein großes EEPROM Platz hat (oder 
einen anderen PLL nehmen).
Es ist leider sehr kompakt aufgebaut, das heißt es darf zu keiner Seite 
groß überstehen.

> Wenn es nur ums Start-Up geht:
> Dein PLL hat doch einen Reset Eingang. Warum lässt du nicht erst mal
> deinen µC in ruhe hochlaufen (Ok, der Synth. liest in der Zeit nur Mist,
> kann dir egal sein) - Und DANN nachdem der µC ins Hauptprogramm springt
> löst du einen Reset am PLL aus! Dadurch lädt dieser dann dank
> betriebsbereiten µC die richtigen Daten.
Die geniale Schaltung versorgt das PROM nur mit Strom wenn es gelesen 
wird. Der PLL hat einen Ausgang mit dem er einen Transistor ansteuert 
über den das PROM versorgt wird. Wenn der PLL findet er hat genug 
gewartet fängt er an auszulesen, über die Länge dieser Wartezeit ("PROM 
Settling Time") hab ich im Datenblatt des TDD1742T leider nichts 
gefunden. Das Reset am PLL wird durch den Frequnzwahlschalter ausgelöst, 
um das zu ändern müsste ich die Schaltung ändern und irgendwelche Drähte 
an die Platine löten, das möchte ich aber nicht.

> Ich hab dann einfach einen GAL genommen und die Daten als Truth-Table
> programmiert. Geht gut. Der GAL steht nur etwas über.
Das ab ich fertig zu kaufen & programmiert im Internet gefunden, sogar 
für einen akzeptablen Preis, doch leider steht es über und daher gehts 
nicht.


Ich habe jetzt ein Layout gebastelt in dem ein Attiny26 in SMD (den es 
zum Glück noch bei reichelt gibt) nicht übersteht, werde mal einen 
Prototypen basteln und hoffen das es klappt.

Vielen Dank für die vielen Antworten
Stefan

von Reinhard Kern (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Ich hab dann einfach einen GAL genommen und die Daten als Truth-Table
> programmiert. Geht gut. Der GAL steht nur etwas über.

Noch eine Frage interessehalber: im worst case braucht man dazu 256x4 = 
1024 Makrozellen, die hat kein GAL. Hat das zufällig trotzdem 
reingepasst? Dann war das wahrscheinlich auch ein PROM als Logikersatz 
"missbraucht". Hab ich vor langer langer Zeit auch so gemacht, so konnte 
ich mal 5 TTL-ICs durch ein rückgekoppeltes PROM ersetzen, was den 
Kunden ziemlich verblüfft hat. Das war natürlich bevor es PALs gab.

Gruss Reinhard

von Peter D. (peda)


Lesenswert?

Reinhard Kern schrieb:
> im worst case braucht man dazu 256x4 =
> 1024 Makrozellen

Nein, man braucht 4 Macrozellen, da 4 Ausgänge.
Es kann nur sein, daß die OR-Terme knapp werden.


Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.