Recent Posts

Pages: [1] 2 3 ... 10
1
AVR and Arduino / Re: Atmega328P Datasheet 18. I/O Ports 1
« Last post by tha on September 17, 2019, 10:43:24 am »
มาทำกับบอร์ด ATmega328p บ้าง uart จะเป็น uart 0 ไม่มี flow control CTS, RTS ทำตามตัวอย่างของ ETT ก็ได้เหมือนกันครับ ถ้าแปลไปถึงเรื่องนี้แล้วเดี๋ยวจะลงรายละเอียดอีกที

http://www.mediafire.com/file/lzegx1dwbpmkpkk/usart2.rar/file

2
AVR and Arduino / Re: Atmega328P Datasheet 18. I/O Ports 1
« Last post by tha on September 17, 2019, 09:29:28 am »
บอร์ด ET-BASE AVR EASY32U4 มาทำ uart ก็มีไม่กี่บิท ดูดาต้าชีทด้วยนะ เอาตัวอย่างของ ETT มาโมนิดหน่อย(แก้ stop bit เป็น 1 บิทด้วย) ก็ใช้ได้กับ uart echo คือพอพิมพ์ที่คีบอร์ดก็สะท้อนกลับมาแสดงที่จอ รีจีสเตอร์จะไม่เหมือนกับ ATmega328p คือจะเป็น uart 1 RXD1, TXD1, CTS, RTS คือมี flow control ด้วย แต่โปรเจ็คนี้ไม่ได้ใช้ มีตัวอย่างให้ดูครับ

http://www.mediafire.com/file/0thkw0eeacmn9cj/uart_32u4.rar/file



3
AVR and Arduino / Re: Atmega328P Datasheet 18. I/O Ports 1
« Last post by tha on September 16, 2019, 05:06:55 pm »
พรุ่งนี้จะลอง usart นะ ไม่รู้ท่านใดเรียกร้องมา เอาก่อนที่จะแปลเลย ก็อ่านหนังสือเอาไวดี แต่จะเอาตัวอย่างของ ETT ดีกว่า ดูแล้วเข้าใจดีกว่าการใช้ stdio.h ก็จะมีรูปแบบเหมือนกันกับในเว๊บนี้ครับ https://www.electronicwings.com/avr-atmega/atmega1632-usart
4
AVR and Arduino / Re: Atmega328P Datasheet 18. I/O Ports 1
« Last post by tha on September 16, 2019, 10:57:18 am »
ตอนนี้ยังอยู่ที่บอร์ด ET-BASE AVR EASY32U4 ท่านใดบอกให้ตั้ง Fuse bits ใหม่เพราะของเก่าเป็น arduino ก็ดูในดาต้าชีสของ 32u4 บทที่ 6.3 Low Power Crystal Oscillator กับบทที่ 28.2 Fuse Bits ก็จะตั้งไว้ได้เป็นอย่างนี้(อย่าลืมกด program ไปด้วย) ลองไล่บิทดูเอานะยาวเลย



คราวนี้ก็มาลองทำ switch debounce 3 switch 3 หลอด LED มีสวิทช์กับหลอด LED อยู่บนบอร์ดแล้วอย่างละหนึ่ง เราก็มาเพิ่มนอกบอร์ดอีกสอง เราก็มาทำ header file switch_debounce_32u4.h แยกไว้ต่างหากเลยเพื่อจะได้ทำให้ดูง่ายและเอาไปใช้กับโปรเจ็คอื่นได้ง่าย ดูพินของบอร์ดจะเรียงตาม arduino นะจะไม่เรียงตามพอร์ต ดูออกจะสับสนหน่อย ระวังจะเสียบขาผิด มีปัญหานิดหน่อยที่โปรแกรมย่อย toggle_led(); ซึ่งต้องแยกโปรแกรมกันเลย ถึงจะทำงานได้ มีตัวอย่างให้ดูครับ

http://www.mediafire.com/file/13p0v2zrkobqrw2/switch_debounce_32u4.rar/file



