Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 30.03.2010, 14:45  
OneTech
Вид на жительство
 
Регистрация: 09.10.2009
Сообщений: 356
Сказал спасибо: 21
Сказали Спасибо 64 раз(а) в 46 сообщении(ях)
OneTech на пути к лучшему
По умолчанию Передача данных с ATmega8 на COM порт ПК

TWI (I2C) тормознутый интерфейс, для скоростных задач стоит применять USB и SPI интерфейсы. Причем для последнего SPI интерфейса существует режим когда считывание и передача бита информации идёт как по спаду тактового импульса, так и по фронту, что вдвое повышает скорость "общения" по каналу. Как по мне, если вдаваться в подробности Вашей задачи, то я бы применил 2 контроллера, один считывает АЦП, тут же выдаёт его в SPI на максимально необходимой скорости, второй контроллер принимает данные, обрабатывает (скорее всего сжимает) и относительно неспеша передаёт посредством UART-а через преобразовать UART-USB на ПК. Ну и совсем "круто" можно взять какой-нить ARM или AVR32 контроллер у которого почти на всей переферии висят DMA-каналы, и выдавать это всё сразу через USB-канал.

Жаль до AVR32 никак руки и деньги не дойдут.
Реклама:
OneTech вне форума  
Непрочитано 30.03.2010, 14:54  
ilya_sh
Прописка
 
Регистрация: 09.10.2007
Сообщений: 235
Сказал спасибо: 27
Сказали Спасибо 24 раз(а) в 24 сообщении(ях)
ilya_sh на пути к лучшему
По умолчанию Re: Передача данных с ATmega8 на COM порт ПК

И всё-таки, лучше ТЗ от автора. Возможно и не нужно 10к выборок. А на одном МК всё ж дешевле будет.
ilya_sh вне форума  
Непрочитано 30.03.2010, 16:01  
neiver
Временная регистрация
 
Регистрация: 30.07.2007
Сообщений: 51
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
neiver на пути к лучшему
По умолчанию Re: Передача данных с ATmega8 на COM порт ПК

Можно в сторону V-USB (бывший AVR-USB) посмотреть. Делал на ней осциллограф.
Где-то 14-18 кб/с скорость передачи получается.
http://github.com/KonstantinChizhov/...master/K-Scope
- прошивка - на WinAvr.
- хост программа на Qt 4.5
- драйвер - LibUsb Win32
neiver вне форума  
Непрочитано 31.03.2010, 12:51  
marera
Гражданин KAZUS.RU
 
Регистрация: 26.09.2005
Сообщений: 569
Сказал спасибо: 58
Сказали Спасибо 509 раз(а) в 135 сообщении(ях)
marera на пути к лучшему
По умолчанию Re: Передача данных с ATmega8 на COM порт ПК

1. Преобразование (50 мкс, с трудом, но 10 бит)
2. Передача двух байт при 115200 (1/115200 и * 16 ~ 150 мкс)
3. Итого 200 мкс - это 5000 отсчетов в секунду, вполне сносно.
4. Мега и 256 кБит по СОМ легко сделает, только с регистрами СОМ порта ПК нужно поиграться.
5. И лучше бы Ноль ловить компаратором и по его прерыванию запускать цикл преобразования и передачи с расчетом на чуть больше периода (20 мС) - более 100 преобразований.
6. Поскольку памяти в данной задаче достаточно, то по тому же прерыванию ни что не запрещает залить данными АЦП массив в 200 отсчетов (400 байт) и потом его передать, уже с любой удобной скоростью.
Только АЦП притормозить, чтобы этими отсчетами захватить чуть больше периода.
Хотя, почти все это уже Вам предлагали, простите за OFFTOP.
__________________
Будь проще, дойдет и до синтеза.

Последний раз редактировалось marera; 04.04.2010 в 00:00.
marera вне форума  
Непрочитано 31.03.2010, 14:05  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию Дохлый номер

Автор хочет, чтобы за него сделали его курсовую или что там у него. Я ему написал 4 замечания к его программе, не говоря уж о 3 предложениях, которые решают задачу, а в ответ тишина.

Казалось, чего проще, исправь, да проверь, ан нет. В своём следующем посте он за каким-то чёртом спрашивает о TWI и I2C, и "не могли бы вы поправить мою программу".

Не хочется участвовать в таких постах, когда автор пытается использовать ваши мозги, как рабов на плантациях. Так что, автор, дальше без меня. Буду постить здесь, только чтобы предупредить остальных.
=GM= вне форума  
Непрочитано 01.04.2010, 14:08  
sergx1300
Прописка
 
Аватар для sergx1300
 
Регистрация: 18.03.2010
Адрес: Украина, Тернополь
Сообщений: 225
Сказал спасибо: 14
Сказали Спасибо 44 раз(а) в 34 сообщении(ях)
sergx1300 на пути к лучшему
По умолчанию Re: Передача данных с ATmega8 на COM порт ПК

Сообщение от =GM= Посмотреть сообщение
Автор хочет, чтобы за него сделали его курсовую или что там у него. Я ему написал 4 замечания к его программе, не говоря уж о 3 предложениях, которые решают задачу, а в ответ тишина.
Во первих у меня не курсовая а диплом.
Во вторих-по поводу 4 замечаний - СМОТРЁЛ.
В настоящий момент разбираюсь с буфером. Относительно ADCSRA - без него неработает. Убрать printf и putchar - но как без них? Из асамблером вообще незнакомый.
И на конец: у меня из АЦП все нормально. Тормозить передача данных, соответственно рассматриваю другие интерфейсы. Запись данных в буфер - думаю пустая трата времени, на таких скоростях нереально.

Последний раз редактировалось sergx1300; 01.04.2010 в 14:17.
sergx1300 вне форума  
Непрочитано 02.04.2010, 14:36  
marera
Гражданин KAZUS.RU
 
Регистрация: 26.09.2005
Сообщений: 569
Сказал спасибо: 58
Сказали Спасибо 509 раз(а) в 135 сообщении(ях)
marera на пути к лучшему
По умолчанию Re: Передача данных с ATmega8 на COM порт ПК

Давно работает простенький анализатор сетевого напряжения на ATM48 в купе с ПК через COM. (Частота, напряжение, низкочастотные гармоники до 1 кГц).
И суть упрощенно:
unsigned char RegChH[128],RegChL[128]; //глобальный буфер (проще работать с двумя, но байтными)
//кстати, в таких приложениях как правило достаточно 8-ми битного преобразования, тогда и массив потребуется один.
// Оцифровка данных
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

// передача данных
void USART_PUT(void)
{ unsigned char i,k;
k=0;
for (i=0;i‹128;i++)
{
while (!(UCSRA & 0x20));
UDR=RegChH[i];
while (!(UCSRA & 0x20));
UDR=RegChL[i];
k++;
if (k›7) // передаем блоками по 16 байт, чтобы не было потерь данных
//если с кварцем, то это необязательно.
{k=0;
delay_ms(1)
};
};
};
// Прерывание от компаратора
interrupt [ANA_COMP] void ana_comp_isr(void)
{unsigned char ad;
unsigned int reg;
#asm("cli") //Запретить прерывания
for (ad=0;ad‹128;ad++) //Заполнение буфера 256 байт данными с АЦП
{reg=read_adc(0);
RegChH[ad]=(reg››8 ) ; //Запись старшего байта
RegChL[ad]=(reg & 0xff); //Запись младшего байта
// и затратите вы на это 128*60мкс=менее 8 милисекунд,
// так что нужно добавить задержку для захвата периода сетевого напряжения
// и лучше это сделать в модуле АЦП.
}
USART_PUT();
#asm("sei") //Разрешить прерывания
//Можно это делать и в главном модуле, по условиям, когда Вам потребуются данные.
//Не думаю, что Вам необходим непрерывный, неуправляемый поток данных на ПК
};
__________________
Будь проще, дойдет и до синтеза.

Последний раз редактировалось marera; 02.04.2010 в 15:02.
marera вне форума  
Непрочитано 02.04.2010, 15:25  
mike7815
Прописка
 
Регистрация: 16.03.2005
Сообщений: 244
Сказал спасибо: 78
Сказали Спасибо 85 раз(а) в 55 сообщении(ях)
mike7815 на пути к лучшему
По умолчанию Re: Передача данных с ATmega8 на COM порт ПК

Prime прав во всем. так и надо делать. работать с FTDI очень просто. никаких драйверов писать не нужно. Единственное надо придумать простенький протокол для синхронизации приема данных и контроля ошибок. Я так часто отладку делаю. В прерывании по таймеру выкидываю дамп памяти МК на комп. А там простой программкой его раскидываю, графики рисую и т.п. удобно.
mike7815 вне форума  
Непрочитано 03.04.2010, 12:22  
UserM
Прописка
 
Регистрация: 14.08.2006
Сообщений: 106
Сказал спасибо: 19
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
UserM на пути к лучшему
По умолчанию Re: Передача данных с ATmega8 на COM порт ПК

Сообщение от mike7815 Посмотреть сообщение
А там простой программкой его раскидываю, графики рисую и т.п. удобно.
А можно пример исходника программы для ПК? А то у меня как то не очень получается реализовать протокол.
UserM вне форума  
Непрочитано 03.04.2010, 23:57  
marera
Гражданин KAZUS.RU
 
Регистрация: 26.09.2005
Сообщений: 569
Сказал спасибо: 58
Сказали Спасибо 509 раз(а) в 135 сообщении(ях)
marera на пути к лучшему
По умолчанию Re: Передача данных с ATmega8 на COM порт ПК

Сообщение от Prime Посмотреть сообщение
Скажу тоже пару слов автору топика...
Если хочешь получить скорость передачи повыше ( а для твоей задачи без всяких сжатий данных и прочая надо как теоретический минимум 10000 * 2 * 10 = 200000 кБит/с), попробуй глянуть на скорости на USART выше 115200. Стандартный COM-порт может такое не потянуть, зато виртуальный, создаваемые при использовании той же самой FT232 (подробнее читай на сайте производителя) и USB - вполне позволит такие скорости. Мы разгоняли до 1.5 МБит, и всё работало. Удачи в начинаниях!
Чтобы увлечь женщину нужно знать все языки и всех поэтов, примерно так можно понять Вашу мысль! А можно просто шептать глупости и сработает!
Чтобы анализировать, нужны данные, но чтобы анализировать нужно время! И то и другое и вместе и одновременно - не делают. Получите данные для анализа (сто-двести точек), спокойно (подчеркнуто) передайте и "развлекайтесь". Не понравилось - получите еще и т.д.
СОМ при желании обеспечит и пару мегабит (обычно об этом знают), но в этой задаче такая скорость совершенно ни к чему. АЦП крректно работает не быстрее 50 мкс (строго - 80 мкс) и анализировать сетевое напряжение по гармоникам выше 2 кгц бессмысленно. Выбирать для анализа непрерывный поток? И куда? Возьмите чуть больше периода и столько раз, сколько потребуется. Зачем усложнять изначально довольно простую задачу, или по принципу, если сервер, то всероссийский (хоть и домашний).
Целесообразность - штука полезная.
__________________
Будь проще, дойдет и до синтеза.
marera вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных в UART из текстового файла bombardier_rotax Proteus 6 24.02.2010 20:50
Беспроводная передача данных? maxNTF Автоматика и аппаратура связи 6 29.12.2009 12:20
Котроллер дисплея на Atmega8 kosant Микроконтроллеры, АЦП, память и т.д 24 30.11.2009 20:57
Порт С в ATmega8 VVKart Микроконтроллеры, АЦП, память и т.д 2 10.11.2009 14:08
proteus, atmega8, меняю ноги в hex - не работает digitest Микроконтроллеры, АЦП, память и т.д 3 08.10.2009 13:07


Часовой пояс GMT +4, время: 13:04.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot