CodeVision AVR в вопросах и ответах
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Если переменные в EEPROM не инициализировать то ее ресурс может быть исчеран быстрей.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Если прога ее изменила то она станет другой конечно. для этого и есть eeprom
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- Aheir
- Модератор
- Сообщения: 4517
- Зарегистрирован: Пн апр 03, 2006 11:43:25
- Откуда: Санкт - Петербург
- Контактная информация:
Лично я предпочитаю использовать собственноручно написанные процедуры для работы с ЕЕПРОМ, чего и Вам желаю. Причем часто - с контролем числа записей в одну ячейку и переносом данных в другую область ЕЕПРОМ при приближении к пороговому значению ресурса перезаписей (см. даташит). А вообще, про ЕЕПРОМ в AVR уже есть отдельные темы, используйте поиск.
Оптимизм х (Опыт + Знания) = const
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
а зачем это? если вы работаете на своем любимом CodeVision C, то распределение переменных по регистрам берет на себя компилятор, а с битами вы уж работайте СИШНЫМИ операторами. при первой же возможности компилятор будет автоматически использовать подходящие ассемблерные комнды. Пример:Tohey писал(а):А как представить рабочий регистр переменной? Что бы работать можно было с битами, как например с портами можно, ведь для регистров тоже есть битовые асм-команды.
var |= (1<<4);
будет скомпилировано примерно в такую конструкцию
sbr r18, 4
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Tohey писал(а):мне бы хотелось самому привязать к var свой любимый регистр.
Привяжите. Есть ведь FAQ по микроконтроллерам - там все описно с примерами.
======
var |= (1<<4);
У меня вот так скомпилилось
LDS R30,_var
ORI R30,0x10
STS _var,R30
А если var уже использовалось в проге то так:
ORI R30,0x10
STS _var,R30
WinAVR 20080407 сделал аналогично - как и CVAVR
lds r24, 0x0077
ori r24, 0x10
sts 0x0077, r24
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
гм... а зачем вам понадобилась именно команда SBR? какая разница по сравнению с той же ORI? А привязать к регистру(регистрам) довольно просто, по крайней мере в WinAVR:
Код: Выделить всё
register unsigned char var asm("r18"); // var будет привязана к r18
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Tohey писал(а):Как привязать, я так и не вычитал.
в FAQ это - "CVAVR размешение переменных в регистры.txt"
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
-
ipkin
- Нашел транзистор. Понюхал.
- Сообщения: 167
- Зарегистрирован: Вт июл 10, 2007 23:15:17
- Откуда: Магнитогорск
Пытаюсь прочитать данные из датафлэш AT45DB161 (SO-8)
пишу на Си (раньше делал на асме всё ок)
флэш подключена к SPI контроллера на порт B
вот код
#include <mega64>
#include <io>
#include <stdio>
char c;
void setup() // настройка переферии МК
{
PORTB= 0x0D;
DDRB = 0x07; // Настройка выводов порта PortB
SPCR = 0x5C; // Конфигурация SPI
}
void main(void)
{
setup();
SPDR=0x68; //Передача команды непрерывного чтения из AT45DB161
while (!(SPSR & 0x80));
SPDR=0x00; //Передача адреса откуда будем читать 3 байта 000000h
while (!(SPSR & 0x80));
SPDR=0x00;
while (!(SPSR & 0x80));
SPDR=0x00;
while (!(SPSR & 0x80));
SPDR=0xFF; //Передача 4-х незначащих байт FFh
while (!(SPSR & 0x80));
SPDR=0xFF;
while (!(SPSR & 0x80));
SPDR=0xFF;
while (!(SPSR & 0x80));
SPDR=0xFF;
loop:
while (!(SPSR & 0x80)); //Приём информации из AT45DB161
c=SPDR;
goto loop;
}
мне нужно только чтение с указаных мной адресов
запись не нужна
(это к тому если будете предлагать посмотреть пример задача7 из курса АВР)
это мои первые шаги на Си так что сильно не пинайте
спасибо
пишу на Си (раньше делал на асме всё ок)
флэш подключена к SPI контроллера на порт B
вот код
#include <mega64>
#include <io>
#include <stdio>
char c;
void setup() // настройка переферии МК
{
PORTB= 0x0D;
DDRB = 0x07; // Настройка выводов порта PortB
SPCR = 0x5C; // Конфигурация SPI
}
void main(void)
{
setup();
SPDR=0x68; //Передача команды непрерывного чтения из AT45DB161
while (!(SPSR & 0x80));
SPDR=0x00; //Передача адреса откуда будем читать 3 байта 000000h
while (!(SPSR & 0x80));
SPDR=0x00;
while (!(SPSR & 0x80));
SPDR=0x00;
while (!(SPSR & 0x80));
SPDR=0xFF; //Передача 4-х незначащих байт FFh
while (!(SPSR & 0x80));
SPDR=0xFF;
while (!(SPSR & 0x80));
SPDR=0xFF;
while (!(SPSR & 0x80));
SPDR=0xFF;
loop:
while (!(SPSR & 0x80)); //Приём информации из AT45DB161
c=SPDR;
goto loop;
}
мне нужно только чтение с указаных мной адресов
запись не нужна
(это к тому если будете предлагать посмотреть пример задача7 из курса АВР)
это мои первые шаги на Си так что сильно не пинайте
спасибо
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
с - хорошее имя для переменной ! Сразу видно руская она или латинская.
Хоршее начало !
Ни в коем разе !!! НЕ советую читать, а то вдруг потом правильно напишите ...
Хоршее начало !
ipkin писал(а):это к тому если будете предлагать посмотреть пример задача7 из курса АВР
Ни в коем разе !!! НЕ советую читать, а то вдруг потом правильно напишите ...
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Пример в задаче 7 я отлаживал (как - в задаче 4 написано) "в железе" так как в имуляторах такой памяти нету - пример работает.
У вас как то странно выглядит это:
Это бесконечный цикл.
В задаче 7 курса вот так читается:
У вас как то странно выглядит это:
Код: Выделить всё
loop:
while (!(SPSR & 0x80)); //Приём информации из AT45DB161
c=SPDR;
goto loop; Это бесконечный цикл.
В задаче 7 курса вот так читается:
Код: Выделить всё
while (buffer_counter < 528)
{
SPDR = 0xFF;
// write dummy value to start register shift
while (!(SPSR & temp));
// wait for data transfer to be completed
while (!USR.5); // ждем пока освободится UDR
UDR = SPDR; // записываем байт принятый по SPI из памяти в UART
buffer_counter++;
}Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
-
ipkin
- Нашел транзистор. Понюхал.
- Сообщения: 167
- Зарегистрирован: Вт июл 10, 2007 23:15:17
- Откуда: Магнитогорск
как нет такой памяти если она у меня на платке запаяна 8-ноговая
на асме я с ней работал всё чётко сейчас тоже самое но только на СИ
чтение у меня идёт не из буфера а из массива памяти (команда 68 по ДШ)
бесконечный цикл я сделал чтобы осцилом можно было посмотреть ипульсы на выходе датафлэш
в дальнейшем там будет цикл определённого размера для чтения нужного кол-во байт
вот цикл:
static unsigned int j;
for (j=0;j<1024;j++)
{
while (!(SPSR & 0x80)); //Ïðè¸ì èíôîðìàöèè èç AT45DB161
i=SPDR;
}
на асме я с ней работал всё чётко сейчас тоже самое но только на СИ
чтение у меня идёт не из буфера а из массива памяти (команда 68 по ДШ)
бесконечный цикл я сделал чтобы осцилом можно было посмотреть ипульсы на выходе датафлэш
в дальнейшем там будет цикл определённого размера для чтения нужного кол-во байт
вот цикл:
static unsigned int j;
for (j=0;j<1024;j++)
{
while (!(SPSR & 0x80)); //Ïðè¸ì èíôîðìàöèè èç AT45DB161
i=SPDR;
}
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
ipkin писал(а):как нет такой памяти если она у меня на платке запаяна 8-ноговая
Яж пишу: в СИМУЛЯТОРАХ НЕТУ.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
CVAVR 2.03.2 - добавлено много нового
http://www.hpinfotech.ro/html/cvavr_history.htm
Размер демки вырос с 2 до 8 Мб.
http://www.hpinfotech.ro/html/cvavr_history.htm
Размер демки вырос с 2 до 8 Мб.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Прикол ! Демо CodeVisionAVR V2.03.2 компилит полную память ATmega8 !!!
http://kazus.ru/forum/topics/f_81220.html#81220
мегу16 32 64 тоже протестил - компилятся !
http://kazus.ru/forum/topics/f_81220.html#81220
мегу16 32 64 тоже протестил - компилятся !
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru