roboforum.ru

Технический форум по робототехнике.
Текущее время: 01 ноя 2024, 20:23

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 117, 118, 119, 120, 121, 122, 123 ... 144  След.
Автор Сообщение
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 02 ноя 2010, 18:32 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
А в порт С отключили ЖТАГ как рекомендовано на страничке 2 курса ?

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 03 ноя 2010, 18:00 
Не в сети

Зарегистрирован: 18 окт 2009, 12:36
Сообщения: 22
Откуда: Самара
Большое спасибо за подсказку! Заработало. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 03 ноя 2010, 18:47 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
И то хлеб ! :)

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 06 ноя 2010, 23:26 
Не в сети

Зарегистрирован: 18 окт 2009, 12:36
Сообщения: 22
Откуда: Самара
Ещё вопрос: собрал девайс AVR-CDC на Tiny45. При поключении к ПК определяется как неизвестное устройство(Unknown device).
USB Device
Неизвестное устройсво
Новое оборудование установлено и готово к использованию
USB устройство не опознано...

При попытке указать драйвер, система говорит что "В указанном файле нет сведений об устройстве" либо что "драйвер не нуждается в обновлении", в информации о драйвере видно что автоматом ставится какой-то дравер от microsoft, еоторый нельзя откатить(пишет что откатывать нечего). :o
Самое интересное, что эта проблема вылезает только на моём ПК (laptop ASUS N61jq),также при попытке подключения из под WIN7. Проверял на 2х стационарных ПК c WIN XP - всё как по маслу: находит устройство и сам просит указать нужный драйвер, встающий в систему без проблем.
Переустановка чистой ОС ХР не помогла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 07 ноя 2010, 01:11 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
А фьюзы на Tiny45 верно указаны? Проверьте еще раз

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 08 ноя 2010, 23:04 
Не в сети

Зарегистрирован: 18 окт 2009, 12:36
Сообщения: 22
Откуда: Самара
всё верно. проблема не актуальна)

следущее :) :

тестирую передачу символа"1" на PC. в протеусе симулирется нормально. канал передачи работает нормально - замыкаю Rx с Tx --> что пишу в терминале в Transmit то и получаю в Recieve. А вот банальное printf("1") ничего в терминал не даёт.
Идеи?
P.S. Питание Меги = 5В
Питание Tiny = 3.8В (поставил послед. два диода чтобы решить пред. проблему) Может ли в этом крыться причина?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 08 ноя 2010, 23:51 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Может и в этом причина, приведите пожалуйста схему куда вы поставили 2 диода и укажите что за диоды поставили

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 08 ноя 2010, 23:55 
Не в сети

Зарегистрирован: 08 ноя 2010, 23:29
Сообщения: 4
Добрый день! Помогите мне пожалуйста с решением следующего вопроса. Мне в МК AVR ATmega 16 необходимо создать (объявить)большой массив данных во FLASh памяти, при этом мне необходимо массив данных привязать к конкретным адресам ячеек памяти Flash. Это мне нужно сделать с помощью языка СИ. В последствии, я буду использовать ассемблерную вставку, где буду считывать данные массива с назначенных адресов памяти Flash.
В МК 51 (Keil )такая команда на Си есть и мне необходим ее аналог на AVR в компиляторе CodeVisionAVR.

Пример для МК 51 (Keil)
BYTE xdata DATA1[201] _at_ 0x0000; //объявление массива в ОЗУ с адреса 0x0000 по 0х00С8
BYTE xdata DATA2[201] _at_ 0x0100; //объявление массива в ОЗУ с адреса 0x0100 по 0х01С8

Заранее спасибо !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 09 ноя 2010, 00:04 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Пример с папки examples:
Код:
// EEPROM access example

// CodeVisionAVR C Compiler
// (C) 2000-2007 HP InfoTech S.R.L.
// www.hpinfotech.ro

// Chip: ATmega8515

flash char f[]="This is a test";
#pragma warn-
eeprom char e[16];
#pragma warn+
char r[16];

void main (void)
{
char flash *ptr_to_flash;
char eeprom *ptr_to_eeprom;
char *ptr_to_ram;

// copy the string f from FLASH to
// the string e in EEPROM
ptr_to_flash=f;
ptr_to_eeprom=e;
while (*ptr_to_flash)
      *ptr_to_eeprom++=*ptr_to_flash++;

// copy the string e from EEPROM to
// the string r in RAM
ptr_to_eeprom=e;
ptr_to_ram=r;
while (*ptr_to_eeprom)
      *ptr_to_ram++=*ptr_to_eeprom++;

// stop here
while (1);
}

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 09 ноя 2010, 00:34 
Не в сети

Зарегистрирован: 08 ноя 2010, 23:29
Сообщения: 4
В силу моих возможностей я понял , что в этом примере объявляется массив (на языке Си) в eeprom и каждая ячейка памяти считвается через указатель. Но если я в программе языка Си буду делать вставку ассемблерного кода для считывания данных массива, я не понял к какой ячейке обращаться, здесь в ассемблере указатель уже не будет работать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 09 ноя 2010, 00:37 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Можно этот пример скомпилировать и посмотреть ассемблеровский листинг как идет обращение к этим видам переменных в ассемблере

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 09 ноя 2010, 01:09 
Не в сети

Зарегистрирован: 08 ноя 2010, 23:29
Сообщения: 4
При объявлении массива компилятор может разместить в любом месте памяти. И при разных компиляциях (с учетом, что в программе планируется еще объявление массивов ) будет данный массив размещаться то в начале, то в середине памяти. Мне же нужно статически разместить массив, чтобы при добавалении кода программы компилятор не мог разместить массив в другое место памяти. Статичекое размещение нужно мне только из-за асемблера, так как я не знаю как по другому при вставке ассемблерного кода узнать ячейки памяти массива (так как в ассемблере не был объявлен этот массив). При статическом размещении я точно знаю. что например нулевой адрес памяти содержит первый элемент массива. Приведенный мной пример для МК 51 позволя мне так сделать. Если есть другой выход из положения я буду ждать.
PS В противном случае мне придется в ассемблере через диррективу DB вводить весь массив.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 09 ноя 2010, 01:15 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Если у вас стоит CVAVR посмотрите листинг. При разных компиляциях адреса массивов разные, но в листинге они и задаются в определенном месте памяти, и с определенного места идет к ним обращение. Просто у меня CVAVR не установлен, только завтра смогу листинг выложить если сами не сможете

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 09 ноя 2010, 01:40 
Не в сети

Зарегистрирован: 08 ноя 2010, 23:29
Сообщения: 4
посмотрел листинг, но тут я не уидел с какого по какой адрес он разместил в память массив
.ESEG
.ORG 0
.DB 0 ; FIRST EEPROM LOCATION NOT USED, SEE ATMEL ERRATA SHEETS

.DSEG
.ORG 0xE0
; 1 // EEPROM access example
; 2
; 3 // CodeVisionAVR C Compiler
; 4 // (C) 2000-2007 HP InfoTech S.R.L.
; 5 // www.hpinfotech.ro
; 6
; 7 // Chip: ATmega8515
; 8
; 9 flash char f[]="This is a test";

.CSEG
; 10 #pragma warn-
; 11 eeprom char e[16];

.ESEG
_e:
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
.DB 0x0
; 12 #pragma warn+
; 13 char r[16];

.DSEG
_r:
.BYTE 0x10
; 14
; 15 void main (void)
; 16 {

.CSEG
_main:
; 17 char flash *ptr_to_flash;
; 18 char eeprom *ptr_to_eeprom;
; 19 char *ptr_to_ram;
; 20
; 21 // copy the string f from FLASH to
; 22 // the string e in EEPROM
; 23 ptr_to_flash=f;
; *ptr_to_flash -> R16,R17
; *ptr_to_eeprom -> R18,R19
; *ptr_to_ram -> R20,R21
LDI R30,LOW(_f*2)
LDI R31,HIGH(_f*2)
MOVW R16,R30
; 24 ptr_to_eeprom=e;
__POINTWRM 18,19,_e
; 25 while (*ptr_to_flash)
_0x3:
MOVW R30,R16
LPM R30,Z
CPI R30,0
BREQ _0x5
; 26 *ptr_to_eeprom++=*ptr_to_flash++;
PUSH R19
PUSH R18
__ADDWRN 18,19,1
MOVW R30,R16
__ADDWRN 16,17,1
LPM R30,Z
POP R26
POP R27
RCALL __EEPROMWRB
; 27
; 28 // copy the string e from EEPROM to
; 29 // the string r in RAM
; 30 ptr_to_eeprom=e;
RJMP _0x3
_0x5:
__POINTWRM 18,19,_e
; 31 ptr_to_ram=r;
__POINTWRM 20,21,_r
; 32 while (*ptr_to_eeprom)
_0x6:
MOVW R26,R18
RCALL __EEPROMRDB
CPI R30,0
BREQ _0x8
; 33 *ptr_to_ram++=*ptr_to_eeprom++;
PUSH R21
PUSH R20
__ADDWRN 20,21,1
__ADDWRN 18,19,1
RCALL __EEPROMRDB
POP R26
POP R27
ST X,R30
; 34
; 35 // stop here
; 36 while (1);
RJMP _0x6
_0x8:
_0x9:
RJMP _0x9
; 37 }
_0xC:
NOP
RJMP _0xC


__EEPROMRDB:
SBIC EECR,EEWE
RJMP __EEPROMRDB
PUSH R31
IN R31,SREG
CLI
OUT EEARL,R26
OUT EEARH,R27
SBI EECR,EERE
IN R30,EEDR
OUT SREG,R31
POP R31
RET


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроКонтроллер AVR начинающим - общие вопросы
СообщениеДобавлено: 09 ноя 2010, 01:50 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Насколько я понимаю, массив типа flash разместили по адресу 0xE0, массив типа eeprom по адресу 0x01

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2149 ]  На страницу Пред.  1 ... 117, 118, 119, 120, 121, 122, 123 ... 144  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO