реклама на сайте
подробности

 
 
> Си указатель на таблицу, Как пристегнуть массив?
Alhen
сообщение Feb 2 2006, 18:19
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 17-08-04
Из: Караганда
Пользователь №: 516



Все решено перехожу на Си!
Только вот незадача, первая же простенькая практическая задача
для AVR контроллера поставила в тупик.
Суть программы:
- в памяти программ размещается таблица или массив;
- берем по очереди байт из массива и выкидываем в коммуникационный порт.

Массив находится в пристегиваемом файле и я не понимаю как указать
какому либо поинтеру на начало таблицы.
На ассемблере все получается достаточно гармонично:
Код
    ldi zh,high(Transmit_Buff*2); Load Z-pointer
    ldi zl,low(Transmit_Buff*2); to the beginning of Receive_Buff

Transmit_Loop:

USART_Transmit:
; Wait for empty transmit buffer
    sbis UCSRA,UDRE
    rjmp USART_Transmit
; Put data  into buffer, sends the data
    lpm  Data_IN, Z+
    out UDR, Data_IN

        ldi  TempReg,high(end_of_file*2); Check if we got high end_of_file
        cp   TempReg,zh        ; Compare
        breq got_high_end_of_file; If equal then check the Low part
            rjmp go_further:

got_high_end_of_file:
        ldi  TempReg,low(end_of_file*2); Check if we got low end_of_file
        cp   TempReg,zl        ; Compare
        breq got_low_end_of_file; If equal then reload Z-pointer
            rjmp go_further:

got_low_end_of_file:
        ldi zh,high(Transmit_Buff*2); Load Z-pointer
        ldi zl,low(Transmit_Buff*2); to the beginning of Receive_Buff

go_further:
rjmp Transmit_Loop

Transmit_Buff:

.include "AIS_LOG.txt"

end_of_file:
nop

Реализация подбной программы на Си AVR для меня загадка.
Тем более что я нашел подходящую конструкцию на VisualDSP,
Код
complex_fract16 in[VEC_SIZE] =
{
    #include "in.dat"
};

но в CVAVR такое не проходит!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alhen
сообщение Feb 4 2006, 06:00
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 17-08-04
Из: Караганда
Пользователь №: 516



2Nixon
Попробывал я обыграть макрос и в CodeVision прошел следующий вариант:
Код
#include "my_table.txt"
flash unsigned char my_array[] = in_table;


Включаемый файл при этом выглядел так:
Код
#define in_table {\
0x01, 0x02,\
0x03, 0x04 \
....
};\


Что еще приятно, работает sizeof
Код
a = sizeof(my_array);


2kOt
Вариант типа
Код
flash unsigned char my_array[]={#include "my_table.txt"};


в Code Vision не проходит?! Хотя все логично, тем более что в VDSP++ есть
подобная конструкция

2 Old1 & vet
По поводу конвертации бинарного файла я уже поднимал тему на форуме.
И программа BIN2ASC.exe показалась сперва чрезвычайно полезной, тем не менее мне пришлось
написать свою на Паскале, потому что я тогда работал на Ассемблере под AVR Studio
и программа не принимала сгенерированный ascii файл, по следующим причинам:
- она глючила на десятичные числа с нулями впереди, например 040 воспринимая их за операторы
- не понимала шестнадцатеричный формат без 0x - префикса (естественно)
- не признавала директиву db без точки впереди
- и к тому же, AVR Studio ругается на нечетное количество операндов в строке (наверное из-за
16 разрядной структуры памяти программ)

Код
.db 183, 001, 137, 255, 255, 134, 254, 255, 133, 255, 255, 255, 243, 041, 255,


а их то 11 то 15 штук в строке.
Любой после этого кинется писать свой конвертор.

2AndyBig и всем
Уже вижу что Си компиляторы все разные, может мне не стоит заморачиваться с Code Vision
, а сразу работать в IAR и т.п., что посоветуете.
Я то стартанул по известному курсу AVR123 http://electronix.ru/redirect.php?http://[banned]/. И могу сказать что Image Craft мне не нравится.
Он не генерит ассемблер, а самое главное ИМХО у него ограниченный Си.
Go to the top of the page
 
+Quote Post
vet
сообщение Feb 4 2006, 12:42
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Цитата(Alhen @ Feb 4 2006, 09:00) *
Уже вижу что Си компиляторы все разные, может мне не стоит заморачиваться с Code Vision
, а сразу работать в IAR и т.п., что посоветуете.
Я то стартанул по известному курсу AVR123 http://electronix.ru/redirect.php?http://[banned]/. И могу сказать что Image Craft мне не нравится.
Он не генерит ассемблер, а самое главное ИМХО у него ограниченный Си.


К IAR, пожалуй, слово "заморачиваться" подходит куда как точнее, чем к CV smile.gif
Собственно, мне CodeVision нравится именно своей простотой и удобством. Плюс полезные библиотеки в составе дистрибутива.
Насчёт ImageCraft соглашусь.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alhen   Си указатель на таблицу   Feb 2 2006, 18:19
- - beer_warrior   Кодstruct { volatile BYTE mode; volatile WORD ...   Feb 2 2006, 18:56
- - Old1   Цитата(Alhen @ Feb 2 2006, 22:19) Массив ...   Feb 2 2006, 19:43
- - Alhen   Цитата__flash unsigned char TABL[10]={1,2,3,4,5,6,...   Feb 3 2006, 04:52
|- - vet   Цитата(Alhen @ Feb 3 2006, 07:52) Цитата ...   Feb 3 2006, 06:45
|- - Old1   Цитата(Alhen @ Feb 3 2006, 08:52) Не могу...   Feb 3 2006, 07:46
- - BVU   Таблицу всегда можно представить массивом, либо ст...   Feb 3 2006, 08:05
- - Nixon   Я делал вот так: в файле "data.txt" : К...   Feb 3 2006, 08:30
- - AndyBig   А еще в IAR можно пристегнуть любой файл как бинар...   Feb 3 2006, 10:07
- - k0t   Проще и удобнее всего подключение файла делать так...   Feb 3 2006, 13:19
|- - Old1   Цитата(k0t @ Feb 3 2006, 17:19) Проще и у...   Feb 3 2006, 18:46
|- - vet   Цитата(Old1 @ Feb 3 2006, 21:46) Цитата(k...   Feb 3 2006, 21:02
- - k0t   Цитата(Old1 @ Feb 3 2006, 21:46) Цитата(k...   Feb 4 2006, 12:30
- - Old1   2 k0t & vet Спасибо, но, я уже сам понял, что ...   Feb 4 2006, 20:12
- - k0t   Это-ж в РУЧНУЮ делать прийдется. А прог, которые и...   Feb 6 2006, 06:55
- - Old1   Цитата(k0t @ Feb 6 2006, 09:55) Это-ж в Р...   Feb 6 2006, 18:13


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 04:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016