Nog meer ontwerptips en domme fouten

Dit topic is gesloten


dan zit er nog een fout in, porta.6 staat als input, niet porta.4 (met dank aan hadv!) Zet dan ook 8 bits neer... :) Ok, 5 ipv 4 maar dat had je al door.

Eluke.nl // Backwards Lightspeed Bus: i*i=-1, so iic=-c.

Het werkt nu prima, maar dat had je inmiddels ook al gelezen.

Zet dan ook 8 bits neer

8 bits werkt niet bij een 16F877.

the new 16F87X range will result in a resolution of 10-bits, while the standard PICmicro types will produce an 8-bit result

Maar hiermee gaan we off-topic

Ik ben gewoon zo iemand, die de gebruiksaanwijzing pas uit de doos haalt als het niet werkt.
Dat is hier ook gebeurd, eerst logisch denken, dan pas verder kijken.

edit: @hadv 16F87 was een tikfout
De declaraties voor de LCD, ik gebruik de standaard pinnen, en werkt prima.

Wat die andere dingen betreft....gaat een beetje boven mijn pet.

met de LSB disable je de ADC

LSB??

[Bericht gewijzigd door Kareltje op 3 september 2010 18:35:56 (20%)]

Least significant b (bit/byte/bits/bytes)

Ofwel de bitjes met de laagste waarde, 20, 2¹, 2² etc.

Met die 8 bits doelde ik niet op de adc, maar op trisa. Je hebt daar maar 7 bits opgegeven (zoals hadv al opmerkte). Daardoor zat ik ernaast te kijken (porta.6 vs porta.5, die porta.4 had moeten zijn).

Trouwens, met een 10 bits ADC kun je alsnog kiezen om slechts 8 bits te gebruiken. Andersom, 10 bits gebruiken van een 8 bits ADC, is wat lastiger ;)

Eluke.nl // Backwards Lightspeed Bus: i*i=-1, so iic=-c.

Als je een gelijkspanning wil meten, waar een beetje ruis op zit, kan je bv. 8 samples na mekaar meten, en die optellen. De ruis zorgt er voor, dat ze onderling iets verschillen - je zou zelfs doelbewust voor enige "ruis" kunnen zorgen als je nog enkele uitgangen vrij hebt.
Met 8 8-bit samples heb je een 11-bit ADC-waarde - zo lastig is het dus niet...

Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)

Hier zou ik toch graag wat meer over weten, Pros.
Zou je mij eens een voorbeeldje kunnen geven, hoe jij zoiets aanpakt?
Maar dan wel op deze topic graag, zodat we het hier vrij kunnen houden voor nog meer foute en domme dingen ;)

nou, ontwerptips mochten hier ook toch? En ik ben ook wel benieuwd.

Hoe kom je op 11 bits uit?
[denkt na]
8*255 past idd net in 11 bits...
[/denkt na]nooit doen

Maar is het ook nauwkeuriger?

Eluke.nl // Backwards Lightspeed Bus: i*i=-1, so iic=-c.

Als je 4 samples optelt met precies de juiste hoeveelheid ruis krijg je 1 bit extra. Als je 16 samples optelt, 2 bits. 64 samples optellen voor 3 bits.... etc etc. De HELFT van je extra bits moet je dus eigenlijk weggooien.

Op 3 september 2010 16:51:17 schreef ganzzz:
[...]

while 1=1 is idd voor oneindige lussen in sommige talen

Niet helemaal.

Experts schrijven:

while (1)

omdat die weten dat intern de compiler "1" gebruikt voor "true".

Mensen die vinden dat dit soort informatie verborgen moeten worden schrijven:

#define TRUE 1

while (TRUE)

vervolgens zijn er mensen die zelfs die define niet willen opschrijven en graag onafhankelijk willen zijn van de willekeurige keuze van de compiler om "1" voor "TRUE" te gebruiken. Die schrijven

while (1 = 1)

mocht de compiler ooit veranderd worden dat ie de waarde 0 voor "true" gaat gebruiken, dan zal DIT stukje code nog werken. Een hele hoop andere dingen echter niet meer. De compiler kan het derhalve dus niet maken om zoiets basaals te veranderen.

[Bericht gewijzigd door rew op 5 september 2010 00:15:33 (66%)]

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

Special Member

Klein probleempje: niet in elke taal of zelfs in elke compiler is TRUE als 1 gedefinieerd (zelfs niet in talen waarin het wel werkt(!)). Heel verstandig dus om het zo op te lossen.

[Bericht gewijzigd door maartenbakker op 5 september 2010 03:17:14 (15%)]

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

In C is het in ieder geval ECHT in de standaard zo gedefinieerd. Geen compiler komt er onder uit om het zo te doen. Maar of het in BASIC bijvoorbeeld ook zo is, weet ik niet. Dus als het daar anders is, of anders kan zijn, dan is het inderdaad verstandig om het zo op te schrijven, dan hoef je niet na te denken of je vandaag in BASIC of C programmeert.

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

Op 4 september 2010 14:20:50 schreef Lucky luke:
Maar is het ook nauwkeuriger?

Atmel stelt daarover een application note beschikbaar. Dat bespaart mij de uitleg... :-)

Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
maartenbakker

Special Member

@rew: daar ga je al... In C (tenminste in ANSI C, en daar zijn ook meer varianten van) is FALSE als 0 gedefinieerd, dus een 1 werkt doorgaans wel als TRUE, maar dat is iets anders als dat TRUE als 1 gedefinieerd zou zijn. Er is dus een prima reden om zelf een TRUE en FALSE te #definen ergens aan het begin van je programma, als je compiler die niet zelf al kent. Niet eens zo zeer de uitwisselbaarheid tussen verschillende standaarden (ik heb in geval van C niet onderzocht of er nog zijn die afwijken van FALSE als 0), maar nog veel meer de overzichtelijkheid.

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

