Hi, Do you have faced with this problem ? The USB debug adapter runs but the IDE debugger not. I can put breakpoint on the first line of the main but no break, no timer it generated too, when i stop running no stop on the code line executing. It seems there is a problem just before the main call.
thx
The USB debug adapter runs but the IDE debugger not. I can put breakpoint on the first line of the main but no break, no timer it generated too, when i stop running no stop on the code line executing. it would be helpful if you would tell us Which chip which USB adapter which IDE debugger
Erik
Hi, C8051F50XDK, Silicon Labs USB Debug Adpater, Keil A51, C51, BL51, Silicon Labs IDE.
Richard
Tamir,
It would seem that your threshold for opinionated arrogance is higher than mine.
Anyway ... I understand what you say, and will try to refrain.
I hate to take sides but this time I agree with Erik. Your latest arguments were abusive, non-technical and deliberately offensive.
First off, if you agree with Erik you will be agreeing that I treated his behaviour with ridicule. This is correct. 'Abusive' and 'offensive' are quite a different matter. I would suggest that the use of profanity would be classed as offensive, this is quite typical of Erik's behaviour on this forum. I have also noticed that you are not averse to using language that would be considered blasphemy by at least one of the major global religions.
What were you trying to prove actually? Yes Erik made a couple of contentious claims in the past
The things that irritate are his barracking arrogance, refusal to follow his own advice, refusal to read and understand what others write, inability to understand that there are alternative approaches to many problems rather than the one deemed correct by him, inability to ever follow any discussion through to its conclusion if that conclusion reveals him to be wrong and so on.
and I know he is not always right (who is, for god's sake) but seriously guys - keep it down to business, and down to earth!
I think you need to put your own house in order before you start to dictate who should say what on this forum.
I have also noticed that you are not averse to using language that would be considered blasphemy by at least one of the major global religions
I don't know if you meant it like that, but you made me laugh...if I hurt your religious feelings I apologize.
Ouch. What a punch line! Do you mean me trying to make a hit on Marleen (ops. my girl is not going to like this post hahahahaha) :-) :-) or the religious stuff?!!?!?!?
If we can not refreshing the watchdog, i 'm afraid for the use of this chip...
I'm sure you can, and INIT.A51 is one of the right places to refresh it. Unfortunately I'm not familiar with this device, and neither, it would seem, is anyone else, so I guess you're just going to have to read the datasheet carefully to establish how to do it.
Hi, The issue is NOT 'refreshing' but 'disabling' If we can not refreshing the watchdog, i 'm afraid for the use of this chip... The handling of this issue (sorry Mr. Sardine) commonly accepted by all SILabs users (that have commented on this issue) is to disable the watchdog in startup.a51 and then enable it at the top of main().
now: Every time you build you link with that code
if not exist aoc.lib goto usliex del aoc.lib :usliex c:\%DDIR%\c51\bin\lib51 c aoc.lib >..\trash\trashbin c:\%DDIR%\c51\bin\lib51 a OCmain.obj to aoc.lib >..\trash\trashbin c:\%DDIR%\c51\bin\lib51 a OCutil.obj to aoc.lib >..\trash\trashbin c:\%DDIR%\c51\bin\lib51 a OCautil.obj to aoc.lib >..\trash\trashbin c:\%DDIR%\c51\bin\lib51 a OCkbpr.obj to aoc.lib >..\trash\trashbin c:\%DDIR%\c51\bin\lib51 a OCtool.obj to aoc.lib >..\trash\trashbin c:\%DDIR%\c51\bin\lib51 a OCusb.obj to aoc.lib >..\trash\trashbin c:\%DDIR%\c51\bin\lib51 a OC485.obj to aoc.lib >..\trash\trashbin c:\%DDIR%\c51\bin\lib51 a OCcmd.obj to aoc.lib >..\trash\trashbin c:\%DDIR%\c51\bin\lib51 a OCvfd.obj to aoc.lib >..\trash\trashbin c:\%DDIR%\c51\bin\lib51 a OCnummsg.obj to aoc.lib >..\trash\trashbin c:\%DDIR%\c51\bin\lib51 a OCupdata.obj to aoc.lib >..\trash\trashbin if "%MUSDIR%"=="0" goto lnkdir rem linking for boot required c:\%DDIR%\c51\bin\bl51 OCstart.obj, OCintent.obj, OCisr.obj, OCxdata.obj, \ BOOTbit.obj, aoc.lib TO aoc.omf CODE(0x4000 - 0xFFFF) RS(256) IX >protl.log goto lnkdon
I do???
Note This message was edited to reduce width.
Slowly breathe in.
Slowly breathe out.
Relax.
Ahhhhhh.
Yes.
Slowly breathe in. Slowly breathe out. Relax. Ahhhhhh. the watchdog discussed here is an electronoic device, not a sleeping collie
PS Every time you build you link with that code was never the issue, the issue was init.a51. yes, there is a C_INIT or some such (I could look, but if you need the specific, look yourself) in the .m51 file which I have known for years, but AGAIN the issue was init.a51.
NO, confound it, NO from the .m51:
INPUT MODULES INCLUDED: MKSTART.OBJ (?C_STARTUP) MKINTENT.OBJ (MKINTENT) MKINTVEC.OBJ (MKINTVEC) MKISR.OBJ (MKISR) MKIIC.OBJ (MKIIC) MKXDATA.OBJ (MKXDATA) BOOTBIT.OBJ (BOOTBIT) AMK.LIB (MKMAIN) AMK.LIB (MKJ1708) AMK.LIB (MKTOOL) AMK.LIB (MKUTIL) C:\TOOLS\KEIL\C51\LIB\C51S.LIB (?C?CCASE) C:\TOOLS\KEIL\C51\LIB\C51S.LIB (?C?ICASE)
I added an initialization of a variable and then
C:\TOOLS\KEIL\C51\LIB\C51S.LIB (?C_INIT)
popped up
Although there aren't any Stupid Questions, some questions can reveal a questioner's level of competence. Its not that we thought that sardines were smart to begin with, but this insight into the Shoals of Sardine Thought is priceless...
How strange. Why would anyone impose such a rule?
(in reference to: it is 'house standard' here not to have "initialized variables at file level")
It might be that you haven't thought about it much before you posted that question, so I'll let you think about that one for a bit.
(I think that erik should provide the reason, since that would show that erik is smarter than your average fish).
</stir>
--Cpt. Vince Foster 2nd Cannon Place Fort Marcy Park, VA
ok captain, the first thing that pops into my mind is that you cannot guaranty their order of initialization...? Am I now an new member of the sardine family?
further clarification: that matter IF there are dependencies between global variables.
I can imagine situations where it may be undesirable or impossible to initialise variables before execution of main, but cannot imagine why it would be a 'house rule'.
I think that erik should provide the reason, since that would show that erik is smarter than your average fish
I doubt that Erik's ability to explain his own house rule will reveal much about his intelligence. At least I hope not.
Every time you build you link with that code was never the issue, the issue was init.a51. yes, there is a C_INIT or some such (I could look, but if you need the specific, look yourself) in the .m51 file which I have known for years, but AGAIN the issue was init.a51.
The key point is this: What code is contained in INIT.A51?
"At least I hope not."
Pride and prejudice? I thought you preached that people should have an open mind...
he rule of no variables initialized at the declaration:
It has been there 'forever', and I recall there were many reasons, but do I remember them all, I doubt it.
First, the origin of 'the rule' has nothing to do with software. A board made for the company before the company had any engineering could not do a straight movx (the latch had to be set manually - ARGH) and thus any 'automatic code' referencing xdata would fail. We then discussed whether to have the rule just for this project or global and decided for many reasons to make it global. as I recall: One I do remember was that there were state machines with 'idle' defined as all kinds of values, the 'rule' forced all idle's to be zero which saved a whole lot of lookups. The rule forces anyone to make 'inactive' a zero, again saving a whole lot of lookups. The only case where I can see a justification for 'inactive' being anything else than zero is a SFR or port bit, I have not investigated that, but I doubt you can write sbit 0x83 = 1 and come up with p0.3 a one. also it forces 'value tables' to be 'code', again an advantage. Oh, also it allow the use of #define UC xxx unsigned char where xxx is defined as extern in all modules but one.
So, what does 'the rule' buy us? consistency
of course some feel that this is restrictive, but when you want 'program responsibility' to be transferable, you need consistency.
PS Mr. Sardine owes me an apology for his bile about init always being included, but that, I am sure would be too much to ask.
Not at all - I apologise. I was sloppy.
A precompiled version of the code contained in init.a51 is always linked into your project unless you avoid two fairly fundamental features of the 'C' language:
1) Explicit initialisation of variables declared at file scope 2) Explicit initialisation of local variables with static storage duration
I understand you have a rule based on some ill-remembered premise preventing 1) - do you also have a rule preventing 2)?
I have no idea what you thought I meant, but I can assure you you've got it wrong.
View all questions in Keil forum