CodeVision AVR в вопросах и ответах
Всем громкое Мяу!!!
Помогите Чайнику! Подскажите как на языке Си написать программу обращения ATmega8515 к внешней ОЗУ избегая ассеблерных вставок. Не могу в учебниках по Си найти как эта задача реализуется синтаксически. Например отаправить данные по адресу $0A000. В ассемблере это сделать не трудно, но есть нужда реализовать это именно в Си. Плиззз если на трудно покажите кусок кода. 
Не люблю словоблудия!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
В Хелпе CVAVR посмотрите - Structures
Structures are defined using the struct reserved keyword.
The syntax is:
[<storage>] struct [<structure>] {
[<type> <variable>[,<variable>, ...]];
[<type> [<bitfield>]:<width>[,[<bitfield>]:<width>, ...]];
...
} [<structure>];
Example:
Structures are defined using the struct reserved keyword.
The syntax is:
[<storage>] struct [<structure>] {
[<type> <variable>[,<variable>, ...]];
[<type> [<bitfield>]:<width>[,[<bitfield>]:<width>, ...]];
...
} [<structure>];
Example:
Код: Выделить всё
/* Global structure located in SRAM */
struct ram_structure {
char a,b;
int c;
char d[30],e[10];
char *pp;
} sr;Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
просто указать адрес переменной не помогает?
Код: Выделить всё
int my_var @0xA000;если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
в IAR так и для внешней памяти, а вот в CVAVR сумлеваюсь.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
проблемы с прогаммированием через "пять проводков"
в общем так! из книги А В Белова взял схему бегущий огней, собрал её на ATmega 8515, программировал при помощи "пяти проводков" через CV AVR. программирование вроде прошло успешно CV не ругалась, но ожиданных бегущих огней я не увидел. лишь слабо засветился один или два диода Программу для контроллера я взял тоже из книги. Но это не самое страшное. Потом я попытался стереть память, чтобы перепрошить его, но CV сказала, чтобы я проверил свою плату программатора, ЧИП и т. д. В общем работать с МК она наотрез отказалась. И так произошло дважды на двух новеньких, только из магазина мегах. Не пойму в чем дело! 
Не люблю словоблудия!
- Aheir
- Модератор
- Сообщения: 4517
- Зарегистрирован: Пн апр 03, 2006 11:43:25
- Откуда: Санкт - Петербург
- Контактная информация:
Возможно, Вы неправильно прошили фьюз-биты. Например, прошили на работу от кварца, а кварц не установлен. Советую ознакомиться с http://www.radiokot.ru/forum/viewtopic.php?t=1279, по крайней мере узнаете о возможных проблемах.
Оптимизм х (Опыт + Знания) = const
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
ipkin писал(а):а существует ли описалово для CV на русском если да то можно ли его поиметь?
Нверно только краткий курс описывает работу с CVAVR - моя домашняя страничка.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
ipkin писал(а):Нверно только краткий курс описывает работу с CVAVR - моя домашняя страничка под кнопкой www
ну а по директивам командам для написания программы есть описания
ну типа #pragma warn- или flash unsigned char что то в этом духе
Это страница 5 курса - называется "Си для МК" и имеет 2 части.
#pragma warn- отключить вонинги - т.е. предупреждения компилера.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- delay
- Нашел транзистор. Понюхал.
- Сообщения: 173
- Зарегистрирован: Чт мар 20, 2008 20:33:43
- Контактная информация:
Re: проблемы с прогаммированием через "пять проводков&a
Ravenholm писал(а): ожиданных бегущих огней я не увидел. лишь слабо засветился один или два диода
Похоже на завышенную частоту. Посмотрите осциллографом. Возможно ошиблись с конфигурированием.
Потом я попытался стереть память, чтобы перепрошить его, но CV сказала, чтобы я проверил свою плату программатора, ЧИП и т. д. В общем работать с МК она наотрез отказалась.
У меня бывает подобное Tiny2313 c самодельным программатором. В таких случаях я пользуюсь программатором Uniprof :
http://avr.nikolaew.org/progr.htm
Если же вы ошиблись с фюзами, то поставить их на место можно при помощи AVRealshell :
http://miek.narod.ru
-
GoodBoyGood
- Родился
- Сообщения: 8
- Зарегистрирован: Вт авг 28, 2007 14:10:30
У меня вопрос по CodeVision AVR:
Мне нужно сделать задержку в микросекундах от 0 до 5000 мкс значение которой храниться в переменной, например t. В CodeVision AVR можно использовать функции delay_ms() и delay_us().
С delay_ms() все нормально, ставлю t вот так: delay_ms(t), и все нормально. Но в delay_us() переменную нельзя ставить, компилятор пишет типа можно только константу поставить.
Неужели никак? Может все-таки как то можно использовать переменную в delay_us()?
А может кто скажет как самому задержку сделать? но только она должна происходить в подпрограмме обработчика прерываний. Как это сделать если в обработчике прерываний прерывания запрещаются?
Мне нужно сделать задержку в микросекундах от 0 до 5000 мкс значение которой храниться в переменной, например t. В CodeVision AVR можно использовать функции delay_ms() и delay_us().
С delay_ms() все нормально, ставлю t вот так: delay_ms(t), и все нормально. Но в delay_us() переменную нельзя ставить, компилятор пишет типа можно только константу поставить.
Неужели никак? Может все-таки как то можно использовать переменную в delay_us()?
А может кто скажет как самому задержку сделать? но только она должна происходить в подпрограмме обработчика прерываний. Как это сделать если в обработчике прерываний прерывания запрещаются?
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
1. Можно паузу сделать на таймере. Смотрите задачу 6 в кратком курсе по AVR.
2. Можно delay_us(константа) втавить в while или for для повторения столько раз сколько нужно.
3. Можно просто while или for использовать для отсчета паузы.
2 и 3 разъяснено в "Си для МК" - советую почитать.
2. Можно delay_us(константа) втавить в while или for для повторения столько раз сколько нужно.
3. Можно просто while или for использовать для отсчета паузы.
2 и 3 разъяснено в "Си для МК" - советую почитать.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
задержка в обработчике прерываний - это плохой стиль, могут вылезти большие проблемы. тем более такая огромная (с точки зрения МК) - 5 миллисекунд!GoodBoyGood писал(а):А может кто скажет как самому задержку сделать? но только она должна происходить в подпрограмме обработчика прерываний. Как это сделать если в обработчике прерываний прерывания запрещаются?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Верификация в CVAVR
Вопрос по верификации в CVAVR
Проштудировал курс по AVR, установил CVAVR, спаял пять проводков. Шил Attiny13. Разобрался с фьюзами, вроде все работает, но как-то нет сообщений о верификации... Решил проверить вручную. Прошил flash, считал и сохранил flash. Сравнил файлы - совпадают(2.5к). Вышел из программы CVAVR, зашел в CVAVR опять, считал flash - А ФАЙЛ ДРУГОЙ, БОЛЬШЕ И ВООБЩЕ НЕ ПОХОЖ(2.8к)!!! Проверил несколько раз - все то же. Стер - считал флеш - сохранил - опять2.8к! И никаких ошибок не выдает! Вообще не могу понять... Почитал хелп по CVAVR но там очень лаконично... помогите, первый раз шью...
Наутро сходил в аптеку за галоперидолом и что-то прояснилось...
С верификацией разобрался, все записалось правильно... спасибо за ресурс, tych. НО, в общем неважный вопрос, просто интересно: смотрю одинаковые (за исключением дописанных внизу FFFFFFFFFFFFFFF в дампе, за счет этого больший размер файла - моя первая ошибка)hex файлы - сохраненный из буфера и исходный (прошивка) в редакторе Lister в hex формате - А ОНИ СОВЕРШЕННО РАЗНЫЕ, НАЧИНАЯ С ПЕРВОЙ СТРОЧКИ, С ПЕРВОГО ЗНАЧЕНИЯ!!! Может объясните? Получается листером и пользоваться нельзя?
Проштудировал курс по AVR, установил CVAVR, спаял пять проводков. Шил Attiny13. Разобрался с фьюзами, вроде все работает, но как-то нет сообщений о верификации... Решил проверить вручную. Прошил flash, считал и сохранил flash. Сравнил файлы - совпадают(2.5к). Вышел из программы CVAVR, зашел в CVAVR опять, считал flash - А ФАЙЛ ДРУГОЙ, БОЛЬШЕ И ВООБЩЕ НЕ ПОХОЖ(2.8к)!!! Проверил несколько раз - все то же. Стер - считал флеш - сохранил - опять2.8к! И никаких ошибок не выдает! Вообще не могу понять... Почитал хелп по CVAVR но там очень лаконично... помогите, первый раз шью...
Наутро сходил в аптеку за галоперидолом и что-то прояснилось...
С верификацией разобрался, все записалось правильно... спасибо за ресурс, tych. НО, в общем неважный вопрос, просто интересно: смотрю одинаковые (за исключением дописанных внизу FFFFFFFFFFFFFFF в дампе, за счет этого больший размер файла - моя первая ошибка)hex файлы - сохраненный из буфера и исходный (прошивка) в редакторе Lister в hex формате - А ОНИ СОВЕРШЕННО РАЗНЫЕ, НАЧИНАЯ С ПЕРВОЙ СТРОЧКИ, С ПЕРВОГО ЗНАЧЕНИЯ!!! Может объясните? Получается листером и пользоваться нельзя?
Doc
Доброго времени суток. Начал осваивать AVR и столкнулся с проблемой: не получается прошить МК мегу16 второй раз. Прошиваю пятью проводками из CVAVR (пока не спаял программатор… руки не дошли). Имеется две меги16, первую зашил - все гладко, даже работает, вторую – тоже, а вот по второму разу – ну никак(
Т.е. МК в схеме исправно работает, а вот прошиваться не дает.
Задержку устанавливал от 1 и до 99, это не помогает. Господа, есть какие варианты, как меги спасти?
Т.е. МК в схеме исправно работает, а вот прошиваться не дает.
Задержку устанавливал от 1 и до 99, это не помогает. Господа, есть какие варианты, как меги спасти?