Ontwerptips en domme fouten bij de vleet


Op 11 oktober 2019 21:37:19 schreef buzzy:
Elco 47uF/63 volt stookt ca 20 ic's op.
Kroegbaas vraagt een mengpaneelje te repareren. Er gaan alleen nog maar een paar ledjes van de VU-meter aan.
Waar begin je dan? De voedingsspanning plus en min 15 volt, zijn die er? Jawel hoor ruimschoots. Helaas waren de spanningen + en - 30 volt.
Oorzaak een uitgedroogde elco in de schakelvoeding, die de meetspanning terugkoppelt. Het mengpaneel heeft de netschakelaar aan de onderzijde en als het dan is ingebouwd kun je het niet uitzetten. Het stond dus al een paar jaar aan. Het gaat over C8 in de voeding van een Soundcraft EFX12.
Een nieuwe low ESR elco en de spanningen klopten weer precies.
Dan blijkt er bij het aansluiten van een signaal nog niets op de uitgang te verschijnen, ook de VU meters reageren niet.
Uiteindellijk had geen enkele TL072 of TL074 de overspanning overleefd. Bij elkaar zo'n stuk of 20.
Had de ontwerper twee goedkope zenerdiodes van een volt of 18 over de voedingsspanningen gezet, was alle ellende voorkomen. De diodes begrenzen de spanning en zullen uiteindelijk sluiting maken. Daar kan de voeding wel tegen.
Een goede voeding door bezuiniging slecht beveiligd met als resultaat feitelijk een total loss mengpaneel.

[bijlage]

Dat is een goede om in de gaten te houden, ik heb een EFX-12 en een EFX-8 (het kleinere, maar verder identieke broertje).

Philips als chipfabrikant staat bij mij bekend als een bedrijf wat SLECHTE datasheets maakt. Deze reputatie houdt stand met overnames en naamsveranderingen.

En als ze dan niet weten waar de afkorting voor staat, zouden ze het goed implementeren?

Edit: Update: Reputatie houdt stand. Tabel 121: bit 0 en bit 1 documentatie over wat die bitjes doen. Paar bladzijden verder: fig 18: de bits zijn genummerd bit1 ... bit 8. Waar is bit 0?

Zucht. Diepe zucht. https://www.nxp.com/docs/en/nxp/data-sheets/PN532_C1.pdf

[Bericht gewijzigd door rew op 13 oktober 2019 18:49:25 (34%)]

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
High met Henk

Special Member

hmm een parallel bus is eigenlijk ook een serie bus: er komt vanzelf een nieuwe trein bitjes parallel aan

maar een serie bus parallel noemen?? Ik zie niet in hoe je dat doet :+

to all newbies: RTFM/D of google eens (p.s. RTFM/D = Read the f*cking manual/datasheet).

Als je het goed bekijkt zou "SD" of liever "MMC" een "serial/parallel interface" genoemd kunnen worden: Van origine is het een 1 bit serieel protocol, maar voor performance mag je 2 of 4 bits tegelijk doen.

Een peripheral in een CPU die dit aankan zal waarschijnlijk MMC of SD heten, (bij STM32 is dat het geval), maar als je het generieker wil is het een "serial/parallel interface"... En in dit geval in 1-bit mode compatible met SPI....

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Edit: Update: Reputatie houdt stand. Tabel 121: bit 0 en bit 1 documentatie over wat die bitjes doen. Paar bladzijden verder: fig 18: de bits zijn genummerd bit1 ... bit 8. Waar is bit 0?

Eigenlijk zie ik het probleem niet, alles is volkomen duidelijk weergegeven.
Binnen een Byte (parallel) telt van rechts naar links de decimale waarde van elk Bit.

1= 2^0
2= 2^1
4= 2^2
8= 2^3
16= 2^4
32= 2^5
64= 2^6
128= 2^7

In het binaire(tweetallig) stelsel zijn dit dus machten van 2
Van oudsher loopt binnen een Byte daarom de telling van 2^0 - 2^7
Logisch was dus om deze bits simpelweg 0-7 te noemen.

Serieel werken we niet met Bytes, maar met een willekeurig te kiezen reeks van Bits (0-~)
Wanneer de eerste Bit (1) van een byte (binair 2^0) binnenkomt is dit dus in volgorde bit 1 van een serie.
Het achtste bit (8) is dus nummer 8 van een serie.
Soms volgen er nog meer bits zoals parity die op zich geen gewogen waarde hebben maar wel meetellen voor het aantal verstuurde bits.

Petje af voor Philips dus !
En Motorola, de bedenker van het protocol.

En hoe weet ik nu of bit 8 de waarde 2^0 heeft (zoals gebruikelijk is)? Of dat het toch "bit 1" is? Daar heb ik documentatie voor.

