Atmega328P Datasheet 18. I/O Ports 1

Started by tha, August 25, 2019, 09:42:42 AM

Previous topic - Next topic

tha

18.3.2. Alternate Functions of Port C
Port C pins ที่มี alternate functions ถูกแสดงในตารางข้างล่างนี้ :




alternate pin configuration มีดังต่อไปนี้ :

• RESET/PCINT14 – Port C, Bit 6
   – RESET: Reset pin. เมื่อ RSTDISBL Fuse ถูกโปรแกรม, พินนี้มีฟังชั่นเป็นเป็น I/O pin ปกติ, และ mcu จะต้องพึ่งพา Power-on Reset และ Brown-out Reset เป็นแหล่ง reset ของมัน. เมื่อ RSTDISBL Fuse ไม่ถูกโปรแกรม วงจรรีเซทจะถูกต่อเข้ากับพินนี้, และพินไม่สามารถถูกใช้เป็น I/O pin.
   – PCINT14: Pin Change Interrupt source 14. The PC6 pin สามารถใช้ทำเป็น external interrupt source.
ถ้า PC6 ถูกใช้เป็น reset pin, DDC6, PORTC6 and PINC6 จะอ่านได้เป็น 0 ทั้งหมด.

• SCL/ADC5/PCINT13 – Port C, Bit 5
   – SCL: 2-wire Serial Interface Clock. เมื่อบิท TWEN ใน TWCR ถูกเซท ("1") เพื่อเปิดการใช้งาน 2-wire Serial Interface, pin PC5 ถูกตัดออกจาก port และกลายมาเป็น Serial Clock I/O pin สำหรับ 2-wire Serial Interface. ในโหมดนี้, จะมี spike filter บน pin เพื่อกดเดือยแหลม(spike)ให้สั้นกว่า 50 ns บน input signal, และพินนี้ถูกขับโดย open drain driver ที่มี slew-rate limitation.
  – PCINT13: Pin Change Interrupt source 13. The PC5 pin สามารถใช้ทำเป็น external interrupt source.
  – PC5 สามารถถูกใช้เป็น ADC input Channel 5 อีกด้วย. The ADC input channel 5 ใช้ digital power.

• SDA/ADC4/PCINT12 – Port C, Bit 4
   – SDA: 2-wire Serial Interface Data.  เมื่อบิท TWEN ใน TWCR ถูกเซท ("1") เพื่อเปิดการใช้งาน 2-wire Serial Interface, pin PC4 ถูกตัดออกจาก port และกลายมาเป็น the Serial Data I/O pin สำหรับ the 2-wire Serial Interface. ในโหมดนี้, จะมี spike filter บน pin เพื่อกดเดือยแหลม(spike)ให้สั้นกว่า 50 ns บน input signal, และพินนี้ถูกขับโดย open drain driver ที่มี slew-rate limitation.
   – PCINT12: Pin Change Interrupt source 12. The PC4 pin สามารถใช้ทำเป็น external interrupt source.
   – PC4 สามารถถูกใช้เป็น ADC input Channel 4 อีกด้วย. The ADC input channel 4 ใช้ digital power.

tha

• ADC3/PCINT11 – Port C, Bit 3
   – PC3 สามารถถูกใช้เป็น ADC input Channel 3 อีกด้วย. The ADC input channel 3 ใช้ analog power.
   – PCINT11: Pin Change Interrupt source 11. The PC3 pin สามารถใช้ทำเป็น external interrupt source.

• ADC2/PCINT10 – Port C, Bit 2
   – PC2 สามารถถูกใช้เป็น ADC input Channel 2 อีกด้วย. The ADC input channel 2 ใช้ analog power.
   – PCINT10: Pin Change Interrupt source 10. The PC2 pin สามารถใช้ทำเป็น external interrupt source.

• ADC1/PCINT9 – Port C, Bit 1
   – PC1 สามารถถูกใช้เป็น ADC input Channel 1 อีกด้วย. The ADC input channel 1 ใช้ analog power.
   – PCINT9: Pin Change Interrupt source 9. The PC1 pin can สามารถใช้ทำเป็น external interrupt source.

• ADC0//CINT8 – Port C, Bit 0
   – PC0 สามารถถูกใช้เป็น ADC input Channel 0 อีกด้วย. The ADC input channel 0 ใช้ analog power.
  – PCINT8: Pin Change Interrupt source 8. The PC0 pin สามารถใช้ทำเป็น external interrupt source.

ตารางด้านล่างนี้คือความสัมพันธ์ของ alternate functions of Port C กับ overriding signals ที่แสดงในรูป Figure 18-5.



Note: 1. เมื่อเปิดใช้งาน, 2-wire Serial Interface เปิดการใช้งาน slew-rate controls บน output pins PC4 และ PC5. สิ่งนี้ไม่แสดงในรูป. นอกจากนี้, spike filters ถูกต่อระหว่าง AIO outputs ที่แสดงในรูปพอร์ต และ digital logic ของ TWI module.




ปล. ก็ไม่ยากแล้วใช่ไหมภาษาอังกฤษ พวกคู่มือส่วนมากก็จะมีรูปประโยคเป็น passive voice คือมี ประธาน + verb to be + verb ช่องที่ 3
จะเน้นที่ประธานเป็นผู้ถูกกระทำ ก็เท่านั้นเอง ส่วนคำศัพย์ก็จะไม่เยอะจำกัดๆไม่กี่ตัว ผมก็ได้แค่นี้เหมือนกัน ให้ไปท่องเว๊บหาข้อมูล ก็อ่านของเขายากเหมือนกันนะ  ;D
เดี๋ยวจบบทจะลองบอร์ดต่อกับจอ LCD16x2 หรือลองกับ GLCD5110 มีตัวอย่างของ ETT กับของหนังสือไมโครฯ AVR อยู่

tha

library ที่ในหนังสือไมโครฯ AVR ให้ไว้ http://hubbard.engr.scu.edu/avr/avrlib มาอยู่นี่   https://github.com/synic/avrlib


tha

18.3.3. Alternate Functions of Port D
Port D pins ที่มี alternate functions ถูกแสดงในตารางข้างล่างนี้ :




alternate pin configuration มีดังต่อไปนี้ :

• AIN1/OC2B/PCINT23 – Port D, Bit 7
   – AIN1: Analog Comparator1 Negative Input. กำหนด port pin เป็น input พร้อมกับปิด internal pull-up เพื่อหลีกเลี่ยง digital port function จากการรบกวนการทำงานของ Analog Comparator.(ต้องไม่ pull-up ใช่ไหม ไม่งั้นไฟจาก pull-up ก็ไหลมาเข้าพินสิ)
   – PCINT23: Pin Change Interrupt source 23. The PD7 pin สามารถใช้ทำเป็น external interrupt source.

• AIN0/OC0A/PCINT22 – Port D, Bit 6
   – AIN0: Analog Comparator0 Positive Input. กำหนด port pin เป็น input พร้อมกับปิด internal pull-up เพื่อหลีกเลี่ยง digital port function จากการรบกวนการทำงานของ Analog Comparator.(ต้องไม่ pull-up ใช่ไหม ไม่งั้นไฟจาก pull-up ก็ไหลมาเข้าพินสิ)
   – OC0A: Output Compare Match output. PD6 pin สามารถใช้ทำเป็น external output สำหรับ Timer/Counter0 Compare Match A.  PD6 pin ต้องถูกกำหนดเป็น output (DDB6 set '1') เพื่อทำหน้าที่ฟังชั่นนี้. OC0A pin ยังเป็น output pin สำหรับ PWM mode timer function อีกด้วย
   – PCINT22: Pin Change Interrupt source 22. The PD6 pin สามารถใช้ทำเป็น external interrupt source.

• T1/OC0B/PCINT21 – Port D, Bit 5
   – T1: Timer/Counter1 counter source.
   – OC0B: Output Compare Match output. PD5 pin สามารถใช้ทำเป็น external output สำหรับ Timer/Counter0 Compare Match B.  PD5 pin ต้องถูกกำหนดเป็น output (DDB5 set '1') เพื่อทำหน้าที่ฟังชั่นนี้. OC0B pin ยังเป็น output pin สำหรับ PWM mode timer function อีกด้วย
   – PCINT21: Pin Change Interrupt source 21. The PD5 pin สามารถใช้ทำเป็น external interrupt source.

• XCK/T0/PCINT20 – Port D, Bit 4
   – XCK: USART external clock.
   – T0: Timer/Counter0 counter source.
   – PCINT20: Pin Change Interrupt source 20. The PD4 pin สามารถใช้ทำเป็น external interrupt source.

tha

• INT1/OC2B/PCINT19 – Port D, Bit 3
   – INT1: External Interrupt source 1. The PD3 pin สามารถใช้ทำเป็น external interrupt source.
   – OC2B: Output Compare Match output. PD3 pin สามารถใช้ทำเป็น external output สำหรับ Timer/Counter2 Compare Match B.  PD3 pin ต้องถูกกำหนดเป็น output (DDB3 set '1') เพื่อทำหน้าที่ฟังชั่นนี้. OC2B pin ยังเป็น output pin สำหรับ PWM mode timer function อีกด้วย
   – PCINT19: Pin Change Interrupt source 19. The PD3 pin สามารถใช้ทำเป็น external interrupt source.

• INT0/PCINT18 – Port D, Bit 2
   – INT0: External Interrupt source 0. The PD2 pin สามารถใช้ทำเป็น external interrupt source.
   – PCINT18: Pin Change Interrupt source 18. The PD2 pin สามารถใช้ทำเป็น external interrupt source.

• TXD/PCINT17 – Port D, Bit 1
   – TXD: Transmit Data (Data output pin สำหรับ USART). เมื่อ USART Transmitter ถูกเปิดการใช้งาน, พินนี้ถูกกำหนดเป็น output โดยไม่คำนึงถึงค่าของ DDD1.
   – PCINT17: Pin Change Interrupt source 17. The PD1 pin สามารถใช้ทำเป็น external interrupt source.

• RXD/PCINT16 – Port D, Bit 0
   – RXD: Receive Data (Data input pin สำหรับ USART). เมื่อ USART Receiver ถูกเปิดการใช้งาน พินนี้ถูกกำหนดเป็น input โดยไม่คำนึงถึงค่าของ DDD0. เมื่อ USART บังคับพินนี้ให้เป็น input, pull-up ยังคงสามารถถูกควบคุมโดยบิท PORTD0 bit.
   – PCINT16: Pin Change Interrupt source 16. The PD0 pin สามารถใช้ทำเป็น external interrupt source

ตารางด้านล่างนี้คือความสัมพันธ์ของ alternate functions of Port D กับ overriding signals ที่แสดงในรูป Figure 18-5.





ปล. เอาเรื่องจิตใจบ้างนะ จะสุขหรือทุกข์ก็อยู่ที่ใจครับ ไม่ทราบท่านใดแนะนำมา วันนี้เอา อิทธิบาท ๔ สวดท่องภาวนาบ่อยๆเข้าก็จะเป็นคุณธรมประจำใจ ไมโครฯจะทำงานได้ดี ก็เพราะมีโปรแกรมที่ดี คนเราจะดำเนินชีวิตไปได้ดี ก็ต้องมีโปรแกรมของใจ ดำเนินชีวิตไปตามสัญชาตญานเลยไม่ดี ต้องมีโปรแกรมของใจ ภาวนาธรรมะบ่อยๆเข้า ก็จะกลายมาเป็นโปรแกรม(คุณธรรม)ประจำใจ แล้วชีวิตเราก็จะดีขึ้น สุขขึ้น จิตใจของเราก็จะดีงาม        The Beautiful Mind           

