CodeVision AVR в вопросах и ответах
- Сообщения: 27
- Зарегистрирован: Чт июл 01, 2010 19:48:52
нужен пример макроса ввода-вывода, обрабатываемого препроцессором
- Реклама
ребята здравствуйте!
что мнен сделать чтоб не дёргать каждой ногой чтобы высвечивать какиюнибудь информацию на 8х8 (64led) матричное подключение светодиодов.
Я умею только пользоватся функцией delay.
мне это для динамической индикации,как научится делать:
чтение-модификация-запись.
что то типа того:
прежде чем изменить какой то
бит на выходе порта, считывается предыдущее состояние, в другом регистре изменяется как нужно
и записывается обратно в порт.
только как это сделать не имею предстовления -помогите форумчане я код могу сбросить чтоб проще было я буву В вывел на дисплей состоящий из 64 led у меня около 200 строчек получилось и память на тиньки 2313 30 процентов заняло.
что мнен сделать чтоб не дёргать каждой ногой чтобы высвечивать какиюнибудь информацию на 8х8 (64led) матричное подключение светодиодов.
Я умею только пользоватся функцией delay.
мне это для динамической индикации,как научится делать:
чтение-модификация-запись.
что то типа того:
прежде чем изменить какой то
бит на выходе порта, считывается предыдущее состояние, в другом регистре изменяется как нужно
и записывается обратно в порт.
только как это сделать не имею предстовления -помогите форумчане я код могу сбросить чтоб проще было я буву В вывел на дисплей состоящий из 64 led у меня около 200 строчек получилось и память на тиньки 2313 30 процентов заняло.
- Сообщения: 3459
- Зарегистрирован: Ср сен 27, 2006 16:18:57
Про динамическую индикацию хорошо написано здесь: http://arv.radioliga.com/content/category/6/31/49/
ребят подцепил регистор к тине13 я не пойму им че прада тал легко пользоватся?нет ни у кого исходничков поглазеть?
Подскажите пожалуйста в CVAVR написал код (списал конечно) вот такой
мигание светиком
#include <mega8.h>
#include <delay.h>
#define dl 300 // директива заменит dl на значение 300
void main(void)
{
DDRD=0x01; // разряд PD0 на вывод
while (1) // бесконечный цикл
{
PORTD.0=1; // разряд PD0 в лог.1
delay_ms(dl); //задерживаем на значение dl,мс
PORTD.0=0; // разряд PD0 в лог.0
delay_ms(dl);
};
}
откомпелировал - полный порядок, получил все файлы. Решил запустить это в VMLAB и вот что он мне выдал (прилагается в принтскрине)
мигание светиком
#include <mega8.h>
#include <delay.h>
#define dl 300 // директива заменит dl на значение 300
void main(void)
{
DDRD=0x01; // разряд PD0 на вывод
while (1) // бесконечный цикл
{
PORTD.0=1; // разряд PD0 в лог.1
delay_ms(dl); //задерживаем на значение dl,мс
PORTD.0=0; // разряд PD0 в лог.0
delay_ms(dl);
};
}
откомпелировал - полный порядок, получил все файлы. Решил запустить это в VMLAB и вот что он мне выдал (прилагается в принтскрине)
- Вложения
-
- 123456.png
- (63.71 КБ) 367 скачиваний
- Реклама
мож потому что здесь синтаксическая ошибка?Serhio писал(а):Подскажите пожалуйста в CVAVR написал код (списал конечно) вот такой
мигание светиком
};
}
)
Почему же тогда компилятор не возмущался ежели ошибочка?
А почему он должен возмутиться? Код верный. Ошибок нет. Выкинте свои симуляторы. Железо есть железо. Тем более поморгать светиком можно и просто на макетке.Serhio писал(а):Почему же тогда компилятор не возмущался ежели ошибочка?
- Сообщения: 27
- Зарегистрирован: Чт июл 01, 2010 19:48:52
Я не пользуюсь. Не нравится
. Да и глюки встречаются чисто эмуляторные.
- Сообщения: 27
- Зарегистрирован: Чт июл 01, 2010 19:48:52
у меня вот при подключении внешней SRAM c моделями меги128 и регистра 74XX373 проблема в крякнутом протеусе 7.8
проще было бы в протеусе сначала проверить,что память ок работает
проще было бы в протеусе сначала проверить,что память ок работает
Пару попыток было. Много на форумах читал, что дофига глюков. Отказался. Собрал хорошую отладочную плату по документам уважаемого DiHalta. Пока хватает. А вообще это отступление от темыkotbimigot писал(а):Alex_Megavolt_79, вы вообще симуляторами не пользуетесь?
Есть вроде специальные микросхемы расширения памяти и некоторые контроллеры их поддерживают.Адресация как к своей памяти, только адрес повыше.kotbimigot писал(а):Здравствуйте! Как создать тип переменной в CVAVR2, чтобы при обращении к переменной этого типа, находящейся в микросхеме памяти, по интерфейсу SPI (или TWI), компилятор сам "понимал", что переменная не в его ОЗУ или Flash? То есть при компиляции, встречая в тексте программы переменную этого типа, компилятор должен использовать соответственно команды чтения/записи по SPI (TWI). Как прописать такой тип?
В поисках истины человек развивается.
В чистом Си нет такой возможности, однако С++ позволяет переопределять операторы внутри классов. Называется это перегрузка операций.kotbimigot писал(а):Здравствуйте! Как создать тип переменной в CVAVR2, чтобы при обращении к переменной этого типа, находящейся в микросхеме памяти, по интерфейсу SPI (или TWI), компилятор сам "понимал", что переменная не в его ОЗУ или Flash? То есть при компиляции, встречая в тексте программы переменную этого типа, компилятор должен использовать соответственно команды чтения/записи по SPI (TWI). Как прописать такой тип?
Не знаю, поддерживает ли кодвижион синтаксис С++ (на сколько я помню - нет), но winavr должен всё схавать.
- Сообщения: 27
- Зарегистрирован: Чт июл 01, 2010 19:48:52
По-моему это микросхемы ОЗУ (SRAM). С их подключением все ясно.vitalik_1984 писал(а):Есть вроде специальные микросхемы расширения памяти и некоторые контроллеры их поддерживают.Адресация как к своей памяти, только адрес повыше.
- Сообщения: 27
- Зарегистрирован: Чт июл 01, 2010 19:48:52
нет, к сожалению CVAVR не поддерживаетAI_Disable писал(а):Не знаю, поддерживает ли кодвижион синтаксис С++ (на сколько я помню - нет), но winavr должен всё схавать.
Подскажите пожалуйста, скачал исходник к проекту по ссылке http://radiokot.ru/lab/controller/42/ , решил скомпилировать но ругается и говорит undefined symbol portD в файле led.c . Но автор это все скомпилировал тоже в Codevisionavr, может быть проблема в размых версиях или както подключаются доп. библиотеки? Спасибо
Ругается, потому как вначале нужно подключить хидер mega8.h:
Файл должен находиться в папке inc CVAVR.
Код: Выделить всё
#include <MEGA8.H>
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

очень сильно сомневаюсь, что символ portD на самом деле существует. не забывайте, что в Си PORTD, portd, portD и т.п. - СОВЕРШЕННО РАЗНЫЕ СИМВОЛЫ.ururur писал(а): ругается и говорит undefined symbol portD в файле led.c .
битва с дураками проиграна, победители торжествуют. слава победителям!
В проекте - правильное PORTD, просто ururur так написал.Мастер Ломастер писал(а):очень сильно сомневаюсь, что символ portD на самом деле существует. не забывайте, что в Си PORTD, portd, portD и т.п. - СОВЕРШЕННО РАЗНЫЕ СИМВОЛЫ.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )



