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.
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.
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 vrijdag 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
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...
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?
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 zondag 5 september 2010 00:15:33 (66%)
Golden 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 zondag 5 september 2010 03:17:14 (15%)
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.
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...
Golden 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.
Golden Member
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
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.
Golden Member
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)
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!
Die dopjes gebruik ik om een lm35 waterproof te maken.
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.
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 )
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
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))
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?
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
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.
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...
Dit topic is gesloten