X



トップページ電気・電子
1002コメント334KB
AVRマイコン総合スレ Part46
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001774ワット発電中さん
垢版 |
2022/03/27(日) 03:24:57.51ID:JSxfRZmF
個人でも手軽に使えるAtmelのAVRマイクロプロセッサを中心に語るスレッドです

<公式サイト>
http://www.microchip.com/design-centers/8-bit/microchip-avr-mcus
・AVR Libc Reference Manual:
https://www.microchip.com/webdoc/avrlibcreferencemanual/install_tools_1install_avr_libc.html

<参考になるページ>
・AVRWiki: http://avrwiki.sourceforge.jp/cgi-bin/wiki.cgi?page=AVRWiki
・AVR情報多い-chanさんのpage: http://elm-chan.org/
・avrfreaks.net avrgccその他AVR関連の総本山(英語): http://www.avrfreaks.net/
・TAP-Config: http://ww2.tiki.ne.jp/~maro/
・AVR.jp 日本語のAVR資料他: http://www.avr.jp/
・ATMega168日本語データシート(翻訳中): http://awawa.hariko.com/chira-ura/
・AVR アセンブラのマニュアル(ユーザーズガイド): http://www.atmel.com/Images/doc1022.pdf
・インストラクション(命令セット)の解説: http://www.atmel.com/Images/doc0856.pdf
・条件付きアセンブルの解説(アセンブラ ver. 1.74対応):http://www.atmel.com/Images/doc2550.pdf
・アセンブラとCの連携方法: http://www.atmel.com/Images/doc1234.pdf

前スレ
AVRマイコン総合スレ Part45
https://rio2016.5ch.net/test/read.cgi/denki/1635669872/
0852774ワット発電中さん
垢版 |
2022/06/30(木) 11:36:12.65ID:5TIyh9Ws
マイコンの取り扱いを一から始めるなら、多分アセンブラの方が簡単じゃね。
IOレジスタについてはどっちでやっても覚えること変わらないし、むしろ何かするのに C ではどう書くことになってるのかを知る必要がある。
アセンブラなら単純にそれをする命令を置くだけで、非常に直感的。
いちいち自前でレジスタ操作しないでありもののライブラリ使っとけということで C を勧めるのは分かるけど、言語は本質じゃない。
0853774ワット発電中さん
垢版 |
2022/06/30(木) 12:39:40.46ID:bx2/TFja
開発カンキョー様が整えて用意してくれてた諸々の初期化処理の数々を
いちいち自前で工面する手間を考えると
簡単と言えるのか大いに疑問といわざるをえないんじゃね?しらんけど;^p^)
0854774ワット発電中さん
垢版 |
2022/06/30(木) 13:24:59.80ID:8fmlRRp1
ライブラリ云々なら、別にASMから呼んだってっていいんだから、本質じゃねえわな
0855774ワット発電中さん
垢版 |
2022/06/30(木) 14:52:51.70ID:8fmlRRp1
え~と、いろいろでてますが
最初に出したコード部分については、動いてるコードと一致しましたので
原因は他の部分にあるようです
データシートも見ずにうんたらかんたら言ってる人もいますが
データシートなしにあんなレジスタ名わかんないですからね
的外してますよ
0856774ワット発電中さん
垢版 |
2022/06/30(木) 14:55:53.19ID:vbtaX0ke
マイコンのレジスタを使ってみたい人と
マイコンで何かを動かしたいあるいは処理したい人とでも、何をもって簡単とするかは違ってくるな。
そこを見ないでどっちが簡単と断じることができるのは、自分の観点しかないからだろう。
0857774ワット発電中さん
垢版 |
2022/06/30(木) 15:39:51.73ID:8fmlRRp1
ごちゃごちゃ言わんでも、普段使ってる物のほうが簡単ってことよ

日本人は日本語、中国人は中国語のほうが簡単にきまっとるわい

ちなみに日本語の習得難易度は各言語の中で唯一、「悪夢」だそうな
0858774ワット発電中さん
垢版 |
2022/06/30(木) 15:46:41.50ID:omjC7hD8
>>849
書き込んで一回だけ動作するようなレジスタ以外は書き込み順は関係ないよ。
UARTの送信データくらいじゃね?

