Код программы с Atmega8 на ATtiny2313

Обсуждаем контроллеры компании Atmel.
Ответить
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Пн авг 12, 2013 07:55:15

Сообщение aLedorn »

Как надо изменить программу чтобы работало на Tiny2313 Ик-передатчик и ИК-приемник.
http://avr-start.ru/?p=1031#comment-1927
Если влом переходить по ссылке, то вот код:
Для Передатчика:

Код: Выделить всё

#include <mega8.h>
#include <stdio.h>
 
void main(void)
{
char i;
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTB=0x00;
DDRB=0xFF;
 
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTD=0x00;
DDRD=0x00;
 
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 2400
UCSRA=0x00;
UCSRB=0x10;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0xCF;
 
while (1)
      {
          i=getchar();
          if(i=='0')
          {
          PORTB.0=0;
          }
          if(i=='1')
          {
          PORTB.0=1;
          }
      };
}
Для приемника:

Код: Выделить всё

#include <mega8.h>
#include <stdio.h>
 
void main(void)
{
bit ps=0;
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=P State1=0 State0=P 
PORTB=0x05;
DDRB=0x02;
 
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=0 State0=T 
PORTD=0x00;
DDRD=0x02;
 
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Toggle
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x40;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1A=0x6E;
OCR1B=0x00;   
 
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 2400
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0xCF;
 
while (1)
      {
         if((PINB.0==0) && (ps==0))
         {
         putchar('0');
         ps=1;
         }
 
         if((PINB.2==0) && (ps==0))
         {
         putchar('1');
         ps=1;
         }
 
 
         if((PINB.0==1)&&(PINB.2==1))
         {
         ps=0;
         }
      };
}
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

#include <mega8.h> исправить на tiny2313 откомпилировать и читая даташит на последнюю исправить ошибки после компиляции
Реклама
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Пн авг 12, 2013 07:55:15

Сообщение aLedorn »

tiny2313.h: No such file or directory
Вот такая ошибка.

Я думаю по этой ошибке, не получится в коде искать ошибку.
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

А я ради прикола попробовал,у меня всё SUCH
Вложения
1.rar
(36.05 КБ) 147 скачиваний
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Пн авг 12, 2013 07:55:15

Сообщение aLedorn »

Не могу подсчитать "Частоту генерируемого сигнала"
Точнее не могу найти данные в даташите для тини2313
По этой формуле: http://avr-start.ru/wp-content/uploads/ ... sson17.png
Fclk — частота таймера;

N — частота предделителя таймера;

OCRn — значение регистра сравнения;

есть только Clock value: 8000,000 kHz
TCCR1A=0x40;
TCCR1B=0x09;
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

N задаётся юзером:
The N variable represents the prescaler factor (1, 8, 64, 256, or 1024).
От него зависит частота тактирования таймера.

OCRnA - то, что запишет юзер.

fclk_I/O - частота кварца.

Осталось подставить в формулу и получить результат.
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

Есть такая наука - математика. Эту формулу легко преобразовывать в поисках необходимого параметра
Ответить

Вернуться в «AVR»