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

 
 
 
Reply to this topicStart new topic
> Attiny13, самопрограммирование
another_one
сообщение Mar 19 2009, 04:55
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



Здравствуйте.

Нужна помощь в вопросе по поводу Attiny13.

У нее есть функция самопрограммирования, делает ли эта функция возможным записывать данный во время выполнения основной программы данные во FLASH(т.е можно ли ее использовать наравне с EEPROM) или это только для внутресхемного программирования через SPI?

Заранее благодарен


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
ARV
сообщение Mar 19 2009, 06:00
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



вообще-то, это возможно, но при объеме памяти в 512 слов это с первого взгляда вызывает удивление... куча ценных байтов памяти потратится на орагнизацию самопрограммирования - что же будет делать остальная программа?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Mar 19 2009, 08:00
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(another_one @ Mar 19 2009, 07:55) *
У нее есть функция самопрограммирования, делает ли эта функция возможным записывать данный во время выполнения основной программы данные во FLASH(т.е можно ли ее использовать наравне с EEPROM) или это только для внутресхемного программирования через SPI?


У FLASH и EEPROM кол-во циклов перезаписи различное поэтому они совсем не равноценны.
Во FLASH лучше храните константы а в EEPROM не часто меняющиеся переменные (а то протрёте её до дыр) smile.gif
Go to the top of the page
 
+Quote Post
МП41
сообщение Mar 19 2009, 14:23
Сообщение #4


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



Если не на ассемблере писать программу, то нехватка памяти для кода программы не позволит сделать что-либо серьёзное.


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post
another_one
сообщение Mar 19 2009, 16:40
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



Спасибо за поддержку.

Не могу понять как организовать доступ к R0:R1(для записи/чтения данных) и к Z-pointer(для записи адреса) используя WinAVR + AVRAssembler(AVRStudio).


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
pavel-pervomaysk
сообщение Mar 19 2009, 19:03
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716



CODE
ldi zl,low (Text8) //
ldi zh,high(Text8) //



CODE
lsl ZL // Умножаем на 2
rol ZH // регистровую пару
lpm data,Z // загружаем ячейку памяти из флэш для вывода


Это чтение байта из флеши.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Mar 19 2009, 19:14
Сообщение #7


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(another_one @ Mar 19 2009, 19:40) *
Спасибо за поддержку.

Не могу понять как организовать доступ к R0:R1(для записи/чтения данных) и к Z-pointer(для записи адреса) используя WinAVR + AVRAssembler(AVRStudio).

Код
LDI  R0, 25              ; константу в регистр
MOV  R16, R0        ; регистр в регистр
LDS  R1, 0x01FF    ; из ОЗУ читаем в регистр

LDI  R30, low(0x03FE); инициализируем регистровую пару Z(R30,R31)
LDI  R31, hi(0x03FE)  ; адресом 0x03FF
LDD R16, Z+            ; читаем ОЗУ косвенно адресуя ячейку памяти с адресом 0x03FE и инкрементируем адрес
LDD R17, Z              ; читаем ОЗУ косвенно адресуя ячейку памяти с адресом 0x03FF
Как-то так....


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
ARV
сообщение Mar 20 2009, 05:44
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(demiurg_spb @ Mar 19 2009, 22:14) *
Код
LDI  R0, 25             ; константу в регистр
MOV  R16, R0    ; регистр в регистр
с точностью до наоборот!!!
Код
LDI  R16, 25             ; константу в регистр
MOV  R0, R16    ; регистр в регистр
регистры младшей половины не могут использоваться с командами, кончающимися на I, т.е. использующими в качестве второго операнда константу: LDI, CPI, SBCI и т.п.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Vlad219i
сообщение Mar 20 2009, 19:07
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 63
Регистрация: 13-03-06
Из: Москва
Пользователь №: 15 204



Цитата(Павлик @ Mar 19 2009, 22:03) *
CODE
ldi zl,low (Text8) //
ldi zh,high(Text8) //

CODE
lsl ZL // Умножаем на 2
rol ZH // регистровую пару
lpm data,Z // загружаем ячейку памяти из флэш для вывода

Это чтение байта из флеши.


А если до гланд добираться традиционным способом, то
Код
ldi zh,high(label*2)
ldi zl,low(label*2)

или
Код
ldi zh,high(label<<1)
ldi zl,low(label<<1)
Go to the top of the page
 
+Quote Post
another_one
сообщение Mar 21 2009, 07:20
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 252
Регистрация: 2-03-08
Пользователь №: 35 557



Спасибо большое за поддержку.

А как для WinAVR(AVRStudio) сделать ассемблерную вставку?


--------------------
One Chip is All You Need
Go to the top of the page
 
+Quote Post
ReAl
сообщение Mar 21 2009, 07:29
Сообщение #11


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(another_one @ Mar 21 2009, 09:20) *
А как для WinAVR(AVRStudio) сделать ассемблерную вставку?
Для данной простой задачи "всё украдено до нас".
Код
#include <avr/pgmspace.h>

prog_uint8_t cf = 10;
prog_uint16_t wf = 12345;

uint8_t c;
uint16_t w;

   ...
   ...
   c = pgm_read_byte( &cf );
   w = pgm_read_word( &wf );

А если таки нужны вставки, то читать
C:\WinAVR\doc\avr-libc\avr-libc-user-manual\inline_asm.html
и для примеров по данному форуму искать слово __asm__


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

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

 


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


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