Duyphi dạo này bị seo thế . Đang định chỉ cho cái app notes AVR230 nhưng chắc đọc rồi hả.
Thông báo
Collapse
No announcement yet.
MegaLoad - Bootloader for AVR
Collapse
X
-
AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
-
Nguyên văn bởi VNarmy Xem bài viếtDuyphi dạo này bị seo thế . Đang định chỉ cho cái app notes AVR230 nhưng chắc đọc rồi hả.
Comment
-
Nguyên văn bởi VNarmy Xem bài viếtNghe các bạn cãi nhau mình cũng rút ra được vài điều. Mình có vài ý kiến thế này:
Thứ nhất có thể NVT2 chưa làm cái Mega Load nên chưa biết.
Thứ hai Sphinx không dùng bản mới nhất ở microsyl nên cũng chưa nắm được hết.
Để mình giải thích rõ nhé:
Cái bước 5 trong cái ảnh của NVT2 là reset bằng phần mềm Mega Load trên PC chứ không phải là reset bằng phần cứng như Sphinx nói đâu. Và Should see ATmega reset theo mình là nó nhận được trả lời khi bấm nút reset trên PC.
Quy trình thực hiện của mình là:
1. Sửa các #define ở file nguồn, dịch và nạp.
2. Rút bộ nạp khỏi cổng USB. Chạy Mega Load. Cắm bộ nạp lại (vì nguồn của board lấy từ bộ nạp mà )
3. Bấm nút reset trên Mega Load. Thì xảy ra hiện tượng trên.
Mấy hôm nay bận nên chưa thử cách độ lại code của Sphinx. Mai sẽ thử.
@Sphinx: Mấy hôm nay bận order đợt hàng mới. Hôm nào hàng về sẽ gửi báo giá cho PNLab. Đảm bảo giá rẻ giật mìn
Do không có đủ trình độ cr**k cái trình dịch C mà nó yêu cầu nên không thử, chỉ xem các bác làm và có chút thắc mắc thui !
Trên web microsyl nói là megaload có khả năng monitor cái cổng COM(kể cả các chân tín hiệu bắt tay) nhưng không hiểu tại sao lại bắt cái bootloader chờ cho tới khi nhận được tín hiệu từ PC xuống mới vào mode nạp hoặc thả cho chương trình chính chạy, còn không thì đơ luôn. Hình như cách đây khá lâu có ai bảo rằng megaload có thể detect tín hiệu reset và điều khiển thông qua một chân tín hiệu bắt tay ( giống như ponyProg ấy). Hơn nữa "Reset has been send" là thế nào nhỉ ?!, ý nghĩa không rỏ ràng -> hông hiểu
Nào giờ vẫn phục MegaLoad vì nghỉ rằng megaload có khả năng đó, giờ theo các bác nói thế thì nó cũng chẵng hơn gì đa số các bootloader khác chạy với AVRProg ngoài việc nó có phần mềm riêng (AVRProg chạy block mode cũng nhanh không kém thì phải ) !
NVT2Tín đồ AVR giáo.
Comment
-
@NVT: Nóng, có nóng tí nèo đâu nhỉ. HN đợt này hơi lạnh, có SG thì có khi nóng
Thưa các bác, em đã tìm đc cái lỗi của nó nhưng không hỉu chữa như nèo:
Code:void main(void) { unsigned char i; PULLUPPORT = PULLUPPIN; // Pull up on RX line _UBRRL = (XTAL / (16 * BAUDRATE)) - 1; //set baud rate; _UCSRB = 0x18; // Rx enable Tx Enable _UCSRC = 0x86; // Asyn,NoParity,1StopBit,8Bit #ifdef RS485DDR RS485DDR |= RS485TXE; // RS485 Tranceiver switch pin as output RS485PORT &= ~RS485TXE; // RS485 in Rx mode #endif do i = _UDR; // read and ignore data until buffer clear while(_UCSRA & 0x80); TxChar('>'); if (RxChar() == '<') { TxChar(DeviceID); TxChar(FlashSize); TxChar(BootSize); TxChar(PageSize); TxChar(EEpromSize); TxChar('!'); while (1) { GetPageNumber(); if (RealPageAddress == 0xffff) break; if (WriteFlash()) TxChar('!'); else TxChar('@'); } #ifdef EEPROM EEpromLoad(); #endif #ifdef LOCKBIT LockBit(); #endif } #ifdef RAMPZ_FLAG RAMPZ = 0; #endif #ifdef INTVECREG INTVECREG = 0x01; // Enable interrupt vector select INTVECREG = 0x00; // Move interrupt vector to flash #endif _UCSRA |= (1<<_TXC); TxChar('X'); asm("jmp 0x0000"); // Run application code }
IlcR1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%X
IlcR1: là init các thông số của Mega8535
40 dấu "!" tiếp theo tương ứng với nạp thành công 40 pages
% là nạp lock bit
X là từ cái lệnhCode:TxChar('X');
Như vậy nó đã chạy qua đoạn đỏ sao nó lại không thực hiện lệnh Jmp 0x0000 (đoạn mầu vàng ở trên).
Do vậy nó lại quay về từ đầu của Main.
Ngoài ra, flash của mega8535 chỉ có 16 trang (theo datasheet). Sao ở đây lại nạp đến 40 trang. Hay cai init bị sai? Thật là khó hỉu quá.Last edited by VNarmy; 15-10-2007, 18:02.AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
Comment
-
Nguyên văn bởi VNarmy Xem bài viết@NVT: Nóng, có nóng tí nèo đâu nhỉ. HN đợt này hơi lạnh, có SG thì có khi nóng
Thưa các bác, em đã tìm đc cái lỗi của nó nhưng không hỉu chữa như nèo:
Code:void main(void) { unsigned char i; PULLUPPORT = PULLUPPIN; // Pull up on RX line _UBRRL = (XTAL / (16 * BAUDRATE)) - 1; //set baud rate; _UCSRB = 0x18; // Rx enable Tx Enable _UCSRC = 0x86; // Asyn,NoParity,1StopBit,8Bit #ifdef RS485DDR RS485DDR |= RS485TXE; // RS485 Tranceiver switch pin as output RS485PORT &= ~RS485TXE; // RS485 in Rx mode #endif do i = _UDR; // read and ignore data until buffer clear while(_UCSRA & 0x80); TxChar('>'); if (RxChar() == '<') { TxChar(DeviceID); TxChar(FlashSize); TxChar(BootSize); TxChar(PageSize); TxChar(EEpromSize); TxChar('!'); while (1) { GetPageNumber(); if (RealPageAddress == 0xffff) break; if (WriteFlash()) TxChar('!'); else TxChar('@'); } #ifdef EEPROM EEpromLoad(); #endif #ifdef LOCKBIT LockBit(); #endif } #ifdef RAMPZ_FLAG RAMPZ = 0; #endif #ifdef INTVECREG INTVECREG = 0x01; // Enable interrupt vector select INTVECREG = 0x00; // Move interrupt vector to flash #endif _UCSRA |= (1<<_TXC); TxChar('X'); asm("jmp 0x0000"); // Run application code }
IlcR1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%X
IlcR1: là init các thông số của Mega8535
40 dấu "!" tiếp theo tương ứng với nạp thành công 40 pages
% là nạp lock bit
X là từ cái lệnhCode:TxChar('X');
Như vậy nó đã chạy qua đoạn đỏ sao nó lại không thực hiện lệnh Jmp 0x0000 (đoạn mầu vàng ở trên).
Do vậy nó lại quay về từ đầu của Main.
Ngoài ra, flash của mega8535 chỉ có 16 trang (theo datasheet). Sao ở đây lại nạp đến 40 trang. Hay cai init bị sai? Thật là khó hỉu quá.
2. Trong tệp lệnh của mega8535 không có lệnh "jmp" nên lệnh đó nếu dịch ra thì coi như không có, bạn nên thay bằng lệnh "rjmp".
3. Cẩn thận với hai dòng lệnh mov cái reset vector
NVT2Tín đồ AVR giáo.
Comment
-
Thanks NVT2 đã giúp. Tuy nhiên vẫn không được. Đang nản quá.
Mình có cảm giác là 2 cái lệnh move vector ngắt không thực hiện đúng. Có lẽ quay lại với vấn đề này sau vậy.AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
Comment
-
Ngày trước em dùng MegaLoad với con 8535 mãi mà, có sao đâu nhỉ?PNLab
Mạch nạp/debug ULink2, Jlink ARM USB
Mạch nạp AVR, PIC, 8051, MSP430 USB
Mạch phát triển STM32, ARM9, ARM11
more...www.pnlabvn.com
Comment
-
Nguyên văn bởi sphinx Xem bài viếtNgày trước em dùng MegaLoad với con 8535 mãi mà, có sao đâu nhỉ?
Chú sphinx này ác.AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
Comment
-
Cứ xóa cái đoạn mã mov reset vector đi, không có nó cũng không sao đâu tại vì hình như trong source này không có đụng tới interrupt.
Bạn nên dùng đoạn mã thứ hai để thoát khỏi bootloader(vì lệnh "rjmp" thường không chuẩn, đặc biệt là với một số trình dịch, nó hiểu địa chỉ 0x00 là địa chỉ đầu tiên của chương trình chứ không phải là của bộ nhớ Flash,hơn nữa phạm vi hoạt động của lệnh "rjmp" chỉ có 2KB thôi, về lý thuyết thì không thể "nhảy" ngược về đầu bộ nhớ Flash được vì Mega8535 có 8K lận, nếu dịch với AVR-GCC thì coi chừng cái này), trước khi thoát,tốt nhất là khởi tạo lại các thanh ghi quan trọng như SREG(disable cái bit I). Ngoài việc cái bootloader nó không chụi thoát thì còn vấn đề gì không nữa nhỉ !
Protocol của MegaLoad đơn giản và không có quy tắc chung nên hơi khó kiểm tra.
NVT2Tín đồ AVR giáo.
Comment
-
Lý do cực chuối
%^$%&%&$%^#$^$&%$$@$@%#^%$&$%%#%!$@$@#^$&%^&%!$!&^ $&%$
Làm vài câu cho hạ hỏa đã
Em đã giải quyết xong con Mega Load - bootloader này.
Lý do cho cái lỗi cứ nạp đi nạp lại ở trên là do cái file hex nạp cho phần app em để trong ổ flash. Copy nó sang ổ cứng là nạp ngon. Pó tay với cái lỗi này. (Các bác đọc xong đừng cười nhé. )
@Sphinx: Con STK500 tự nhiên hôm nay lại được. Đỡ tốn tiền xăng qua chỗ PNLab.AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
Comment
-
Đâu dám đâu dám.
Mặc dù giúp đỡ của các bác không phải trực tiếp nhưng cũng gián tiếp giải quyết lỗi của iem. Nếu không có các bác giúp iem là iem đã giải tán nó lâu rùi. Nếu diễn đàn này cho thanks nhiều lần thì iem đã gửi các bác cái nữa. Nhưng thui thanks ở đây cũng được.
Thanks các pác.AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
Xem thêm tại Online Store ---> Click here
Mob: 0982.083.106
Comment
-
Chào các bác,
Em thấy các bác cũng nghiên cứu nhiều về bootloader nhưng có ai đã thử ứng dụng này để cập nhật firmware cho các AVR trên các slave trong một mạng 485 chưa? Nếu có nhiều người quan tâm về vấn đề này chúng ta sẽ lập một box riêng để bàn về nó.
Comment
-
Bootloader voi ATMEGA8 TQFP
Mới rinh về mấy con ATMEGA8 TQFP. Thử nạp bằng ISP thấy khá nhon. Thế mà vẫn làm toi 1 con. Gửi ít kinh nghiệm để ai gặp thằng này đỡ phải trả giá. Con ATMEGA này giá 22K, rất tiện dụng.
Với AVR cần chú ý kô thiết kế chân output thẳng ra tải (Led, relay) vì một số chân mux với bên trong nên dòng sink/source của nó chỉ có khoảng 1mA thôi. Nếu không buffer thì rất dễ phải làm lại mạch in.
- Mạch nạp ISP: chỉ tốn 1 con 74LS/HC244. Nhớ thêm R 10k giữa MOSI và Vcc.
- Bootloader: MegaLoad, 512words, 8MHz internal, 9600.Attached FilesLast edited by anhtuan133; 07-11-2007, 12:52.! ! you can win if you want ! !
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Hỏi về bơm màng bldcbởi nhathung1101Thì đây là 4r điên nặng điện mà, nên họ show phần điện thôi. Phần "cốt lõi" có cái tay biên chắc sang Văn Môn rồi....
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 18:54 -
-
Trả lời cho Chọn dây dẫn cho điện DC?bởi nhathung1101Điện DC đương nhiên là khác với AC rồi. Chỉ cần biết mặt chữ là thấy khác như gà trống với gà mái mà.
Còn về bản chất, AC là dòng điện hoạt động theo tần số. Tần số càng cao thì dây dẫn càng mỏng, nhẹ, vì hiệu ứng...-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 18:46 -
-
Trả lời cho Công thức điện tửbởi nhathung1101Ăn ít => Nói nhiều.
Nói nhiều => Làm ít.
Làm ít => Vợ mắng.
Vợ mắng => Cáu nhiều.
Cáu nhiều => Ngủ ít.
Ngủ ít => Râu nhiều.
Râu nhiều =>...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 18:39 -
-
Trả lời cho Chọn dây dẫn cho điện DC?bởi mèomướpDạ vài chục mét thì chú tính như vậy được ạ. Chứ chuẩn thì phải tính cả điện trở của toàn bộ chiều dài dây dẫn nhân với dòng điện xem sụt áp có trong khoảng chấp nhận đc hông ạ. Trong mạch điện tử khoảng cách ngắn và mạch...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 14:49 -
-
bởi vietroadTheo mình biết thì chọn dây dẫn dựa vào dòng tải. Thường thì tiết diện 1mm2 cho dòng 6A. Nhưng trong các mạch điện tử, như mạch nguồn tổ ong chẳng hạn, dòng đến vài chục Ampe mà đường mạch mỏng dính. Phải chăng điện DC nó khác với...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 14:19 -
-
Trả lời cho Hỏi về bơm màng bldcbởi vi van phamPhải xem cơ cấu bơm, chứ xem cơ cấu rotor, thì chỉ làm thầy bói xem voi.
-
Channel: Điện tử dành cho người mới bắt đầu
29-11-2024, 08:19 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11vg, cám ơn bác...........
-
Channel: Thiết bị điện tử cá nhân
28-11-2024, 14:37 -
-
bởi khoine9899
Em chào các anh và mọi người.
Hiện em đang có 1 con bơm màng trong thiết bị y tế đang gặp tình trạng yếu dần hoặc ngừng hoạt động sau thời gian sử dụng
Sau khi tìm hiểu về thông tin của bơm trên mạng thì em được biết...-
Channel: Điện tử dành cho người mới bắt đầu
28-11-2024, 11:22 -
-
Trả lời cho Cần mọi người giúp mạch tạo sóng siêu âm máy rửabởi bqviet
-
Channel: Điện tử công suất
27-11-2024, 20:26 -
-
bởi Minhdai95Em chào mọi người, e đang sửa mạch tạo sóng siêu âm cho máy rửa mà chưa có tài liệu để tham khảo sửa, mọi người cho e xin tài liệu ạ...
-
Channel: Điện tử công suất
27-11-2024, 11:37 -
Comment