ปล. ท่านใดอยากมีสมาธิดีก็หัดนั่งสมาธินะ ไม่ยากหรอกเพียงไหว้พระแล้วนั่งภาวนา หายใจเข้า-พุท หายใจออก-โธ แล้วเราก็ปรับปรุงของเราไป นานวันเข้าก็จะดีเอง เราก็จะรู้เองว่าช่วงไหนควรพักหรือเวลาไหนเหมาะที่จะทำ ตามสะดวกของเราเลย มันก็จะดีขึ้นเรื่อยๆเอง พอใจเรามีสมาธิก็จะสงบปราศจากนิวรณ์ 5 ทำให้เราอ่านหนังสือหรือคิดอะไรหรือทำอะไรได้ดีครับ
http://www.84000.org/tipitaka/dic/d_item.php?i=225
http://www.84000.org/tipitaka/dic/
หลังภาวนาเราก็เจริญพรหมวิหาร 4 แล้วไหว้พระก็เป็นเสร็จ
พรหมวิหาร ๔
๑.เมตตา คือ ความรัก ความปรารถนาดี ความมีไมตรี อยากให้ผู้อื่นมีความสุข
๒.กรุณา คือ ความสงสาร อยากช่วยเหลือให้ผู้อื่นพ้นจากความทุกข์
๓.มุทิตา คือ ความเบิกบานพลอยยินดี เมื่อเห็นผู้อื่นได้รับความสุขหรือความสำเร็จ ก็พลอยเบิกบานบันเทิงใจไปด้วย
๔.อุเบกขา คือ ความมีใจเป็นกลาง มองตามความเป็นจริง จิตใจราบเรียบสม่ำเสมอ เมื่อเห็นผู้อื่นได้รับผลกรรมตามที่ตนประกอบ ไม่เอนเอียง วางตนเที่ยงธรรม

5
AVR and Arduino / Re: Atmega328P Datasheet 18. I/O Ports 1
« Last post by tha on September 15, 2019, 10:21:30 am »
ซื้อ ET-BASE AVR EASY32U4 มาตอนแรกจะเอาไว้ทำ arduino สักหน่อย เก็บไว้จนฝุ่นจับ คิดไปคิดมาบอร์ดดีๆไม่ควรเก็บไว้ เลยเอามาเล่นสักหน่อย กับ AVR Studio 4 + Winavr นี่แหละ เพราะ arduino เคยเล่นอยู่หน่อยเดียว ลืมไปแล้ว หนังสือ arduino ก็ขายไปแล้ว ไป arduino ไม่ไหวแล้ว เล่น winavr อย่างเดียวดีกว่า เอาแต่โปรแกรมของ ETT เขามาเผยแผ่ ไม่เล่นบอร์ดเขาเลย ดูจะเอาเปรียบกันสักหน่อย 
http://www.ett.co.th/prod2012/AVR-EASY32U4/ET-BASE-AVR-EASY32U4.html
http://ww1.microchip.com/downloads/en/devicedoc/atmel-7766-8-bit-avr-atmega16u4-32u4_datasheet.pdf

งั้นเดี๋ยวจะเอาบอร์ด ET-BASE AVR EASY32U4 มาต่อกับจอ LCD16x4 นะ มีจอนี้อยู่ LCD16x4 ก็เหมือนกับจอ LCD16x2 นั่นแหละ แต่จะมีแถวแสดงผลเพิ่มมาอีก 2 แถวเท่านั้นเอง ก็เอาไฟล์ LCD16x2.h มาเพิ่มเติมอีกนิดหน่อย ก็ใช้ได้แล้ว
แต่ตอนนี้ขอเช็คขาของบอร์ดดูก่อน และทดลองบอร์ดดูก่อนด้วยโปรแกรมไฟกระพริบ(blink1)กับ switch debounce ดู หลอด LED กับ switch ก็มีอยู่บนบอร์ดแล้ว นี่ตัวอย่างโปรแกรมครับ

http://www.mediafire.com/file/2w8qlotnmsmxz1b/blink1%25283%2529.rar/file
http://www.mediafire.com/file/317lwxbm9r9fmi1/switch_debounce.rar/file
6
AVR and Arduino / Re: Atmega328P Datasheet 18. I/O Ports 1
« Last post by tha on September 13, 2019, 03:21:45 pm »
มาลองทำ ADC แบบ interrupt ดู ก็สามารถทำได้ ก็มีตัวอย่าง ADC USART อยู่ ก็เอามาโม แค่นี้ก็เสร็จ

http://www.mediafire.com/file/jhxqz2eo13ug3w1/LCD16x2_ADC_3.rar/file

