Sida 2 av 4
Postat: 24 juli 2007, 17:34:47
av sodjan
> Går det att se någonstans vilka config-direktiv som använts (t.ex. i hex-filen...
Ja. De ligger på adresserna h'2007' och h'2008'...
Postat: 24 juli 2007, 17:57:36
av marcusg
Hmm, kände plötsligt att jag gav mig ut på djupt vatten. Har tyvärr ingen aning om hur jag letar upp de där adresserna...
Postat: 24 juli 2007, 19:34:33
av sodjan
OK. *Så* djupt är det inte om man bara vet var man ska sätta fötterna...
Vi kan titta på ett exempel. Detta är en del av HEX filen till en 16F886.
Den har också konfig-registren på h'2007' och h'2008'.
Eftersom detta är *ord* adresser, och HEX filen använder *byte* adresser,
så får vi dubbla dom och får då h'400E' och h'4010'. Det är alltså dessa
adresser vi ska leta efter. En bit ner i HEX filen står det :
Kod: Markera allt
:0800B00053285A280000080043
:02400E00E420AC
:02401000FF3E71
:00000001FF
Notera där det står ":02400E...." och ":024010..." !!
Config orden är det som kommer efter adresserna (och efter ett par extra '00'), alltså h'E420' samt h'FF3E'.
Dessa kan man sedan "mappa" mot beskrivningen i databladet så kan man se hur det är satt.
Det bör i princip se likadant ut i din HEX-fil till F88'an, fast sannolikt med andra värden så klart.
Postat: 24 juli 2007, 20:11:00
av marcusg
Det står följande i (slutet av) hexfilen:
Kod: Markera allt
:0C014000A228F50B9F28A428000008004E
:02400E00703F01
:00000001FF
Vilket då alltså ger 0x703F, så vitt jag förstår. Skall jag alltså läsa detta som binärt, för att jämföra med databladet? Men config1 är ju 14 bitar, och 0x703F ger ju ett 15-bit tal! Jag hänger inte riktigt med nu. Ibland känner man sig inte särskilt smart... Men man lär sig ju så länge man lever!
Postat: 24 juli 2007, 20:34:12
av Icecap
Kanske för att det EGENTLIGEN står 0x3F70.... man ska kasta om på bytsen också.
Postat: 24 juli 2007, 21:09:33
av marcusg
Men betyder inte det att MCLR är på? 3F70 ger ju 11 1111 0111 0000, och bit5 är MCLR, och värde 1 på den innebär att att den är på? Då kan det väl inte vara det som är fel, eller? *förvirrad*
Postat: 24 juli 2007, 22:35:01
av Icecap
Men ingen har väl sagt ATT det är felet, bara att det KAN vara. Nu då du har kontrollerat detta kan du gå vidare i felsökningen.
Postat: 24 juli 2007, 23:44:40
av sodjan
Om vi för tillfället glömmer HEX filen...
Jag provade att skapa ett F88 projekt med *din* __CONFIG rad (som den
var inklippt i ditt inlägg), och jag vill bara fråga, fick du verkligen *INGA*
felmeddelanden alls ????
EDIT:
Icecap har helt rätt i att man ska kasta om de två byte'en.
För övrigt ser det OK ut, efter att ha rättat en del fel i din CONFIG rad
(vilka MPASM snällt talade om var de fanns)
Postat: 24 juli 2007, 23:58:04
av marcusg
Kommer att bli arkebuserad i gryningen för det här, men... Jag skrev av config-raden, eftersom datorn som programmet låg på inte hade internetuppkoppling. När jag kollar nu så ser jag att det felaktigt står _CCP_RB0 istället för _CCP1_RB0. Ber tusen gånger om hundra ursäkt för detta...
Har för närvarande ingen direkt aning om hur jag skall fortsätta felsökandet (annat än att testa kretsen jag beställt av sodjan, för Intern-MCLR. Verkar ju dock inte vara det problemet, men det är värt ett försök, när jag fått den.
Ska sitta och pula lite till, och sen sova på saken. Kanske dyker det upp något, kanske inte.
Postat: 25 juli 2007, 00:00:11
av sodjan
> det felaktigt står _CCP_RB0
Fick du verklligen inget felmeddaldne om det ????
Mycket märkligt...
Inte bara det. Får du *inga* andra fel ?
Postat: 25 juli 2007, 00:22:10
av marcusg
Var lite otydlig, det stod rätt i programmet (_CCP1_RB0), felaktigheten fanns endast här på forumet. Dessutom såg jag nu att det var ett mellanslag, så att det stod '__ config' istället för '__config'. Rättade de två felen och la in raden i ett tomt project enligt nedan, och det fungerar, utan felmeddelanden.
Kod: Markera allt
LIST p=16f88
include "p16f88.inc"
__config _CONFIG1, _CP_OFF & _DEBUG_OFF & _INTRC_IO & _LVP_OFF & _CCP1_RB0 & _WDT_OFF & _PWRTE_ON
nop
Loop
nop
goto Loop
end
Har fixat internetanslutning till datorn jag programmerar på, så nu kan jag klippa och klistra kod direkt.
Postat: 25 juli 2007, 00:34:35
av sodjan
> och det fungerar, utan felmeddelanden.
Ja nu ja.
Men v.v. svara på frågan jag ställde.
EDIT:
Eller vänta, du menar kanske att mellanslaget i "__ config" inte *heller* fanns
med i din "riktiga" kod ? Bara här på forumet ? Det var därför som det blev en
del extra pyssel för mig när jag skulle testa det. Och det gör dessutom
dina problem än konstigare. Om du vill så testar jag gärna med din kod/hex fil
här hos mig med en F88's...
Postat: 25 juli 2007, 01:06:13
av marcusg
När jag kompilerar programmet (det program som orsakat problem, alltså) så får jag 9 meddelanden om att "Register in operand not in bank 0". Kollade upp dessa, och alla har rätt banksel. Finns en andra asm-fil i projektet som genererar 6 meddelanden av samma typ, och dessa har jag också kollat att har rätt banksel (projektet innehåller totalt 2 asm-filer, samt 16F88.lkr). MPLINK rapporterar heller inga fel. Hoppas detta är svar nog...
Postat: 25 juli 2007, 01:07:34
av sodjan
Bara varningar...
Helt OK, se edit'en i mitt förra inklägg.
Jag fick ett antal andra fel p.g.a felen i den config rad du visade *här*.
Postat: 25 juli 2007, 01:11:35
av sodjan
En annan sak...
Hur hanterar/kopplar du LVP/PGM pinnen ?
Du bör antingen lägga den till gnd via ett motstånd
eller koppla Wisp628'ans PGM linje dit. I varje fall
inte låta den "flyta".