sei してないから割り込み来ないとかじゃないよね?
0860774ワット発電中さん
垢版 |
2022/06/30(木) 15:53:38.50ID:8fmlRRp1
>>858
seiはしてるよ
念のため最初にcliして設定終わって無限ループ入る前にsei
そこらへんは基本でしょ、てか、同じ機能の設定に使うビット群が複数レジスタに分散してるとかで
データシートが読みづらい、これがriscあるあるか~ってw
0861774ワット発電中さん
垢版 |
2022/06/30(木) 16:05:27.54ID:z4HzI4/0
>>858
データシートで16bitレジスタアクセス手順を確認した方がいいよ。
8bit プロセッサで 16bit値の上下バイトを同じクロックで確定するため、内部では TEMPレジスタを使ってる。
tiny10 では上位バイト書き込みは TEMPレジスタに書かれ、下位バイト書き込み時に TEMPレジスタの値と合わせて 16bit を一息に適用する。
だから上位下位の順で書かないといけない。
0862774ワット発電中さん
垢版 |
2022/06/30(木) 16:15:57.06ID:8fmlRRp1
>>861

先に出したコードは動いてるのと一致したから、そこもOK

なんか見逃してるんだろうけどなあ
0863774ワット発電中さん
垢版 |
2022/06/30(木) 16:38:09.55ID:omjC7hD8
>>860
「そこらへんは基本でしょ」とか言われても
>>817 に書いてないだろ。コードの一部分だけ出してその言い草か。


>>861
>データシートで16bitレジスタアクセス手順を確認した方がいいよ。
そこらへんは基本でしょ
0865774ワット発電中さん
垢版 |
2022/06/30(木) 16:41:28.42ID:2X8+NCv/
>>862
出したコード動いてるなら
動いてないコード出さないと意味ない
簡略化してスタートアップコードから全部出した方が話が早そう
0866774ワット発電中さん
垢版 |
2022/06/30(木) 16:43:08.33ID:8fmlRRp1
>>863
>>その言い草か。

べつにやしめてるつもりは無いんだが
そううけとれちゃったんなら、ごめんな
0867774ワット発電中さん
垢版 |
2022/06/30(木) 16:46:03.00ID:8fmlRRp1
>>865
出してもいいけど
3行で長いって怒るひとが居るから、だいじょうぶかなあw
0868774ワット発電中さん
垢版 |
2022/06/30(木) 16:53:59.77ID:2X8+NCv/
>>867
だから 簡略化してって

つか、どこまで動いてて、どこから動いてないか
理解してる?
0869774ワット発電中さん
垢版 |
2022/06/30(木) 17:01:37.38ID:8fmlRRp1
行大すぎで書き込みできんかった
分割するわ

.device atmega328p
.equ tccr1a = $80
.equ tccr1b = $81
.equ tcnt1l = $84
.equ tcnt1h = $85
.equ ocr1al = $88
.equ ocr1ah = $89
.equ ocr1bl = $8a
.equ ocr1bh = $8b
.equ timsk1 = $6f
.equ sreg = $5f
.equ portd = $2b
.equ ddrd = $2a
.equ pind =$29
0870774ワット発電中さん
垢版 |
2022/06/30(木) 17:02:19.89ID:8fmlRRp1
.cseg
rjmp start ;RESET 電源ON, WDT, BOD等の各種リセット
reti ;INT0 外部割り込み要求0
reti ;INT1 外部割り込み要求1
reti ;PCINT0 (PCI0) ピン変化0群割り込み要求
reti ;PCINT1 (PCI1) ピン変化1群割り込み要求
reti ;PCINT2 (PCI2) ピン変化2群割り込み要求
reti ;WDT ウォッチドッグ計時完了
reti ;TIMER2_COMPA タイマ/カウンタ2 比較A一致
reti ;TIMER2_COMPB タイマ/カウンタ2 比較B一致
reti ;TIMER2_OVF タイマ/カウンタ2 溢れ
rjmp int_500 ;TIMER1_CAPT タイマ/カウンタ1 捕獲発生
rjmp int_500 ;TIMER1_COMPA タイマ/カウンタ1 比較A一致
rjmp int_500 ;TIMER1_COMPB タイマ/カウンタ1 比較B一致
rjmp int_500 ;TIMER1_OVF タイマ/カウンタ1 溢れ
reti ;TIMER0_COMPA タイマ/カウンタ0 比較A一致
reti ;TIMER0_COMPB タイマ/カウンタ0 比較B一致
reti ;TIMER0_OVF タイマ/カウンタ0 溢れ
reti ;SPI0_STC SPI0 転送完了
reti ;USART0_RX USART0 受信完了
reti ;USART0_UDRE USART0 送信緩衝部空き
reti ;USART0_TX USART0 送信完了
reti ;ADC A/D変換器 変換完了
reti ;EE_RDY EEPROM 操作可
reti ;ANALOG_COMP アナログ比較器 出力遷移
reti ;TWI0 TWI0 状態変化
reti ;SPM_READY SPM命令 操作可
reti ;USART0_START USART0 フレーム開始検出
reti ;PCINT3 (PCI3) ピン変化3群割り込み要求
reti ;USART1_RX USART1 受信完了
reti ;USART1_UDRE USART1 送信緩衝部空き
reti ;USART1_TX USART1 送信完了
reti ;USART1_START USART1 フレーム開始検出
reti ;TIMER3_CAPT タイマ/カウンタ3 捕獲発生
reti ;TIMER3_COMPA タイマ/カウンタ3 比較A一致
reti ;TIMER3_COMPB タイマ/カウンタ3 比較B一致
reti ;TIMER3_OVF タイマ/カウンタ3 溢れ
reti ;CFD クロック障害検出
reti ;PTC_EOC 周辺機能接触制御器 変換終了
reti ;PTC_WCOMP 周辺機能接触制御器 窓比較動作
reti ;SPI1_STC SPI1 転送完了
reti ;TWI1 TWI1 状態変化
reti ;TIMER4_CAPT タイマ/カウンタ4 捕獲発生
reti ;TIMER4_COMPA タイマ/カウンタ4 比較A一致
reti ;TIMER4_COMPB タイマ/カウンタ4 比較B一致
reti ;TIMER4_OVF タイマ/カウンタ4 溢れ
0871774ワット発電中さん
垢版 |
2022/06/30(木) 17:03:06.63ID:8fmlRRp1
start:

