2024年6月 この範囲を時系列順で読む この範囲をファイルに出力する
今更ですが、PIC の開発環境を MPLAB-X に完全移行しています。このところ PIC のソースコードを書いていなかったので取り急ぎの必要がなかったのですが、DMX のスプリッターを増産することになったのでこの際といったところです。
問題点はアセンブラが MPASM から XC8 になったためソースコードの記述が違うことです。
以前にも少し書いたのですが、整理したので改めて揚げてみます。
1)ラベル文字の最後に ' : ' をつける
例:
--- MPASM ---
LOOP
NOP
GOTO LOOP
--- xc8_asm ---
LOOP:
NOP
GOTO LOOP
2)0x以外の数値識別子が異なる
例:
--- MPASM ---
2進数 B'01001111'
8進数 O'72'
10進数 D'34' または .34
16進数 H'4F' または 0x4F
--- xc8_asm ---
2進数 01001111B
8進数 72Q
10進数 34
16進数 04FH または 0x4F
3)cblock は使えないので equ を使用する
4)org の代わりに、psect を使用する
コードの開始アドレスを指示するのだが、二か所に記述する。これまで ORG を書いた本文の位置と Linker に記述。
例1:
インデックスの名前を Code_Start としアドレスを 0x0000 とする場合。
(1) 開始アドレスを与えたいコードの直上に次を記述する。ORG の代わりに用いるものである。
PSECT Code_Start,class=CODE,delta=2
(2) <project properties ダイアログ> <pic-as Linker> <Custom linker options> に以下を記述する。
-pStart_Code=0h
例2:
インデックスの名前を Int_Vec としアドレスを 0x0004 とする場合。
(1) 開始アドレスを与えたいコードの直上に次を記述する。ORG の代わりに用いるものである。
PSECT Int_Vec,class=CODE,delta=2
(2) <project properties ダイアログ> <pic-as Linker> <Custom linker options> に以下を記述する。
-pInt_Vec=4h
例3:
インデックスの名前を Tables としアドレスを 0x0400 とする場合。
(1) 開始アドレスを与えたいコードの直上に次を記述する。ORG の代わりに用いるものである。
PSECT Tables,class=CODE,delta=2
(2) <project properties ダイアログ> <pic-as Linker> <Custom linker options> に以下を記述する。
-pTables=400h
5)コンフィグ指定は、xc8 の形式とする
MPLABX のメニュー [Production] [Set Configuration Bits] を用いると各項目の設定から以下のようなコードの生成まで出来るので本文の冒頭にコピペする。
例:
; CONFIG1
CONFIG FOSC = EXTRCCLK ; Oscillator Selection bits (EXTRC oscillator; CLKO function on RA6/OSC2/CLKO)
CONFIG WDTE = ON ; Watchdog Timer Enable bit (WDT enabled)
CONFIG PWRTE = OFF ; Power-up Timer Enable bit (PWRT disabled)
CONFIG MCLRE = ON ; RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
CONFIG BOREN = ON ; Brown-out Reset Enable bit (BOR enabled)
CONFIG LVP = ON ; Low-Voltage Programming Enable bit (RB3/PGM pin has PGM function, Low-Voltage Programming enabled)
CONFIG CPD = OFF ; Data EE Memory Code Protection bit (Code protection off)
CONFIG WRT = OFF ; Flash Program Memory Write Enable bits (Write protection off)
CONFIG CCPMX = RB0 ; CCP1 Pin Selection bit (CCP1 function on RB0)
CONFIG CP = OFF ; Flash Program Memory Code Protection bit (Code protection off)
; CONFIG2
CONFIG FCMEN = ON ; Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor enabled)
CONFIG IESO = ON ; Internal External Switchover bit (Internal External Switchover mode enabled)
6)オペランドでの SFR の表記に注意する
詳細が長すぎるのでここでは割愛
追記
不思議な現象が発生。
MPLABXv5.5ではアセンプルが通るのにv6.2ではエラーが出て通らないプロジェクトがある。アセンブラはどちらも同じバージョンのXC8。
エラーメッセージを見ると書いたソースコードではなく内部的なツールにエラーが起きているとある。
さて、とこから詰めていきましょうか。
#PIC
問題点はアセンブラが MPASM から XC8 になったためソースコードの記述が違うことです。
以前にも少し書いたのですが、整理したので改めて揚げてみます。
1)ラベル文字の最後に ' : ' をつける
例:
--- MPASM ---
LOOP
NOP
GOTO LOOP
--- xc8_asm ---
LOOP:
NOP
GOTO LOOP
2)0x以外の数値識別子が異なる
例:
--- MPASM ---
2進数 B'01001111'
8進数 O'72'
10進数 D'34' または .34
16進数 H'4F' または 0x4F
--- xc8_asm ---
2進数 01001111B
8進数 72Q
10進数 34
16進数 04FH または 0x4F
3)cblock は使えないので equ を使用する
4)org の代わりに、psect を使用する
コードの開始アドレスを指示するのだが、二か所に記述する。これまで ORG を書いた本文の位置と Linker に記述。
例1:
インデックスの名前を Code_Start としアドレスを 0x0000 とする場合。
(1) 開始アドレスを与えたいコードの直上に次を記述する。ORG の代わりに用いるものである。
PSECT Code_Start,class=CODE,delta=2
(2) <project properties ダイアログ> <pic-as Linker> <Custom linker options> に以下を記述する。
-pStart_Code=0h
例2:
インデックスの名前を Int_Vec としアドレスを 0x0004 とする場合。
(1) 開始アドレスを与えたいコードの直上に次を記述する。ORG の代わりに用いるものである。
PSECT Int_Vec,class=CODE,delta=2
(2) <project properties ダイアログ> <pic-as Linker> <Custom linker options> に以下を記述する。
-pInt_Vec=4h
例3:
インデックスの名前を Tables としアドレスを 0x0400 とする場合。
(1) 開始アドレスを与えたいコードの直上に次を記述する。ORG の代わりに用いるものである。
PSECT Tables,class=CODE,delta=2
(2) <project properties ダイアログ> <pic-as Linker> <Custom linker options> に以下を記述する。
-pTables=400h
5)コンフィグ指定は、xc8 の形式とする
MPLABX のメニュー [Production] [Set Configuration Bits] を用いると各項目の設定から以下のようなコードの生成まで出来るので本文の冒頭にコピペする。
例:
; CONFIG1
CONFIG FOSC = EXTRCCLK ; Oscillator Selection bits (EXTRC oscillator; CLKO function on RA6/OSC2/CLKO)
CONFIG WDTE = ON ; Watchdog Timer Enable bit (WDT enabled)
CONFIG PWRTE = OFF ; Power-up Timer Enable bit (PWRT disabled)
CONFIG MCLRE = ON ; RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
CONFIG BOREN = ON ; Brown-out Reset Enable bit (BOR enabled)
CONFIG LVP = ON ; Low-Voltage Programming Enable bit (RB3/PGM pin has PGM function, Low-Voltage Programming enabled)
CONFIG CPD = OFF ; Data EE Memory Code Protection bit (Code protection off)
CONFIG WRT = OFF ; Flash Program Memory Write Enable bits (Write protection off)
CONFIG CCPMX = RB0 ; CCP1 Pin Selection bit (CCP1 function on RB0)
CONFIG CP = OFF ; Flash Program Memory Code Protection bit (Code protection off)
; CONFIG2
CONFIG FCMEN = ON ; Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor enabled)
CONFIG IESO = ON ; Internal External Switchover bit (Internal External Switchover mode enabled)
6)オペランドでの SFR の表記に注意する
詳細が長すぎるのでここでは割愛
追記
不思議な現象が発生。
MPLABXv5.5ではアセンプルが通るのにv6.2ではエラーが出て通らないプロジェクトがある。アセンブラはどちらも同じバージョンのXC8。
エラーメッセージを見ると書いたソースコードではなく内部的なツールにエラーが起きているとある。
さて、とこから詰めていきましょうか。
#PIC
2024年5月 この範囲を時系列順で読む この範囲をファイルに出力する
10年以上前に作った調光ユニットでフリッカーが出るとの話しがありました。状況を再現出来ないので原因がわかりませんでしたが、予防策を突然閃く。ACのゼロクロス時にはSCRへのトリガー信号を強制的に切るのです。ある意味簡単なことですが、なかなか思い付かなかった自分に反省。調光装置は望むレベルで点灯させるのが役目ですが、確実に消灯することがとても大事です。
フリッカー発生条件ので検証は不可能ですが、マイコンのファームウェアを修正したところ前よりもSCRのスイッチングが安定しているようです。
ソースコードのコメントを数年後の自分への申し送りとして事細かに書いていたことも助けになりました。勢いで書き殴って動いたらオシマイとしていたら解決出来なかったかもしれません。
#電子工作 #照明器具
フリッカー発生条件ので検証は不可能ですが、マイコンのファームウェアを修正したところ前よりもSCRのスイッチングが安定しているようです。
ソースコードのコメントを数年後の自分への申し送りとして事細かに書いていたことも助けになりました。勢いで書き殴って動いたらオシマイとしていたら解決出来なかったかもしれません。
#電子工作 #照明器具
eth0 と eth1 に Art-Net のIPアドレスを設定する bashスクリプトです。
体裁の都合でタブ下げを全角空白にしています。パクってくださる方はテキストエディタなりで全角空白を削除するか半角空白に変換してください。utf-8でも全角空白はエラーの元です。
Art-Net の OEMコードを取っていませんので、0x29DA を勝手に使ってます。身近な器具で使われていないのと「肉だ」の語呂です。製品化する際には OEMコードを取得します。
set_artnet_ipaddress_eth0eth1.sh
// RaspberryPi:4B
// OS:RaspberryPiOS(bookworm) 32bit-Lite
// パーミッション:755
// bashスクリプトですのでファイルに実行権限を与え、Sudo で実行してください。
#!/bin/bash
# 定数定義
OEM_CODE_H=41 # Art-NetのOEMコードの上位バイト10進数で表記
OEM_CODE_L=218 # Art-NetのOEMコードの下位バイト10進数で表記 仮に0x29DA Oem_hdl_dmxnode8_1 HDL
NETWORK_SWITCH=2 # NetworkSwitch/ON=2,OFF=10
ETH0_NAME="artnet-in-eth0"
ETH1_NAME="artnet-out-eth1"
# 必要なファイル、コマンドの有無を確認
# bcコマンド
if !(type "bc" > /dev/null 2>&1); then
/usr/bin/echo "[Art-Net] Please Install the bc command."
exit
fi
## ipアドレス設定
ETH_NAME=$ETH0_NAME
for (( i=0; i<2; i++ )); do
## ethの有無を確認
P_eth=$(/usr/sbin/ifconfig | /usr/bin/grep eth$i)
if [ -z "$P_eth" ]; then
/usr/bin/echo "[Art-Net] eth"$i" does not exist"
exit
fi
## ethのMACアドレスを変数に格納する
MAC_ADDR_eth=$(/usr/bin/cat `find /sys/devices/ -name eth$i`/address)
## MACアドレスの有無を確認し、あればIPアドレスの設定を実行
if [ -n "$MAC_ADDR_eth" ]; then
# ethのIPアドレス作成
# 区切り文字「:」で配列変数化
MAC_eth=(${MAC_ADDR_eth//:/ })
# 16進数の文字列を数値に変換する
MAC_eth_4=$((16#${MAC_eth[3]}))
MAC_eth_5=$((16#${MAC_eth[4]}))
MAC_eth_6=$((16#${MAC_eth[5]}))
# Art-NetのIPアドレスを計算
ArtNet_IP_eth_1=$NETWORK_SWITCH
ArtNet_IP_eth_2=$(((MAC_eth_4 + OEM_CODE_H + OEM_CODE_L) % 256))
ArtNet_IP_eth_3=$MAC_eth_5
ArtNet_IP_eth_4=$MAC_eth_6
ArtNet_IP_eth=$ArtNet_IP_eth_1"."$ArtNet_IP_eth_2"."$ArtNet_IP_eth_3"."$ArtNet_IP_eth_4
/usr/bin/echo "[Art-Net] "$ETH_NAME" is "$ArtNet_IP_eth
# NetworkManager設定ファイルの有無確認
if [ ! -e "/etc/NetworkManager/system-connections/"$ETH_NAME".nmconnection" ]; then
# 設定ファイルが無いので新規設定し有効化
/usr/bin/nmcli connection add con-name $ETH_NAME type ethernet ifname eth$i connection.autoconnect yes ipv4.addresses $ArtNet_IP_eth"/8" ipv4.method manual ipv4.never-default no ipv6.method disabled >> /dev/null
/usr/bin/nmcli c reload
/usr/bin/nmcli c up $ETH_NAME >> /dev/null
else
# 設定ファイルがある IPアドレスが違うなら更新
# 現在のIPアドレスを取得
Current_IP_eth=$(/usr/bin/ip -f inet -o addr show eth$i|cut -d\ -f 7 | cut -d/ -f 1)
# 現在のIPアドレスがArt-NetのIPアドレスと違うなら更新
if [ "$Current_IP_eth" != "$ArtNet_IP_eth" ]; then
/usr/bin/nmcli c modify $ETH_NAME ipv4.address $ArtNet_IP_eth"/8"
/usr/bin/nmcli c down $ETH_NAME >> /dev/null
/usr/bin/nmcli c reload
/usr/bin/nmcli c up $ETH_NAME >> /dev/null
/usr/bin/echo "[Art-Net] Updated eth"$i" IP address."
else
# IPアドレスが同じなので何もしない
/usr/bin/echo "[Art-Net] eth"$i" does not need to be changed."
fi
fi
else
# MACアドレスを取得出来ません
/usr/bin/echo "[Art-Net] Unable to obtain IP address for eth"$i"."
fi
## eth1に切換え
ETH_NAME=$ETH1_NAME
## for 折り返し
done
手直ししたコードに差し替えました。
下手糞コードは勘弁してください。。。
スマホで表示すると表示が崩れますが原因は不明です。
#[Art-Net]
体裁の都合でタブ下げを全角空白にしています。パクってくださる方はテキストエディタなりで全角空白を削除するか半角空白に変換してください。utf-8でも全角空白はエラーの元です。
Art-Net の OEMコードを取っていませんので、0x29DA を勝手に使ってます。身近な器具で使われていないのと「肉だ」の語呂です。製品化する際には OEMコードを取得します。
set_artnet_ipaddress_eth0eth1.sh
// RaspberryPi:4B
// OS:RaspberryPiOS(bookworm) 32bit-Lite
// パーミッション:755
// bashスクリプトですのでファイルに実行権限を与え、Sudo で実行してください。
#!/bin/bash
# 定数定義
OEM_CODE_H=41 # Art-NetのOEMコードの上位バイト10進数で表記
OEM_CODE_L=218 # Art-NetのOEMコードの下位バイト10進数で表記 仮に0x29DA Oem_hdl_dmxnode8_1 HDL
NETWORK_SWITCH=2 # NetworkSwitch/ON=2,OFF=10
ETH0_NAME="artnet-in-eth0"
ETH1_NAME="artnet-out-eth1"
# 必要なファイル、コマンドの有無を確認
# bcコマンド
if !(type "bc" > /dev/null 2>&1); then
/usr/bin/echo "[Art-Net] Please Install the bc command."
exit
fi
## ipアドレス設定
ETH_NAME=$ETH0_NAME
for (( i=0; i<2; i++ )); do
## ethの有無を確認
P_eth=$(/usr/sbin/ifconfig | /usr/bin/grep eth$i)
if [ -z "$P_eth" ]; then
/usr/bin/echo "[Art-Net] eth"$i" does not exist"
exit
fi
## ethのMACアドレスを変数に格納する
MAC_ADDR_eth=$(/usr/bin/cat `find /sys/devices/ -name eth$i`/address)
## MACアドレスの有無を確認し、あればIPアドレスの設定を実行
if [ -n "$MAC_ADDR_eth" ]; then
# ethのIPアドレス作成
# 区切り文字「:」で配列変数化
MAC_eth=(${MAC_ADDR_eth//:/ })
# 16進数の文字列を数値に変換する
MAC_eth_4=$((16#${MAC_eth[3]}))
MAC_eth_5=$((16#${MAC_eth[4]}))
MAC_eth_6=$((16#${MAC_eth[5]}))
# Art-NetのIPアドレスを計算
ArtNet_IP_eth_1=$NETWORK_SWITCH
ArtNet_IP_eth_2=$(((MAC_eth_4 + OEM_CODE_H + OEM_CODE_L) % 256))
ArtNet_IP_eth_3=$MAC_eth_5
ArtNet_IP_eth_4=$MAC_eth_6
ArtNet_IP_eth=$ArtNet_IP_eth_1"."$ArtNet_IP_eth_2"."$ArtNet_IP_eth_3"."$ArtNet_IP_eth_4
/usr/bin/echo "[Art-Net] "$ETH_NAME" is "$ArtNet_IP_eth
# NetworkManager設定ファイルの有無確認
if [ ! -e "/etc/NetworkManager/system-connections/"$ETH_NAME".nmconnection" ]; then
# 設定ファイルが無いので新規設定し有効化
/usr/bin/nmcli connection add con-name $ETH_NAME type ethernet ifname eth$i connection.autoconnect yes ipv4.addresses $ArtNet_IP_eth"/8" ipv4.method manual ipv4.never-default no ipv6.method disabled >> /dev/null
/usr/bin/nmcli c reload
/usr/bin/nmcli c up $ETH_NAME >> /dev/null
else
# 設定ファイルがある IPアドレスが違うなら更新
# 現在のIPアドレスを取得
Current_IP_eth=$(/usr/bin/ip -f inet -o addr show eth$i|cut -d\ -f 7 | cut -d/ -f 1)
# 現在のIPアドレスがArt-NetのIPアドレスと違うなら更新
if [ "$Current_IP_eth" != "$ArtNet_IP_eth" ]; then
/usr/bin/nmcli c modify $ETH_NAME ipv4.address $ArtNet_IP_eth"/8"
/usr/bin/nmcli c down $ETH_NAME >> /dev/null
/usr/bin/nmcli c reload
/usr/bin/nmcli c up $ETH_NAME >> /dev/null
/usr/bin/echo "[Art-Net] Updated eth"$i" IP address."
else
# IPアドレスが同じなので何もしない
/usr/bin/echo "[Art-Net] eth"$i" does not need to be changed."
fi
fi
else
# MACアドレスを取得出来ません
/usr/bin/echo "[Art-Net] Unable to obtain IP address for eth"$i"."
fi
## eth1に切換え
ETH_NAME=$ETH1_NAME
## for 折り返し
done
手直ししたコードに差し替えました。
下手糞コードは勘弁してください。。。
スマホで表示すると表示が崩れますが原因は不明です。
#[Art-Net]
資料映像のレンダリング中に Art-Net の IPアドレスを設定する Bashスクリプトを書いてみました。
実機は自宅ですが ssh で遠隔操作が出来ます。
dhcpcd.conf の書き換えを NetworkManager のコマンドに置き換えるだけですので難しくはありません。
とりあえず本体プログラムを書くための準備は終わりました。
#[Art-Net]
実機は自宅ですが ssh で遠隔操作が出来ます。
dhcpcd.conf の書き換えを NetworkManager のコマンドに置き換えるだけですので難しくはありません。
とりあえず本体プログラムを書くための準備は終わりました。
#[Art-Net]
bookworm において NetworkManager を用いて IPアドレスを設定する例です。
NIC の命名規則が eth で eth1 を対象とする場合
◆ DHCP 扱いの eth1 に固定 ipv4 アドレスを定義する。
// NerwotkManager は NIC 単位で設定します。以下は設定名を「artnet-out-eth1」としています。
// すでに同名で設定されている場合は次の「◆ ipv4 アドレスを変更する」の手順で変更します。
// 設定ファイルは「/etc/NetworkManager/system-connections」に置かれるので、ここに「artnet-out-eth1.nmconnection」があればすでに設定されています。
// ipv4 アドレスは「2.99.100.202」、サブネットマスクを「255.0.0.0」とするので「/8」
// ArtNetPatch では ipv6 を扱わないので無効にします。
$ sudo nmcli connection add con-name "artnet-out-eth1" type ethernet ifname eth1 connection.autoconnect yes ipv4.addresses "2.99.100.202/8" ipv4.method manual ipv4.never-default no ipv6.method disabled
// NetworkManager の設定を再読み込みする
$ sudo nmcli c reload
// artnet-out-eth1 を起動する
$ sudo nmcli c up artnet-out-eth1
◆ ipv4 アドレスを変更する。
// ipv4 アドレスを「2.99.100.203/8」に変更する
$ sudo nmcli c modify artnet-out-eth1 ipv4.address 2.99.100.203/8
// 以下、停止、再読み込み、起動。
$ sudo nmcli c down artnet-out-eth1
$ sudo nmcli c reload
$ sudo nmcli c up artnet-out-eth1
◆ 設定を削除する
// 停止
$ sudo nmcli c down artnet-out-eth1
// 設定を削除
$ sudo nmcli c delete artnet-out-eth1
コマンドで設定・変更をしますが、設定ファイルが主体です。
設定ファイルは「/etc/NetworkManager/system-connections/artnet-out-eth1.nmconnection」です。
この書式で設定、変更、削除が出来ました。
スクリプトで自動設定するなら、設定ファイルに呪文を書くよりこの様にコマンドで設定出来るのはいいかもしれない。
#Linux #RaspberryPi
NIC の命名規則が eth で eth1 を対象とする場合
◆ DHCP 扱いの eth1 に固定 ipv4 アドレスを定義する。
// NerwotkManager は NIC 単位で設定します。以下は設定名を「artnet-out-eth1」としています。
// すでに同名で設定されている場合は次の「◆ ipv4 アドレスを変更する」の手順で変更します。
// 設定ファイルは「/etc/NetworkManager/system-connections」に置かれるので、ここに「artnet-out-eth1.nmconnection」があればすでに設定されています。
// ipv4 アドレスは「2.99.100.202」、サブネットマスクを「255.0.0.0」とするので「/8」
// ArtNetPatch では ipv6 を扱わないので無効にします。
$ sudo nmcli connection add con-name "artnet-out-eth1" type ethernet ifname eth1 connection.autoconnect yes ipv4.addresses "2.99.100.202/8" ipv4.method manual ipv4.never-default no ipv6.method disabled
// NetworkManager の設定を再読み込みする
$ sudo nmcli c reload
// artnet-out-eth1 を起動する
$ sudo nmcli c up artnet-out-eth1
◆ ipv4 アドレスを変更する。
// ipv4 アドレスを「2.99.100.203/8」に変更する
$ sudo nmcli c modify artnet-out-eth1 ipv4.address 2.99.100.203/8
// 以下、停止、再読み込み、起動。
$ sudo nmcli c down artnet-out-eth1
$ sudo nmcli c reload
$ sudo nmcli c up artnet-out-eth1
◆ 設定を削除する
// 停止
$ sudo nmcli c down artnet-out-eth1
// 設定を削除
$ sudo nmcli c delete artnet-out-eth1
コマンドで設定・変更をしますが、設定ファイルが主体です。
設定ファイルは「/etc/NetworkManager/system-connections/artnet-out-eth1.nmconnection」です。
この書式で設定、変更、削除が出来ました。
スクリプトで自動設定するなら、設定ファイルに呪文を書くよりこの様にコマンドで設定出来るのはいいかもしれない。
#Linux #RaspberryPi
愛機 MAdot2 のタッチパネルがおかしい。
タッチしたのと違うところが反応したり一点をタッチしたのに領域選択になったり。キャリブレーションをしても改善せず。
早い話故障です。
モジュール交換だったら高くつくなぁ~と思っていたところ、M社のM氏から有益な情報。
「タッチパネルの外周に砂などのゴミが付着しているとそうなりますよ」
とのこと。
早速分解。
ネジが多くてドイツらしいなぁと思いつつ、モニタモジュールまで遠いなぁと思いつつ分解。
モニタモジュールを外すと筐体との隙間に砂と土汚れが付着。野外で使うこともありますから仕方ないのかな。
エタノールを軽く含ませた布で抜き取る。筐体側も掃除。エタノールを直接吹きかけるのは良くないと思う。
掃除後、仮組みして電源投入。アッサリ治ってしまいました。
タッチパネルにはいくつかの方式がありますが、どの方式でもパネル面の電位が狂うとダメです。砂によって電位が狂ってしまったのでしょう。
修理は簡単っちゃ簡単ですが、問題はモニタモジュールを外すまでが遠いこととリボンケーブルの扱い。筐体を開けるのは当然ですが、基板類まで外さないといけません。リボンケーブルが多用されているので外し方を知らないと大事故になります。ノートパソコンの分解整備の経験があればナンてことありませんが、慎重を期す必要があります。
簡単にやっつけるなら筐体とモニタモジュールの間をエアブローしてもいいかも。挟まっている砂の種類によっては基板を壊すので注意が必要ですけどね。
モニタ面の電位が浸入物で不安定にならなければいいので、ゴムで枠を作って挟んでみましょう。要はパッキンです。これで安定するなら同様の故障が起こる可能性は減るハズです。
#器具の修理
タッチしたのと違うところが反応したり一点をタッチしたのに領域選択になったり。キャリブレーションをしても改善せず。
早い話故障です。
モジュール交換だったら高くつくなぁ~と思っていたところ、M社のM氏から有益な情報。
「タッチパネルの外周に砂などのゴミが付着しているとそうなりますよ」
とのこと。
早速分解。
ネジが多くてドイツらしいなぁと思いつつ、モニタモジュールまで遠いなぁと思いつつ分解。
モニタモジュールを外すと筐体との隙間に砂と土汚れが付着。野外で使うこともありますから仕方ないのかな。
エタノールを軽く含ませた布で抜き取る。筐体側も掃除。エタノールを直接吹きかけるのは良くないと思う。
掃除後、仮組みして電源投入。アッサリ治ってしまいました。
タッチパネルにはいくつかの方式がありますが、どの方式でもパネル面の電位が狂うとダメです。砂によって電位が狂ってしまったのでしょう。
修理は簡単っちゃ簡単ですが、問題はモニタモジュールを外すまでが遠いこととリボンケーブルの扱い。筐体を開けるのは当然ですが、基板類まで外さないといけません。リボンケーブルが多用されているので外し方を知らないと大事故になります。ノートパソコンの分解整備の経験があればナンてことありませんが、慎重を期す必要があります。
簡単にやっつけるなら筐体とモニタモジュールの間をエアブローしてもいいかも。挟まっている砂の種類によっては基板を壊すので注意が必要ですけどね。
モニタ面の電位が浸入物で不安定にならなければいいので、ゴムで枠を作って挟んでみましょう。要はパッキンです。これで安定するなら同様の故障が起こる可能性は減るハズです。
#器具の修理
ミッチャクロンマルチ・スプレーの値段が上がっていました。
ミッチャクロンマルチはヘタな下地処理より効果的です。足付けなどせず、ザックリ脱脂して塗れば完璧な下地になります。安物のラッカースプレーでも強固な塗膜に仕上がります。施工時間が短くすむことも含め、費用対効果は抜群です。
けど、1,600円前後で買えたものが2,000円越えました。良い物なので納得の価格ではありますが、これからは節約して使おうかな・・・って貧乏性。
#工具や資材
ミッチャクロンマルチはヘタな下地処理より効果的です。足付けなどせず、ザックリ脱脂して塗れば完璧な下地になります。安物のラッカースプレーでも強固な塗膜に仕上がります。施工時間が短くすむことも含め、費用対効果は抜群です。
けど、1,600円前後で買えたものが2,000円越えました。良い物なので納得の価格ではありますが、これからは節約して使おうかな・・・って貧乏性。
#工具や資材
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105