|
|
 |
Ответов
|
Feb 25 2010, 19:08
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 26-12-08
Пользователь №: 42 777

|
Доброго времени суток! Как и было обещано выкладываю поправленную схему, прошивку и фотографии готовой платы. Но сначала немного о том, как это работает. Щ300 работает, как многие другие советские приборы на интерфейсе 1-2-4-8. Среди данных, которые он передает 5 значащих цифр (причем первая из них может быть только 0 или 1), знак, положение запятой (таких положений всего 3) и тип измеряемой величины (для Щ300 опытным путем определено наличие трех типов - А, Ом и мВ, В). Цифры считываются из числовых регистров: 1-ая из 11С, 21С, 41С и 81С; 2-ая из регистров 21С, 22С, 42С и 82С и т.д. Пределы, знак и тип измерения передаются по соответствующим регистрам П (см. схему). Для поочередного считывания этих данных используются селекторы-мультиплексоры КР1533КП15 или 74НС595N. Очередность обеспечивается изменением входных регистров селекторов (А0-А2). Для синхронизации прибор выдает сигнал на пин ТоП. По руководству по эксплуатации прибор может выполнять до 12.5 изм/с. Поэтому скорости передачи в порт достаточно 9600 (хотя мы используем большую). Первый эксперимент на аттини2313 был неудачным. Второй вариант был собран на атмеге 16 (фотография этой платы прилагается), с которой прибор наконец заработал. Но вследствие ошибки при разводке платы (перепутана последовательность опроса регистров селекторов мультиплексоров).
CODE
// *********************************************************** // Project: Щ300 // Author: Крючков А.С. Дунаев А.М. // Module description: // ***********************************************************
#include <avr\io.h> // Most basic include files // Add the necessary ones #include <avr\signal.h> #include <avr\pgmspace.h> #include <stdio.h> #include <avr\iotn2313.h> #include <avr\interrupt.h>
// Function prototypes // int UART_putchar(char c); int UART_getchar(void); void UART_first_init(void); void send_data(int dts); void get_data(void); // Define here the global static variables // Buffer sizes must be 2^n // #define TBUFSIZE 32 #define RBUFSIZE 32
#define TMASK (TBUFSIZE-1) #define RMASK (RBUFSIZE-1)
// Static variables // volatile unsigned char tbuf[TBUFSIZE]; // TX buffer volatile unsigned char rbuf[RBUFSIZE]; // RX buffer
volatile unsigned char t_in; // TX buffer in index volatile unsigned char t_out; // TX buffer out index
volatile unsigned char r_in; // RX buffer in index volatile unsigned char r_out; // RX buffer out index int i,j;
SIGNAL(SIG_INTERRUPT1) { /* signal handler for external interrupt int0 */ get_data(); }
void UART_first_init(void) { //*********************** // The function fdevopen(..) must contain as parameters the // corresponding ..putchar() and ..getchar() functions, defined before. // UBRRL = 12; // 115200 BPS UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN); // 8 Databits, receive and transmit enabled, receive and transmit complete interrupt enabled }
void get_data(void) { //чтение данных идет слева направо для удобства представления в посылке PORTB = 32; //знаки и 5-я цифра j = PINB; i = j&4; if (i==4) send_data(45);// = '-'; //45 - else send_data(43); //UDR = '+'; //43 + i = j&1; send_data(i+'0');//UDR = i;
PORTB = 64; //4 цифра j = PINB; j = j & 0xf; j = j + '0'; send_data(j);
PORTB = 96; //3 цифра j = PINB; j = j & 0xf; j = j + '0'; send_data(j);
PORTB = 128; //2 цифра j = PINB; j = j & 0xf; j = j + '0'; send_data(j);
PORTB = 160; //1 цифра j = PINB; j = j & 0xf; j = j + '0'; send_data(j);
PORTB = 192; j = PINB; j = j & 0xf; j = j + '0'; send_data(j);//UDR = j;//измеряемая вел-на В, Ом, А*/
PORTB = 224; j = PINB; j = j & 0x3; j = j + '0'; send_data(j);//UDR = j;//положение запятой*/
send_data(13);//UDR = 13; } // void send_data(int dts) { UDR = dts; while ( !( UCSRA & (1<<UDRE)) ); }
void io_init(void) { //io ports init DDRB = 240; // три последних пина - на выход, остальные - на вход asm ("nop"); PORTB = 0; GIMSK = (1<<INT0)|(1<<INT1); /* enable external int0, int1 */ MCUCR = (1<<ISC01)|(1<<ISC10)|(1<<ISC11);/* falling egde: int0, rising edge: int 1 */ sei(); /* enable interrupts */ }
// *********************************************************** // Main program // int main(void) { UART_first_init(); io_init(); while(1) { asm ("nop"); // в коментариях принудительный опрос прибора, если не использовать прерывания //for (i=0;i<20000;i++){} //get_data(); } }
На фото неприпаянный провод - это прерывание идущее на вывод ТоП (устанавливается опционально) Благодарим всех участвующих в дискуссии, особенно vvs157. Спасибо всем! Тема закрыта!
Причина редактирования: Простыня неформатированного исходника
Эскизы прикрепленных изображений
|
|
|
|
Сообщений в этой теме
Kannikkiy Выбор микроконтроллера Dec 26 2008, 20:08 demiurg_spb Если важны 5 значащих цифр то нужно минимум 16-бит... Dec 26 2008, 20:19 PaulB а можно поподробней про первый вариант?
какой тогд... Dec 26 2008, 20:39 demiurg_spb Цитата(PaulB @ Dec 26 2008, 23:39) а можн... Dec 26 2008, 20:47 rezident Kannikkiy, т.е. вам нужно измерять сигнал постоянн... Dec 26 2008, 20:51 demiurg_spb Автор ничего не говорил об относительной приведенн... Dec 26 2008, 20:58  rezident Оба-на сколько оказывается телепатов в форуме... Dec 26 2008, 21:20 PaulB >rezident
Это значит, что даже если величина из... Dec 26 2008, 21:08 yanita А если поставить программируемый усилитель перед А... Dec 27 2008, 11:27 VDG судя по детским вопросам автора - тему в Начинающи... Dec 27 2008, 13:26 Diusha Цитата(Kannikkiy @ Dec 26 2008, 23:08) Во... Dec 27 2008, 15:02 Kannikkiy Извините, что так долго не писал... Как раз перед ... Dec 29 2008, 17:33 rezident Цитата(Kannikkiy @ Dec 29 2008, 22:33) А,... Dec 29 2008, 18:11 Kannikkiy Вот в том - то и дело что хорошо бы поставить усил... Dec 29 2008, 19:50 MAXvaLL Цитата(Kannikkiy @ Dec 29 2008, 22:50) Да... Dec 30 2008, 18:23 PaulB А можно ли использовать для наших задачь мк AT90U... Dec 29 2008, 20:11 demiurg_spb Цитата(PaulB @ Dec 29 2008, 23:11) А можн... Dec 29 2008, 22:48 PaulB этот мк выбрал чтобы соединение с usb было проще и... Dec 30 2008, 14:29 demiurg_spb Цитата(PaulB @ Dec 30 2008, 17:29) этот м... Dec 30 2008, 20:07  MAXvaLL Цитата(demiurg_spb @ Dec 30 2008, 23:07) ... Dec 31 2008, 11:01   demiurg_spb Цитата(MAXvaLL @ Dec 31 2008, 14:01) Сомн... Jan 1 2009, 13:29 Kannikkiy Здравствуйте снова!
ЦитатаЕсли не секрет, то ... Dec 30 2008, 20:38 alexkok Цитата(Kannikkiy @ Dec 30 2008, 23:38) За... Jan 1 2009, 21:03 Kannikkiy С новым годом всех участников обсуждения!
Цит... Jan 1 2009, 18:22 demiurg_spb Цитата(Kannikkiy @ Jan 1 2009, 21:22) Как... Jan 2 2009, 10:20 Kannikkiy ЦитатаЕсли нужен всего один прибор, самый быстрый ... Jan 1 2009, 22:24 rezident Цитата(Kannikkiy @ Jan 2 2009, 03:24) Вед... Jan 1 2009, 22:46 alexkok Цитата(Kannikkiy @ Jan 2 2009, 01:24) Есл... Jan 2 2009, 00:29 MAXvaLL Цитата(Kannikkiy @ Jan 2 2009, 01:24) Есл... Jan 2 2009, 17:53 SIA Цитата(Kannikkiy @ Jan 2 2009, 01:24) Есл... Jan 10 2009, 09:03 Kannikkiy Цитатакалибраторы напряжения Druck
Druck TRX-II-R... Jan 2 2009, 18:45 alexkok Цитата(Kannikkiy @ Jan 2 2009, 21:45) Дей... Jan 3 2009, 06:47 Kannikkiy Здравствуйте!
Я нашел схему отвечающую нашим ... Jan 9 2009, 20:04 Herz Цитата(Kannikkiy @ Jan 9 2009, 22:04) Здр... Jan 10 2009, 09:33 vvs157 Цитата(Kannikkiy @ Jan 9 2009, 23:04) Тол... Jan 11 2009, 16:22  vvvv Цитата(vvs157 @ Jan 11 2009, 19:22) Возьм... Jan 12 2009, 15:38 Kannikkiy Sanwa PC5000 (или аналогичный ему РС500) - имеет н... Jan 10 2009, 19:36 SIA Цитата(Kannikkiy @ Jan 10 2009, 22:36) Sa... Jan 11 2009, 22:02 Omen_13 50 мВ это диапазон шкалы, т.е измерение производит... Jan 11 2009, 15:19 Kannikkiy ЦитатаВозьмите старый сов. Вольтметр Щ300 - их у н... Jan 11 2009, 17:06 vvs157 Цитата(Kannikkiy @ Jan 11 2009, 20:06) - ... Jan 11 2009, 18:27 smac Цитата(Kannikkiy @ Jan 11 2009, 20:06) - ... Jan 11 2009, 18:52  vvs157 Цитата(smac @ Jan 11 2009, 21:52) Анализи... Jan 11 2009, 22:01 Kannikkiy ЦитатаТак там индикаторы - наподобие ламп с 10 циф... Jan 11 2009, 21:36 Kannikkiy ЦитатаЕсли использовать 4 мультиплексора типа 555К... Jan 12 2009, 19:57 rezident Цитата(Kannikkiy @ Jan 13 2009, 00:57) И ... Jan 12 2009, 20:31 vvs157 Цитата(Kannikkiy @ Jan 12 2009, 22:57) А ... Jan 12 2009, 21:49 Kannikkiy Если можно, скажите, к каким пинам в разъёме на Щ3... Jan 13 2009, 11:21 vvs157 Цитата(Kannikkiy @ Jan 13 2009, 14:21) Ес... Jan 13 2009, 17:58 Kannikkiy ЦитатаЭти данные есть во втором альбоме схем на пе... Jan 13 2009, 20:07 vvs157 Цитата(Kannikkiy @ Jan 13 2009, 23:07) Ес... Jan 13 2009, 22:39 PaulB а прошивки для МК нет? Jan 16 2009, 15:51 vvs157 Цитата(PaulB @ Jan 16 2009, 18:51) а прош... Apr 14 2009, 08:02 Kannikkiy Доброго времени суток!
Всем кто еще не потеря... Feb 24 2010, 20:01
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|