cli

;pd2出力
ldi r16,$04
sts ddrd,r16
sts portd,r16 ;点灯

;tccr1a ctcモード  pinout無効
ldi r17,0
sts tccr1a,r17

;tccr1b 分周なし ctcモード

ldi r17,9
sts tccr1b,r17

;ocr1a 7999 $1f3f
ldi r17,$1f
ldi r16,$3f
sts ocr1ah,r17
sts ocr1al,r16

;tcnt1=0
ldi r16,0
ldi r17,0
sts tcnt1h,r17
sts tcnt1l,r16
;timsk 一致割り込み許可

ldi r16,2
sts timsk1,r16


sei

loop: rjmp loop


int_500:

ldi r16,0
sts portd,r16 ;消灯、一度でも割り込まれれば消えるはずだが・・・
reti
0872774ワット発電中さん
垢版 |
2022/06/30(木) 19:13:16.67ID:1i4HGX75
>>871
シミュレータで動かしてたみたら?
レジスタやフラグの動きも全部見られるよ。
0873774ワット発電中さん
垢版 |
2022/06/30(木) 20:01:34.00ID:E5Qx2iXg
だから、なんでSRAMに書き込むんだよ
何一つ前進してねぇ…

ってか、本質的なことを理解せず、つまみ食い
しては「分かった気」になって、うまくいかないと
アラシさながらに書き込み、揶揄されると逆ギレ
0874774ワット発電中さん
垢版 |
2022/06/30(木) 20:07:47.84ID:za3k4qdP
ページまで教えて貰ったデータシートを読んでないのか、
読んでも理解する能力がないのか…
0875774ワット発電中さん
垢版 |
2022/06/30(木) 20:10:02.76ID:NuG2D9Tn
>>873
汎用レジスタもIOレジスタもSRAMもNVMも sts/lds でシームレスにアクセスできるでしょ
0876774ワット発電中さん
垢版 |
2022/06/30(木) 20:29:38.48ID:jtJRhqGJ
例えばPORTDがIOアドレスで定義されていたらSTS/LDSではアクセスできない。
メモリアドレスで再定義しないと。
0880774ワット発電中さん
垢版 |
2022/06/30(木) 20:51:34.10ID:8fmlRRp1
>>879
まあまあ、一部だけ見て反応するのはネラーの特徴だから、しょうがねえよ
資料云々言ってる人も居るけど、入手出来てないって書いてるの読んでくれてないみたいだしw
0882774ワット発電中さん
垢版 |
2022/06/30(木) 21:02:21.71ID:9lrpcowf
割鋳込み → 割り込み
CPUはmega328だよね
0883774ワット発電中さん
垢版 |
2022/06/30(木) 21:09:21.04ID:8fmlRRp1
>>881
あ、ほんまや、でかいねこれw
でもベクターの位置は12番目で合ってるから、メモリ食ってるだけと思います
0884774ワット発電中さん
垢版 |
2022/06/30(木) 21:12:24.81ID:9lrpcowf
ゴメン、そうだよね、冗長なだけで動かない原因とはならないな
0885774ワット発電中さん
垢版 |
2022/06/30(木) 21:15:45.83ID:2X8+NCv/
>>883
ソースが出たから誰かが解決するのは時間の問題だと思うけど
あと出しでもめないように

1. マイコンの動作クロック ?
2. 書き込んだフューズの値
3. アセンブルするときのコマンド全部
4. 逆アセンブルリスト startから int_500まででOK

もあると安心
0886774ワット発電中さん
垢版 |
2022/06/30(木) 21:20:46.47ID:8fmlRRp1
>>882
328ですよ~
328系の資料しか開いてなかったはずなんだけど
どっからコピったんだ>俺w
0887774ワット発電中さん
垢版 |
2022/06/30(木) 21:34:29.11ID:8fmlRRp1
では、後出し行きますw

クロック4mhz

ヒューズ
h D9
l E6
e FF

コマンド
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avrassembler\avrasm2.exe" -fI -l 0list.txt -m 0map.txt clock.asm


リスト
start:

00002d 94f8 cli

;pd2出力
00002e e004 ldi r16,$04
00002f 9300 002a sts ddrd,r16
000031 9300 002b sts portd,r16 ;点灯

;tccr1a ctcモード  pinout無効
000033 e010 ldi r17,0
000034 9310 0080 sts tccr1a,r17

;tccr1b 分周なし ctcモード

000036 e019 ldi r17,9
000037 9310 0081 sts tccr1b,r17

;ocr1a 7999 $1f3f
000039 e11f ldi r17,$1f
00003a e30f ldi r16,$3f
00003b 9310 0089 sts ocr1ah,r17
00003d 9300 0088 sts ocr1al,r16

;tcnt1=0
00003f e000 ldi r16,0
000040 e010 ldi r17,0
000041 9310 0085 sts tcnt1h,r17
000043 9300 0084 sts tcnt1l,r16
;timsk 一致割り込み許可

000045 e002 ldi r16,2
000046 9300 006f sts timsk1,r16


000048 9478 sei

000049 cfff loop: rjmp loop


int_500:

00004a e000 ldi r16,0
00004b 9300 002b sts portd,r16 ;消灯、一度でも割り込まれれば消えるはずだが・・・
00004d 9518 reti
0889774ワット発電中さん
垢版 |
2022/06/30(木) 22:04:12.90ID:9lrpcowf
昔作ったプログラムを見たら、TIFR1レジスタにも設定してた
あまりに昔すぎて内容をよく覚えていない、参考になればいいけど
;----- setup timer#1:CTC 0.5S inteval for time base
 clr ZL        ;not output, OR1A_CTC
 sts TCCR1A,ZL   ; WGM1,0=0,0
 ldi ZL,0b00001101 ;prescale 8M/2/1024 (125nS to 256uS)
 sts TCCR1B,ZL   ; WGM3,2=0,1 CS2,1,0=1,0,1
 ldi ZL,HIGH(3906) ;19531 * 256uS = 0.5S
 sts OCR1AH,ZL
 ldi ZL,LOW(3906)
 sts OCR1AL,ZL
 ldi ZL,0b00000010  ;OCF1A flag
 sts TIFR1,ZL    ;enable int.
 sts TIMSK1,ZL    ;set mask flag
0890774ワット発電中さん
垢版 |
2022/06/30(木) 22:54:57.32ID:8fmlRRp1
>>889
ありがとうです
TIFR1設定追加してみましたが変化無しです

TIFRってなんぞ?と見てみたらすでに見てましたw
マッチした後に設定されて、割り込みが発生するとかで
ユーザーがいじらなくてもいいとこみたいな感じだったので
意識に残ってなかったですね、まあavr.jpの資料ですけどw
そっからまた、他のレジスタにも波及するようなので、
そっちが、なんか関係あるかもしれません
0891774ワット発電中さん
垢版 |
2022/06/30(木) 23:18:00.05ID:cyt307Ia
>>849
横からですが、そういうのあるんですね。
考えたことなかったです。気にしてみます!
0892774ワット発電中さん
垢版 |
2022/06/30(木) 23:20:28.97ID:cyt307Ia
>>857
日本語を習得した英語圏の人でも、難しいのは英語。という声もあるので諸説あるようです
0898774ワット発電中さん
垢版 |
2022/07/01(金) 07:59:44.34ID:f95IkACE
というかシミュレータ便利だよ。
Atmel Studio だか Microchip Studio 入れれば使えるしタダだし。
フラグ変化のタイミングやクロック数とか、実機じゃ確認しづらいことも確認できる。
全部の割り込みベクタにブレーク張っとけば割り込みベクタの間違いにも気付けるし。

まあ、いろいろ変な挙動も多いんだけどね。
CPUステータスレジスタを読むコードをシングルステップで実行してしまうと Iフラグがおちちゃったり、シングルステップで流していくとタイマー割り込みが入らなかったり。
power down な sleep は実質ハングアップするから、そういうのを含むコードはすごく追いづらいってのもあるし、周辺IO によってはクソの役にも立たないと思うけど。
でもそれを差し引いても便利過ぎる。
実際に見てみないと分からないデータシートから読み取りづらい挙動が多いよ。
0900774ワット発電中さん
垢版 |
2022/07/01(金) 08:20:16.49ID:f95IkACE
>>899
プロジェクトのプロパティ、Tool のタブでデバッガとして Simulator を選択。
F9 でブレーク張って F5 で実行だけど、Debugメニューの中見れば操作方法は分かると思う。
ちなみにディレクトリパスにマルチバイト文字が入ってるとうまく動かない。
0901774ワット発電中さん
垢版 |
2022/07/01(金) 08:23:12.45ID:Vf83u1x2
>>900
マイクロチップスタジオのプロジェクトとして作っておかないとだめな感じですか?
0902774ワット発電中さん
垢版 |
2022/07/01(金) 08:27:30.82ID:f95IkACE
>>901
それ以外でやったことないけど、まだ実験コードなんだからコピペしちゃえばいい。
アセンブラプロジェクトを作ると main.asm ってのが自動的に出来上がるから、そこに。
プロジェクトが自動的に include するデバイス毎の定義と自前の equ が被る場所はちょっと調整する必要があるけど、これから作るものは標準の定義に合わせていくといい。
0904774ワット発電中さん
垢版 |
2022/07/01(金) 09:59:32.96ID:Vf83u1x2
いきなりEQUかぶってんで詰まりますね
スタジオがデフォで読み込んでる定義を抑制できればいいんですが・・・
EQUを全部コメントアウトすればとりあえず先へ進めるけど
デフォの定義はメモリーアドレスなのか、IOアドレスなのかすらわからない
この件でキレてた人居たからIOですかね?
うん別名で定義しなおしますか
0905774ワット発電中さん
垢版 |
2022/07/01(金) 10:41:22.31ID:Vu/9z4cE
>>904
in/out でアクセスできるレジスタはそっち使う方が命令長も実行クロックも短くなるよ。
sts/lds は 2ワード命令
0906774ワット発電中さん
垢版 |
2022/07/01(金) 10:49:58.28ID:Vf83u1x2
>>905
outだと、大きいアドレスが来ると届かなくてASMに怒られるんで
めんどくさくないようにメモリアクセスで統一してます

あと数バイトたりね~とかになったら、削ります
0907774ワット発電中さん
垢版 |
2022/07/01(金) 11:39:18.71ID:r6MXzqY0
I/Oアドレスの問題もそうだけど、命令の対象レジスタの制限、即値の制限など、
AVRには色々と制約が多い。
生まれて初めてAVRでアセンブルしたときに
エラーメッセージ(この命令はR16〜R31でしか使えません)が一杯出てきた。
「なんだよぉ、コード16ビットにしちゃ命令の種類が多いなと感心したのに
 そういうカラクリだったのね、詐欺みたいなCPUだな」
と思ったw

でも3回ほどプログラムを作った後は、
「良く出来たPUだな、プログラミングが楽しいCPUだな
 これからも使いつづけよう」
