1 :
デフォルトの名無しさん:2007/08/17(金) 14:12:18
H8/300Tiny36064なんだけど、タイマZがまともに動かんのです。
オーバーフロー、インプットキャプチャの割り込みはちゃんと起きるのに、
タイマカウンタの値や、キャプチャしたジェネラルレジスタの
値を読み込むと常に同じ値……
レジスタのアドレス定義も間違ってない……
こういう時いったいどこから見直せばいいんでしょうか!?
質問スレ池カス
3 :
デフォルトの名無しさん:2007/08/17(金) 14:17:48
削除依頼出しとけよ
5 :
デフォルトの名無しさん:2007/08/17(金) 14:40:12
6 :
デフォルトの名無しさん:2007/08/17(金) 14:56:21
全然詳しくないので質問させてください。
自称「マネージメントもできる」派遣クンが
「H8/300Tiny36064が僕のプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
と言っています。
彼のC言語プログラムが動かないのを調べるのは誰の仕事なのでしょうか?
7 :
デフォルトの名無しさん:2007/08/17(金) 15:00:58
9 :
デフォルトの名無しさん:2007/08/17(金) 15:03:08
>>6の仕事は上司に「あの派遣、やる気ないッスよ」とチクること
>>6 その派遣君の言ってることは正しい。
派遣君の作ったプログラム通りに動かないなら、その原因を調べるのはハード屋の仕事だよ。
まあ、ありがちな「H8/300Tiny36064 が僕の (* 思った通り *) に動かない原因を調べるの
は僕の仕事ではありません。」とか言っているなら、殴るなり首切るなり好きにすればいい。
少なくともハードが原因であることまで証明するのがプログラマの仕事。
調べもしないうちから人のせいにするようならプログラマなんか辞めたほうがいい
いつでも辞められるように就職しないで派遣やってるのかもしれんが
こういうのって電源ノイズとかコンデンサが逆に付いてたりとか、はたまた割り込みの知識が欠けてたりとかで、まずハードかソフトかの切り分けで時間がかかるよな。
昔、 PC8001 の CPU が Z80 の互換 CPU(日電製)だったんだけど、実は完全に互換じゃなくて、
本家に存在しない IX, IY の裏レジスタが存在していた。
裏表のレジスタ交換する時、値の保存に IX, IY レジスタを使っていたら、保存したのがどっか行ってしまった。
検証コード書いて立証するまで2週間かかった。楽しいクラブ活動だった。
そんな仕事を派遣にやらせること自体に無理があるかと
>>1 コンパイラは何つかってんの?
HEWとH8C?GCC?
レジスタの定義はちゃんとvolatileでやってっか?
16 :
1:2007/08/18(土) 10:47:40
皆さんありがとうございます。
ちょっといろいろ涙出そうになりました。
>>6 すみません、派遣ではないのですが自分の仕事です。
原因はソフト=自分のせいという前提で考えています。
どこか記述等ミスしていると思うんですが、
知識も経験も足りなくどう原因究明すればいいかも皆目見当つかなかったので、
お尋ねした次第です。
>>14 HEW4です。H8/300のツールチェインで、バージョンは最新にしてあるはずです。
>>15 #define TCNT_0 *((volatile unsigned char *)0xF706) // タイマカウンタ_0
なので、一応書式は合っていると思います。
今後は質問スレへ行くように致します。
ご迷惑おかけします。
>すみません、派遣ではないのですが自分の仕事です。
>原因はソフト=自分のせいという前提で考えています。
>どこか記述等ミスしていると思うんですが、
>知識も経験も足りなくどう原因究明すればいいかも皆目見当つかなかったので、
就職できた新人としてこういう態度が好感が持てるね。
これが派遣だと、「これは僕の仕事ではありません」
「明日から夏休みなので僕は調査できません」「あの人が今のやり方でいいと言いました」
だからねえ
18 :
1:2007/08/18(土) 13:48:59
>>17 ありがとうございます。
年明け前に中途入社して、それから今のファームウェアとC言語を学びました。
実質プログラマ暦半年といったところです。
E8を使っているのですが、問題のタイマZの初期化の段階で、
スタートビットをクリアしたままカウンタを0x0000でクリアし、
その直後に変数へ読み込んだところでストップさせただけでも、
その変数には何故か0x00ffという値が書き込まれています。
どこからどうやって原因を調べればよいでしょうか……。
申し訳ないです、どなたかぜひご教授お願いします。
>>17 > 就職できた新人としてこういう態度が好感が持てるね。
にちゃんにわざわざ単発質問スレ立てるやつなんて、俺なら相手にしない。
そのうち、バグ出しても「にちゃんにこう書けって書いてありました」とか
言われるのがオチだと思うし。
# つーか、削除依頼出してとっとと質問スレに行けよ。
20 :
1:2007/08/18(土) 17:29:39
削除依頼出してきました。
ご迷惑おかけ致しました。
>>19 >そのうち、バグ出しても「にちゃんにこう書けって書いてありました」とか
これ言わせられれば完全勝利じゃないの
16ビットのカウンタなのにchar *とはやるな
使うときに WORDでキャストしてるんだろ
つーか回答なんじゃねーの
25 :
1:2007/08/20(月) 09:44:20
>>22 ありがとうございます!まさにその箇所だったみたいで、
最初の宣言を16bitにしたらカウンタが正常に回り始めました!
>>23 型変換していませんでした……
今まで教習で使っていたのが8ビットのタイマーだったので、
失念していました。未熟者でお恥ずかしいです。
>>2-24 本当に助かりました、ありがとうございました。
今後ご迷惑かけないよう精進します。
26 :
デフォルトの名無しさん:2007/11/06(火) 03:56:49
>>17 >これが派遣だと、
...
>だからねえ
別に当り前じゃん。「常識」的対応なのに、何か問題有るの?
最低限の常識=法律(派遣法)に明記されてるだろ。
>17は常識知らず。文句を言う前に派遣でなく、正社員として
雇え!<これが常識
27 :
デフォルトの名無しさん:2007/11/06(火) 09:23:57
派遣の常識的対応
「これは僕の仕事ではありません」
「明日から夏休みなので僕は調査できません」
「あの人が今のやり方でいいと言いました」
そのへんの話題はマ板でやろうぜ
マ板ってどこ?
ごめん把握した
31 :
ym:2008/08/07(木) 17:23:14
チェック文字列で渡された
文字列が全て'A'〜'Z'の文字で構成されているかをチェックする、
プログラムを教えてください。
for(i=0;
#include <stddef.h>
#include <ctype.h>
#define FALSE ( 0 != 0 )
#define TRUE ( ! FALSE )
int strisupper( char const* psz )
{
while ( *psz )
{
if ( ! isupper( *psz++ ) )
{
return FALSE;
}
}
return TRUE;
}
int strisnupper( char const* psz, size_t cch )
{
while ( *psz && cch-- )
{
if ( ! isupper( *psz++ ) )
{
return FALSE;
}
}
return TRUE;
}
H8は結構ややこしい所あるからなぁ
うちなんかそもそも相性で全然動かない事あったし
PC変えたら一気に解決だったし。
どっちかというとハードの方を俺は経験上疑う。