Мелкие вопросы по МК и ПЛИС.
Микрочипы
Добрый день уважаемые форумчане!,у меня к вам такой ворос,все ли контроллеры (микрочипы) нужно программировать? простите за глупый вопрос если он таковымявляется.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Не бывает глупых вопросов. Есть простые и сложные. В составе контроллера есть память. В нее заносится программа. Либо на предприятии-изготовителе, либо пользователем. Так что ответом на ваш вопрос является утверждение - все.
Docendo discimus
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Добавлю что бывают одноразовые и многоразовые (с буквой F у MICROCHIP).
Однако существовали, не знаю как сейчас, МК которые программировались на заводе - это уже узкоспециализированные и выпускались ограниченной партией.
Так что вопрос вполне нормальный.
Однако существовали, не знаю как сейчас, МК которые программировались на заводе - это уже узкоспециализированные и выпускались ограниченной партией.
Так что вопрос вполне нормальный.
- Vergilium
- Грызет канифоль
- Сообщения: 260
- Зарегистрирован: Ср фев 13, 2008 14:41:32
- Откуда: Украина, Николаев
Re: Мелкие вопросы по цифровой технике.
Здраствуйте. Подскажите пожалуйста по такому вопросу. Есть мега8 и часики DS1307, пишу код в AVR Studio 5 и симулирую в PROTEUS 7.9. Так вот, дело в том что после запуска МК После инициализации портов и т.п. хочу выполнить запись в DS1307 настройку, в CONTROL регистр 0х10 (т.е. внешний такт 1Hz от ds1307), после чего делаю СТОП и сразу начинаю считывать с нулевой ячейки время. После чего время считывается каждую секунду. НО, настройку записывает, СТОП не выполняется, а данные начинают считыватся с последней ячейки т.е. 0х07 (Сontrol). Непойму в чем ошибка.
Код ниже:
//---------- внешнюю генерацию на часах------------
twi_start_adress(DS1307_ID,TW_WRITE,TW_START);
twi_send_byte(CONTROL);
twi_send_byte(0x10);
STOP;
//---------- время----------------------------------------------
DS1307_GetTime();
void DS1307_GetTime(void)
{
//---------- времени и даты---------------------------
twi_start_adress(DS1307_ID,TW_WRITE,TW_START); //Не выполняется
twi_send_byte(0); //Не выполняется
twi_start_adress(DS1307_ID,TW_READ,TW_REP_START);
time[0] = twi_rec_byte(TWEA);
time[1] = twi_rec_byte(TWEA);
time[2] = twi_rec_byte(TWEA);
twi_rec_byte(TWEA);
time[3] = twi_rec_byte(TWEN);
STOP;
}
//---------- внешнюю генерацию на часах------------
twi_start_adress(DS1307_ID,TW_WRITE,TW_START);
twi_send_byte(CONTROL);
twi_send_byte(0x10);
STOP;
//---------- время----------------------------------------------
DS1307_GetTime();
void DS1307_GetTime(void)
{
//---------- времени и даты---------------------------
twi_start_adress(DS1307_ID,TW_WRITE,TW_START); //Не выполняется
twi_send_byte(0); //Не выполняется
twi_start_adress(DS1307_ID,TW_READ,TW_REP_START);
time[0] = twi_rec_byte(TWEA);
time[1] = twi_rec_byte(TWEA);
time[2] = twi_rec_byte(TWEA);
twi_rec_byte(TWEA);
time[3] = twi_rec_byte(TWEN);
STOP;
}
- Вложения
-
- 1.png
- (13.16 КБ) 319 скачиваний
Немного нервов и девайс готов
Re: Мелкие вопросы по МК и ПЛИС.
собирал часики по этой статье http://kaligraf.narod.ru/kaligraf_narod_002.html с первого раза контроллер зашить правильно не удалось, пришлось стирать.. далее залил прошивку включаю часики показывают 9999. может я как то запорол контроллер? раньше имел дело с pic12f629 так там была константа из за нее у меня и не работал тогда девайс
а есть ли нечто подобное в этом мк?
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Очередной телепатический модуль летит в мусорку...
С прошивкой что делали?
С прошивкой что делали?
- Vergilium
- Грызет канифоль
- Сообщения: 260
- Зарегистрирован: Ср фев 13, 2008 14:41:32
- Откуда: Украина, Николаев
Re: Мелкие вопросы по МК и ПЛИС.
По поводу моего вопроса, никто ничего не посоветует? Может хотябы мыслей по этому поводу?
Немного нервов и девайс готов
-
MorskoyZmey
- Родился
- Сообщения: 13
- Зарегистрирован: Ср фев 29, 2012 19:21:08
Re: Мелкие вопросы по МК и ПЛИС.
Поделитесь опытом, если не жалко^
Есть микросхемки памяти Atmel DataFlash с последовательным доступом по SPI, по типу AT45DB081D (8Mбит).
Валидно ли использовать такие, как хранилище звуковых файлов, если оные требуется воспроизводить по запросу без задержек?
Как мне показалось из ДШ, вроде как, перед чтением можно указывать страницу и смещение, т.е. ну практически RAM.
В чем же тут последовательность помимо того, что не нужно указывать адрес каждого блока и что интерфейс последовательный?
В чем я не прав? Оно дешевле всего остального в принципе. Меня волнует скорость и объем
Благодарю за внимание
Есть микросхемки памяти Atmel DataFlash с последовательным доступом по SPI, по типу AT45DB081D (8Mбит).
Валидно ли использовать такие, как хранилище звуковых файлов, если оные требуется воспроизводить по запросу без задержек?
Как мне показалось из ДШ, вроде как, перед чтением можно указывать страницу и смещение, т.е. ну практически RAM.
В чем же тут последовательность помимо того, что не нужно указывать адрес каждого блока и что интерфейс последовательный?
В чем я не прав? Оно дешевле всего остального в принципе. Меня волнует скорость и объем
Благодарю за внимание
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
MorskoyZmey, есть положительный опыт использования датафлэшь для хранения wav файлов. Из плюсов - действительно, нужно всего лишь указать начальный адрес и потом непрерывно читаешь. Весь код воспроизведения - около килобайта. Из минусов - неудобно заменять и закачивать в датафлэшь эти файлы. Пришлось писать отдельную прошивку и загонять через RS-232...
Но в целом свою цену оно оправдывает.
Но в целом свою цену оно оправдывает.
Re: Мелкие вопросы по МК и ПЛИС.
Доброй ночи. Хотелось бы узнать, какова относительная погрешность у ИОН AVR8? Конкретно интересует Atmega8. В даташите не нашел, хотя, может быть потому, что плохо искал. Если кто знает - пожалуйста, напишите.
Не умеешь - не берись, но не взявшись не научишься...
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Погрешность ИОН еще ладно. Там эту кривую еще выпрямлять надо. И подгонять. Все описано в даташите.
Docendo discimus
-
MorskoyZmey
- Родился
- Сообщения: 13
- Зарегистрирован: Ср фев 29, 2012 19:21:08
Re: Мелкие вопросы по МК и ПЛИС.
AI_Disable писал(а):MorskoyZmey, есть положительный опыт использования датафлэшь для хранения wav файлов. Из плюсов - действительно, нужно всего лишь указать начальный адрес и потом непрерывно читаешь. Весь код воспроизведения - около килобайта. Из минусов - неудобно заменять и закачивать в датафлэшь эти файлы. Пришлось писать отдельную прошивку и загонять через RS-232...
Но в целом свою цену оно оправдывает.
Благодарю. Вдохновляет.
Re: Мелкие вопросы по МК и ПЛИС.
Хотелось бы узнать, какова относительная погрешность у ИОН AVR8?
Зависит от температуры. При чём сильно. Опыты проводили уже.
Re: Мелкие вопросы по МК и ПЛИС.
Arlleex
Для АТмега8А есть график "BANDGAP VOLTAGE vs. VCC", где-то на стр. 276, там эти графики для трех температур -40, +25, +85С. А опорное напряжение получается из этого Bandgap Voltage
Для АТмега8А есть график "BANDGAP VOLTAGE vs. VCC", где-то на стр. 276, там эти графики для трех температур -40, +25, +85С. А опорное напряжение получается из этого Bandgap Voltage
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
А то, что опора может быть от 2,3 до 2,9 В все молчат...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
Gudd-Head
Ну это да, читали, в даташитах. А что, и правда такой разброс, или перестраховываются, а реально все лучше? Сам не могу собрать статистику, по двум имеющимся у меня АТмега.
Ну это да, читали, в даташитах. А что, и правда такой разброс, или перестраховываются, а реально все лучше? Сам не могу собрать статистику, по двум имеющимся у меня АТмега.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
SmarTrunk писал(а):А что, и правда такой разброс, или перестраховываются, а реально все лучше?
Правда. Сам долго тупил, когда вместо ожидаемых 2,56 опора была примерно 2,7 В (Мега8).
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
Мне попадались мега8 с опорой 2,47 и 2,65 вольт
Re: Мелкие вопросы по МК и ПЛИС.
Всем привет
Итак усиленно изучаю Си и сами контроллеры АВР
задача такая есть контроллер атмега 16 использую пока встроенный кварц на 8 мегагерц
нужно сделать срабатывания Шим на 1 канал по будильнику
регулирование шим по DS18B20
используя разные примеры и библиотеки СВАВР написал
Часы-будильник с использованием переполнения по таймеру 0
с антидребезговой обработкой кнопок
вывод этого всего на экран
програмный Шим я ещё не добавлял но он есть ( может сделаю на таймере они ещё в запасе есть )
эмулирую в протеус
я могу сказать смело что протеус как то это дело не очень жалует
часы будильник работают нормально но как подключаю термодатчик протеус начинает тормозить часы
при нажатии на кнопки часы тоже чутка тормозят из-за антидребезга delay_ms
и наоборот отдельно термометр без часов работает отлично
вопрос в том что или у меня код получился кривой поэтому протеус не оценивает
или протеус тормозит тк на симуляции все работает медленно и на реальной плате может все будет работать
какие решения я придумал
1)максимально разгрузить процессор установив выносные часики на i2c
2)с термометром врятли я что то сделаю пусть живет на атмеге
3)настроить шим по таймеру
буду рад услышать идеи если кто подскажет как реализовать выносные часики на какойнибудть микрушке без календарика
идеи по реализации стабильной работы сего устройства
Итак усиленно изучаю Си и сами контроллеры АВР
задача такая есть контроллер атмега 16 использую пока встроенный кварц на 8 мегагерц
нужно сделать срабатывания Шим на 1 канал по будильнику
регулирование шим по DS18B20
используя разные примеры и библиотеки СВАВР написал
Часы-будильник с использованием переполнения по таймеру 0
с антидребезговой обработкой кнопок
вывод этого всего на экран
програмный Шим я ещё не добавлял но он есть ( может сделаю на таймере они ещё в запасе есть )
эмулирую в протеус
я могу сказать смело что протеус как то это дело не очень жалует
часы будильник работают нормально но как подключаю термодатчик протеус начинает тормозить часы
при нажатии на кнопки часы тоже чутка тормозят из-за антидребезга delay_ms
и наоборот отдельно термометр без часов работает отлично
вопрос в том что или у меня код получился кривой поэтому протеус не оценивает
или протеус тормозит тк на симуляции все работает медленно и на реальной плате может все будет работать
какие решения я придумал
1)максимально разгрузить процессор установив выносные часики на i2c
2)с термометром врятли я что то сделаю пусть живет на атмеге
3)настроить шим по таймеру
буду рад услышать идеи если кто подскажет как реализовать выносные часики на какойнибудть микрушке без календарика
идеи по реализации стабильной работы сего устройства
-
juzik
- Встал на лапы
- Сообщения: 128
- Зарегистрирован: Пт сен 23, 2011 23:49:20
- Откуда: Симферополь, Украина
Re: Мелкие вопросы по МК и ПЛИС.
А как Вы антидребезг реализовали? Походу в теле процедуры в цикле опрашиваете состояние кнопок? Если так, то это естевственно будет тупить.
Вынесете опрос в прерывание по таймеру. Предположим он у вас будет срабатывать 100 раз в сек (т.е. каждые 10мсек). Вариант до 8 кнопок:
1. Создаем массив из N байт, где N кол-во проверок (возьмем 10, можно и меньше)
2. При каждом прерывании записываем в очередную ячейку байт состояния кнопок
3. Если все N раз бит соотвествующей своей кнопке выставлен, значит она нажата.
Это существенно разгрузит основную логику работы программы, а поигравшись с параметрами можно настроить под свои нужды.
З.Ы. я сам недавно собрал часы+будильник+термометр+брометр+психрометр. Всё дело выводится на экран 128*32 (вроде). И всё на меге32, без внешних модулей.
Вынесете опрос в прерывание по таймеру. Предположим он у вас будет срабатывать 100 раз в сек (т.е. каждые 10мсек). Вариант до 8 кнопок:
1. Создаем массив из N байт, где N кол-во проверок (возьмем 10, можно и меньше)
2. При каждом прерывании записываем в очередную ячейку байт состояния кнопок
3. Если все N раз бит соотвествующей своей кнопке выставлен, значит она нажата.
Это существенно разгрузит основную логику работы программы, а поигравшись с параметрами можно настроить под свои нужды.
З.Ы. я сам недавно собрал часы+будильник+термометр+брометр+психрометр. Всё дело выводится на экран 128*32 (вроде). И всё на меге32, без внешних модулей.