[image]

Пишем прогу для МК AVR в он-лайн

 
RU termostat #10.03.2004 21:17
+
-
edit
 

termostat

аксакал

А ни кто не заметил, что мы забыли сделать перед нчалом записи?
   
+
-
edit
 

Serge77

модератор

termostat, 10.03.2004 20:17:24 :
А ни кто не заметил, что мы забыли сделать перед нчалом записи?
 


мигать?
   
RU termostat #10.03.2004 21:22
+
-
edit
 

termostat

аксакал

ДА! но отредактируем это позже.
   
+
-
edit
 

Serge77

модератор

интересная программа получается. До сих пор ни одной привязки к железу! Супер-кросс-платформенность!
   
+
-
edit
 
+
-
edit
 

Serge77

модератор

А зачем вообще прототипы? В чём идея? Без них вообще нельзя? Или так почему-то удобнее? Почему?
   
RU termostat #10.03.2004 21:30
+
-
edit
 

termostat

аксакал

Andrei, 10.03.2004 21:24:01 :
#define go_get_data TIFR,TOV0
 


Спасибо, хотя возможно разрешено и просто название бита указать:

#define go_get_data TOV0

надо смотреть конкретный компилятор - хелп и мануал.
   
RU termostat #10.03.2004 21:37
+
-
edit
 

termostat

аксакал

Serge77, 10.03.2004 21:28:50 :
А зачем вообще прототипы? В чём идея? Без них вообще нельзя? Или так почему-то удобнее? Почему?
 


Без них можно, не во всех компиляторах - в ICC помнишь я в адаче обнаружил что ему не обязательно.

Но это очень удобно ведь прототипы с права имеют краткое пояснение, я не сделал из экономии времени.

Когд ты читаешь МЭЙН у тебя перед глазами все используемые функции и ты понимаешь алгоритм программы.
   
+
-
edit
 

Serge77

модератор

пожалуй минут через 15 пора заканчивать и назначать время следующего занятия. Второе занятие наверное получится по железу.
   
+
-
edit
 

Andrei

новичок

Извини, но чем это до сих пор отличается от нормально структурированной прораммы на Ассемблере?
MainModeLoop
btfss INTCON,TMR0IF ;TMR0 overlow ?
goto MainModeLoop ;no

;Rate 250 us ==========================================
bcf INTCON,TMR0IF ;
clrwdt

call SystemTimer

call Serial

call OperatingModes

call GetManualFlush

call TakeChargePumpVoltage

call DriveSolenoid

call WriteSensitivity

goto MainModeLoop
   
+
-
edit
 

Serge77

модератор

while(ctr<50) // сделаем 50 раз

а как эта переменная увеличивается?
   
RU termostat #10.03.2004 21:47
+
-
edit
 

termostat

аксакал

Andrei, 10.03.2004 21:44:07 :
Извини, но чем это до сих пор отличается от нормально структурированной прораммы на Ассемблере?
 


Я не против АСМа, я за Си.

Я не говорю что асм хуже, но вот продаются хорошо компиляторы, значит нужны они народу...
   
Это сообщение редактировалось 10.03.2004 в 21:54
RU termostat #10.03.2004 21:53
+
-
edit
 

termostat

аксакал

Serge77, 10.03.2004 21:45:47 :
while(ctr<50) // сделаем 50 раз

а как эта переменная увеличивается?
 


вот молодец! конечно ctr++;
   
+
-
edit
 

Serge77

модератор

Первый блин хороший ;^))

Очень интересно и полезно наблюдать сам процесс. Ты только ничего не поправляй в том, что написано в процессе. Собери всё, что получилось, в один кусок, подрихтуй комментарии.

Пока что вроде всё понятно. Основные вопросы будут, когда пойдёт работа с железом.
   
+
-
edit
 

Andrei

новичок

Я же не настаиваю, а наоборот пытаюсь для себя понять преимущества писания на С после двадцати лет работы с Ассемблерами.
На сегодняшний день многие приложения требуют либо вывода большого количества сообщений на дисплей, либо - при работе в сетях - обмена огромным числом сообщений между блоками. Вот это то я уже устал на Ассемблере делать.
Понятно, что языки высокого уровня (по сравнению с Ассемблером) позволяют убрать кучу рутинных процедур. Пока для меня вопрос - как?
   
+
-
edit
 

Andrei

новичок

В любом случае - большое спасибо за ликбез!
   
+
-
edit
 

Demonos

втянувшийся
В принципе могу остаться без ответа (пришлось отлучаться). Но кое что интересует: пример
...led (fast)
Это забота компилятора, или мы где-то пропустили что-то вроде
("fast" =LCALL DEL150)
   