に変り、今に至るw
逆に3回ほど使って「二度と使うか!」と思ったのがPIC。
(PICファンの人、ゴメンね、相性です)w
0908774ワット発電中さん
垢版 |
2022/07/01(金) 11:41:44.28ID:Vf83u1x2
あるあるw
16ビット加算ないのぉ?って命令表見てたら、あるじゃ~ん
もっとよく見るとオペランド6bitってwww、こけたよ
0909774ワット発電中さん
垢版 |
2022/07/01(金) 11:58:06.54ID:cNCsUukh
>>896
少なくともMicrochip Stadio7.0+中華328P(16MHz)では意図したであろう動作はしてるよ
リセット -> PD2(High) -> 8ms -> PD2(Low)
たぶん\(^o^)/
0910774ワット発電中さん
垢版 |
2022/07/01(金) 12:16:27.43ID:Vu/9z4cE
>>909
ほんとだ、TIMER1 COMPA のベクタアドレスは 0x16 だった。
同じデータシートに複数モデルのベクタ表があって見間違ってた。
0912774ワット発電中さん
垢版 |
2022/07/01(金) 12:39:47.35ID:Vf83u1x2
>>910
まあ、アップした表も間違ってんだけど
ベクター位置は合ってるからまあいいかで放置w
複数モデルのベクター表載ってるデーターシートがあるの?
そこからコピったのかな>俺w
0913774ワット発電中さん
垢版 |
2022/07/01(金) 12:44:01.51ID:Vu/9z4cE
>>912
ベクター位置は合ってるって、>>870 は間違ってるけど今試してるやつは修正済みということ?
0916774ワット発電中さん
垢版 |
2022/07/01(金) 13:01:48.10ID:Vf83u1x2
>>909
実機で動いてんですか?
じゃあコードのもんだいじゃなくて他だと
う~ん
0918774ワット発電中さん
垢版 |
2022/07/01(金) 13:32:52.44ID:r6MXzqY0
ベクタ、2バイト確保してる?
0919774ワット発電中さん
垢版 |
2022/07/01(金) 13:35:31.01ID:Vf83u1x2
cseg上だからどうやっても一バイト間隔にはできませんけど
0920774ワット発電中さん
垢版 |
2022/07/01(金) 13:59:10.35ID:Vu/9z4cE
>>919
アドレスの単位はバイトじゃなくてワード。
メモリアクセスのためのメモリマップ上のアドレスはバイト単位でポイントできるけど、それはコードのアドレスの2倍が基準。
0921774ワット発電中さん
垢版 |
2022/07/01(金) 14:07:24.35ID:Vf83u1x2
アセンブラでcsegに直配置すると、ワード単位でしか配置できないので2バイト確保できてないなんて心配は要らないと思いますが?
0924774ワット発電中さん
垢版 |
2022/07/01(金) 14:45:42.98ID:Vf83u1x2
>>923
その表は初めて見ました
ん~、4バイトごとに配置しろってことですか?
試します


動きました
LED消灯したので、交互にオンオフするように書き換えて
ばっちり点滅してます



感謝感激

あり豪ございます
0925774ワット発電中さん
垢版 |
2022/07/01(金) 14:55:46.02ID:Vu/9z4cE
>>924
program address と言われたら、バイトじゃなくワードアドレスってことに留意ね。
アドレス 0x0000 の次の命令のアドレスは 0x0001 ね。
0926774ワット発電中さん
垢版 |
2022/07/01(金) 15:02:58.16ID:Vf83u1x2
>>925
私がcsegアドレスって言ってたのがそれなんで
そこに見解の相違は無いと思います
なにはともあれ、たすかりまし、ありがとう
0927774ワット発電中さん
垢版 |
2022/07/01(金) 15:15:58.43ID:Vu/9z4cE
>>926
そっちじゃなくデータシートの読み方だよ。
ベクタ12 のアドレスは 0x0016 って書いてあったでしょ。
これはバイトアドレスじゃなくワードアドレスね。
ともかく動いてよかったね。
0928774ワット発電中さん
垢版 |
2022/07/01(金) 15:18:12.34ID:Vf83u1x2
>>927
こっちで見てた表はアドレス無いやつです
12番目しかわかりませんでした
0929774ワット発電中さん
垢版 |
2022/07/01(金) 15:21:04.92ID:Vf83u1x2
これ下位のCPUだったら、全然気が付いてなかったかもですね
ベクターサイズ網羅した表ほしいですねえ
0930774ワット発電中さん
垢版 |
2022/07/01(金) 15:49:04.61ID:Vu/9z4cE
>>929
ちなみに番号歯抜けもあるからね。
少なくともオフィシャルのデータシートにはアドレスも書いてあるよ。
秋月に貼られてるデータシートにも書いてあるから見ておくといいよ。
0931774ワット発電中さん
垢版 |
2022/07/01(金) 16:18:51.95ID:Vf83u1x2
>>930
avr.jpのにも書いてありました
物自体が他のcpuのだし
謎な所から拾ってしまったのが敗因ですね
改めてコピペしようとしたら、すんなりコピーさせてくれなかったので
あ、なるほど、これでwebに探しに行って、変なの拾っちまったわけかと納得
0932774ワット発電中さん
垢版 |
2022/07/01(金) 16:58:15.58ID:/u9l3TD8
そういう違いを吸収して移植性を高めるために
MPU毎に定義マクロ(.inc)があるのに、
なぜ使わないんだろう

