Важная информация

User Tag List

Страница 21 из 22 ПерваяПервая ... 171819202122 ПоследняяПоследняя
Показано с 201 по 210 из 215

Тема: Восстановление Специалистов.

  1. #201
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,403
    Спасибо Благодарностей отдано 
    314
    Спасибо Благодарностей получено 
    596
    Поблагодарили
    442 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну почему, у меня есть ВТЦ32 (он даже тут засветился). Я его вполне быстро подстроил (уменьшил размер растра и подкрутил фазу). Правда, сделал я это для Сеги а не спеца, но спец там тоже на отлично показывал.

  2. #202
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Напряжение в БП подстраивал? Это просто единственное, что я не делал.

  3. #203
    Activist
    Регистрация
    02.01.2006
    Адрес
    Ufa
    Сообщений
    466
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    @HardWareMan спасибо, помогло !

    Пункт первый не понадобился, а вот второй - помог. Замкнул конденсатор на выходе и немного уменьшил амплитуду выходного сигнала впаяв последовательно с резистором 100 ОМ ещё один такой же. Теперь на LCD телевизоре изображение отличное и стабильное. На CRT изображение тоже стабильнее, но первого столбца так и не видно ...

  4. #204
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А я добавил в библиотеку PetitFat функции

    - Создать файл/папку.
    - Удалить файл/папку.
    - Изменить размер файла.

    Отладить всё и можно полноценно с файловой системой работать.

  5. #205
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как то так. Если кто то заметит ошибку, кричите.

    Код:
    /*-----------------------------------------------------------------------*/
    /* Format name for directory entry                                       */
    /*-----------------------------------------------------------------------*/
    
    // Стандартная функция create_name изменяет второй аргумент, а это
    // нам не надо.
    
    static FRESULT create_name_2(DIR* dj, const char* name) {
      return create_name(dj, &name);
    }
    
    /*-----------------------------------------------------------------------*/
    /* Save sector                                                           */
    /*-----------------------------------------------------------------------*/
    
    // Сохранить сектор на диск
    
    static DRESULT disk_write(const BYTE* buf, DWORD sector) {  
      DRESULT r;
      // Начало операции записи
      if(r = disk_writep(0, sector)) return r;
      // Запись данных
      if(r = disk_writep(buf, 512)) return r;
      // Окончание операции записи
      return disk_writep(0, 0);
    }
    
    /*-----------------------------------------------------------------------*/
    /* Reset free space counters on start                                    */
    /*-----------------------------------------------------------------------*/
    
    // Вызов этой функции надо добавить в конец pf_mount
    //
    // if(fs->fs_type==FS_FAT32 && LD_WORD(buf+BPB_RsvdSecCnt-13)>0) 
    //   if(resetFreeSpace(bsect+1, buf512)) 
    //     return FR_DISK_ERR; 
    
    static DRESULT resetFreeSpaceFat32(unsigned long bootSectorPlus1, BYTE* buf512) {  
      DRESULT r;
      if(r = disk_readp(buf512, bootSectorPlus1, 0, 512)) return r;
      if(*(unsigned long*)buf512 != 0x41615252) return RES_OK;
      if(*(unsigned long*)(buf512+0x1E4) != 0x61417272) return RES_OK;
      if(*(unsigned long*)(buf512+0x1FC) != 0xAA550000) return RES_OK;
      *(unsigned long*)(buf512+0x1E8) = 0xFFFFFFFF;
      *(unsigned long*)(buf512+0x1EC) = 0xFFFFFFFF;
      return disk_write(buf512, bootSectorPlus1);
    }
    
    /*-----------------------------------------------------------------------*/
    /* Save fat sector in all FAT tables                                     */
    /*-----------------------------------------------------------------------*/
    
    static char saveFatSector(unsigned long sector, const BYTE* buf) { 
      if(sector == -1) return 0;
      if(FatFs->fatbase2) if(disk_write(buf, FatFs->fatbase2 + sector)) return 1;
      return disk_write(buf, FatFs->fatbase + sector);
    }
    
    /*-----------------------------------------------------------------------*/
    /* Alloc cluster                                                         */
    /*-----------------------------------------------------------------------*/
    
    static FRESULT allocClusterFat32(unsigned long* cluster, BYTE* buf) {
      unsigned char i;
      unsigned long s, sectorsInFat, *a;
    
      // Кол-во секторов в таблице FAT
      sectorsInFat = (FatFs->n_fatent + 127) / 128;
      // В первом секторе первых 2 числа пропускаем
      i = 2, a = ((unsigned long*)buf)+2;
      // Последовательно перебираем сектора
      for(s = 0; s < sectorsInFat; s++) {
        if(disk_readp(buf, FatFs->fatbase + s, 0, 512)) return FR_DISK_ERR;
        // Среди 128 чисел в секторе ищем 0
        for(; i < 128; i++, a++) {
          if(*a == 0) {
            // Мы могли вылететь за пределы таблицы FAT
            *cluster = i + s * 128;
            if(*cluster >= FatFs->n_fatent) return FR_NO_FREE_SPACE;
            // Помечаем кластер как последний
            *a = 0x0FFFFFFF;
            // Сохраняем изменения
            if(saveFatSector(s, buf)) return FR_DISK_ERR;
            // Ок
            return FR_OK;
          }
        }
        // Для цикла выше.
        i = 0, a = (unsigned long*)buf;
      }
      // Свобожных кластеров нет.
      return FR_NO_FREE_SPACE;
    }
    
    /*-----------------------------------------------------------------------*/
    /* Add cluster in chain                                                  */
    /*-----------------------------------------------------------------------*/
    
    static char setNextClusterFat32(unsigned long cluster, unsigned long nextCluster, BYTE* buf512) {
      unsigned long sector;
      sector = cluster/128;
      if(disk_readp(buf512, FatFs->fatbase + sector, 0, 512)) return 1;
      ((unsigned long*)buf512)[cluster % 128] = nextCluster;  
      return saveFatSector(sector, buf512);
    }
    
    /*-----------------------------------------------------------------------*/
    /* Alloc directoy entry                                                  */
    /*-----------------------------------------------------------------------*/
    
    static FRESULT allocEntryFat32(DIR* dj, const char* name, BYTE* buf512, BYTE** outEntry) {
    	FRESULT res;
    	BYTE c, *a;
      unsigned char i;
      DWORD cluster;
     
      // Форматируем имя
      if(res = create_name_2(dj, name)) return res;
      // Ищем это имя в папке
      res = dir_find(dj, buf512);
      if(res != FR_NO_FILE) {
        if(res == FR_OK) return FR_FILE_EXISTS;
        return res;
      }
      // Перематываем папку в начало
      if(res = dir_rewind(dj)) return res;
      // Ищем в папке пустой описатель
    	res = FR_NO_FILE;
    	while (dj->sect) {
    		if (disk_readp(buf512, dj->sect, 0, 512)) return FR_DISK_ERR;
        for(i=0, a=buf512; i<16; i++, a+=32) {
          if((a[DIR_Attr] & AM_VOL) == 0 && (*a == 0 || *a == 0xE5)) {
            // Если мы добавляем в последний элемент, то надо надо создать последний элемент
            if(*a==0) {
              if(i<15) {
                memset(a+32, 0, 512-32-i*32); 
              } else
              if(dj->index/16+1 < FatFs->csize) {
                // Это последний элемент в секторе, но не в кластере
                memset(buf512, 0, 512);
              	if(disk_write(buf512, dj->sect+1)) return FR_DISK_ERR;
                // Восстанавливаем буфер
                if(disk_readp(buf512, dj->sect, 0, 512)) return FR_DISK_ERR;
              }
            }
            // Инициализируем найденный элемент
            memset(a, 0, 32);
            goto break2;
          }
        }
        // Следующий сектор
    		dj->index += 15;
    		if(res = dir_next(dj)) {
          if(res != FR_NO_FILE) return res;
          // В папке может быть не более 65535 файлов
          if((unsigned short)dj->index==65535)
            return FR_DIR_FULL;
          // Добавить еще один кластер к папке.
          if(res = allocClusterFat32(&cluster, buf512)) return res;
          if(setNextClusterFat32(dj->clust, cluster, buf512)) return FR_DISK_ERR; 
          dj->clust = cluster;
          dj->sect = clust2sect(cluster);
          // Инициализируем сектор
          memset(buf512, 0, 512);
          a = buf512;
          break;
        }
    	}
    break2:
      // Запоняем имя
      dj->fn = a;
      create_name_2(dj, name);
      // Возвращаем указатель на найденный элемент
      if(outEntry) *outEntry = a;
      // Ок
      return FR_OK;
    }
    
    /*-----------------------------------------------------------------------*/
    /* Free cluster chain                                                    */
    /*-----------------------------------------------------------------------*/
    
    static FRESULT freeChain(unsigned long cluster, BYTE* buf512) {
      unsigned long s, s1, *a;
      s1 = -1;
      while(cluster >= 2 && cluster < FatFs->n_fatent) {
        s = cluster/128;
        if(s!=s1) {
          if(saveFatSector(s1, buf512)) return FR_DISK_ERR;
          s1 = s;
          if(disk_readp(buf512, FatFs->fatbase+s, 0, 512)) return FR_DISK_ERR;
        }
        a = (unsigned long*)(buf512 + (cluster%128)*4);
        cluster = *a;
        *a = 0;
      }
      if(saveFatSector(s1, buf512)) return FR_DISK_ERR;
      return FR_OK;
    }
    
    /*-----------------------------------------------------------------------*/
    /* Is empty folder                                                       */
    /*-----------------------------------------------------------------------*/
    
    static FRESULT isEmptyFolder(DWORD cluster, BYTE* buf512) {
      DIR dir;
      FRESULT res;
      BYTE* a;
      unsigned char i;
     
      // Для последовательного четния всех секторов папки
      dir.sclust = cluster;
      if(res = dir_rewind(&dir)) return res;
      // Первые два элемента пропускаем (должны быть .. и .)
      i = 2, a = buf512 + 64;
      // Обрабатываем все сектора
      while(dir.sect) {
        if(disk_readp(buf512, dir.sect, 0, 512)) return FR_DISK_ERR;
        // В секторе 16 описателей
        for(; i < 16; i++, a += 32) {
          // Это был последний описатель
          if(*a == 0) return FR_OK;
          // Найден файл или папка, ошибка
          if((a[DIR_Attr] & AM_VOL) == 0 && *a != 0xE5) return FR_DIR_NOT_EMPTY;
        }
        // Следующий сектор
        dir.index += 15;
        if(res = dir_next(&dir)) {
          // Это был последний сектор, всё ок.
          if(res == FR_NO_FILE) return FR_OK;
          // Ошибка
          return res;
        }
        // Для цикла выше
        i = 0, a = buf512;
      }
    }
    
    /*-----------------------------------------------------------------------*/
    /* Convert bytyes to clusters                                            */
    /*-----------------------------------------------------------------------*/
    
    static unsigned long bytesToClusters(unsigned long sizeInBytes) {
      unsigned long bytesInCluster;
      bytesInCluster = FatFs->csize*512;
      return (sizeInBytes + bytesInCluster - 1) / bytesInCluster;
    }

  6. #206
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    /*-----------------------------------------------------------------------*/
    /* Create file                                                           */
    /*-----------------------------------------------------------------------*/
    
    FRESULT pf_createFile(const char *path, const char* new_name, BYTE* buf512) {
      DIR dir;
      FRESULT res;
    
      if(FatFs->fs_type != FS_FAT32) return FR_NO_FREE_SPACE;
    
      // Ищем папку
      if(res = pf_opendir(&dir, path)) return res;
    
      // Добавляем в папку описатель
      if(res = allocEntryFat32(&dir, new_name, buf512, 0)) return res;
    
      // Сохраняем описатель на диск
      if(disk_write(buf512, dir.sect)) return FR_DISK_ERR;
      return FR_OK;
    }
    
    /*-----------------------------------------------------------------------*/
    /* Create Directory                                                      */
    /*-----------------------------------------------------------------------*/
    
    FRESULT pf_createDir(const char *path, const char* new_name, BYTE* buf512) {
      DIR dir;
      FRESULT res;
      BYTE* entry;
      DWORD cluster;
    
      if(FatFs->fs_type != FS_FAT32) return FR_NO_FREE_SPACE;
    
      // Ищем папку
      if(res = pf_opendir(&dir, path)) return res;                     
    
      // Выделяем кластер
      if(res = allocClusterFat32(&cluster, buf512)) return res;             
    
      // Добавляем в папку описатель
      if(res = allocEntryFat32(&dir, new_name, buf512, &entry)) return res; 
    
      // Заполняем описатель
      entry[DIR_Attr] = AM_DIR;
      *(unsigned short*)(entry+DIR_FstClusHI) = cluster>>16;
      *(unsigned short*)(entry+DIR_FstClusLO) = (unsigned short)cluster;
    
      // Сохраняем описатель на диск
      if(disk_write(buf512, dir.sect)) return FR_DISK_ERR;
    
      // Создаем пустую папку
      memset(buf512, 0, 512);
      memset(buf512, ' ', 11);
      buf512[0] = '.';
      buf512[DIR_Attr] = 0x10;
      *(unsigned short*)(buf512+DIR_FstClusHI) = cluster>>16;
      *(unsigned short*)(buf512+DIR_FstClusLO) = (unsigned short)cluster;
      memset(buf512+32, ' ', 11);
      buf512[32+0] = '.';
      buf512[32+1] = '.';
      buf512[32+DIR_Attr] = 0x10;
      if(dir.sclust>2) {
        *(unsigned short*)(buf512+32+DIR_FstClusHI) = dir.sclust>>16;
        *(unsigned short*)(buf512+32+DIR_FstClusLO) = (unsigned short)dir.sclust;
      } 
    
      // Сохраняем папку
      if(disk_write(buf512, clust2sect(cluster))) return FR_DISK_ERR;
    
      return FR_OK;
    }
    
    /*-----------------------------------------------------------------------*/
    /* Delete file or folder                                                 */
    /*-----------------------------------------------------------------------*/
    
    FRESULT pf_delete(const char *path, BYTE* buf512) {
    	DIR dir;
    	FRESULT res;
      long cluster;
    
      if(FatFs->fs_type != FS_FAT32) return FR_NO_FREE_SPACE;
    
      // Ищем файл
      dir.fn = buf512 + 32;
      if(res = follow_path(&dir, buf512, path)) return res;
      
      // Это корневая папка
      if(buf512[0] == 0) return FR_NO_PATH;
    
      // Первый кластер файла или папки
      cluster = LD_CLUST(buf512);
    
      // В папке не должно быть файлов
      if(buf512[DIR_Attr] & AM_DIR) {
        if(res = isEmptyFolder(cluster, buf512)) return res;
      }
    
      // Удаляем описатель
      if(disk_readp(buf512, dir.sect, 0, 512)) return FR_DISK_ERR;
      buf512[(dir.index % 16) * 32] = 0xE5;
      if(disk_write(buf512, dir.sect)) return FR_DISK_ERR;    
    
      // Освобождаем цепочку кластеров
      return freeChain(cluster, buf512);
    }
    
    /*-----------------------------------------------------------------------*/
    /* Change file length                                                    */
    /*-----------------------------------------------------------------------*/
    
    FRESULT pf_setSize(const char *path, unsigned long fileSize, BYTE* buf512) {
      DIR dir;
      FRESULT res;
      BYTE* entry;
      unsigned long cluster, needClusters, firstCluster, prevCluster;
    
      if(FatFs->fs_type != FS_FAT32) return FR_NO_FREE_SPACE;
    
      // Ищем файл
      dir.fn = buf512 + 32;
      res = follow_path(&dir, buf512, path);
      if(res != FR_OK) return res;
      if(buf512[0]==0 || (buf512[DIR_Attr]&AM_DIR)!=0) return FR_NO_PATH; // Это корневая папка или папка
     
      // Первый кластер файла 
      cluster = LD_CLUST(buf512);
      if(cluster < 2 || cluster >= FatFs->n_fatent) cluster=0; // Коррекция ошибки
      firstCluster = cluster;
    
      // Расчет кол-ва кластеров
      needClusters = bytesToClusters(fileSize);
    
      // Пропуск кластеров
      prevCluster = 0;
      while(cluster && needClusters) {
        needClusters--;
        prevCluster = cluster;
        cluster = get_fat(cluster);
        if(cluster < 2 || cluster >= FatFs->n_fatent) cluster=0;
      }
    
      if(needClusters) {
        // Добавление кластеров
        for(;needClusters; --needClusters) {
          res = allocClusterFat32(&cluster, buf512);
          if(res != FR_OK) return res;
          if(prevCluster) setNextClusterFat32(prevCluster, cluster, buf512);
                     else firstCluster = cluster;
          prevCluster = cluster;
        }
      } else
      if(cluster) {
        // Удаление кластеров
        if(prevCluster) setNextClusterFat32(prevCluster, 0x0FFFFFFF, buf512);
                   else firstCluster = 0;
        freeChain(cluster, buf512);
      }
    
      // Корректируем описание файла
    
      if(disk_readp(buf512, dir.sect, 0, 512)) return FR_DISK_ERR;
    
      entry = buf512 + (dir.index % 16) * 32;
      *(unsigned long *)(entry+DIR_FileSize ) = fileSize;
      *(unsigned short*)(entry+DIR_FstClusHI) = firstCluster>>16;
      *(unsigned short*)(entry+DIR_FstClusLO) = (unsigned short)firstCluster;
    
      if(disk_write(buf512, dir.sect)) return FR_DISK_ERR;
    
      return FR_OK;
    }
    Последний раз редактировалось vinxru; 16.04.2013 в 11:12.

  7. #207
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,165
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    125
    Поблагодарили
    71 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    vinxru, ты наверное единственный кто ваяет программы не на ассемблере. Так что извините, не бульмесиум...

  8. #208
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    vinxru, два вопроса:
    1. Компилируешь своим компилятором С? Когда релиз?
    2. Либы FAT что ты юзаешь, используют 32-битные типы? Почему спрашиваю: я в свое время использовал FatFS от Chan, использованные там 32-битные типы серьезно ограничивали в выборе компилятора.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  9. #209
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    1. Компилируешь своим компилятором С? Когда релиз?
    Это компилируется для AVR микроконтроллера.


    Эти функции, это расширение для сверх-популярной библиотеки PetitFat от Chan. Большая FatFS от Chan не влезает в 1 Кб оперативки и 8 Кб ПЗУ, которые есть у ATMega8.

    ---------- Post added at 18:15 ---------- Previous post was at 18:15 ----------

    Цитата Сообщение от Error404 Посмотреть сообщение
    Когда релиз?
    Сразу после Специалистов займусь. Пока он крайне сырой.

    Причем. Я был "в отпуске" последние недели, все мои компьютеры и паяльники были упакованы в коробки. И завтра я возвращаюсь к себе в офис-мастерскую!

    Более того, на майских праздниках будет много свободного времени.



    ---------- Post added at 18:16 ---------- Previous post was at 18:15 ----------

    Цитата Сообщение от Error404 Посмотреть сообщение
    Либы FAT что ты юзаешь, используют 32-битные типы? Почему спрашиваю: я в свое время использовал FatFS от Chan, использованные там 32-битные типы серьезно ограничивали в выборе компилятора.
    Да, использую
    Последний раз редактировалось vinxru; 17.04.2013 в 19:21.

  10. #210
    Junior
    Регистрация
    17.02.2021
    Адрес
    г. Чебоксары
    Сообщений
    9
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Уважаемые Специалисты, помогите в ремонте.
    Изначально при включении не было ни видео, ни звуков. Заменил ИЕ1 и проц, теперь загружается, но выдает следующее:




    Обзвонил несколько сервисов, на возможность прошить РФ тестом, но пока, безрезультатно.
    В каком порядке проверять?

    У меня Специалист, явно "ТЕМП", на РУ5
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	IMG_1114.jpg 
Просмотров:	71 
Размер:	71.6 Кб 
ID:	74746   Нажмите на изображение для увеличения. 

Название:	IMG_1113.jpg 
Просмотров:	62 
Размер:	66.1 Кб 
ID:	74745   Нажмите на изображение для увеличения. 

Название:	IMG_1115.jpg 
Просмотров:	65 
Размер:	89.3 Кб 
ID:	74747  

Страница 21 из 22 ПерваяПервая ... 171819202122 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Восстановление Scorpion ZS-256
    от AlexMik в разделе Scorpion
    Ответов: 127
    Последнее: 15.08.2013, 19:30
  2. восстановление Орион-128
    от sergey2b в разделе Орион
    Ответов: 1
    Последнее: 05.02.2011, 15:32
  3. Восстановление ПК Мастер-128
    от PKZX в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 3
    Последнее: 13.03.2010, 22:10
  4. Хочу выслушать мнения специалистов...
    от ILoveSpeccy в разделе Музыка
    Ответов: 23
    Последнее: 29.08.2008, 04:35

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •