Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Ломастер
    Регистрация
    24.02.2008
    Сообщений
    287
    Вес репутации
    258

    По умолчанию Ардуино и порт Б

    Вопрос такой, можно ли пользовать не через асм порт B для параллельного ввода/вывода ввода сразу по всем 8 пинам? ассемблерные вставки можно делать? out PORTB,R16

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Ардуино и порт Б

    Можно, читай здесь http://arduino.cc/en/Reference/PortManipulation
    Вот пример:
    PHP код:
       #include <avr/io.h>
       #include <avr/delay.h>
       
       
    int main(void)              // начало основой программы
       
    {
       
            
    DDRD 0xff;   // все выводы порта D сконфигурировать как выходы

            
    while (1) {                     // Бесконечный цикл

                            
    PORTD 0xff;   // установить "1" на всех линиях порта D

                            
    _delay_ms(1000);// Ждем 1 сек.

                            
    PORTD 0x00;   // установить "0" на всех линиях порта D

                            
    _delay_ms(1000);// Ждем 1 сек.

                    
    }    
       } 
    На asembler будет немного по сложней
    Вот пример:
    PHP код:
     //http://compcar.ru 

    void setup()  

    pinMode(13OUTPUT);
    pinMode(12INPUT);
    }  
    void loop()  
    {  
    unsigned char reg=26;
    asm volatile(  "push %0 \n"
                   
    "label_1%=:  \n"
                  "COM %0  \n" 
                  "out %1, %0   \n" 
    "rjmp label_1%=  \n" 
                 
                  "pop %0   \n" 
                
    "=&r" (reg
                : 
    "I" (_SFR_IO_ADDR(PORTB))  ) ;

    Последний раз редактировалось Chip; 29.10.2010 в 22:57.

  3. #3
    Ломастер
    Регистрация
    24.02.2008
    Сообщений
    287
    Вес репутации
    258

    По умолчанию Re: Ардуино и порт Б

    Оооо шайтанама
    Спасибо.
    Играю в антирадар, раньше делал пилу заряжая коротким импульсом ёмкость , а сейчас поставил AD7302, чтобы точно напругой играть

  4. #4
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Ардуино и порт Б

    Напругу можно с помощью ШИМ регулировать

  5. #5
    Ломастер
    Регистрация
    24.02.2008
    Сообщений
    287
    Вес репутации
    258

    По умолчанию Re: Ардуино и порт Б

    Цитата Сообщение от Chip Посмотреть сообщение
    Напругу можно с помощью ШИМ регулировать
    Нужна больше точность.
    ЦАП нужен для формирования сдвига частоты гетеродина и для подпорки входного компаратора

  6. #6
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Ардуино и порт Б

    PWM + два RC фильтра, должно быть точно, не хуже чем ЦАП

  7. #7
    Ломастер
    Регистрация
    24.02.2008
    Сообщений
    287
    Вес репутации
    258

    По умолчанию Re: Ардуино и порт Б

    Цитата Сообщение от Chip Посмотреть сообщение
    два RC фильтра
    Скорость перестройки завязана на RC

  8. #8
    Ломастер
    Регистрация
    24.02.2008
    Сообщений
    287
    Вес репутации
    258

    По умолчанию Re: Ардуино и порт Б

    Да и цап уже куплен и опробован

  9. #9
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

    По умолчанию Re: Ардуино и порт Б

    dragon, правильный (понятный компилятору) С-код работает почти со скоростью асм-кода, если пользоваться именно С, а не структурами arduino. Поэтому на асм имеет заморачиваться только в редких случаях. Чаще возникает необходимость просматривать результат компиляции.

    вот во что скомпилялись две строки:
    PORTD=0;
    PORTB=0xFF;



    320: PORTD=0;
    +0000042E: B81B OUT 0x0B,R1 Out to I/O location
    321: PORTB=0xFF;
    +0000042F: EF8F SER R24 Set Register
    +00000430: B985 OUT 0x05,R24 Out to I/O location

  10. #10
    Ломастер
    Регистрация
    24.02.2008
    Сообщений
    287
    Вес репутации
    258

    По умолчанию Re: Ардуино и порт Б

    Прикольно получается. Пила максимального разрешения 256 точек 450Гц , а дальше понижая дискретность можно повысить частоту сканирования. 25 точек - 4.5КГц
    PHP код:
      for( b0=255;b0>0;b0--)
      {
        
    bh=b0>>2;
        
    bl=b0<<4;
        
    PORTB=bl  //PB4,PB5 
        
    PORTC=bh  //PC0-PC5
        
    digitalWrite(8,LOW); // Пин записи в DAC
        
    digitalWrite(8,HIGH);

    Последний раз редактировалось dragon; 31.10.2010 в 02:57.

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Ваши права

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