(O)lustig bugg i 16F84A-kod

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Och bytte till STATUS2 i de rellevanta BCF/BSF ?
I så fall har jag nog slut på (snabba) förslag...
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31437
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Ja precis så.
Först gjorde jag en tabbe och tog find/replace på alla status, men det gick ju inte så bra, hehe!

Det är lite bökigt att begripa det hela eftersom kretsen använder sig av en 4xnand som multiplexer, så programmet kan räkna antingen pulserna direkt, eller den 1/256-delade signalen ut från RA3. Av någon anledning kan man inte läsa av resultatet från prescalern direkt läste jag? Knasigt...
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

En fråga...
När du säger "255 blir 511", vad är dessa två värden för något ?
Var ser du 255 och var ser du 511 ?
Eller ärt det bara så att du *förväntar* dig 255, men får 511 ?
Eller står värdet 255 så att säga stadigt, men ibland flippar över
till 511 för att igen gå tillbaka till 255 ? Eller står 511 kvar i LCD'n
när det väl har hamnat där ?
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31437
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Nja... alltså så fort displayen SKA visa 255Hz, dvs när jag matar in en signal på 255Hz, då visar displayen 511Hz. Bara när insignalen är 255Hz, aldrig annars. Så fort jag ändrar frekvensen till 254 eller 256Hz, då visas också 254 eller 256.
Samma sak om jag petar in 511Hz, då visar det 767Hz.

Så om jag sakta ökar frekvensen så blir resultatet såhär på displayen:

251 Hz
252 Hz
253 Hz
254 HZ
511 Hz
256 Hz
257 Hz
258
osv.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK. jag ville bara kolla... :-)
Och om du gör samma sak fast neråt, så visar den också 511, men bara ibland ?

Hur som helst, jag SIM-ulerade ju i princip bara "cnvt" rutinen (med "count"
kortsluten, så att säga) och såg inget konstigt med den (alltså "cnvt").
D.v.s att värdet är sannolikt felaktigt redan *innan* det kommer till "cnvt".

Så mitt förslag just nu är att fokusera felsökningen mot count-rutinen...
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31437
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Ja, 255 blir 511 vilket håll jag än går åt. Det är vid högre frekvenser det börjar hända att den kan visa rätt när man går uppåt, men inte tvärtom.

Jag har också börjat fundera på att det nog blir fel vid count redan.

Hmm... kan man sätta en klockpuls på en viss frekvens i mpsim som man matar in på en pinne?
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Japp, det finns något som heter "Clock Stimulus".
Man sätter dock inte frekvens direkt, utan antal cykler hög/låg
som klocksignalen ska ha, samt lite andra villkor för när den ska
starta, vilken pinne den ska in på o.s.v. Skulle kanske kunna
användas till detta...

Jag tittade aldrig så noga på "count" förra gången.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Right, nu provade jag att göra så här...

1. Satte upp en Clock Stimuli för RA4 (ext clk för tmr0) och körde med
hög/låg timder motsvarande 255 (1961 cyc) resp 511 Hz (981 cyc).

3. Satte upp "Begin RA3=high, End RA3=low" så att det motsvarar "gate"
signalen i hårdvaran ("IC2D").

4. Satte upp en stimulas för RA4 med input från RA2 så att det motsvarar
"loppen" i hårdvaran får att externt klocka fram tmr0 m.h.a RA2 ("IC2C").

Nu när jag simulerar så får jag jämna och fina "255" eller "511" i
"DIGITS". Om jag långsamt kör high/low tiderna för clock signalen
upp och ner, så tickar DIGITS snällt upp ner förbi 255 och 511 som den ska.

En fråga till...
Har du kollat hårdvaran, speciellt kring kopplingen från RA2 tillbaka
till RA4 ? Jag har inte kollat koden i detalj så jag är lite osäker på
*när* processorn klockar Timer0 via RA2, men det skulle kunna vara
i samband med att något register gör en rollover kring 255...
Kanske...

Det är nog så långt som man kommer med MPSIM, skulle jag tro.
Tjille
Inlägg: 43
Blev medlem: 4 februari 2007, 14:33:00
Ort: Göteborg

Inlägg av Tjille »

Kan det vara eventuella skillnader mellan 16F84 och 16F84A?
spaderkung
Inlägg: 138
Blev medlem: 12 maj 2007, 11:24:24
Ort: Sjöbo

Inlägg av spaderkung »

För kännedom:

I projektbeskrivningen står det i inledningen att det är en "discontinued/obsolete/whatever" produkt - men att det finns en "bättre/nyare/dyrare" att köpa.

Diskussionen, om man scrollar ned 1 snäpp, börjar med att rapportera exakt samma fel med räknaren som i tråden. Ingen lösning nås.
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31437
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Kan det vara jag som skrivit in den kommentaren kanske? ;)
Förresten är det omvänd ordning på kommentarerna. Nyaste högst upp.
Senast redigerad av MadModder 14 juli 2007, 13:05:07, redigerad totalt 1 gång.
spaderkung
Inlägg: 138
Blev medlem: 12 maj 2007, 11:24:24
Ort: Sjöbo

Inlägg av spaderkung »

Pling. (Annars) hade det ju kunnat indikera att vi kunnat lägga ner rätt mycket tid.

Edit:
Skillnader mellan 16F84 och A finns i migration-pdf på microchips hemsida (find datasheet), men ser inte ut som de skulle orsaka problem. A är mer och bättre typ. Vad gäller config-bitar och register, som redan nämnda status, skadar det inte att jämföra respektive datablad.

Ser du att det blir fel på LCD först? Det är ju flera steg dit...
Tjille
Inlägg: 43
Blev medlem: 4 februari 2007, 14:33:00
Ort: Göteborg

Inlägg av Tjille »

Jag hittade ytterligare en version av frekvensräknaren här: http://www.geocities.com/alibhernlem/Radio/freq.html

Denna version har bl a 8 siffrors upplösning i stället för 7.

En kommentar i ASM-filen till denna version: Cousens' code included an rtcc toggle of unknown use which gave an output of "1" without input. Kan det vara detta som är grundproblemet?

Kan nämna att jag byggde denna frekvensräknare för något halvår sedan och har samma problem, dels med felvisningen och dels med att man har en 1:a i stället för 0:a utan signal.
Användarvisningsbild
MadModder
Co Admin
Inlägg: 31437
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

Inlägg av MadModder »

Möjligt... Men har jag ingen insignal står det ingenting. Precis när jag startar den står det .00 Hz i en sekund, sen står det bara Hz. Ingen nolla...

Har läst den sidan, men just den meningen fastnade visst inte i huvet :D
Sen är det fler som påpekar det där med att RB0-7 är omkastade till D0-D7 på displayen. Jösses... har de aldrig hört talas om databussar och hur man ritar dem? Spelar ju ingen roll var ledningarna går in och ut ur busstrecket. Det är ju ledningens namn man tittar på. :P

En nackdel med att fixa till en åttånde signifikant siffra, är att det är 1sek mättid på ett större område. Det står också att läsa nånstans.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

Har du provat hårdkodat in 255 och skippa resten av count-rutinen för att se om det är själva räkningen eller konverteringen till ASCII decimalt som är problemet?

Du kan ju även testa att nolla alla register som används i count-rutinen så inte det ligger något skrot där kvar från föregående mätning.

Tyckte också det såg ut som om du lagt in din egen text för LCD:n mitt i count-rutinen i någon source du länkade till. Du är säker på att du inte fipplar med något register (W t.ex.) som gör att du sabbar resten av uträkningen?
Skriv svar