Dat er twee "recht te praten" nummeringen zijn neemt niet weg dat je binnen documentatie moet kiezen of je consistent de ene of de andere gebruikt.

Al eerder heb ik een philips-datasheet gepost waarin ze een schema hebben staan waarbij ze (in 1 schema!) "kruisende draden met bolletje zijn op mekaar aangesloten" en "kruisende draden zonder bolletje zijn OOK aangesloten!" gebruiken.

Als ze documenteren

bit 1 (value 2^0 = 1) this
bit 2 (value 2^1 = 2) that

en dan

clock bit1 clock bit2 clock bit3 ... bit8

in het timing ding tekenen: mij best. Maar NIET verschillende dingen door mekaar.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

In de datasheet zie ik een duidelijke notatie;
De eerste betreft hoe Bits binnen een Byte worden genoteerd.
Een tweede hoe de volgorde van binnenkomst van Bits in een serieele datastroom dient te worden gelezen.
Dit zijn twee heel verschillende zaken.

Jou geblameerde Philips heeft hier geen schuld aan.
De ontwerper van het protocol(Motorola) heeft hier een voorbeeld mee gesteld.

Desondanks ? zijn er duizenden toepassingen succesvol ontwikkeld op basis van deze beschrijving.

Stel dat je met je bejaarde opa voor een spoorwegovergang staat en er passeert een locomotief met acht wagons.
Om de tijd te doden en de hersenen te trainen vraag je aan je grootvader hoeveel wagons hij telt.
Als hij bij 0 begint te tellen zouden dat er 7 zijn.
Dan komt een geriatrische afdeling in een verpleegtehuis toch wel heel dichtbij.

in het timing ding tekenen: mij best. Maar NIET verschillende dingen door mekaar.

Ik zie helemaal geen twee verschillende dingen door elkaar.
Wanneer ik naar de representatie van een Byte kijk zie ik 8 rechthoekige blokjes met daarin Bit 0 t/m Bit 7
Wanneer ik naar jou aangehaalde figuur 18 kijk dan zie ik een timing diagram van elektrische pulsen.
Die ziet er anders uit, heeft op en afgaande flanken en een minimale en maximale waarde.
Die flanken zijn ook schuin getekend als een trapezium en de exacte waarden kun je verderop in de datasheet vinden.
Omdat we bezig zijn met elektronica is dit een representatie van elektrische signalen en geen booleaanse uitdrukking.

[Bericht gewijzigd door Brainbox op 14 oktober 2019 21:39:21 (29%)]

En toch is het verwarrend.
Want nu kan ik niet zien of bit 1 overeen komt met Bit 0 of met bit 7. Als het timing diagram een eigen nummering heeft dan is er geen relatie meer met de bits in de registers. In principe kunnen ze de bits dus in willekeurige volgorde over de lijn sturen.

Het is moeilijk om consequent te zijn, ik weet het, en ik zie het ook overal fout gaan.

Op 14 oktober 2019 20:46:18 schreef Brainbox:
Omdat we bezig zijn met elektronica is dit een representatie van elektrische signalen en geen booleaanse uitdrukking.

En die elektronica stuurt die bits over de lijn. Dan is het toch raar als die bits ineens van naam verschieten?

Wie heeft er trouwens ooit bedacht dat bits (meestal) vanaf 0 geteld/genummerd worden? Ik weet al 100 jaar niet beter meer, maar tóch is het raar!

Don't Panic!

Op 15 oktober 2019 00:08:03 schreef Hensz:
Wie heeft er trouwens ooit bedacht dat bits (meestal) vanaf 0 geteld/genummerd worden?

Brainbox heeft het hierboven nog uitgelegd.

Tuurlijk, je kan zeggen dat er verschillende benamingen voor de bits gebruikt worden om dat het verschillende dingen zijn die uitgelegd worden. Maar in het ene ding wordt uitgelegd wat het bitje doet en in het andere ding wordt uitgelegd in welke volgorde de bitjes verstuurd worden. Ik zit JUIST in dat datasheet te snuffelen om die relatie te vinden. Dat bit1 (benaming 2) overeenkomt met bit0 (benaming 1) en bit8 (benaming 2) overeenkomt met bit7 (benaming 1) is iets logischer dan andersom: bit8 (benaming 2) overeenkomt met bit0 (benaming 1) en bit1 (benaming 2) overeenkomt met bit7 (benaming 1). Maar ik vind beide voldoende onlogish dat ik moet gaan gokken of externe documentatie moet gaan raadplegen om te vinden welke relatie ze hebben tussen de twee benamingen.

Ik vind het best als je soms "register 23 (R23)" en elders "OSCON" zegt. Dat zijn duidelijk verschillende "domeinen". En dan documenteer je ergens de relatie. Maar als je nog moet documenteren bit0 is bit1 dan gaat dat toch gewoon nergens over? Dat is toch gewoon verwarrend?