RU termostat #11.03.2004 08:22
+
-
edit
 

termostat

аксакал

Andrei, 10.03.2004 21:15:04 :
А для чего круглые скобки после функции, например в blink_led(fast). Или это просто по сути расширение имени функции?
 


В круглых скобках в передаваемую функцию передаются параметры - в данном случае функция можт исполнять миги быстро и медлено.

Сечас нам понадобились быстрые блинки - FAST
   
RU termostat #11.03.2004 08:32
+
-
edit
 

termostat

аксакал

Andrei, 10.03.2004 20:25:36 :
Пожалуйста, остановись потом поподробнее как включать фрагменты ассемблерного текста
 


В разных компиляторах возможны различные варианты:

для ICC и CodeVision:
#asm("АСМ инструкция") пример: #asm("sei") - разрешить прерывания

можно несколько инструкций через запятую в поле одной пары кавычек.

Или несколько инструкций колонкой записать:

#asm
АСМ инструкция 1
АСМ инструкция 2

АСМ инструкция N
#endasm



Можно в начале программы сделать определение:

#define INTERUPT_ON #asm("sei")

Теперь в проге для разрешения прерываний вы будете писать:

INTERUPT_ON



Demonos > интересует: пример
...led (fast) Это забота компилятора,
 



...led (fast); заканчивается на ; - знчит это вызов функции. с передачей ей параметров, заключенных в скобки. Подробней смотрите в Курсе avr123.by.ru ссылки на хорошее руководство по Си.



Andrei > Я же не настаиваю ... многие приложения требуют либо вывода большого количества сообщений на дисплей
 


Вот пример вывода содержимого буфера на дисплей:

char lcd_buffer[33];

sprintf(lcd_buffer,"t=%c%i.%u\xdfC",sign,temp/10,temp%10);
\\ загнать данные в буфер

lcd_puts(lcd_buffer); \\ вывести на дисплей


Andrei > позволяют убрать кучу рутинных процедур. Пока для меня вопрос - как?
 


Ну например sin() cos() или гиперболические варианты в Си так и будут а на АСМе?

или маасив н-мерный написать на АСМ и поработать с ним - по моему уже подвиг.

А н-мерный массив очень распространен при нормировании выходов различных датчиков напрмер.


   
Это сообщение редактировалось 11.03.2004 в 09:29
RU termostat #11.03.2004 11:59
+
-
edit
 

termostat

аксакал

Сдесь результат нашей вчерашней работы и топик: Текст программы.
Прикреплённые файлы:
007.zip (скачать) [13,3 кБ]
 
 
   
+
-
edit
 

GrayCat

координатор

Есть у С еще одно преимущество: компилятор сам рассовывает переменные местам. Причем, например, если в нескольких независимых функциях используются временные переменные, то компилятор, скорее всего, положит их в одно и то же место.

Разумеется, это можно делать и на асме, но тогда придется самому постоянно следить за всеми переменными, какие ф-ции кого используют, и т.д. Причем при переносе асм-программы на другой процессор придется заново изучать раскладку, и, возможно, где-то подправлять. Компилятор же сам все сделает. Более того, функцию, написанную на С, можно выдрать из одного проекта и вставить в совершенно другой, и не заботиться о назначении новых адресов переменным.

Еще одна фича — контроль типов компилятором. Помогает не совершать некоторые ошибки.
   
RU termostat #13.03.2004 02:25
+
-
edit
 

termostat

аксакал

Проанализировал я свою попытку он-лайн агитации "все на МК". Не верно подошел к проблеме, надо было что-то более простое писать чтоб меньше по времени было и больше на обсуждение, и результат был окончательным.
   
+
-
edit
 

Serge77

модератор

termostat, 13.03.2004 01:25:42 :
Проанализировал я свою попытку он-лайн агитации "все на МК". Не верно подошел к проблеме, надо было что-то более простое писать чтоб меньше по времени было и больше на обсуждение, и результат был окончательным.
 


Программа, которую можно полностью закончить за 1 час - это мигание светодиодами, не больше. Такая у тебя в курсе уже описана - подробнее некуда. Поэтому мне кажется, что задача для занятия выбрана правильно.

С одной стороны, это и не очень сложное устройство, а с другой - в нём задействованы многие компоненты МК, есть чему учиться. А самое главное - это самое нужное устройство из того, что нужно ракетчику на МК. А чем интереснее задача - тем легче учиться.

Я уверен, что со временем появится много клонов на основе 007, кто-то захочет кнопку добавить или ещё какой-то датчик и т.д. Это будет легко сделать, если процесс создания программы будет подробно описан.
   

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru