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 Trình điều khiển bước rời rạcbởi mèomướpDạ nếu chú đã viết được chương trình cho vđk thì thêm 1 chương trình con chạy động cơ bước chỉ đơn giản là copy phát. Về phần cứng thì vài con cách ly quang, vài con mosfet thôi ạ. thực sự là dễ dàng như bài tập bình thường của sinh viên thôi ạ...
-
Channel: Máy công cụ
Hôm qua, 12:55 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi Minhdai95vâng mình cảm ơn mn đã góp ý
-
Channel: Điện tử công suất
Hôm qua, 11:30 -
-
bởi tom22Xin chào
Tôi có một dự án trong đó một động cơ bước tích hợp được điều khiển bởi một bộ vi điều khiển.
Nhưng tôi thực sự không thích trả tiền cho trình điều khiển bước, khi tôi có một bộ vi điều khiển có khả năng thực...-
Channel: Máy công cụ
Hôm qua, 10:54 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi mèomướpDạ chú chủ thớt có thời gian và đam mê thì cứ từ từ ngâm cứu đi ạ đừng nghe chú Chú bq... dọa mà sợ ạ. Cái nguồn nhìn cũng lởm có khi hông bằng cái máy hàn tàu của chị hàng xóm hôm nọ tháo ra sửa với chú thợ thông ống nước suốt đêm mới xong. Chú ý an toàn xíu là được ạ...
-
Channel: Điện tử công suất
05-01-2025, 15:40 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi bqvietBộ nguồn xung ở tầm công suất 2700W này, gần 3 ký, không bao giờ đơn giản để mà sửa ngay cả đối với người có kinh nghiệm chứ đừng nói người không chuyên. Đám linh kiện công suất không tự nhiên cháy mà phải xuất phát từ nguyên nhân...
-
Channel: Điện tử công suất
04-01-2025, 22:09 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi mèomướpDạ chú kiểm tra đi ốt đầu vào, ra nữa ạ. Về phần kiểm tra dao động chú hỏi chị google ấy ạ, có nhìu cô chú đã hướng dẫn rồi ạ...
-
Channel: Điện tử công suất
04-01-2025, 16:53 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi Minhdai95mình đã kiểm tra phần công suất thấy hỏng cả 4 con IGBT mà mình muốn kiểm tra phần dao động và hồi tiếp khi chưa cấp điện cho mạch thì có cách nào không b, mình không phải dân trong nghề lên chưa có kinh nghiệm sửa. Cảm ơn b
-
Channel: Điện tử công suất
04-01-2025, 14:27 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi mèomướpDạ chú nhắm phần công suất dễ kiểm tra và hay hư hỏng nhất trước ạ. Rồi đến phần dao động nguồn, hồi tiếp...
-
Channel: Điện tử công suất
04-01-2025, 11:42 -
-
bởi Minhdai95mọi người đã ai sửa bộ nguồn này chưa ạ, cho e xin ít kinh nghiệm để sửa bộ nguồn. Em cảm ơn...
-
Channel: Điện tử công suất
04-01-2025, 11:22 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi nhathung1101
-
Channel: Điện tử dành cho người mới bắt đầu
31-12-2024, 17:39 -
Comment