มีจุดที่ต้องจำคือ ตัวแปรที่ถูกใช้ในหลายส่วน ก็ต้องประกาศตัวแปรโดยใช้ volatile นำหน้า เพื่อไม่ให้คอมไพเลอร์มันบีบอัดตัดทอน
ก็มีส่วนที่แก้ใขคือ MUX ดูในดาต้าชีท ATmega328p จะมี 4 บิท ก็แก้เป็นอย่างนี้ดีกว่า ไม่แก้ก็ไม่เป็นไร
Quote
   //ch &= 0b00000111;  // AND operation with 7
   ch &= 0b00001111;  // AND operation with F
   //ADMUX = (ADMUX & 0xF8)|ch; // clears the bottom 3 bits before ORing
   ADMUX = (ADMUX & 0xF0)|ch; // clears the bottom 4 bits before ORing
header file ก็ไม่ยากนะ ก็เหมือนเอาโปรแกรมแยกส่วนไปให้ดูง่ายๆ include แล้วเหมือนกับต่อไฟล์ไปตรงจุดนั้นไป พอจบเฮดเดอร์ไฟล์ก็กลับมาไฟล์เมน เฮดเดอร์ไฟล์ LCD16x2.h ก็เดิมๆเลย สามารถก็อปไปใช้ได้ทุกโปรเจ็ค ส่วน ADC_3.h มีการเปลี่ยนแปลง
7
AVR and Arduino / Re: Atmega328P Datasheet 18. I/O Ports 1
« Last post by tha on September 13, 2019, 01:36:53 pm »
ลองมาทำ ADC 2 channel(PC0,PC1) ดู ก็สามารถทำงานได้ครับ ลองเอาไปดูกัน

http://www.mediafire.com/file/r5emp0yj326rho0/LCD16x2_ADC_2.rar/file



ฟังชั่น sprintf ลองใช้ %0.2f แล้วบังคับตัวแปรให้เป็น (float) ให้คำนวณเป็นจุดทศนิยมเลย อย่างตัวอย่างของ stm32 ที่ให้ไปก็ทำไม่ได้ ขึ้นแสดงเป็นเครื่องหมาย ? ก็เลยต้องใช้รูปแบบเดิม %d.%d หารเอาส่วนก็เป็น %d ตัวแรก หารเอาเศษก็เป็น %d ตัวหลัง มี . คั่น ก็แสดงเป็นจุดทศนิยมได้ สงสัย ATmega328p 8 บิท มันคงจะคำนวณตัวแปร float ไม่ไหวใช่ไหม?
8
AVR and Arduino / Re: Atmega328P Datasheet 18. I/O Ports 1
« Last post by tha on September 12, 2019, 04:43:39 pm »
ได้แล้ว วัด ADC Channel 0 (PC0) มาโชว์ที่จอ LCD16x2 ท่านใดไม่เข้าใจเรื่อง ADC ก็หาหนังสือมาอ่านก่อนนะ ยังแปลไม่ถึง แต่ไม่ตรงตัวเท่าไหร่ ในหนังสือเป็น ATmega16 ของเรา ATmega328p ก็ต้องดูรีจีสเตอร์ในดาต้าชีสประกอบด้วย
ส่วน prescaler ต้องหาร clock 16MHz ด้วย 128 จะได้ = 125KHz ถึงจะไม่เกิน ADC clock 200kHz ตามที่ดาต้าชีทระบุไว้ระหว่าง 50 - 200 kHz

http://www.mediafire.com/file/ug84naeqqimvsdm/LCD16x2_ADC_1.rar/file 



ปล. ไปเดินออกกำลังกายสักหน่อย มีปัญหาอะไรไว้พรุ่งนี้ก็ได้
9
AVR and Arduino / Re: Atmega328P Datasheet 18. I/O Ports 1
« Last post by tha on September 12, 2019, 01:02:20 pm »
พรายกระซิบบอกให้ลองทำ ADC แล้วให้มาแสดงที่หน้าจอ LCD16x2 ดู ชักลืมแล้ว ADC เดี๋ยวจะทบทวนดูก่อน ดูดาต้าชีทด้วย ตรงนี้ก็เคยทำ
http://www.electoday.com/index.php/topic,15922.8.html
http://maxembedded.com/2011/06/the-adc-of-the-avr/
http://extremeelectronics.co.in/avr-tutorials/using-adc-of-avr-microcontroller/
Pages: [1] 2 3 ... 10