De gloei en amode spanning omdraaien is geen goed idee. Toch waren er maar 2 van de 4 buizen geneuveld. va= 250V En Vf=6,3V voor de jeugdigen onder ons ;-)

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch
Sine

Moderator

Wat voor een beest van een HS voeding heb je dan ?

Ik heb hier een schakelende 600V bak staan, maar bij 300mA is het dan echt wel op hoor .. daar verstook je geen gloeidraden mee.

Die heb je hier toen gezien, die was ik toen aan het inbouwen met die papier olie condensators. Maar daarvoor zat hij in een apart kastje. Hij levert nu 0-1000V maar toen was hij omschakelbaar aangesloten en leverde 250V of 500V. (en hij is volgens opschrift van de fabrikant goed voor 1.3A)

www.pa4tim.nl, www.schneiderelectronicsrepair.nl, Reparatie van meet- en calibratie apparatuur, ook oud en exotisch

de 2 ijzeren dopjes van een glaszekering afhalen met een aansteker.
Jezus, wat een stank! Bijna een uur men raam open, een stuk of 10 muggen op men kamer, maar die stank, die blijft lekker hangen. Blegh!

Theo Dooms: "gezonde nieuwsgierigheid is leerzaam. "
Jochem

Golden Member

Heb geduld: alle dingen zijn moeilijk voordat ze gemakkelijk worden.

Die dopjes gebruik ik om een lm35 waterproof te maken.

Theo Dooms: "gezonde nieuwsgierigheid is leerzaam. "
Sine

Moderator

Op 5 september 2010 17:58:50 schreef fred101:
Die heb je hier toen gezien, die was ik toen aan het inbouwen met die papier olie condensators.

Oeeh ... dat monster ...

Misschien toch iets kleiners fabrieken voor fijnwerk ... want ook als er iets aan de HS kant mis gat duwt die grote bak aardig door.

Op 6 september 2010 11:43:13 schreef electro_freakz:
Die dopjes gebruik ik om een lm35 waterproof te maken.

??
Hoe doe je dat dan?

Geheimpje:)

Nee, een dot koelpasta in t dopje, lm 35 erin persen, draadjes solderen, en een stuk krimpkous met lijm erom. eventueel opvullen met kit.

Theo Dooms: "gezonde nieuwsgierigheid is leerzaam. "

Kun je dan niet beter het glazen buisje gebruiken (evt van de grotere variant).
Van de glaszekering maar 1dopje verwijderen,
Draadje aan de lm35 of wat dan ook solderen,
beetje koelpasta op zen koppie,
erin schuiven,
opvullen met lijm of wat dan ook.

(tis maar een idee, geen idee of het ook werkt :p)
Kweet wel niet of die glaszekeringen luchtdicht zijn :s

Op 5 september 2010 13:45:14 schreef maartenbakker:
@rew: daar ga je al... In C (tenminste in ANSI C, en daar zijn ook meer varianten van) is FALSE als 0 gedefinieerd, dus een 1 werkt doorgaans wel als TRUE, maar dat is iets anders als dat TRUE als 1 gedefinieerd zou zijn.

OK. Je hebt gelijk. Alles ongelijk aan 0 is "true". Dus 1 ook.

Een strcmp hoor je zo te implementeren

code:

int strcmp (char *a, char *b)
{
  while (*a && (*a == *b)) {
      a++; b++;
  }
  return *a - *b;
}

Zo is het bedoeld. Blijkt dat tegenwoordig mensen liever -1 of +1 als "ongelijk" terugkrijgen, dus dat is in de loop van de tijd veranderd. Maar je moet if (strcmp (a, b)) kunnen doen en altijd hetzelfde resultaat krijgen. (de "then" clausule wordt dus gedaan als ze ongelijk zijn))

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

Moderator

Op 5 september 2010 16:00:50 schreef fred101:
De gloei en amode spanning omdraaien is geen goed idee. Toch waren er maar 2 van de 4 buizen geneuveld. va= 250V En Vf=6,3V voor de jeugdigen onder ons ;-)

Ook nog kathode-gloeidraadsluiting?

73's de PA2HS - ik ben een radiohead, De 2019 CO labvoeding.
hadv

Golden Member

Op 6 september 2010 13:54:08 schreef rew:
[...]OK. Je hebt gelijk. Alles ongelijk aan 0 is "true". Dus 1 ook.

Een strcmp hoor je zo te implementeren

code:

int strcmp (char *a, char *b)
{
  while (*a && (*a == *b)) {
      a++; b++;
  }
  return *a - *b;
}

Zo is het bedoeld. Blijkt dat tegenwoordig mensen liever -1 of +1 als "ongelijk" terugkrijgen, dus dat is in de loop van de tijd veranderd. Maar je moet if (strcmp (a, b)) kunnen doen en altijd hetzelfde resultaat krijgen. (de "then" clausule wordt dus gedaan als ze ongelijk zijn))

Weet ik meteen weer waarom ik zo'n pokke hekel aan C heb. Onleesbaar.

Just find out what you like and let it kill you
Turbokeu

Golden Member

Op 6 september 2010 18:36:38 schreef hadv:
[...]
Weet ik meteen weer waarom ik zo'n pokke hekel aan C heb. Onleesbaar.

Hahaha, dacht net hetzelfde...:D

I love watching conspiracy theorists use the airtight logic of the argument from incredulity: "Well I don't understand how it works so it can't be real!!!"

Dit topic is gesloten