Monday, February 1, 2016

Cách lập trình vào I/O ra ATmega với WinAVR giống với VodeVision

WinAVR là 1 trình biên dịch C cho Atmega. Nó là 1 phần mềm miễn phí hiện đang sử dụng rộng rãi trên toàn thế giới mà điển hình đó là Arduino.

Như các bạn đã biết về cơ bản thì WinAVR và CodeVision là giống nhau. Nhưng chỉ có 1 vài cái hơi khác đó là về cách sử dụng các cổng vào ra của Atmega.

Với CodeVision thì điều đó thật dễ dàng.
Ví dụ cổng PB3 được cấu hình là cổng ra thì muốn có tín hiệu "1" thì chúng ta chỉ cần viết là PORTB.3=1 là xong .
Hoặc cổng PD1 được cấu hỉnh là cổng đầu vào thì để đọc được tín hiệu trên chân này chúng ta chỉ cần if(PIND.1==0) là xong.

Với WinAVR thì điều đó hơi phức tạp hơn 1 chút xíu
vẫn ví dụ trên cổng PB3 được cấu hình là cổng ra thì muốn có tín hiệu "1" thì chúng ta cần phải viết:
PORTB|=1<<PB3;
Câu lệnh này chả có gì là khó hiểu nó có nghĩa là PORTB=PORTB|(1<<PB3). Với các bạn hiểu và nắm vững C nó là "muỗi"
Và để xuất tín hiệu "0" thì chúng ta dùng dòng lệnh:
PORTB&=~(1<<PB3);
Với lệnh đọc tín hiệu trên chân PD1 chẳng hạn chúng ta dùng lệnh
if(!(PIND&(1<<PD1)))
Câu lệnh này tức là nếu PD1 về "0) thì PIND&(1<<PD1)=0 sau lệnh đảo sẽ =1 . dòng lệnh if sẽ được thực hiện.
Điều này đòi hỏi bạn phải thành thạo các lệnh logic và nắm vững kỹ năng sử dụng byte và bit.

Để lập trình WinAVR cũng dễ dàng như vậy tôi đã viết 1 file port.h hỗ trợ lập trình WinAVR như Codevision
Các bạn có thể download nó tại :


Cách sử dụng :

Chúng ta làm quen nó qua 1 ví dụ:

Chân PB3 là chân đầu ra, và chân PD1 là chân đầu vào. ấn nút bấm tại chân PD1 thì đèn led tại chân PB3 sáng , nhả tay ra thì đèn tối.

Code :
#include<avr/io.h>
#include "port.h"
void main()
{
DDRB=0x08;//cong PB la dau ra
PORTD=0x02;// gan tro treo cho cong PD1 la dau vao
while(1)
 {
if(_PIND.b1==0)
_PORTB.b3=1;
else
_PORTB.b3=0;
 }
}
Về cơ bản khi sử dụng thì các bạn dùng nó như với Codevision nhưng thêm dấu "_" và "b3".
Toàn bộ mã C và file hex các bạn download tại

Saturday, January 23, 2016

Đồng hồ để bàn đơn giản với ATmega8


Rảnh ở nhà, kiếm trong hòm đồ còn con atmega8 lôi ra làm cái đồng hồ để bàn chơi chia sẻ với anh em design chơi.
Sơ đồ mạch :
Linh kiện cần mua:
1- Atmega8 1 con
2- trở 120 ôm , trở 10k loại dán 0805.
3- nút bấm 3 cái
4- ds1307 1 con
5- thạch anh 32.768kHz 1con
4- tụ 100u 3 con
5- tụ 10u 1 con
6- tụ 22p 2 con
7- led đồng hồ 4 số 1 cái loại 0.28inch anot chung
 Lúc đâu tôi định mua loại 0.56 inch nhưng họ hết hàng chỉ còn loại 0.28 inch . thôi thì lấy tạm vậy.
8- IC 7805
9- Jac DC loại 3.5mm nhỏ

