Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Evolution23
0 / 0 / 0
Регистрация: 12.12.2014
Сообщений: 5
1

Разработка устройства набора номера

13.06.2016, 16:56. Просмотров 362. Ответов 6
Метки нет (Все метки)

Задание на КР "Разработка устройства набора номера". Разработать устройство на МК, реализующее функции ввода номера с клавиатуры, отображения набранного номера, формирование тонального сигнала(как я понял DTMF). Начал делать, по методичке от Атмел AVR314

http://www.atmel.com/ru/ru/Images/doc1982.pdf

Там же взял исходник для СИ. Подправил его. Делаю на МК ATtiny2313 . Исправил входные порты, выставил входной. Кнопки считывает, выход видит, но ничего на него не выводит, не могу понять в чем проблема, может быть кто нибудь сталкивался с DTMF, можете помочь? Ниже прикрепил схему и сам код.
0
Миниатюры
Разработка устройства набора номера  
Вложения
Тип файла: txt kodc1.txt (5.7 Кб, 7 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2016, 16:56
Ответы с готовыми решениями:

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

Приёмник цифр импульсного набора номера телефонного аппарата
нужен фрагмент программы на языке ассемблера с комментариями ( для приёмника цифр импульсного...

Разработка сигнализирующего охранного устройства
Добрый день уважаемые радиотехники. Являюсь студентом радиотехнического университета. Есть...

Разработка устройства для счета оборотов в секунду мотоцикла
Здраствуйте! С нескольких попыток получилось собрать простейший программатор для AVR. Началась...

ATMega8. Разработка устройства для контроля и индикации (учебное задание)
разработка устройства для контроля и индикации параметров изменяющегося по случайному закону 8-ми...

6
Витальич
1277 / 1183 / 175
Регистрация: 02.12.2013
Сообщений: 4,886
13.06.2016, 17:31 2
http://www.atmel.com/images/doc1982.pdf перевод http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR314.htm
0
Evolution23
0 / 0 / 0
Регистрация: 12.12.2014
Сообщений: 5
13.06.2016, 18:50  [ТС] 3
Дак я по ним и делал, в коде трудности
0
pyzhman
873 / 518 / 76
Регистрация: 15.05.2012
Сообщений: 3,006
13.06.2016, 19:36 4
Цитата Сообщение от Evolution23 Посмотреть сообщение
Кнопки считывает
Как определили?
0
Evolution23
0 / 0 / 0
Регистрация: 12.12.2014
Сообщений: 5
13.06.2016, 20:03  [ТС] 5
В протеусе это отображается, миганием портов
0
ValeryS
Модератор
7966 / 5935 / 785
Регистрация: 14.02.2011
Сообщений: 20,420
Завершенные тесты: 1
14.06.2016, 06:18 6
Цитата Сообщение от Evolution23 Посмотреть сообщение
в коде трудности
Самое время предоставить код, на суд общественности
"Кабы схемку аль чертеж -
Мы б затеяли вертеж,
Ну а так - ищи сколь хочешь,
Черта лысого найдешь!"
(с) Л. Филатов

Выложи сюда, для удобства обсуждения. Не забываем про теги форматирование кода

пока я в коде не увидел сканирования портов
по схеме, не вижу диодной развязки, что чревато
0
Evolution23
0 / 0 / 0
Регистрация: 12.12.2014
Сообщений: 5
14.06.2016, 13:29  [ТС] 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#include <tiny2313.h>
#include <delay.h>
#include <stdio.h>
 
 
#define  Xtal       8000000          // system clock frequency
#define  prescaler  1                // timer1 prescaler
#define  N_samples  128              // Number of samples in lookup table
#define  Fck        Xtal/prescaler   // Timer1 working frequency
#define  delaycyc   10               // port B setup delay cycles
 
//************************** SIN TABLE *************************************
// Samples table : one period sampled on 128 samples and
// quantized on 7 bit
//**************************************************************************
flash unsigned char auc_SinParam [128] = {
64,67,
70,73,
76,79,
82,85,
88,91,
94,96,
99,102,
104,106,
109,111,
113,115,
117,118,
120,121,
123,124,
125,126,
126,127,
127,127,
127,127,
127,127,
126,126,
125,124,
123,121,
120,118,
117,115,
113,111,
109,106,
104,102,
99,96,
94,91,
88,85,
82,79,
76,73,
70,67,
64,60,
57,54,
51,48,
45,42,
39,36,
33,31,
28,25,
23,21,
18,16,
14,12,
10,9,
7,6,
4,3,
2,1,
1,0,
0,0,
0,0,
0,0,
1,1,
2,3,
4,6,
7,9,
10,12,
14,16,
18,21,
23,25,
28,31,
33,36,
39,42,
45,48,
51,54,
57,60};
 
//***************************  x_SW  ***************************************
//Table of x_SW (excess 8): x_SW = ROUND(8*N_samples*f*510/Fck)
//**************************************************************************
 
//high frequency (coloun)
//1209hz  ---> x_SW = 79
//1336hz  ---> x_SW = 87
//1477hz  ---> x_SW = 96
//1633hz  ---> x_SW = 107
 
const unsigned char auc_frequencyH [4] = {
107,96,
87,79};
 
//low frequency (row)
//697hz  ---> x_SW = 46
//770hz  ---> x_SW = 50
//852hz  ---> x_SW = 56
//941hz  ---> x_SW = 61
 
const unsigned char auc_frequencyL [4] = {
61,56,
50,46};
 
 
//**************************  global variables  ****************************
unsigned char x_SWa = 0x00;               // step width of high frequency
unsigned char x_SWb = 0x00;               // step width of low frequency
unsigned int  i_CurSinValA = 0;           // position freq. A in LUT (extended format)
unsigned int  i_CurSinValB = 0;           // position freq. B in LUT (extended format)
unsigned int  i_TmpSinValA;               // position freq. A in LUT (actual position)
unsigned int  i_TmpSinValB;               // position freq. B in LUT (actual position)
 
//**************************************************************************
// Timer overflow interrupt service routine
//**************************************************************************
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{ 
  // move Pointer about step width aheaed
  i_CurSinValA += x_SWa;       
  i_CurSinValB += x_SWb;
  // normalize Temp-Pointer
  i_TmpSinValA  =  (char)(((i_CurSinValA+4) >> 3)&(0x007F)); 
  i_TmpSinValB  =  (char)(((i_CurSinValB+4) >> 3)&(0x007F));
  // calculate PWM value: high frequency value + 3/4 low frequency value
  OCR1A = (auc_SinParam[i_TmpSinValA] + (auc_SinParam[i_TmpSinValB]-(auc_SinParam[i_TmpSinValB]>>2)));
}
 
//**************************************************************************
// Initialization
//**************************************************************************
void init (void)
{
    TIMSK  = 0x04;                     // Int T1 Overflow enabled
    TCCR1A=0x81;
    TCCR1B=0x01;
    DDRD=0x20;                    // PORTD (OC1A) as output
}
 
//**************************************************************************
// Time delay to ensure a correct setting of the pins of Port B 
//**************************************************************************
 
 
//**************************************************************************
// MAIN
// Read from portB (eg: using evaluation board switch) which
// tone to generate, extract mixing high frequency
// (column) and low frequency (row), and then
// fix x_SWa and x_SWb
// row    -> PINB high nibble
// column -> PINB low nibble
//**************************************************************************
 
void main (void)
{
  unsigned char uc_Input;
  unsigned char uc_Counter = 0;
  init();
  for(;;){ 
    // high nibble - rows
    DDRB  = 0x0F;                     // high nibble input / low nibble output
    PORTB = 0xF0;                     // high nibble pull up / low nibble low value
    uc_Counter = 0;
    delay_ms(50);                          // wait for Port B lines to be set up correctly
    uc_Input = PINB;                  // read Port B
    do 
    {
      if(!(uc_Input & 0x80))          // check if MSB is low
      {
                                      // if yes get step width and end loop
        x_SWb = auc_frequencyL[uc_Counter];  
        uc_Counter = 4;
      }
      else
      {
        x_SWb = 0;                    // no frequency modulation needed
      }
      uc_Counter++;
      uc_Input = uc_Input << 1;       // shift Bits one left
    } while ((uc_Counter < 4));
 
    // low nibble - columns
    DDRB  = 0xF0;                     // high nibble output / low nibble input
    PORTB = 0x0F;                     // high nibble low value / low nibble pull up
    uc_Counter = 0;
    delay_ms(50);                          // wait for Port B lines to be set up correctly
    uc_Input = PINB;
    uc_Input = uc_Input << 4;     
    do 
    {
      if(!(uc_Input & 0x80))          // check if MSB is low
      {
                                      // if yes get delay and end loop
        x_SWa = auc_frequencyH[uc_Counter];
        uc_Counter = 4;
      }
      else 
      {
        x_SWa = 0;                 
      }
      uc_Counter++;
      uc_Input = uc_Input << 1;
    } while (uc_Counter < 4);
  } 
}
0
14.06.2016, 13:29
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2016, 13:29

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

Найдите сумму чисел из введённого набора от данного номера до данного номера
Например, если введены номера «2 4», то нужно найти сумму чисел в наборе со 2-го по 4-е. Формат...

Найдите сумму чисел из введённого набора от данного номера до данного номера
Найдите сумму чисел из введённого набора от данного номера до данного номера. Например, если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.