Van mij mag je best "het bitje met de waarde 2^0" bit1 noemen. Ga ik uitkomen. Maar dan moet je het wel overal doen.

Het probleem is dat "als je het al weet", dan is het een onbelangrijk detail. Maar als je het niet weet en probeert op te zoeken dan vertelt de plek waar je verwacht het te kunnen vinden dus precies niets. De plek waar ze de volgorde van de bitjes tonen staat dat bit1 als eerste verstuurd wordt. Dan kan je zeggen dat is toch logisch dat het hier om het laagste orde bitje gaat. Maar het is net zo logisch om het laagste bitje "bit 0" te noemen. En het is logisch om bit7 als eerste te versturen zoals bij SPI gebruikelijk is. En als ze dat niet doen moet ik met het datasheet voor m'n neus gaan gokken welke onlogische keuze ze gemaakt hebben. Daar is een datasheet niet voor.

Trouwens, dat bit0 de waarde 2^0 draagt is een conventie die de laatste 30-40 jaar door iedereen (behalve philips/NXP) gehanteerd wordt. Daarvoor waren er computers die bij het hoogste bitje begonnen te tellen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Vroeger, toen het leven nog simpel was, :9 begonnen ze bij een microprocessor idd te tellen vanaf 0.
dus dat was 0 tot en met 7..
Niks mis mee.
Maar de eproms ( Een oude 2716 om iets te noemen) begon dan weer met de eerste bit 1. Dus 1 tot en met 8. dat is WEL verwarrend... Je knoopt dan zo de verkeerde draadjes aan elkaar...

u=ir betekent niet :U bent ingenieur..

Arrays beginnen ook te tellen vanaf 0.
1e array-element heeft rangnummer 0. Vaak gebruikte ik array-element array[0] niet en de eerste die ik gebruikte werd dan array[1]. Op die manier ontweek ik 'conflicten' mbt de telling.

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Ik heb toen ik begon met programmeren korte tijd lopen vloeken op computers die arrays bij nul begonnen. Maar zodra je het snapt is het echt het beste.

Als je array op adres 1234 begint staat element [x,y] op 1234+x*xpitch+y*ypitch hierbij is ypitch iets als xpitch*numx. Dit wordt allemaal ingewikkelder als je bij 1 begint.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
GJ_

Moderator

Op 15 oktober 2019 09:21:42 schreef mel: Vroeger, toen het leven nog simpel was, :9 begonnen ze bij een microprocessor idd te tellen vanaf 0.

Op 15 oktober 2019 23:07:23 schreef ohm pi: Arrays beginnen ook te tellen vanaf 0.

In de VS beginnen ze liever met "1". Ook de arrays beginnen daar vaak met 1. Hoe het nu is weet ik niet maar met de oude basic had je daar zelfs "base 0" en "base 1" om aan te geven waar je wou beginnen met tellen.

fatbeard

Honourable Member

Bij seriële communicatie is het te doen gebruikelijk om het verzenden te beginnen met het Least Significant Bit, waardoor je, als je scope niet is uitgerust met serial decode, de bitjes zelf moet omkeren om ze te 'lezen'.
Ik ben in mijn 45 jaar electronica overigens nog geen seriëel communicerend geval tegengekomen wat het andersom deed (maar dat zegt natuurlijk nix).
De volgorde waarin de bytes verstuurd worden is een heel ander verhaal: ieder voor zich (en God ook) is de norm...

Amerikanen hebben trouwens wel meer rare dingen: zo noemen ze de eerste verdieping 'second floor'...

Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.
fatbeard

Honourable Member

Op 15 oktober 2019 23:07:23 schreef ohm pi:
Arrays beginnen ook te tellen vanaf 0.
1e array-element heeft rangnummer 0. Vaak gebruikte ik array-element array[0] niet en de eerste die ik gebruikte werd dan array[1]. Op die manier ontweek ik 'conflicten' mbt de telling.

Euhh.. dat is afhankelijk van de taal en implementatie.

Ik ken talen die 'nergens' beginnen (alle integer getallen zijn toegestaan), talen die bij 1 beginnen (element 0 heeft dan -soms- een speciale betekenis en maakt als zodanig niet echt deel uit van de array), talen die bij 0 beginnen én talen waarin ook alfanumerieke indices zijn toegestaan...

In normaal taalgebruik spreekt men altijd over het eerste (nooit over het nulde) element, ongeacht of dat nou rugnummer 0, 1, % of -327 heeft...

Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.

Op 16 oktober 2019 09:45:37 schreef fatbeard:
Amerikanen hebben trouwens wel meer rare dingen: zo noemen ze de eerste verdieping 'second floor'...

Toen ik daar voor het eerst mee te maken kreeg (1977), vond ik dat ZIJ het goed deden en wij verkeerd. Sinds ik meer met computers doe (198x) ben ik "om": Wij doen het goed, zij verkeerd.

Als je naar de N-de verdieping wil, moet je N trappen op.

update:
Ik ben weer wat verder met de PN532 chip. Nu UM0701-02 aan het lezen:

Refer to the PN532 data sheet (see Error! Reference source not found.).

Tuurlijk, ik kan dat ding zelf ook wel vinden, maar ze hebben kennelijk niet de moeite genomen om de link die daar bedoeld was werkend te krijgen/houden.

[Bericht gewijzigd door rew op 16 oktober 2019 15:27:30 (27%)]

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 16 oktober 2019 09:45:37 schreef fatbeard:

Amerikanen hebben trouwens wel meer rare dingen: zo noemen ze de eerste verdieping 'second floor'...

Is wel zo efficient: je hoeft immers minder trappen te klimmen om op de gewenste verdieping te geraken.

buckfast_beekeeper

Golden Member

Het is ook niet altijd gemakkelijk een verdieping te plakken op een bepaalde etage. In het dorp zijn er meerdere gebouwen die aan voordeur zijde 1 of 2 verdiepingen hoger zitten als aan de achterdeur/garage zijde. Sommige gebouwen hebben 2 deuren aan straatzijde en toch is er een verdieping verschil. Wat is dan je 'gelijkvloers'?

Afhankelijk van je OS is dag 0 van je kalender 1/1/1900 of 1/1/1904.

Honing kan je importeren, bestuiving niet.
High met Henk

Special Member

Hetzelfde geldt voor spanning: t.o.v. Wat ga je meten.

Zo leg ik altijd spanning uit.. Net als afstand.. Hoe hoog is dit tafelblad?? Ja ongeveer 1 meter... Mis.. -2 meter, ik neem het plafond als referentie. De vloer is dus -3

to all newbies: RTFM/D of google eens (p.s. RTFM/D = Read the f*cking manual/datasheet).

Mooie gelegenheid om iets aan mijn algemene ontwikkeling te doen

Op 16 oktober 2019 09:54:34 schreef fatbeard:
[...]
Euhh.. dat is afhankelijk van de taal en implementatie.

Ik ken talen die 'nergens' beginnen (alle integer getallen zijn toegestaan)

Noem eens een taal.

talen die bij 1 beginnen (element 0 heeft dan -soms- een speciale betekenis en maakt als zodanig niet echt deel uit van de array)

Heb je hier ook een voorbeeld van?

talen die bij 0 beginnen

Deze weet ik. Dat is oa 'C'

én talen waarin ook alfanumerieke indices zijn toegestaan...

Svp graag een voorbeeld.
En nu maar hopen dat ik dit allemaal kan onthouden.
.
.

Op 16 oktober 2019 09:45:37 schreef fatbeard:
Amerikanen hebben trouwens wel meer rare dingen: zo noemen ze de eerste verdieping 'second floor'...

Op zich is dat niet zo vreemd. Letterlijk staat er 'tweede vloer'. De 'eerste vloer' is de vloer op, laten we het simpel houden, maaiveld hoogte. Vervelend is als je de andere kant uitgaat. Is de kelderverdieping 'nulde vloer'? En als je nog een verdieping lager gaat, zit je dan op de 'min eerste vloer'?

Als je in de lift zit, dan zie je weer knopjes met getallen.
-1 = 1e verdieping beneden maaiveld
0 = begane grond
1 = 1e verdieping

[Bericht gewijzigd door ohm pi op 16 oktober 2019 18:56:23 (31%)]

Bezoek mijn neefjes' site: www.tinuselectronics.nl

Die laatste zijn PHP, Perl en Python. In plaats van arrays heten het eigenlijk "hashes". En dat geeft een hint richting hoe het geimplementeerd is onderwater....

Op 16 oktober 2019 16:57:34 schreef buckfast_beekeeper:
Afhankelijk van je OS is dag 0 van je kalender 1/1/1900 of 1/1/1904.

Mijn systeem begint bij 1/1/1970.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
maartenbakker

Golden Member

"The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."
fatbeard

Honourable Member

Algol 60 staat zelfs alle getallen toe als index voor arrays (zie §5.2).
Sommige Basic implementaties nummeren vanaf 1 en gebruiken element 0 voor de lengte van de array (vaak is in deze implementaties een string ook een array).
Alfanumerieke indices kwam ik voor het eerst tegen bij Pascal in de vroege 70-er jaren.

Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.

wat voor pascal variant kan dat geweest zijn? Ik ben dat bij pascal nog niet tegen gekomen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/