II- mạch nguyên lý hoàn chỉnh 

Những chỗ đi dây màu đỏ là đoạn câu dây.
fusebit ở tần số 8Mhz nội

Cách sử dụng:
Nút J3 là nút Setup. khi bắt đầu sử dụng thì bạn ấn nút Setup. đèn phút sẽ nhấp nháy sử dụng các phím J1 và J2 để tăng giảm thời gian.
Ấn J3 lần nữa thì đến đèn Giờ sẽ nhấp nháy. tương tự như trên.
Ấn J3 lần nữa để kết thúc . và đồng hồ bắt đầu chạy

PCB và code (C+ file hex)
các bạn download

Mọi sự trợ giúp xin đăng lên Group

Friday, January 8, 2016

Sử dụng board Arduino như 1 mạch nạp ISP.




   Chúng ta thường dùng board arduino như là 1 thiết bị lập trình thông thường. Nhưng cũng có khi để làm 1 mạch khác nhưng vẫn sử dụng code arduino vậy là chúng ta cần phải mua 1 mạch nạp nữa ư?????
Điều đó là không cần thiết vì board Arduino đã là một mạch nạp hoàn chỉnh với đầy đủ các tính năng như fusebit, nạp file hex với tốc độ cao.
Cách làm như sau :
1-   Cấu hình board Arduino như 1 mạch nạp
Mở chương trình Arduino IDE và chọn như hình vẽ :


Các bạn upload file đó xuống board Arduino


Sau khi hoàn thành bước này thì board Arduino đã là 1 mạch nạp hoàn chỉnh.

2-   Kết nối “mạch nạp” Arduino as ISP với vi điều khiển AVR cần nạp

Chân vi điều khiển AVR
Board Arduino
Reset
10
MOSI
11
MISO
12
SCK
13

3-   Chương trình nạp avrdude
Avrdude là chương trình nạp đi kèm với arduino. Nó là 1 chương trình thuộc dạng dòng lệnh. Vì vậy có thể hơi khó sử dụng với 1 số bạn. Nhưng nếu dùng quen bạn sẽ thấy rằng nó là 1 chương trình rất tuyệt vời.
Cú pháp làm việc :
Vào Start menu và gõ "cmd" .
Các bạn dùng lệnh “cd” để di chuyển đến folder chứa file hex cần nạp.
-       Cách fuse bit
Avrdude –c avrisp –P COM27 –b 19200 –p atmega8 –e –U lfuse:w:0xef:m  hfuse:w:0xc9:m
Đây là cách fuse bit
-c : đây là tham số khai báo tên mạch nạp . như ví dụ trên mạch nạp là avrisp
-P : là tham số khai báo tên cổng COM kết nối với arduino .
-b : là tham số khai báo tốc độ baund của cổng Com
-p: là tên của chíp vi điều khiển cần nạp .vd : atmega8, atmega48, atmega328
-e : là tham số xóa chíp.
-U : là tham số làm việc với chip
Lfuse:w:0xef:m đây là cách ghi giá trị vào LOW FUSE
Hfuse:w:0xC9:m là cách ghi giá trị vào HIGH FUSE        
Cách nạp chương trình
-       Cách nạp chương trình
Avrdude –c avrisp –P COM27 –b 19200 –p atmega8 –e –U flash:w:main.hex
ở đây –U flash:w:main.hex nghĩa là ghi file main.hex vào vi điều khiển.

Tuesday, December 29, 2015

Chế tạo thành công chip quang-điện tử đầu tiên trên thế giới

Một chip xử lý điện tử thông thường sẽ có những giới hạn về tốc độ và nhiệt độ hoạt động, do vậy từ lâu các nhà nghiên cứu đã nỗ lực làm ra một con chip xử lý hoạt động bằng ánh sáng, nhằm giải quyết cùng lúc tất cả các vấn đề trên.

