Перейти к содержанию
    

maxNTF1

Участник
  • Постов

    5
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Не подскажеш pic поддерживающий такую скорость.
  2. Об этом способе я читал, только пишут, что он не надежный, да и скорости 57600 мой pic16f628A такой обеспечить не может.
  3. Ссылок не помню воту меня есть пару статей скаченых. Смотри в атаче. Если че получится дай знать. boot.rar
  4. Именно та! Но только там есть несколько способов, мне подходит с использованием загрузчика, так как его теоретически можно передовать на разных скоростях.
  5. Уже долго мучаюсь над этим вопросом, нашел кучу примеров как это делать, но у самого ни как не получается. Ниже пример того, как я это пытаюсь сделать, что не так подскажите или дайте пример кода если у кого есть(можно и на Asembler). В результате выполнения данного кода телефон ни чего не отвечает на 0x55. #include <pic.h> void Send_Boot(void); char flag=0;//Флаг разрешения отправки Boot char Buf; void interrupt uart_input(void) { Buf=RCREG; if (Buf==0xA0) flag=1; } main() { RCSTA=0b10010000; TXSTA=0b00100100; SPBRG=12; INTCON=0b11000000; RCIE=1; PORTA=0x00; CMCON=0b00000111; TRISA=0x00; TRISB=0b00100110; STATUS=0x00; RB4=1; while(RB5!=0) continue;//ожидание нажатия кнопки выполнения данной функции RB4=0;//выход управляющий подачей напряжения зарядки Send_Boot();//функция запуска Boot } void Send_Boot(void) { char boot1[ 16 ]={0xA5,0x5A,0xA5,0xA5,0xE6,0x89,0x46,0x14,0xD1,0x90,0xFF,0x9A,0xFE,0x9B,0xE6 ,0x0C}; char boot2[ 16 ]={0x09,0x00,0xE6,0x8A,0xBF,0x04,0xD1,0x90,0xE6,0x0A,0xF0,0x0E,0xE6,0x8A,0xAF ,0x04}; char boot3[ 16 ]={0xB5,0x4A,0xB5,0xB5,0xE6,0x00,0x40,0x00,0xE1,0x00,0xF7,0xF0,0x00,0x02,0xE1 ,0x50}; char boot4[ 16 ]={0xF7,0xF0,0x01,0x02,0xE6,0x03,0x03,0x00,0xE1,0x00,0xF7,0xF0,0x00,0xF6,0xE1 ,0x50}; char boot5[ 16 ]={0xF7,0xF0,0x01,0xF6,0xE6,0xF0,0x80,0x00,0x74,0xF0,0xE0,0xEF,0xB7,0x48,0xB7 ,0xB7}; int i; while(TXIF!=1) continue; TXREG=0x55; //ждем H'A0' while(flag!=1) continue; for(i=0;i<16;i++) { while(TXIF!=1) continue; TXREG=boot1[ i ]; } for(i=0;i<16;i++) { while(TXIF!=1) continue; TXREG=boot2[ i ]; } for(i=0;i<16;i++) { while(TXIF!=1) continue; TXREG=boot3[ i ]; } for(i=0;i<16;i++) { while(TXIF!=1) continue; TXREG=boot4[ i ]; } for(i=0;i<16;i++) { while(TXIF!=1) continue; TXREG=boot5[ i ]; } flag=0; while(RB5!=1) continue; }
×
×
  • Создать...