何が何でも、車輪を再発明しなきゃ気がすまない
タイプの人?
0935774ワット発電中さん
垢版 |
2022/07/01(金) 17:55:05.57ID:Vu/9z4cE
>>934
定義マクロ使ってベクタを書くサンプル見せてください。参考にしたい。
0938774ワット発電中さん
垢版 |
2022/07/01(金) 18:04:21.03ID:/u9l3TD8
>>937
だとすると、わざわざプロジェクトの
プロパティを編集してatmel studioが
用意してくれたアセンブラオプションを
毎回削除してるわけ?
0939774ワット発電中さん
垢版 |
2022/07/01(金) 18:09:06.16ID:Vu/9z4cE
>>938
え、どういうこと?
普通にプロジェクト作ると main.asm の中身んてただの無限ループひとつでしょ?
0940774ワット発電中さん
垢版 |
2022/07/01(金) 18:10:26.44ID:Vu/9z4cE
>>938
いいからマクロ定義使ったベクタ定義見せてくれよ。
もしかして全部のベクタに org 付けるって話?
0942774ワット発電中さん
垢版 |
2022/07/01(金) 18:23:30.29ID:r6MXzqY0
そんなものが無くてもアセンブラで書けるけど(サンプル>>491
取りあえず言える事は、<マニュアルは眼光紙背に徹するほどいちいち叮嚀に読もう>
ベクタが2Wであるのはマニュアルを見さえすれば気が付くし、納得する。
0943774ワット発電中さん
垢版 |
2022/07/01(金) 18:36:52.11ID:Vu/9z4cE
>>941
ベクタ以外の実処理の org はどう書くの?
ベクタの最終アドレスの定義がある?

まあ実際全部のベクタを org で指定すればどのプロセッサにも適用できそうなコードにはなるんだろうし、それなりのメリットはあるんだろうね。
でも多分自分はやらないなぁ
よく空きベクタに別のコード置いたりしてクロックやらサイズやら節約してるってのもあるし、どのプロセッサでも動くようなものじゃなくターゲットが明確なことが多いからな。
アセンブラで書くのは1クロック1バイトを削りたいからという目的もあって、中途半端な移植性のために無駄の出る書き方するなら本末転倒だ。
もちろん個人のスタンスの話で、一般論を語るつもりではない。
0945774ワット発電中さん
垢版 |
2022/07/01(金) 18:40:32.97ID:/u9l3TD8
>>943
あの?なんでコードサイズに影響すると思ったの??
もしかして、まるで理解できてない?
0946774ワット発電中さん
垢版 |
2022/07/01(金) 18:43:37.12ID:Vf83u1x2
とりあえず、べくたーを修正中
4バイト間隔にするために、とりあえずnopで埋めたけど
なんかかっこ悪いな~
0947774ワット発電中さん
垢版 |
2022/07/01(金) 18:45:05.34ID:Vu/9z4cE
>>945
空きベクタの領域にコードを書くなら、そのアドレスを強く意識する必要があるでしょ。
そのアドレスを隠蔽する書き方じゃ目的を果たせないよね?
0949774ワット発電中さん
垢版 |
2022/07/01(金) 21:05:33.05ID:48afCI/l
>>898

これ
外部ピンを互いに任意に接続できるようにしてくれるともう無敵なんだがなあ
0951774ワット発電中さん
垢版 |
2022/07/01(金) 21:32:32.67ID:Vf83u1x2
>>902
使い方がだいたわかってきたところで、答え出ちゃったので使う機会がなくなっちゃいましたけど
ありがとう
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況