Курс: программирование МК AVR "с нуля"

 
1 6 7 8 9 10 11 12
RU [дмитрий] #13.03.2004 21:52
+
-
edit
 
привет всем. обращаюсь к тем кто знает, возникла проблема - вышел за предел демо версии КодеВижна, а программу написать надо. решил вернутся к ICC но не получилось, хоть хекс он создает и правильный(если верить его сообщениям), но VMLab эмулировать его отказывается, объясняя это тем, что вектор RJAMP ссылается на недоступный адрес, найдя способ грохнуть Коде Вижн проверил VMLab работает как надо. кто может сказать что за конфликт у вмлаба с имаджекрафтом.

ответ WERIS - прежде чем задавать вопрос, напиши в чем работаешь, у разных компиляторов разный синтаксис операторов по работе с битами портов. PINA.1 - вмлабовский вариант, а для ICC будет PINA&0x01 помоему, и вообще если что-то неполучается прочтите инструкцию(читай хелп), а потом кричи помигите люди добрые.
 
RU termostat #14.03.2004 10:52
+
-
edit
 

termostat

аксакал


как округлить до целого дробное число?
 


Я точно не знаю, но можно попробовать:
1) привести к целому типу.

например float chislo = 34.5436 - дробное

zeloe = (unsignes char) chislo; - по идее должна остаться только целая часть.


2) поделить целочисленно на 1 - целочисленное
деление (если можно его над плавающей точкой делть)
знак "%" наверно вместо "/"

3) возможно в Си есть спец. операция


проверить состояние только первого бита порта А

... ко входу РА1 прицеплена кнопка
 


PA1 это 2-й бит!!! порта, первый бит это: PA0


включает и выключает светоодиод
 


Надо "антидребезг" предусмотреть: Обычно после обнаружения нажатия кнопки,
делают паузу 20 мс и еще раз проверяют, что кнопка нажата.


PORTB=0xff; //portB = 1
 


НЕТ! portB = 225 теперь.

RU termostat #14.03.2004 10:54
+
-
edit
 
RU termostat #14.03.2004 18:02
+
-
edit
 

termostat

аксакал

[дмитрий:],13.03.2004 21:52:16
ICC но не получилось, хоть хекс он создает и правильный(если верить его сообщениям), но VMLab эмулировать его отказывается
 


странно... Я использовал ICC, как и многие другие, успешно.

и задача в курсе МК есть на нем скомпилированая.

Попробуй такой пример: - кстати кому интересно, разберитесь сколько циклов сделает FOR в этом примере?

\\\\\

#include <io8535v.h>

void main() {
unsigned char a, b;

DDRB = 255;

for (a = 1; a; a++){

for (b = 1; b; b++)
PORTB++;

}
}

потом светодиоды подключить к Порт В и посмотреть работу в VMLAB

\\\\\\\\\\\\\\\

Я проверил в ICC все скомпилировал и в VMLAB проверил - нужно только опции проекта в ICC заполнить - тип процессора
Прикреплённые файлы:
test.zip (скачать) [2,1 кБ]
 
 
Это сообщение редактировалось 15.03.2004 в 10:18

weris

новичок
привет всем!
нашел как сделать проверку одной ноги:

#define port_x PINA
#define Noga PA1


if ((port_x>>Noga)&1)
{
....
}


может кому пригодится
 

weris

новичок
еще пара вопросов возникла,
как в ВмЛаб + ВинАВР отправить данные в УАРТ

поглядел в хелпе - есть описание примера
uart_putchar
{..
...
}

не работает, компилится но не работает


и 2.
как за ресетить ватчдог,
он при включении пишет что сначала надо ресет а потом енабле,
посмотрел даташит - не понял
проц 8535

3.
как устаноовить нужный бит в 1 не трогая всего остального
...
#ifndef BIT
#define BIT(x) (1 << (x))
#endif
...

...
asm ("sbi PORTB,PB5");

не работает, говорит
error: constant value required - на строке асм...
 
Это сообщение редактировалось 15.03.2004 в 10:02
RU termostat #15.03.2004 11:51
+
-
edit
 

termostat

аксакал

Интересно, что для выше приведеного примера, CV дал .hex 541 байт, а ICC всего 287 байт. Так что не смотря на свою внешнюю неказистость ICC довольно хорош по размеру прграммы.
RU [дмитрий] #15.03.2004 18:26
+
-
edit
 
termostat, 14.03.2004 18:02:56 :
[дмитрий:],13.03.2004 21:52:16
ICC но не получилось, хоть хекс он создает и правильный(если верить его сообщениям), но VMLab эмулировать его отказывается
 


странно... Я использовал ICC, как и многие другие, успешно.

и задача в курсе МК есть на нем скомпилированая.

Попробуй такой пример: - кстати кому интересно, разберитесь сколько циклов сделает FOR в этом примере?

\\\\\

#include <io8535v.h>

void main() {
unsigned char a, b;

DDRB = 255;

for (a = 1; a; a++){

for (b = 1; b; b++)
PORTB++;

}
}

потом светодиоды подключить к Порт В и посмотреть работу в VMLAB

\\\\\\\\\\\\\\\

Я проверил в ICC все скомпилировал и в VMLAB проверил - нужно только опции проекта в ICC заполнить - тип процессора
 


так в том то и дело, что я тоже выполнял первое упражнение на ICC в вашей задаче, но потом прошел месяц и ... а в это время я уже на кодевижне трудился, и попал в ситуацию, когда без лицензии ИСС не работает а коде вижн не пишет прогу свыше 1К, и ИСС не реанимировало даже формат С, то есть реанимировало, но както не так.
 
+
-
edit
 
weris, 15.03.2004 09:23:32 :
еще пара вопросов возникла,
как в ВмЛаб + ВинАВР отправить данные в УАРТ

поглядел в хелпе - есть описание примера
uart_putchar
{..
...
}

не работает, компилится но не работает


и 2.
как за ресетить ватчдог,
он при включении пишет что сначала надо ресет а потом енабле,
посмотрел даташит - не понял
проц 8535

3.
как устаноовить нужный бит в 1 не трогая всего остального
...
#ifndef BIT
#define BIT(x) (1 << (x))
#endif
...

...
asm ("sbi PORTB,PB5");

не работает, говорит
error: constant value required - на строке асм...
 


Думаю тебе следует определить значение константы PB5... ;)
 
+
-
edit
 
weris, 15.03.2004 09:05:24 :
привет всем!
нашел как сделать проверку одной ноги:

#define port_x PINA
#define Noga PA1


if ((port_x>>Noga)&1)
{
....
}


может кому пригодится
 


Зачем такие сложности... :D
Можно так:
if (PinB.1==1)
{
...
}
 

weris

новичок
предлагаю в рамки курса внести следующий проект
система контроля УМЗЧ

вычислять температуру радиаторов,
выходную мощность за последние 10сек
перегрузки
итд
все это выводить на ЛСД

я этим планирую заняться, заодно и учиться
может кому еще будет интересно

типа
«Телесистемы»: Микроэлектронные проекты. Ридико Леонид Иванович. УМЗЧ ВВ с микроконтроллерной системой управления
Телесистемы - миниатюрные аудио и видео устройства
 
Это сообщение редактировалось 16.03.2004 в 14:21
+
-
edit
 
to Termostat: Лодер для той проги (PIC) готов... Напиши мне письмо (можно пустое), а то я твоё мыло потерял... ;) Чем раньше напишешь - тем раньше будет ответ...
 
RU [Дмитрий] #17.03.2004 23:56
+
-
edit
 
weris, 16.03.2004 14:13:44 :
предлагаю в рамки курса внести следующий проект
система контроля УМЗЧ

вычислять температуру радиаторов,
выходную мощность за последние 10сек
перегрузки
итд
все это выводить на ЛСД

я этим планирую заняться, заодно и учиться
может кому еще будет интересно

типа
«Телесистемы»: Микроэлектронные проекты. Ридико Леонид Иванович. УМЗЧ ВВ с микроконтроллерной системой управления
Телесистемы - миниатюрные аудио и видео устройства
 


оно то, предложение у тебя хорошее, но сформулированно не оч хорошо. я то сам еще чайникоподобный, и если какой добрый волшебник раскажет(и покажет) как лсд управлять, ацп пользоватся, и т.д. я был бы рад, как и ты. но задачу ставить надо я думаю попроще. то есть, тебе надо температуру радиатора мерять то предложи разработать термометр или терморегулятор, перегрузку увидеть по напряжению - быстродействующий вольтметр и т.д. , а то сразу давайте изобретать такое вот сложное устройство.
 
RU termostat #18.03.2004 10:45
+
-
edit
 

termostat

аксакал

[Дмитрий:],17.03.2004 23:56:40
какой добрый волшебник раскажет(и покажет) как лсд управлять, ацп пользоватся, и т.д. я был бы рад
 


Как АЦП пользоваться это задача_5 моего курса (линк в подписи!).

Кроме того великолепные примеры (РАБОЧИЕ!!! 100% я проверял!) в комплекте компилятора CodeVision - папки: Examples -> ADC8535 Examples -> Lcdchar и Examples -> Lcddemo

Как мерить температуру: Examples -> Therm75 и выводить ее на ЖКИ: Examples -> Thermlcd


Я приатачил все примеры одним файлом - 28 кБ

\\\\\\

Посмотреть как это работает после компиляции можно в эмуляторе. подробно в моем курсе.

Если хочется начать что-то делать то присоединяйтесь и следите за проектом - 007
Прикреплённые файлы:
 
RU termostat #18.03.2004 12:04
+
-
edit
 
1 6 7 8 9 10 11 12

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