Например TDA7294

Форум РадиоКот • Просмотр темы - С чего начать программировать микроконтроллеры?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Ср авг 06, 2025 02:47:48

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2294 ]     ... , , , 18, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 19:32:02 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
SeregaT писал(а):
Каким образом можно написать прошивку для МК на С, и конвертировать её в файл HEX?

1. Запустить среду разработки CodeVisionAVR.
2. Сгенерить в автоматическом режиме текстовый файл с программой на C.
3. Добавить в этот файл операторы, которые Вам нужны.
4. Нажать кнопочку "Make The Project" чтобы получить HEX файл.
5. Если у Вас есть программатор, который поддерживается этой средой разработки, то нажать кнопочку "Run the chip programmer" и залить Ваш HEX файл в контроллер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 19:39:58 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Тоесть если у меня нету программатора, который поддерживается этой средой, то я всёравно смогу прошить свой МК?
Ну тогда можно начинать разбираться в C

P.S. И правда, всё генерится, прошивается, работает...

P.P.S А что, на С прога на много больше места занимает, чем на ассемблере? Просто я тут сделал прогу для моргания одним светодиодом, а она места почти столько-же заняла, как прога на ассемблере, в которой использовалось 8 светодиодов, причём с кучей алгоритмов и мегаиллюминацией.


Последний раз редактировалось SeregaT Пн фев 09, 2009 19:51:44, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 19:48:57 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
Конечно! HEX файл то у Вас будет! Шейте чем хотите! А лучше собрать STK200/300, как советует Pippeytz. Программатор Громова хорош для тех, кто сам программы не пишет, а эпизодически хочет залить готовую прошивку.

SeregaT писал(а):
...P.P.S А что, на С прога на много больше места занимает, чем на ассемблере?...

Не так уж и намного, но, конечно больше - это неизбежная плата за язык высокого уровня. Кстати, когда в неё добавите "мегаиллюминацию", то размер увеличится не на много. Ведь то, что туда натолкал компилятор для работы с "C", в программе уже есть...


Последний раз редактировалось Барсик Пн фев 09, 2009 20:07:45, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 19:53:30 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Барсик писал(а):
Программатор Громова хорош для тех, кто сам программы не пишет, а эпизодически хочет залить готовую прошивку.

Да фиг с ним, главное работает. Для нормального программатора надо плату делать, а с этим у меня пока очень туго. Под микросхемы никогда не делал...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 20:10:14 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Ср май 28, 2008 19:30:31
Сообщений: 396
Откуда: Донецк
Рейтинг сообщения: 0
А хрена там делать? :shock:
Принтерь есь?
ЛУТ спасет мир.

_________________
Полный пипеутз.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 20:17:45 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Ну до плат я потом доберусь. Там наверное проги есть для рисования плат? Да и как разметить под микросхему то-же хз.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 20:27:00 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Ср май 28, 2008 19:30:31
Сообщений: 396
Откуда: Донецк
Рейтинг сообщения: 0
Епт, как вставлять рисунки чтобы были малеьнкие иконки видны в посте , а не просто сцылко?

_________________
Полный пипеутз.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 20:55:20 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Pippeytz писал(а):
Епт, как вставлять рисунки чтобы были малеьнкие иконки видны в посте , а не просто сцылко?

[img]ссылка[/img]


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 21:01:37 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
А не могли бы выложить тут для примера текст проги на C (типа какойнибудь моргалки, не сложный)?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 09, 2009 21:12:47 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Ср май 28, 2008 19:30:31
Сообщений: 396
Откуда: Донецк
Рейтинг сообщения: 0
#include <mega8> //Включаем библиотеку для работы с микроконтроллером ATMega8
#include <delay> //Включаем библиотеку для организации задержек
void main(void)
{

int i; // описание переменной "і" как целое число Int - (Integer)

PORTD=0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D
DDRD=0xFF; //Делаем порт D, как выход, чтобы на выходах порта было напряжение 5В

while (1) //Организовываем бесконечный цикл

{

for (i = 0; i<4 ; i++) // Цикл мигание первого светодиода, 4 раза
{
PORTD.0=1; //Включаем светодиод на 0 выходе порта D.0

delay_ms(50); //Делаем задержку на 50 миллисекунд

PORTD.0=0; //Выключаем светодиод на 0 выходе порта D.0

delay_ms(50); //Делаем задержку на 50 миллисекунд
}


delay_ms(200); // Задержка между мерцаниями, 200 мс

for (i = 0; i<4 ; i++) // Мигание второго светодиода, 4 раза
{
PORTD.1=1; //Включаем светодиод на 0 выходе порта D.1

delay_ms(50); //Делаем задержку на 50 миллисекунд

PORTD.1=0; //Выключаем светодиод на 0 выходе порта D.1

delay_ms(50); //Делаем задержку на 50 миллисекунд
}

delay_ms(200); // Задержка между мерцаниями, 200 мс
};

}

Как-то так
по коду можно догадатсья куда диода цеплять нада

_________________
Полный пипеутз.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 11, 2009 09:37:10 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Мдааа. Каждая новая строчка на C нехило добавляет объём прошивки.
А гденить можно посмотреть примеры различных прог с описаниями? Что-то нигде не нашёл.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 11, 2009 13:15:12 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Подскажите пожалуйста такую тему:
Вот хочу написать прогу, эмулирующую работу одного станка с ЧПУ (как раз на нём контроллер наполовину накрылся, и сделано малость через Ж, так что потом может и пригодиться прога).
Требования: на выход минимум 10 каналов (тоесть одного порта недостаточно). Получается, что один порт надо полностью на выход, а другой частично (пока не понял, как на C открыть частично, на ассемблере с этим понятно, но для станка на C будет лучше). Так-же нужно 4 канала на вход.
Теперь самое главное. Не могли бы написать пример для фрагмента алгоритма?
Фрагмент вот:
Цитата:
PORTD.0=1
Ждёт сигнала с PORTB.1
PORTD.1=1
Задержка 1 сек
PORTD.0=0
Задержка 1 сек
На начало программы

И ещё, при нажатии на концевик (0 на reset), программа начнётся сначала, но для этого нужно убрать 0 с вывода reset. Может концевик включить через кондёр, типа он зарядится и на reset снова 1?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 12, 2009 17:15:51 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Эх, похоже я так и не узнаю ответа на предыдущий вопрос (про фрагмент кода)...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 12, 2009 18:02:11 
Опытный кот

Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Пт авг 22, 2008 16:59:43
Сообщений: 732
Рейтинг сообщения: 0
Код:
while (1)
      {
     PORTD.0=1;
     while (PORTB.1==0)
     PORTD.1=1;
     delay_ms(1000);
     PORTD.0=0;
     delay_ms(1000);
      };

Так, скорее всего..

_________________
catcoolers@gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 12, 2009 18:35:40 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Спасибо, попробую. А как в начале программы написать, чтобы активировать часть каналов порта B на вход?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 12, 2009 19:22:27 
Друг Кота
Аватар пользователя

Карма: 28
Рейтинг сообщений: 267
Зарегистрирован: Ср сен 27, 2006 16:18:57
Сообщений: 3459
Рейтинг сообщения: 0
SeregaT писал(а):
...Получается, что один порт надо полностью на выход, а другой частично (пока не понял, как на C открыть частично...)...

Запустите автоматический генератор программного кода и на закладке "Ports" укажите какие линии порта должны работать на ввод и какие на вывод. Он Вам сгенерит строчки на "C", которые инициализируют порты.

SeregaT писал(а):
...Ждёт сигнала с PORTB.1...

Вы ждёте сигнал с выхода порта или ждёте, когда на ногу микроконтроллера придёт сигнал извне? Это две большие разницы. Чтобы смотреть, что на ноге, надо использовать PINB.1
Код:
while (1)
    {
    PORTD.0=1;
    // ждём лог. 1 на ноге
    while (!PINB.1);
    // Дождались...
    PORTD.1=1;
    // Задержка 1 сек
    delay_ms(1000);
    PORTD.0=0;
    // Задержка 1 сек
    delay_ms(1000);
    // На начало программы
    };

Обратите внимание на точку с запятой в конце строчки while (!PINB.1);
Если ; пропустить, то компилятор не сообщит об ошибке, но программа будет работать неправильно.

SeregaT писал(а):
...при нажатии на концевик (0 на reset), программа начнётся сначала, но для этого нужно убрать 0 с вывода reset....

С этим вообще не понятно. Напишите подробнее, что Вы хотие от этого несчастного концевика.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 12, 2009 19:26:45 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Cat_CooLeR писал(а):
Так, скорее всего..

PORTD.0 и PORTD.1 включились одновременно и на сигнал на PORTB.1 никак не реагирует :(


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 12, 2009 19:28:44 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Барсик писал(а):
Вы ждёте сигнал с выхода порта или ждёте, когда на ногу микроконтроллера придёт сигнал извне? Это две большие разницы.

Я малость ступил. Ждать надо сигнала извне (0 или 1, без разницы).
Цитата:
С этим вообще не понятно. Напишите подробнее, что Вы хотие от этого несчастного концевика.

Ну вот например в конце программы включается сигнал на предыдущий станоу и начинается подача доски. Доска дошла до концевика, нажимает его и программа должна запустится сначала (но концевик остаётся нажатым). А вообще, это пока не особо важно, вспомнил, чтонадо не на ресет а на другой выход (прога должна не совсем сначала начаться).


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 12, 2009 19:52:21 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Барсик
Что-то не получилось с фрагментом. Я наверное не правильно вопрос поставил.
Я имел ввиду, что алгоритм нужен был такой:
При запуске программы на PORTD.0 появляется 1 (5в)
Затем программа ждёт сигнала на PORTB.1
После сигнала уже на PORTD.1 должна появится 1 (5в)
Через секунду должен выключиться PORTD.0
Еще через секунду должен выключиться PORTD.1 и программа должна начаться сначала.

А получилось вот так:
При включении на PORTD.1 появляется 1.
На PORTD.0 с секундными паузами появляется и исчезает 1
Когда на PORTB.1 подать ноль, то на PORTD.0 появляется 1 до тех пор, пока с PORTB.1 не убрать 0


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт фев 12, 2009 20:44:25 
Генеральный секретарь МЯУ
Аватар пользователя

Карма: 69
Рейтинг сообщений: 23
Зарегистрирован: Пн сен 03, 2007 18:24:27
Сообщений: 18752
Откуда: Россия. Омск.
Рейтинг сообщения: 0
Cat_CooLeR и Барсик
Спасибо большое!
Из ваших двух ответов собрал один и всё заработало :)

Цитата:
while (1)
{
PORTD.0=1;

while (!PINB.1==0);

PORTD.1=1;

delay_ms(1000);

PORTD.0=0;

delay_ms(1000);

PORTD.1=0;

delay_ms (1000);

}
};


Напишу прогу, выложу текст для оценки :) Только надо светодиодами для проверки запастись :)))


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2294 ]     ... , , , 18, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y