aide s'il vous plais pour booter le 68hc11 par pic16f877 en mode bootstrap
Rйpondre а la discussion
Affichage des rйsultats 1 а 3 sur 3

aide s'il vous plais pour booter le 68hc11 par pic16f877 en mode bootstrap



  1. #1
    LABTOOL48

    aide s'il vous plais pour booter le 68hc11 par pic16f877 en mode bootstrap


    ------

    salut

    je veux adapter ce code pour pic16f877a j'ai presque tous compris j'ai seulement un petit probleme avec la partie "init" pour quoi on lise le registre UART apres le reset ? pour quoi on compare l'octet recu par la valeur 0x8000 si l'UART contient seulement 8 bit ? et qui sont les message envoiyer par le mc68ch11 en cas d'erreure ? et pour quoi on envoi 255 apres la boucle de teste ? et merci a tous qui peut m'aider

    Proc Init {

    var Error,Adress,Counter,Byte;
    print(" Сброс процессора...");
    FDPTR = 0;EDPTR = 0;
    // настраиваем порт
    SetupComm(1200,8,0,0);
    // импульс сброса процессора
    RTS = 0;Delay(100);RTS = 1;Delay(100);RTS = 0;Delay(100);
    // загружаем bootloader
    while {
    Byte = UART;
    if(Byte = 0x8000) { break; }
    }
    print(" Загрузка Bootloadera...");
    UART = 255;


    ****************************** ****************************** *******
    * Модуль для микроконтроллера MC68HC11E9 (Motorola). *
    * *
    * Чтение и запись EEPROM. *
    ****************************** ****************************** *******


    [Description]

    Location = "Motorola\MC68HC11E9";
    Info = " Микросхема: MC68HC11E9.",
    " Объем EEPROM: 512 байт",
    " Объем ROM: 12288 байт",
    " ",
    " Выполняемые операции: Чтение, запись, проверка.",
    " ",
    " Автор модуля: fomalex@tut.by";

    Buffer1 = "ROM",12288;
    Buffer2 = "EEPROM",512
    Picture = "MC68HC11E9.bmp";
    UART = 1;

    [Menu]

    ReadEEPROM = "&Чтение EEPROM",ReadEEPROMButton,"Чтен ие EEPROM";
    WriteEEPROM = "&Запись",WriteEEPROMButton,"З аписать EEPROM";
    ReadROM = "Чтение ROM",ReadButton,"Чтение ROM";
    Compare = "&Проверка записи",CheckButton,"Проверка записи";
    Init = "Загр&узка загрузчика",ChipInfoButton,"За грузка загрузчика";
    Info = "&Информация о модуле",ModuleInfoButton,"Пока зать информацию о модуле";

    [Interface]

    cb = CheckBox,"Производить загрузку Bootloader-a",1;

    [Code]

    define EEPROM_BEGIN 0xB600
    define EEPROM_END 0xB7FF
    define EEPROM_SIZE 512
    define ROM_BEGIN 0xD000
    define ROM_SIZE 12288

    dim Bootloader[] =
    {$CE, $10, $00, $6F, $2C, $86, $30, $A7, $2B, $86, $0C, $A7, $2D, $6F, $35, $86,
    $10, $8D, $41, $4A, $26, $FB, $86, $A5, $A7, $2F, $1F, $2E, $20, $FC, $A6, $2F,
    $81, $52, $27, $4C, $81, $57, $27, $02, $20, $F0, $8D, $4A, $1F, $2E, $20, $FC,
    $A6, $2F, $C6, $16, $E7, $3B, $18, $E7, $00, $C6, $17, $E7, $3B, $8D, $15, $6F,
    $3B, $C6, $02, $E7, $3B, $18, $A7, $00, $C6, $03, $E7, $3B, $8D, $06, $6F, $3B,
    $8D, $14, $20, $C6, $36, $EC, $0E, $C3, $9C, $40, $ED, $1C, $86, $10, $A7, $23,
    $1F, $23, $10, $FC, $32, $39, $1F, $2E, $80, $FC, $18, $A6, $00, $A7, $2F, $39,
    $8D, $04, $8D, $F2, $20, $A4, $1F, $2E, $20, $FC, $A6, $2F, $1F, $2E, $20, $FC,
    $E6, $2F, $18, $8F, $39, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF,
    $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF}

    //****************************** *****************************
    //* Read - процедура чтения **
    //****************************** *****************************
    Proc ReadEEPROM {

    var Error,Adress,Byte;
    if(Interface0 = 1) {
    Error = Init;
    if(Error = 0x8000) { return; }
    }
    print(" Чтение EEPROM...");
    Adress = EEPROM_BEGIN;
    PBMax = EEPROM_SIZE;
    PBPos = 0;
    EDPTR = 0;
    while(PBPos != EEPROM_SIZE) {
    UART = 0x52;
    Byte = Adress >> 8; UART = Byte; UART = Adress;
    Byte = UART;
    if(Byte = 0x8000) {
    print(" Ошибка!");
    break;
    }
    EDATA = Byte;
    Adress++;PBPos++;EDPTR++;
    }
    if(Byte != 0x8000) {
    print("");
    print(" Чтение завершено. %d байт прочитано.",PBPos);
    }
    }
    //****************************** *****************************


    Proc WriteEEPROM {

    var Error,Adress,Byte,Data;
    if(Interface0 = 1) {
    Error = Init;
    if(Error = 0x8000) { return; }
    }
    print(" Запись EEPROM");
    Adress = EEPROM_BEGIN;
    PBMax = EEPROM_SIZE;
    PBPos = 0;
    EDPTR = 0;
    while(PBPos != EEPROM_SIZE) {
    UART = 0x57;
    Byte = Adress >> 8; UART = Byte; UART = Adress;
    Data = EDATA; UART = Data;
    Byte = UART;
    if(Byte = 0x8000) {
    print(" Ошибка записи. Тайм-аут.");
    break;
    }
    if(Byte != Data) {
    print(" Ошибка записи. Адрес %h. Записан байт %b, прочитан %b",Adress,Data,Byte);
    Byte = 0x8000;
    break;
    }
    Adress++;PBPos++;EDPTR++;
    }
    if(Byte != 0x8000) {
    print("");
    print(" Запись завершена. %d байт записано.",PBPos);
    }
    }
    //****************************** *****************************


    //****************************** *****************************
    //* Compare - процедура проверки **
    //****************************** *****************************
    Proc Compare {

    var Error,Adress,Byte;
    if(Interface0 = 1) {
    Error = Init;
    if(Error = 0x8000) { return; }
    }
    print(" Проверка EEPROM");
    Adress = EEPROM_BEGIN; PBMax = EEPROM_SIZE;
    PBPos = 0; EDPTR = 0; Error = 0;
    while(PBPos != EEPROM_SIZE) {
    UART = 0x52;
    Byte = Adress >> 8;
    UART = Byte;
    UART = Adress;
    Byte = UART;
    if(Byte = 0x8000) {
    print(" Ошибка!");
    break;
    }
    if(Byte != EDATA) {
    Error++;
    ESEL = 0;
    }
    else {ESEL = 1;}
    Adress++;PBPos++;EDPTR++;
    }
    if(Byte != 0x8000) {
    print("");
    print(" Проверка завершена. %d байт проверено. Несовпадений: %d",PBPos,Error);
    }
    }
    //****************************** *****************************

    // ****************************** ****************************
    // * Boot - процедура инициализации заргузчика **
    // ****************************** ****************************
    Proc Init {

    var Error,Adress,Counter,Byte;
    print(" Сброс процессора...");
    FDPTR = 0;EDPTR = 0;
    // настраиваем порт
    SetupComm(1200,8,0,0);
    // импульс сброса процессора
    RTS = 0;Delay(100);RTS = 1;Delay(100);RTS = 0;Delay(100);
    // загружаем bootloader
    while {
    Byte = UART;
    if(Byte = 0x8000) { break; }
    }
    print(" Загрузка Bootloadera...");
    UART = 255;
    PBMax = 133;
    Adress = 0;
    while(Adress != 133) {
    Byte = Bootloader[Adress];
    UART = Byte;
    Error = UART;
    if(Error = 0x8000) {
    print("\; Ошибка загрузки. Нет эха от контроллера.");
    return(0x8000);
    }
    if(Error != Byte) {
    print("\; Ошибка загрузки. Нет эха от контроллера.");
    print(" Отправлен байт %b, принят байт %b",Byte,Error);
    Error = 0x8000;
    return(0x8000);
    }
    Adress++;PBPos++;
    }
    // настраиваем порт
    SetupComm(9600,8,0,0);
    Counter = 10;
    while {
    Error = UART;
    if(Error = 0x8000) {
    Counter--;
    if(Counter = 0) {
    print("\; Ошибка загpyзки. Нет ответа от контpоллеpа.",Error);
    break;
    }
    }
    else {
    if (Error = 0xA5) {
    print("\; Загрузка успешно завершена.");
    interface0 = 0;
    break;
    }
    else {print(" Ошибка загрузки. Принят байт %d",Error); }
    //break;
    }
    }
    return(Error);
    }

    Proc ReadROM {

    var Error,Adress,Byte;
    if(Interface0 = 1) {
    Error = Init;
    if(Error = 0x8000) { return; }
    }
    print(" Чтение ROM...");
    Adress = ROM_BEGIN;
    PBMax = ROM_SIZE;
    PBPos = 0;
    FDPTR = 0;
    while(PBPos != ROM_SIZE) {
    UART = 0x52;
    Byte = Adress >> 8; UART = Byte; UART = Adress;
    Byte = UART;
    if(Byte = 0x8000) {
    print(" Ошибка!");
    break;
    }
    FDATA = Byte;
    Adress++;PBPos++;FDPTR++;
    }
    if(Byte != 0x8000) {
    print("");
    print(" Чтение завершено. %d байт прочитано.",PBPos);
    }
    }

    Proc Info {
    print("");
    print(" Модуль для программирования/чтения содержимого EEPROM");
    print(" микроконтроллера MC68HC11E9");
    print(" Файл модуля MC68HC11E9.chl");
    print("");
    print(" Поддерживает следующие функции:");
    print(" Чтение EEPROM");
    print(" Запись EEPROM");
    print(" Проверка EEPROM");
    print(" Чтение ROM");
    print("");
    print(" Автор модуля: fomalex@tut.by");
    }



    -----
    Derniиre modification par LABTOOL48 ; 14/03/2011 а 05h39.

  2. #2
    LABTOOL48

    Re : aide s'il vous plais pour booter le 68hc11 par pic16f877 en mode bootstrap

    bonjour

    je sais bien que ce code est tres claire pour vous a m'aider mais que c'est moi qui ne sais pas ecrire en francais je vais essayer cette fois de vous expliquer bien ce que je veux exactement j'ai recuperй ce code d'une aplwin qui programme les hc11 en mode bootstrap et je veux adapter ce code pour le pic16f877a car moi je ne peux pas utiliser le portcom de pc et j'ai seulement besoin de l'aide pour le code de "proc-init" ce code commence par la fonction "SetupComm(1200,8,0,0)" en initiale le portcomm par "1200b/s,1s/b,sans bit de paritй" et pui en reset deux fois le hc11 avec l'instruction "RTS = 0; Delay(100);RTS = 1;Delay(100);RTS = 0;Delay(100);" et apres en entre dans la boucle while comme j'ai vous ai montrй la boucle et c'est la ou j'ai le probleme
    while {
    Byte = UART;
    if(Byte = 0x8000) { break; }
    }
    ici en lit le registre UART apres le reset normalement pour voir si le hc11 est pres a recevй les 256 octet de fichier boot, ici je ne comprend pas pour quoi en compare la valeur 0x8000 avec le message recu pour quitter la bouce parceque le UART na que 8bit?

    et j'ai aussi trouver ce lien mais je comprend pas c'est quoi un message "break"

    Proc Init {

    SetupComm(1200,8,0,0);
    RTS = 0;
    Delay(100);
    RTS = 1;
    Delay(100);
    RTS = 0;
    Delay(100);
    while {
    Byte = UART;
    if(Byte = 0x8000) { break; }
    }
    UART = 255;
    Adress = 0;
    while(Adress != 133)
    {
    Byte = Bootloader[Adress];
    UART = Byte;
    Error = UART;
    if(Error = 0x8000) {
    print("\");
    return(0x8000);
    }
    if(Error != Byte)
    {
    print("\; Ошибка загрузки. Нет эха от контроллера.");
    print(" Отправлен байт %b, принят байт %b",Byte,Error);
    Error = 0x8000;
    return(0x8000);
    }
    Adress++;
    PBPos++;
    }
    SetupComm(9600,8,0,0);
    Counter = 10;
    while {
    Error = UART;
    if(Error = 0x8000)
    {
    Counter--;
    if(Counter = 0)
    {
    print("контpоллеpа.",Error);
    break;
    }
    }
    else {
    if (Error = 0xA5)
    {
    print("\; Загрузка успешно завершена.");
    interface0 = 0;
    break;
    }
    else {
    print(" Ошибка загбайт %d",Error);
    }
    //break;
    }
    }
    return(Error);
    }

  3. #3
    LABTOOL48

    Re : aide s'il vous plais pour booter le 68hc11 par pic16f877 en mode bootstrap

    j'ai oublier de copier le lien et merci a vous pour m'aider
    http://www.abcelectronique.com/acqui....html#Explicit

Discussions similaires

  1. Equation ionique & moleculaire.. Urgent s'il vous plais =/
    Par invite488fb996 dans le forum Chimie
    Rйponses: 0
    Dernier message: 31/08/2009, 17h56
  2. aidez moi s'il vous plais! (gйnйratrice synchrone)
    Par inviteb5de6c84 dans le forum Technologies
    Rйponses: 4
    Dernier message: 08/03/2009, 15h23
  3. [Microbiologie] Cйllule de nageote (urgent s'il vous plais !)
    Par invite78c59a1d dans le forum Biologie
    Rйponses: 2
    Dernier message: 26/09/2008, 09h47
  4. besoin d'aide s'il vous plais
    Par inviteda00cf91 dans le forum Йlectronique
    Rйponses: 2
    Dernier message: 10/04/2008, 13h20
Dans la rubrique Tech de Futura, dйcouvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...