Di chuyển dữ liệu bên trong máy tính nghĩa là đẩy các tín hiệu kỹ thuật số đó qua các đoạn dây điện, với những giới hạn hẹp về băng thông và còn sản sinh ra rất nhiều nhiệt. Tuy nhiên, khi các dữ liệu đó được đưa lên trên mạng internet, các tín hiệu kỹ thuật số đó sẽ được chạy trong các đoạn cáp quang học, với khả năng truyền tải đi xa và băng thông cực lớn mà không cần một nhà máy điện nguyên tử để cung cấp năng lượng cho hệ thống đó.

Sự đối nghịch giữa hai phương pháp này đã làm phần lớn các công ty tìm cách đưa các kết nối quang học vào bên trong máy tính, và cuối cùng là bên trong bản thân các con chip. Điều này đặt ra một thách thức đáng kể cho các nhà nghiên cứu. Mặc dù công nghệ hiện tại cho phép sử dụng silicon có khả năng xử lý ánh sáng, nhưng bộ xử lý như vậy không tương thích với kỹ thuật CMOS được sử dụng trong các mạch điện. Kết quả là, hầu hết các nỗ lực trong lĩnh vực này đều phải sử dụng hai con chip riêng biệt, một con chip cho bộ xử lý thông thường, một chip khác dành cho kết nối quang học.


Chip xử lý điện tử.

Nhưng giờ một nhóm nghiên cứu đã thành công trong việc tạo ra một chip duy nhất có thể xử lý cả kết nối quang học cũng như kết nối điện, và được kết nối với bộ nhớ chính bằng quang học. Mặc dù băng thông vẫn còn tương đối thấp, nhưng toàn bộ hệ thống đã được sản xuất bằng các quy trình chuẩn của chip CMOS, do vậy các nhà sản xuất sẽ không phải thay đổi một quy trình mới để sản xuất loại chip này. Chip này được tích hợp với một bộ xử lý nhỏ, với kiến trúc RISC, nhằm cung cấp khả năng chạy các văn bản chuẩn và các chương trình đồ họa.

Nguyên lý của chip quang điện tử mới

Mặc dù có nhiều điều tương đồng, một điều khác biệt của con chip này với các nỗ lực trước đây là sự xuất hiện của nguồn phát tia laser. Đó là một phần cứng riêng biệt, với ánh sáng đầu ra hướng vào bên trong chip. Tuy nhiên, khi ánh sáng đến chip, mọi bộ phận để xử lý ánh sáng đó, phải được làm bằng silicon. Các bộ phận đó bao gồm các ống dẫn sóng để hướng ánh sáng đến một vị trí cụ thể, các bộ biến điệu quang học để chia nhỏ ánh sáng đó thành từng bit, và các bộ tách sóng quang học để ghi lại các bit này.

Trong trường hợp này, tia laser là một nguồn sáng ở bước sóng ánh sáng 1180 nanomet. Đó là tần số có thể truyền qua được silicon, nhưng các nhà nghiên cứu đã thực hiện một số chỉnh sửa để có thể thay đổi thuộc tính của tia laser đó. Ví dụ, một hợp kim silicon – germanium có thể hoạt động như một bộ tách sóng ánh sáng, tiếp nhận các hạt photon và chuyển đổi chúng thành các xung điện.

Nỗ lực kết hợp chip điện tử và chip quang học trên một chip duy nhất đòi hỏi các nhà nghiên cứu phải hình dung ra hàng loạt các cách tiếp cận khác nhau để làm việc trên một không gian giới hạn. Ví dụ, phải khắc vùng vạt liệu bao quanh vật liệu như thế nào để ánh sáng, qua các ống dẫn sóng bằng silicon, đi vào vùng vật liệu bao quanh đó. Hiệu suất của các bộ biến điệu biến đổi theo nhiệt độ, vốn thay đổi theo khối lượng dữ liệu mà chip phải xử lý. Vì vậy, các nhà nghiên cứu đã tạo ra một hệ thống phản hồi thông tin để phát hiện sự sụt giảm của cường độ sáng, và kích hoạt bộ cấp nhiệt điện trở nhằm giữ nhiệt độ ở mức cần thiết.

