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

idle1

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

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

  • Посещение

Сообщения, опубликованные idle1


  1. Может покажусь старомодным, но..

    У вас идет счет на такты и Вы пытаетесь все это сделать на С?? Не проще ли на ассемблере? там такты легко выравнвать.

    Да на С, через AVR Studio в качестве отладчика не сложней! И CAN я уже под 2313 дописал :)

  2. Если бы была возможность, то я бы не задумываясь перешел на специализированный контроллер. Но задача заключается именно под 2313 :( . Сейчас иду по методу накопления данных и последующей небольшой обработки. Коррекцию времени делаю (пытаюсь делать :) ) через прерывание по нисходящему фронту (Вход CAN с MCP2551 подключил к PD3(INT1)). Большой обработки в МК не будет, нужно только передать данные и получить, обработкой занимается другое ус-во. Ветвления я так же выравнивал, но там есть засада, переход по TRUE или по ELSE отличается на 1 цикл (0,05мкс)

  3. ... сочувствую, мы сменили контроллер, нормально не получилось.

    А на что сменили? Если формфактор такой же (питание(10-20), кварц(4-5), UART(2-3)), может и мне подойдет..

    У меня идея родилась через прерывание сделать, может пройдет, завтра попробую.

  4. Вот, возникла задача написать прием и передачу в CAN шину на контроллере тини2313. На первый взгляд ничего сложного, протокол документирован и понятен, НО есть но! Это времена, к примеру на 500кбит/с один бит передается за 2мкс, а на 250 за 4мкс, т.е имеем максимум 40 циклов на обработку одного бита, при этом еще нужно выкинуть мусор из сигнала. Я использовал контроллер на частоте 20Мгц.

    Я пробывал уже следующие варианты: И чтение с задержкой в 2 и 4мкс соответственно -> вывод из-за длительности посылки, примерно в 100-150 бит, время уплывает, а так же ещё из-за ветвлений (1-2 цикла в один бит -> ~0.10мкс), провал!

    Второй вариант со счетчиком при изменении с 1 на 0 и с 0 на 1 с последующей записью времени для анализа и расчета кол-ва бит, провал по непонятной мне причине, это загадочное отставание счетчика и непредсказуемость его показаний, при расчетной погрешности в 1.1мкс (цикл ожидания), наблюдаются отставания в две и даже 3мкс! Для связи с CAN шиной использую MCP2551 микрочипа.

    Может кто писал что подобное? Если не трудно отзовитесь! Контроллер сменить немогу *TAUP*. Может у кого есть алгоритм?

  5. И чем же отличается, скажем, PA0 от PB0? :)

    Возможно, эти определения и верны, но это явно не номера битов.

     

    А вот это утверждение не верно!

    Всякие там PB0 PD0 и т.п. заменяются комптлятором на номера в данном случае. И служат для визуального понимания написанного.

     

    iotiny2313.h
    
    ~~~
    /* PORTA */
    #define PA2  2
    #define PA1  1
    #define PA0  0
    
    /* PORTB */
    #define PB7     7
    #define PB6     6
    #define PB5     5
    #define PB4     4
    #define PB3     3
    #define PB2     2
    #define PB1     1
    #define PB0     0
    ~~~

  6. Да, программатор использую параллельный, при этом тактирование внутреннее 8МГц. По поводу испытаний на других ногах порта, А это пробывал с самого начала, эффект тотже :( Есть HEX код другой программы, там все работает при тех же значениях fuse bits, при этом прогнал её через дебагер в AVR Studio, различинй не усмотрел (при инициализации, а целиком не получается уж больно большая прога там). Проблема в том что нужно использовать именно пин PA2.

  7. Подскажите пожалуйста, столкнулся с такой проблемой как неработает вывод портаА, хотя порт B работает безукаризненно. Порт не пробит, уверен. Контроллер ATiny2313. Вот листинг. Заренее благодарен.

     

    #define ENABLE_BIT_DEFINITIONS 1
    #include <iotiny2313.h>
    #include <intrinsics.h>
    
    
    void main (void) {
      DDRB = 0xFF;
      DDRA = 0xFF;  
      
    while(1) {
      PORTB = (1<<PB0);
      PORTA = (1<<PA2);
      __delay_cycles (2000000);
      PORTB = (0<<PB0);
      PORTA = (0<<PA2);
      __delay_cycles (2000000);
    }
       
    }

×
×
  • Создать...