$30 off During Our Annual Pro Sale. View Details »

組み込みソフトウェア基礎_【連続講座 #7】TDD#3 LEDドライバ(ターゲット編)

k-abe
December 16, 2022

組み込みソフトウェア基礎_【連続講座 #7】TDD#3 LEDドライバ(ターゲット編)

2022/12/15 社内勉強会向け資料です。
TDDでLEDデバイスドライバをターゲットマイコンで実施する考えをまとめました。

リンクが有効な資料はこちらにあります。
https://www.docswell.com/s/juraruming/KN4MW5-2022-12-15-210619

k-abe

December 16, 2022
Tweet

More Decks by k-abe

Other Decks in Programming

Transcript

  1. ʲ࿈ଓߨ࠲ #7ʳTDD #3 LED
    ド
    ϥΠ
    バ
    (λʔ
    ήοτฤ)
    2022/12/15


    ύʔιϧςΫϊϩδʔελοϑגࣜձࣾ


    Ѩ෦ߞೋ [email protected]
    ૊ΈࠐΈιϑτ΢ΣΞجૅ

    View Slide

  2. • ࣗݾ঺հ


    • ࢀՃऀҰݴίϝϯτ


    • ߨ࠲։࠵ͷഎܠɾ໨త


    • ຊ೔ͷςʔϚʲLED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ʳ


    • TDDֶशͷࢀߟ


    • ࢀՃऀײ૝


    • ࣍ճ༧ࠂ
    ໨࣍
    2

    View Slide

  3. • Ѩ෦ɹߞೋʢ͋΂ɹ͜͏͡ʣ


    • ٕज़ຊ෦ɹػిٕज़෦ɹट౎ݍ2G


    [email protected]


    • ҩྍػث։ൃ


    • ૊ࠐΈιϑτ΢ΣΞ։ൃɻCݴޠɺϕΞϝλϧͷ։ൃۀ຿ܦݧ͕΄ͱΜͲɻ


    • LAPRASϙʔτϑΥϦΦɿhttps://lapras.com/public/k-abe


    • twitter: @juraruming
    ࣗݾ঺հ
    3

    View Slide

  4. ࣗ͝༝ʹҰݴίϝϯτ͍͚ͨͩ·͢ͱ͋Γ͕͍ͨͰ͢ɻ


    ྫ) ໊͓લ


    ྫ) ࠓճͷߨ࠲ʹظ଴͢Δ͜ͱ


    ྫ) ͓࢓ࣄ಺༰(࿩ͤΔൣғͰ)


    ྫ) ιϑτ΢ΣΞ։ൃ୲౰޻ఔ(ཁٻ࢓༷ͷఆٛ?ઃܭ?࣮૷?ςετ?)
    ࢀՃऀҰݴίϝϯτ
    4

    View Slide

  5. • ͳʹ͔ςʔϚΛܾΊͯɺιϑτ΢ΣΞ։ൃͷ্ྲྀ޻ఔ͔ΒԼྲྀ޻ఔ·Ͱઆ
    ໌͢Δߨ࠲Λ։࠵͠ɺεΩϧΞοϓΛਤΔɻ


    ɹ˙#1 ཁٻ࢓༷ͷཧղɹࢿྉɾهࣄ


    ɹ˙#2 ཁٻ࢓༷ͷ࢓༷Խɹࢿྉɾهࣄ


    ɹ˙ઃܭɹ


    ɹɹ˔#3 ֓ཁɹࢿྉɾهࣄ


    ɹɹ˔#4 ৄࡉɹࢿྉɾهࣄ


    ɹ˙TDD


    ɹɹ˔#5 ςετۦಈ։ൃ#1 ͸͡ΊͷҰาɹࢿྉɾهࣄ


    ɹɹ˔#6 ςετۦಈ։ൃ#2 LEDυϥΠό(ϗετPCฤ)ɹࢿྉɾهࣄ


    ɹɹ˔#7 ςετۦಈ։ൃ#3 LEDυϥΠό(λʔήοτฤ) ˒͍·͜͜


    ɹɹ˔#8


    ɹɹ˔#9


    ɹɹ
    ߨ࠲։࠵ͷഎܠɾ໨త
    5

    View Slide

  6. ςʔϚɿ


    ʲطଘ૊ࠐΈ੡඼(CQ EVΧʔτ)ͷ
    ϚΠίϯΛҠ২͢Δʳ
    ߨ࠲։࠵ͷഎܠɾ໨త
    6

    View Slide

  7. ςʔϚɿʲطଘ૊ࠐΈ੡඼ͷϚΠίϯΛҠ২͢Δʳ


    ର৅૷ஔɿCQ EVΧʔτ


    എܠɿ


    ɾߨࢣ͕͓࣋ͬͯΓɺର৅૷ஔͷυϝΠϯ஌ࣝΛཧղ͍ͯ͠Δɻ


    ɾιϑτ΢ΣΞͷߏ଄Λཧղ͍ͯ͠Δɻ


    ɾର৅૷ஔͷϚΠίϯ͕৽ن࠾༻ඇਪ঑඼ʹͳͬͨɻ


    ɹ⇛ֶशɾεΩϧΞοϓͷͨΊผϚΠίϯʹҠ২ͯ͠ΈΑ͏!!!ɹ
    ߨ࠲։࠵ͷഎܠɾ໨త
    7

    View Slide

  8. • LED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ͱ͸Կ͔?


    • λʔήοτͰTDDΛ͢ΔϝϦοτɾσϝϦοτ


    • ૊ࠐΈιϑτ΢ΣΞͷςετઓུ


    • λʔήοτͰTDD͢Δ۩ମతํ๏
    ຊ೔ͷςʔϚ


    ʲLED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ʳ
    8

    View Slide

  9. • LED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ͱ͸Կ͔?


    • λʔήοτͰTDDΛ͢ΔϝϦοτɾσϝϦοτ


    • ૊ࠐΈιϑτ΢ΣΞͷςετઓུ


    • λʔήοτͰTDD͢Δ۩ମతํ๏
    ຊ೔ͷςʔϚ


    ʲLED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ʳ
    9

    View Slide

  10. • λʔήοτͱ͸?


    ɹϚΠίϯλʔήοτϘʔυͰTDD͢Δ͜ͱΛࢦ͢ɻ


    ɹલճ͸ϚΠίϯΛίϯύΠϧ͢ΔPC(ϗετ)ͰTDDͨ͠ɻ


    • LEDυϥΠόͱ͸?


    • ϚΠίϯλʔήοτϘʔυͱ͸?


    ɹ࣍ϖʔδҎ߱ʹॻ͖·͢ɻ
    LED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ͱ͸Կ͔?
    10

    View Slide

  11. ɾLEDυϥΠόͱ͸?

    ▪EVΧʔτͷLEDΛ఺౮ɾফ౮͢ΔػೳΛ࣋ͭσόΠευϥΠόͱ͢Δɻ

    ɹϞʔλʔݱࡏҐஔͱ੍ޚͷঢ়گΛͭͷ-&%Ͱࢹ֮ԽͰ͖Δɻ
    11

    View Slide

  12. ●λʔήοτϚΠίϯͷબఆ


    ɹSTϚΠΫϩΤϨΫτϩχΫεͷSTM32ϚΠίϯϘʔυʲNUCLEO-
    F446REʳʹܾΊͨɻ


    ɾSTM32F446RET6 64ϐϯ


    ɾArm Cortex-M4ίΞ 180MHz


    ɾϑϥογϡ: 512Kbyte


    ɾSRAM: 128Kbyte


    ɾArm MbedରԠ
    12

    View Slide

  13. • LED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ͱ͸Կ͔?


    • λʔήοτͰTDDΛ͢ΔϝϦοτɾσϝϦοτ


    • ૊ࠐΈιϑτ΢ΣΞͷςετઓུ


    • λʔήοτͰTDD͢Δ۩ମతํ๏
    ຊ೔ͷςʔϚ


    ʲLED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ʳ
    13

    View Slide

  14. ʲϝϦοτʳ


    ▪λʔήοτͰ΋ಈ࡞֬ೝͰ͖҆৺Ͱ͖Δ


    ▪ϗετɺλʔήοτͷҧ͍Λ֬ೝͰ͖Δɻ


    ●ϋʔυ΢ΣΞͷॳظԽ


    ●ΞʔΩςΫνϟͷҧ͍


    ●࣮ߦ؀ڥͷҧ͍(ελοΫɺͦͷଞ)


    ●ίϯύΠϥͷҧ͍


    ●ϥΠϒϥϦͷڍಈͷҧ͍
    λʔήοτͰTDDΛ͢ΔϝϦοτɾσϝϦοτ
    14

    View Slide

  15. ʲϝϦοτʳ


    ▪ϗετɺλʔήοτͷҧ͍Λ֬ೝͰ͖Δɻ


    ●ϋʔυ΢ΣΞͷॳظԽ


    ɹϗετͰ͸ϋʔυ΢ΣΞΛॳظԽ͢ΔίʔυΛॻ͔ͳ͍ɻ


    ɹλʔήοτͰ͸ϋʔυ΢ΣΞΛςετ͢ΔͨΊʹ͸ॳظԽͷ࣮૷͕ඞ
    ཁɹ(LEDυϥΠόͰ͋Ε͹GPIOͷग़ྗϙʔτͷઃఆͳͲ)ɻ


    λʔήοτͰTDDΛ͢ΔϝϦοτɾσϝϦοτ
    15

    View Slide

  16. ʲϝϦοτʳ


    ▪ϗετɺλʔήοτͷҧ͍Λ֬ೝͰ͖Δɻ


    ●ΞʔΩςΫνϟͷҧ͍


    ྫ) intܕͷΞυϨεԋࢉ


    ɹϗετ) 32bitɾ64bitͷCPU intܕͷαΠζ 4όΠτ


    ɹλʔήοτ) 16bitϚΠίϯ intܕͷαΠζ2byte


    ɹ΋͠ɺintܕͷϙΠϯλΞυϨεԋࢉͳͲ͍ͯͨ͠Βڍಈ͕ҟͳΔɻ


    ྫ) ΤϯσΟΞϯ


    ɹϏοάɾϦτϧΤϯσΟΞϯʹґଘ͢ΔίʔυͩͬͨΒڍಈ͕ҟͳΔɻ
    λʔήοτͰTDDΛ͢ΔϝϦοτɾσϝϦοτ
    16

    View Slide

  17. ʲϝϦοτʳ


    ▪ϗετɺλʔήοτͷҧ͍Λ֬ೝͰ͖Δɻ


    ●࣮ߦ؀ڥͷҧ͍(ελοΫɺͦͷଞ)


    ɹλʔήοτϚΠίϯͷ։ൃ؀ڥʹ෇ଐ͍ͯ͠ΔελʔτΞοϓϧʔνϯͰ
    σϑΥϧτͰઃఆ͍ͯ͠ΔελοΫαΠζ500byteͩͬͨͱԾఆɻ


    ɹ͋Δؔ਺ͷ಺෦ม਺Ͱ500byteͷ഑ྻΛએݴͨ͠৔߹ɻ


    ɹϗετͰ͋Ε͹ಈ͘ͱࢥ͏͕λʔήοτϚΠίϯͰ͸όάΔՄೳੑ͋
    Γɻ


    ɹϗετͰ͋Ε͹ߟྀ͠ͳͯ͘΋ྑ͍͜ͱ͕(໰୊ʹͳΒͳ͍͜ͱ͕ଟ͍)ɺ
    λʔήοτϚΠίϯͰ͸ߟྀ͕ඞཁͳ৔߹͕͋Δɻ
    λʔήοτͰTDDΛ͢ΔϝϦοτɾσϝϦοτ
    17

    View Slide

  18. ʲϝϦοτʳ


    ▪ϗετɺλʔήοτͷҧ͍Λ֬ೝͰ͖Δɻ


    ●ίϯύΠϥͷҧ͍


    ɾ࠷దԽʹΑΓϗετɾλʔήοτͰڍಈ͕ҟͳΔ৔߹ɻ


    ɾϝϞϦͷΞϥΠϝϯτ


    ●ϥΠϒϥϦͷڍಈͷҧ͍


    ɾඪ४ϥΠϒϥϦͷڍಈͷҧ͍ɾόάͳͲɻ


    ɹྫ) sprintf͕ϗετɾλʔήοτͰಈ͖͕ҧ͏ͳͲɻ


    λʔήοτͰTDDΛ͢ΔϝϦοτɾσϝϦοτ
    18

    View Slide

  19. ʲσϝϦοτʳ


    ɹσϝϦοτ͸͋Μ·Γࢥ͍͖ͭ·ͤΜͰͨ͠ɻ


    ɹλʔήοτͰ΋TDDͰ͖ΔͷͰ͋Ε͹ͨ͠ํ͕ྑ͍ͱ͸ࢥ͏ɻ


    ▪ςετίʔυΛॻ͘ͷͰ͕͔͔࣌ؒΔɻ


    ɹʲςετΛॻ͔ͳ͍͔Β͕࣌ؒͳ͘ͳΔʳͱ͍͏໊ݴ΋͋Γ·͢ɻ


    λʔήοτͰTDDΛ͢ΔϝϦοτɾσϝϦοτ
    19

    View Slide

  20. • LED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ͱ͸Կ͔?


    • λʔήοτͰTDDΛ͢ΔϝϦοτɾσϝϦοτ


    • ૊ࠐΈιϑτ΢ΣΞͷςετઓུ


    • λʔήοτͰTDD͢Δ۩ମతํ๏
    ຊ೔ͷςʔϚ


    ʲLED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ʳ
    20

    View Slide

  21. ▪૊ࠐΈιϑτ΢ΣΞ։ൃݱ৔ͷ೰Έ


    ●1ͭͷϋʔυͰςελʔ͕ෳ਺


    ɹ͍͔ʹϋʔυ΢ΣΞΛ࢖ΘͣʹςετͰ͖Δ͔͕ϙΠϯτɻ


    ɹ


    ●ࢀߟʹͳͬͨهࣄ


    ɹΦϒδΣΫτࢦ޲ͷຊ࣭


    ɾґଘੑͷ௿͍ιϑτ΢ΣΞϞδϡʔϧͷઃܭɻ


    ɾγϛϡϨʔλΛ࢖༻ͨ͠ςετ؀ڥͷߏங


    ɹɹɹ


    TDDΛ΍Δ৔߹ϗετͰ΍Δ͜ͱɺλʔήοτͰ΍Δ͜ͱΛ໌֬Խ͠ςετͷ
    ઓུΛཱͯΔ͜ͱ͕ॏཁͱײͨ͡ɻ
    ૊ࠐΈιϑτ΢ΣΞͷςετઓུ
    21

    View Slide

  22. • LED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ͱ͸Կ͔?


    • λʔήοτͰTDDΛ͢ΔϝϦοτɾσϝϦοτ


    • ૊ࠐΈιϑτ΢ΣΞͷςετઓུ


    • λʔήοτͰTDD͢Δ۩ମతํ๏
    ຊ೔ͷςʔϚ


    ʲLED
    ド
    ϥΠ
    バ
    (λʔήοτฤ)ʳ
    22

    View Slide

  23. ▪λʔήοτͷ؀ڥ


    ▪ํ਑


    ▪࣮૷ྫͷ঺հ


    ▪ಈ࡞֬ೝ݁Ռ


    λʔήοτͰTDD͢Δ۩ମతํ๏
    23

    View Slide

  24. ▪λʔήοτͷ؀ڥ


    ▪ํ਑


    ▪࣮૷ྫͷ঺հ


    ▪ಈ࡞֬ೝ݁Ռ


    λʔήοτͰTDD͢Δ۩ମతํ๏
    24

    View Slide

  25. ▪λʔήοτͷ؀ڥ


    ɾSTM32CubeIDE Version: 1.11.0


    ɾςετϑϨʔϜϫʔΫ: CppUTest 4.0

    λʔήοτͰTDD͢Δ۩ମతํ๏
    25

    View Slide

  26. ▪λʔήοτͷ؀ڥ


    ▪ํ਑


    ▪࣮૷ྫͷ঺հ


    ▪ಈ࡞֬ೝ݁Ռ


    λʔήοτͰTDD͢Δ۩ମతํ๏
    26

    View Slide

  27. ▪ํ਑


    ɾϗετͱςετίʔυΛڞ༗͢Δɻ


    ɾϗετͱλʔήοτͰίʔυͷ੾Γସ͑͸ϚΫϩͰߦ͏ɻ


    ɾLED఺౮͸STM32ͷϋʔυ΢ΣΞந৅ԽϨΠϠʔ(௨শɿHAL)ͷίʔυ
    Λ࢖༻͢Δɻ


    ɹϝϦοτ) ૊ࠐΈ؆୯


    σϝϦοτ)


    ɹɾॲཧͷ৑௕Խɺ଎౓ͷ໰୊(͕͋Δ͔΋͠Εͳ͍ɾɾɾ)


    ɹɾϋʔυ΢ΣΞந৅ԽϨΠϠͷίʔυࣗମͷόά͕͋Δ͔΋͠Εͳ͍ɻ
    λʔήοτͰTDD͢Δ۩ମతํ๏
    27

    View Slide

  28. ▪ํ਑


    ʼϋʔυ΢ΣΞந৅ԽϨΠϠʔɹGPIOͷWriteͷྫ)


    λʔήοτͰTDD͢Δ۩ମతํ๏
    28

    View Slide

  29. ▪λʔήοτͷ؀ڥ


    ▪ํ਑


    ▪࣮૷ྫͷ঺հ


    ▪ಈ࡞֬ೝ݁Ռ


    λʔήοτͰTDD͢Δ۩ମతํ๏
    29

    View Slide

  30. ▪࣮૷ྫͷ঺հ


    ɹϗετͰTDDͨ͠ͱ͖ͷσΟϨΫτϦߏ੒
    λʔήοτͰTDD͢Δ۩ମతํ๏
    30

    View Slide

  31. ▪࣮૷ྫͷ঺հ


    ϗετɾλʔήοτͰTDD͢Δͱ͖ͷσΟϨΫτϦߏ੒Ҋ(Ϗϧυɾಈ࡞ະ֬ೝ)


    ɹ
    λʔήοτͰTDD͢Δ۩ମతํ๏
    31
    host: ϗετͰTDD͢Δͱ͖ͷϑΝΠϧΛ֨ೲ͢Δɻ


    target: λʔήοτͰTDD͢Δͱ͖ͷϑΝΠϧΛ֨ೲ͢Δɻ


    include: ΠϯΫϧʔυϑΝΠϧ֨ೲ༻ɻϗετɾλʔήοτͰڞ௨Ͱ࢖༻͢Δɻ


    src: ιʔεϑΝΠϧ֨ೲ༻ɻϗετɾλʔήοτͰڞ௨Ͱ࢖༻͢Δɻ


    tests: ςετίʔυ֨ೲ༻ɻϗετɾλʔήοτͰڞ௨Ͱ࢖༻͢Δɻ


    ●ϗετɾλʔήοτͰڞ௨Ͱ࢖༻͢Δ΋ͷ͸host, targetσΟϨΫτϦͷ֎ʹஔ͘ͱ͍͏ํ਑ɻ


    ɹTDDֶशͷࢀߟ(4)Λࢀߟʹ͍͍ͤͯͨͩͨ͞ɻ


    View Slide

  32. ▪࣮૷ྫͷ঺հ


    λʔήοτσΟϨΫτϦߏ੒Ҋ(Ϗϧυɾಈ࡞ະ֬ೝ)


    ɹ
    λʔήοτͰTDD͢Δ۩ମతํ๏
    32
    ▪446re_test: ϝΠϯϓϩδΣΫτɻϚΠίϯʹॻ͖ࠐ
    ΉϑΝΠϧΛ࡞੒͢Δɻ


    View Slide

  33. ▪ ࣮૷ྫͷ঺հ


    ςετίʔυ(HallSensorLedDriverTest.cpp)Λλʔήοτ޲͚ʹमਖ਼͢Δඞཁ͋Γ


    // υϥΠόΛॳظԽͨ͠Βɺ͢΂ͯͷLED͕ফ౮͍ͯ͠Δ


    TEST(HallSensorLedDriver, LedsOffAfterCreate)


    {


    unsigned char virtualLeds = 0xff;


    HallSensorLedDriver_Create(&virtualLeds);


    BYTES_EQUAL(0, virtualLeds);


    }


    // ϗʔϧηϯαʔU͕1ͷ৔߹ɺϗʔϧηϯαʔLEDΛΦϯʹ͢Δ


    TEST(HallSensorLedDriver, TurnOnHallULed)


    {


    unsigned char virtualLeds;


    HallSensorLedDriver_Create(&virtualLeds);


    HallSensorLedDriver_TurnOn(0x04);


    BYTES_EQUAL(0x04, virtualLeds);


    }


    // ϗʔϧηϯαʔU͕0ͷ৔߹ɺϗʔϧηϯαʔLEDΛΦϑʹ͢Δ


    TEST(HallSensorLedDriver, TurnOffHallULed)


    {


    unsigned char virtualLeds;


    HallSensorLedDriver_Create(&virtualLeds);


    HallSensorLedDriver_TurnOn(0x04);


    HallSensorLedDriver_TurnOff(0x04);


    BYTES_EQUAL(0x00, virtualLeds);


    }
    λʔήοτͰTDD͢Δ۩ମతํ๏
    33
    ϗετͷ৔߹͸virtualLeds͸೚
    ҙͷΞυϨεͰྑ͔ͬͨ(LED͕ͳ
    ͍ͨΊ)ɻ


    View Slide

  34. ▪࣮૷ྫͷ঺հ


    ϓϩμΫτίʔυ(HallSensorLedDriver.c)Λλʔήοτ޲
    ͚ʹमਖ਼


    void HallSensorLedDriver_Create(unsigned char* address)


    {


    // *address = 0;


    hallSensorLedsAddress = address;


    *hallSensorLedsAddress = 0;


    }


    void HallSensorLedDriver_Destroy(void)


    {


    }


    void HallSensorLedDriver_TurnOn(unsigned char
    ledBitNumber) {


    *hallSensorLedsAddress = 0x04;


    }


    void HallSensorLedDriver_TurnOff(unsigned char
    ledBitNumber){


    *hallSensorLedsAddress = 0x00;


    }


    λʔήοτͰTDD͢Δ۩ମతํ๏
    34
    ɾλʔήοτͷ৔߹͸*_CreateͰ
    LEDΛফ౮͢ΔॳظԽॲཧ͕ඞ
    ཁɻ


    View Slide

  35. ▪λʔήοτͷ؀ڥ


    ▪ํ਑


    ▪࣮૷ྫͷ঺հ


    ▪ಈ࡞֬ೝ݁Ռ


    λʔήοτͰTDD͢Δ۩ମతํ๏
    35

    View Slide

  36. ▪ಈ࡞֬ೝ݁Ռ


    ɹظ଴͍͍͍ͨͩͯͨΒਃ͠༁͋Γ·ͤΜɻ


    ɹλʔήοτͰTDDΛಈ࡞֬ೝ͢Δ·ͰࢸΓ·ͤΜͰͨ͠ɻ
    λʔήοτͰTDD͢Δ۩ମతํ๏
    36

    View Slide

  37. 1. ςετۦಈ։ൃʹΑΔ૊ΈࠐΈϓϩάϥϛϯά


    2. ʦಈըͰղઆʧ࿨ా୎ਓͷ“ςετۦಈ։ൃ”ߨ࠲ هࣄҰཡ


    3. ʰςετۦಈ։ൃʹΑΔ૊ΈࠐΈϓϩάϥϛϯάʱΛಡΜͰֶΜͩ͜ͱ


    4. TDDʹΑΔϚΠίϯͷLνΧ։ൃ(1)


    5. TDDʹΑΔϚΠίϯͷLνΧ։ൃ(2)(׬)


    TDDֶशͷࢀߟ
    37

    View Slide

  38. • ੋඇͱ΋ߨ࠲ͷײ૝ΛҰݴ͓ئ͍͠·͢ɻ
    ࢀՃऀײ૝
    38

    View Slide

  39. ɹTDDͷߨ࠲ͷ࣍ճ͸ʲ1/xx(x) 19:30ʙ20:30ʳͰ։࠵༧ఆͰ͢ɻ


    ʲ࿈ଓߨ࠲ #8ʳςετۦಈ։ൃ#4 xxx


    ɹ


    ࢀՃͷํɺੋඇͱ΋ΑΖ͓͘͠Ͷ͕͍͠·͢ɻ
    ࣍ճ༧ࠂ
    39
    ߟ
    ͑

    ɾ
    ɾ
    ɾ

    View Slide

  40. • ςʔϚͷલఏઆ໌


    ʲCQ EVΧʔτʳͱ͸???


    ɾಈը1: ૸ߦத


    ɾಈը2: ج൘Λ֦େ


    աڈʹॻ͍ٕͨज़ॻ(EV Χʔτ
    で
    ࢝ΊΔϞ
    デ
    ϧ
    ベ
    ʔε։ൃ)Λϕʔεʹઆ໌͠·͢ɻ


    هࡌՕॴɿʲୈ1ষ EVΧʔτͱ͸Կ͔ʳ


    ࢀߟʲςʔϚͷલఏઆ໌ʳ
    40

    View Slide

  41. ͝੩ௌ͋Γ͕ͱ͏
    ͍͟͝·ͨ͠ɻ
    ऴΘΓ
    41

    View Slide