Kết quả thử nghiệm

Với tất cả các vấn đề đã được xử lý, các tác giả của dự án đã có thể làm một con chip, kết hợp điện tử và quang tử, bao gồm 70 triệu bóng bán dẫn và 850 linh kiện quang tử. Bản thân bộ xử lý này là một chip lõi kép, với kiến trúc RISC-V, một kiến trúc đã được giới nghiên cứu sử dụng, do phù hợp với khả năng hoạt động ở tần số Gigahertz. Bộ nhớ là một con chip riêng biệt, được đặt ở một khoảng cách tùy ý, nhưng giới hạn bởi chiều dài sợi cáp quang.


Một điều khác biệt của con chip này với các nỗ lực trước đây là sự xuất hiện của nguồn phát tia laser.

Cả chip xử lý và chip nhớ đều có ba lớp chuyển tiếp quang học bên ngoài. Lớp chuyển tiếp đầu tiên chỉ đơn giản là nhận ánh sáng từ một nguồn sáng laser. Lớp chuyển tiếp thứ hai làm nhiệm vụ chuyển dữ liệu từ chip xử lý đến chip nhớ. Lớp thứ ba sẽ chuyển dữ liệu ngược lại từ chip nhớ đến chip xử lý. Mỗi đường dẫn trong các liên kết này có băng thông lên tới 2,5 Gb/giây, tạo ra một băng thông tổng hợp tới 5 Gb/giây. Băng thông đó tương đương với băng thông bộ nhớ điện thoại hiện nay và cũng thấp hơn nhiều so với với các hệ thống quang học, vì vậy vẫn còn rất nhiều việc phải làm. Khi chip xử lý bị khóa, không cho truy cập đến nhân của bộ nhớ, nghĩa là chip xử lý sẽ bị hãm ở tốc độ 31 Mhz, khi chỉ sử dụng bộ nhớ quang học.

Dù sao đi nữa, hệ thống đã thực sự vận hành được. Như video trên cho thấy, các bus quang học có thể hỗ trợ mọi thứ, từ chương trình "hello world" đơn giản đến các chương trình phức tạp để chiết xuất (render) một ấm trà trong hình ảnh 3D.

Trong khi vẫn còn rất nhiều việc phải làm để đưa công nghệ này lên đúng tiềm năng của nó, các phần cứng quang học đã bắt đầu tiến gần hơn đến việc trở thành một CPU, dựa trên các chip quang học riêng biệt. Bước đi tiếp theo sẽ là bắt đầu liên kết phần cứng bên trong các chip này với nhau, thông qua các cáp kết nối quang học (hơn là dây đồng), và một số công ty đã bắt đầu thử nghiệm hệ thống phần cứng này. Bước tiếp theo, cần phải có một hệ thống lưu trữ mới cho các kết nối quang học này, trước khi triển khai các công việc tiếp theo.

Dù theo cách nào đi nữa, nhưng nghiên cứu này thực sự đang đạt được những bước tiến rõ rệt. Tuy nhiên, đây cũng là một bước đi sớm cho một vấn đề, mà hiện tại chúng ta chưa thực sự cần phải giải quyết ngay lập tức. Dù vậy, bằng việc xác định một cách tiếp cận thông qua kỹ thuật CMOS cũng như các hạn chế và những vấn đề gây bế tắc, nhóm nghiên cứu đã có thể đặt ra con đường sẽ đưa chúng ta đến nơi chúng ta muốn đến.

Tuesday, December 22, 2015

Làm mạch điện tử

Chuyên : Mạch in nhà máy giá tốt thời gian giao hàng nhanh 7-10 ngày

Bảng giá

 Mạch in 1-2 lớp : Đặt lẻ 10 bản 10x10cm Giá 250K. Đặt nhiều 1,6 triệu/m2 + Phí Setup 250K

 Mạch in 4 lớp : 4,7 triệu /m2 + Phí setup 1,6 triệu


Liện hệ:
Số điện thoại : 01686714114 . Mr Huy
gmail : ngongochuy89@gmail.com
địa chỉ : 67. ngõ 345 , KHương Trung (gần ngã tư Sở) . thành phố Hà Nội

Wednesday, November 25, 2015

Khóa học lập trình vi điều khiển


Trong tuần này mình sẽ tổ chức dạy học Lập Trình Tại Hà Nội
Bạn nào có nhu cầu đăng ký học thì liên hệ với mình nhé
Đến với khóa học bạn sẽ được hướng dẫn tận tình và chi tiết trên mạch và thiết bị thật.

Tất cả các học viên đều được hướng dẫn tận tình cho đến khi làm được mới thôi với lớp học chỉ tối đa 5 học viên
Sau khóa học:
       >> Học viên sẽ thu được những kiến thức căn bản về  kỹ thuật vi xử lý, vi điều khiển. Và đặc biệt là lắm chắc các kiến thức cơ bản liên quan đến vi điều khiển 
     >> Tự tay xây dựng được các project liên quan đến vi điều khiển 
          >> Thành thạo ứng dụng lập trình C cơ bản vào từng project.
Đề cương bài giảng
HƯớng dẫn lập trình C cơ bản (khoảng 1 buổi) (Nếu các bạn đã biết thì có thể lướt qua)



Hướng dẫn lập trình board vi điều khiển  (7 buổi)

Bài 1: Làm quen với vi điều khiển  

·         Clock của hệ thống

·         Lập trình với chức năng ouput, điểu khiển module led đơn



Bài 2: Lập trình với chức năng input và ouput



·         Lập trình input, đọc tín hiệu từ module phím bấm



·         Lập trình ouput, quét led 7 thanh

Bài 3: Giới thiệu về ngắt, lập trình điều khiển ngắt ngoài

·         Ngắt: biết cấu hình và cơ chế xử lý ngắt

·         Thực hành trên kit arduino với nút bấm, module hồng ngoại để đếm sự kiện...

Bài 4: Bộ đình thời (Timer)

·         Giới thiệu về timer, ngắt timer của Atmega328 

·         Thực hành tạo ngắt timer 1s để điều khiển bật tắt thiết bị

Bài 5: Giới thiệu về PWM

·         Tìm hiểu về PWM

·         Lập trình PWM điều khiển động cơ sử dụng pwm

Bài 6:  Bộ chuyển đổi tương tự - số (ADC)
ATmega328
·         Biết cách cấu hình và sử dụng ADC 

·         Thực hành đo điện áp và đo nhiệt độ...

Bài 7: Giao tiếp truyền thông nối tiếp UART

·         Biết cách cấu hình và sử dụng UART

·         Thực hành giao tiếp Kit arduino vơi máy tính, hiển thị các thông số điện áp, nhiệt độ...
Học phí như sau:
-Khóa C+8051 : 600.000 VNĐ
-Khóa C+AVR  : 800.000 VNĐ

Khóa C+ stm8 : 800.000 VNĐ
Áp dụng chung cho tất cả mọi người đi học và đi làm
thời gian học vào thứ 246 và chủ nhật
Địa điểm học: số 67, ngõ 345, đường Khương Trung ( gần Ngã tư sở), Thanh Xuân, Hà Nôi.
Điện thoại: 01686714114.

Gmail : ngongochuy89@gmail.com
inbox facebook : https://web.facebook.com/huy.ngo.35175
Admin group Điện tử ứng dụng : https://www.facebook.com/groups/dientuungdung/

Thursday, September 24, 2015

chia sẻ 1 ít tài liệu tích góp được


link download
Để có thể tìm thấy được nhiều điều bổ ích hơn trong học tập điện tử và các thiết bị điện thì bạn nên tham gia thảo luận tại Group