http://www.84000.org/tipitaka/dic/d_item.php?i=213
http://www.84000.org/tipitaka/dic/
ไม่ทราบท่านใดแนะนำมาบ้าง บางอย่างก็ผุดขึ้นมาลอยๆในใจ ช่วยกันคิดช่วยกันทำนะ ขอขอบครับ

tha

18.4.1. MCU Control Register

ก็ไปดูที่   http://www.electoday.com/index.php/topic,15922.32.html

ส่วนรีจีสเตอร์ PORT, DDR, PIN ก็ดูเอาที่ data sheet ได้เลย จะไม่เอามาลงแล้วเพราะไม่มีการอธิบายบิท

เดี๋ยวจะลองต่อ ATmega328p กับ LCD16x2 นะ ลองเสิร์จกูเกิ้ลด้วย AVR LCD16x2 ก็จะได้นี่ ลองศึกษาและทำกันดูไปพร้อมกันนะครับ
https://www.electronicwings.com/avr-atmega/lcd16x2-interfacing-with-atmega16-32
https://www.electronicwings.com/avr-atmega/interfacing-lcd-16x2-in-4-bit-mode-with-atmega-16-32-

ปล. ดูท้องฟ้า ก้อนเมฆ ลม ฟ้า ฝน ดูแปลกไปไม่เหมือนตอนสมัยผมเป็นเด็กเลย ไม่รู้โลกมาถูกทางหรือเปล่าไม่รู้ ไปช้าๆเอาดีกว่านะ แต่ถึงอย่างไรทางด้านวัตถุนี้ เราก็สู้ประเทศเขตหนาวเขาไม่ได้อยู่ดี ก็เวลาร้อนมันอ่านหนังสือไม่ได้นี่ ส่วนมากก็ทำได้แต่ทำไร่ไถนา อยากรวยทำมากไปก็ทำลายธรรมชาติสิ่งแวดล้อมพังหมด ก็ไม่ยั่งยืนเลย ก็ต้องยั้งคิดก็ต้องศึกษาเหมือนกันหมด พ่อถึงสอนเราให้อยู่อย่างพอเพียง จะได้อยู่อย่างยั่งยืน     
https://sites.google.com/site/prachyasersthkicphxpheiyng12/-site-prachyasersthkicphxpheiyng12 



tha

เฮได้แล้ว Hello World กับจอ LCD16x2 ก๊อบปี้เอาของเขามานั่นแหละ ก็ขอขอบคุณเขามา ณ ที่นี้ด้วยครับ
https://www.electronicwings.com/avr-atmega/lcd16x2-interfacing-with-atmega16-32
มาเปลี่ยนขานิดหน่อยก็ใช้ได้ แต่ก็เจอปัญหาอยู่บ้าง สงสัยพินเสียบสายจะหลวม ทำให้ได้บ้างไม่ทำงานบ้าง ต้องคอยขยับสายเสียบอยู่เรื่อย  :P
ก็เอาขา D0-7 = PD0-7, RS = PB0, RW = PB1, EN = PB2  ก็จะเป็นแบบ 8 bit
http://www.mediafire.com/file/589iy8bcofqbt56/LCD16x2_1.rar/file



ปล. เดี๋ยวจะทำแบบ 4 บิท ดูบ้างนะ วันนี้พอแค่นี้ก่อน

tha

พรายกระซิบบอก อะไรบ้างนะ ให้เปลี่ยนตัวแปร char เป็น unsigned char ทั้งหมดใช่ไหม
เวลา reset mcu แล้วจอไม่ reset ตามเหรอครับ ลองดูก็ reset ตามนะ เดี๋ยวลองอ่าน data sheet ดูอีกทีครับ
ทำเป็น header file นามสกุล __.h เอาไว้ใช้งานเป็นมาตรฐานใช่ไหม เดี๋ยวจะลองศึกษาหลายๆตัวอย่างก่อนครับ

ปล. วันนี้มีประชุมคณะสงฆ์ทั้งอำเภอที่วัดที่บ้าน ออกไมค์เสียงดังไม่มีสมาธิเลย คงต้องพักสักครู่ครับ