Прошить ATmega8A
- xromis
- Открыл глаза
- Сообщения: 52
- Зарегистрирован: Сб апр 30, 2011 22:08:58
- Откуда: братск
- Контактная информация:
Re: Прошить ATmega8A
Если была возможность то купил а её нет пытаюсь собрать. Поэтому и решил обратиться за помощью.
- Реклама
Re: Прошить ATmega8A
Не уж то автор просит заоблачные деньги за свою прошивку?
Но это же готовый продукт, а не исходники.
Я думаю красная цена устройству рублей 500-600.
Если таких денег нет, можно и попросить у автора за так (при условии, что ты не будешь продавать изготавливаемое устройство), он вроде человек отзывчивый, судя по постам на форуме. Можно ведь объяснить что так и так, денег нет и т.п.
В крайнем случае можно спросить у него наводящую инфу, а по ней дальше делать.
Но если это первая прошивка, которую ты пишешь, то вряд-ли, тут самый верный вариант - купить.
А так, можно пособирать что-то по-проще, на той же меге 8-мой, покопаться в исходниках прошивок для неё, изучить даташит.
В любом случае для каждого устройства пишется своя прошивка, и прошивка - это программа, а любую программу можно написать бессчетным количеством способов (всё зависит от программиста) и такого понятия как "шаблон под схему" нет, можно найти "шаблон" под простые схемы там где всего пару элементов, можно найти шаблоны функций (это поможет, когда ты чётко представляешь как должно функционировать устройство и что должна выполнять программа) и т.п., но только не готовую прошивку под конкретное устройство.
Но это же готовый продукт, а не исходники.
Я думаю красная цена устройству рублей 500-600.
Если таких денег нет, можно и попросить у автора за так (при условии, что ты не будешь продавать изготавливаемое устройство), он вроде человек отзывчивый, судя по постам на форуме. Можно ведь объяснить что так и так, денег нет и т.п.
В крайнем случае можно спросить у него наводящую инфу, а по ней дальше делать.
Но если это первая прошивка, которую ты пишешь, то вряд-ли, тут самый верный вариант - купить.
А так, можно пособирать что-то по-проще, на той же меге 8-мой, покопаться в исходниках прошивок для неё, изучить даташит.
В любом случае для каждого устройства пишется своя прошивка, и прошивка - это программа, а любую программу можно написать бессчетным количеством способов (всё зависит от программиста) и такого понятия как "шаблон под схему" нет, можно найти "шаблон" под простые схемы там где всего пару элементов, можно найти шаблоны функций (это поможет, когда ты чётко представляешь как должно функционировать устройство и что должна выполнять программа) и т.п., но только не готовую прошивку под конкретное устройство.
- xromis
- Открыл глаза
- Сообщения: 52
- Зарегистрирован: Сб апр 30, 2011 22:08:58
- Откуда: братск
- Контактная информация:
Re: Прошить ATmega8A
1000 встанет. Делать клоны данного девайся мне нет смысла, изо дороговизны деталей.
- xromis
- Открыл глаза
- Сообщения: 52
- Зарегистрирован: Сб апр 30, 2011 22:08:58
- Откуда: братск
- Контактная информация:
Re: Прошить ATmega8A
все понятно по схеме.
я возможно ошибаюсь но если знать команды в крайнем случии их значения можно методом подбора написать прошивку или я ошибаюсь
я возможно ошибаюсь но если знать команды в крайнем случии их значения можно методом подбора написать прошивку или я ошибаюсь
Re: Прошить ATmega8A
Подскажите пожалуйста в чем разница междуэтими контролерами, на схеме написано ATmega8, смотрю в магазине только такие = ATmega8A-AU, ATmega8515-16AU, ATmega8535-16AU, Tmega8535L-8PU PBF, ATmega8L-8PU
- Реклама
- xromis
- Открыл глаза
- Сообщения: 52
- Зарегистрирован: Сб апр 30, 2011 22:08:58
- Откуда: братск
- Контактная информация:
Re: Прошить ATmega8A
привет отличаются не сильно. разница только с спецификации. если чесно я сам только начел с этим элементом знакомится и онн мне очень нравится и я остаюсь им доволен
-
UAЗELR
- Вечно гонимый
- Сообщения: 6083
- Зарегистрирован: Пт дек 30, 2011 17:55:52
- Откуда: Севастополь - Орел
- Контактная информация:
Re: Прошить ATmega8A
Пойдут только ATmega8A-AU и ATmega8L-8PU (отличаются корпусами), остальные нет
ps
AT(mega/tiny)xxx — базовая версия.
ATxxxL — версии контроллеров, работающих на пониженном (Low) напряжении питания (2,7 В).
ATxxxV — версии контроллеров, работающих на низком напряжении питания (1,8 В).
ATxxxP — малопотребляющие версии (до 100 нА в режиме Power-down), применена технология picoPower (анонсированы в июле 2007)[1], повыводно и функционально совместимы с предыдущими версиями.
ATxxxA — уменьшен ток потребления, перекрывается весь диапазон тактовых частот и напряжений питания двух предыдущих версий (также, в некоторых моделях, добавлены новые возможности и новые регистры, но сохранена полная совместимость с предыдущими версиями). Микроконтроллеры «А» и «не-А» с точки зрения программатора ничем не отличаются.
АТxxx-PI — корпус DIP
АТxxx-PU — корпус DIP, бессвинцовый (Pb-free) припой
АТxxx-AI — корпус TQFP
АТxxx-AU — корпус TQFP, бессвинцовый (Pb-free) припой
(цифры 8/10/16/20/.. перед индексом означают максимальную частоту, на которой микроконтроллер может стабильно работать при нормальном для него напряжении питания).
ps
AT(mega/tiny)xxx — базовая версия.
ATxxxL — версии контроллеров, работающих на пониженном (Low) напряжении питания (2,7 В).
ATxxxV — версии контроллеров, работающих на низком напряжении питания (1,8 В).
ATxxxP — малопотребляющие версии (до 100 нА в режиме Power-down), применена технология picoPower (анонсированы в июле 2007)[1], повыводно и функционально совместимы с предыдущими версиями.
ATxxxA — уменьшен ток потребления, перекрывается весь диапазон тактовых частот и напряжений питания двух предыдущих версий (также, в некоторых моделях, добавлены новые возможности и новые регистры, но сохранена полная совместимость с предыдущими версиями). Микроконтроллеры «А» и «не-А» с точки зрения программатора ничем не отличаются.
АТxxx-PI — корпус DIP
АТxxx-PU — корпус DIP, бессвинцовый (Pb-free) припой
АТxxx-AI — корпус TQFP
АТxxx-AU — корпус TQFP, бессвинцовый (Pb-free) припой
(цифры 8/10/16/20/.. перед индексом означают максимальную частоту, на которой микроконтроллер может стабильно работать при нормальном для него напряжении питания).
"Да, человек смертен, но это было бы еще полбеды.
Плохо то, что он иногда внезапно смертен, вот в чем фокус!" (Воланд)

Плохо то, что он иногда внезапно смертен, вот в чем фокус!" (Воланд)

- xromis
- Открыл глаза
- Сообщения: 52
- Зарегистрирован: Сб апр 30, 2011 22:08:58
- Откуда: братск
- Контактная информация:
Re: Прошить ATmega8A
Хочешь поломать голову? пожалуйста - вот пример как это происходит. Запрос имени устройства:
#define START_BYTE 0xff
#define STOP_BYTE (START_BYTE-1)
#define READ_DEVICE_NAME 83
//-------------------------------------------------
// пытаемся прочесть имя устройства
CommandBuffer[0] = READ_DEVICE_NAME;
SendCommand1(1); // эта функция собирает команду и служебные байты, см ниже
//--------------------------------------------------
bool __fastcall SendCommand1(int len){
unsigned char OneByteBuffer[1]={0};
//char Stop = STOP_BYTE;
int CommandSize = len+4;
static int Command_ID = 10; //Command_ID1 здесь меняется от 11 до FC
Command_ID++;
if (Command_ID > 0xFC) Command_ID = 11;
memset(ReadBuffer,0,BUFFSIZE);
//DWORD mask=0;
DWORD num = 0;
//--------подготовка командной строки----------
// формат команды: [START_BYTE][SIZE][COMMAND_ID][...DATA...]...[...DATA...] [STOP_BYTE]
char FullCommand[BUFFSIZE+5];
memset(FullCommand,0,BUFFSIZE+5);
int i = 0;
FullCommand[i++] = START_BYTE;
FullCommand[i++] = CommandSize;
FullCommand[i++] = Command_ID;
for (int j=0;j<len;j++){
FullCommand[i++] = CommandBuffer[j];
}
FullCommand[i++] = STOP_BYTE;
............... и так далее ----------------
можно это продолжить и как это будет выглядить обесните )))
#define START_BYTE 0xff
#define STOP_BYTE (START_BYTE-1)
#define READ_DEVICE_NAME 83
//-------------------------------------------------
// пытаемся прочесть имя устройства
CommandBuffer[0] = READ_DEVICE_NAME;
SendCommand1(1); // эта функция собирает команду и служебные байты, см ниже
//--------------------------------------------------
bool __fastcall SendCommand1(int len){
unsigned char OneByteBuffer[1]={0};
//char Stop = STOP_BYTE;
int CommandSize = len+4;
static int Command_ID = 10; //Command_ID1 здесь меняется от 11 до FC
Command_ID++;
if (Command_ID > 0xFC) Command_ID = 11;
memset(ReadBuffer,0,BUFFSIZE);
//DWORD mask=0;
DWORD num = 0;
//--------подготовка командной строки----------
// формат команды: [START_BYTE][SIZE][COMMAND_ID][...DATA...]...[...DATA...] [STOP_BYTE]
char FullCommand[BUFFSIZE+5];
memset(FullCommand,0,BUFFSIZE+5);
int i = 0;
FullCommand[i++] = START_BYTE;
FullCommand[i++] = CommandSize;
FullCommand[i++] = Command_ID;
for (int j=0;j<len;j++){
FullCommand[i++] = CommandBuffer[j];
}
FullCommand[i++] = STOP_BYTE;
............... и так далее ----------------
можно это продолжить и как это будет выглядить обесните )))
- xromis
- Открыл глаза
- Сообщения: 52
- Зарегистрирован: Сб апр 30, 2011 22:08:58
- Откуда: братск
- Контактная информация:
Re: Прошить ATmega8A
всем привет.
начел сборку что получилось.
исходники методом мыши встовлял в компилятор ,
что вышло.
$regfile = "m8def.dat" ' èñïîëüçóåì ATmega32 (MRC40 ñ óíèâåðñàëüíûì ìîäóëåì)
$crystal = 8000000 ' ÷àñòîòà óñòàíîâëåííîãî êâàðöà 8 mHz
$lib "lcd4.lbx" 'èñïîëüçóåì 4-õ áèòíîå ïîäêëþ÷åíèå äèñïëåÿ ñ ïîìîùüþ àëüòåðíàòèâíîé áèáëèîòåêè
'
'Áèáëèîòåêà lcd4.lbx èñïîëüçóåò ñëåäóþùåå ïîäêëþ÷åíèå -
'
'LCD = ATmega8
'---------------
'Rs = PortB.Pb6
'RW = PortB.Pb5
' E = PortB.Pb5
'E2 = PortB.3 äàííûé âûâîä èñïîëüçóåòñÿ äëÿ ïîäêëþ÷åíèÿ íåêîòîðûõ äèñïëååâ ñ äâóìÿ ÷èïàìè (çäåñü íå èñïîëüçóåòñÿ)
'Db4 = PortB.Pb7
'Db5 = PortB.Pb2
'Db6 = PortB.Pb3
'Db7 = PortB.Pb4
' óêàçûâàåì êîíôèãóðàöèþ ïîäêëþ÷åíèÿ äèñïëåÿ ê ïîðòàì ÌÊ
Config Lcdpin = Pin , Rs = Portb. Pb6 , E = Portb. Pb5 , Db4 = Portb. Pb7 , Db5 = Portb. Pb2 , Db6 = Portb. Pb3 , Db7 = Portb. Pb4
Config Lcd = 16 * 2 'èñïîëüçóåì äèñïëåé íà 2 ñòðî÷êè ïî 16 çíàêîìåñò â êàæäîé
Cls 'êîìàíäà î÷èñòêè äèñïëåÿ
Lcd "RoboZone.SU" 'âûâîäèì íàäïèñü
Lowerline ' ïåðåõîäèì íà íèæíþþ ñòðî÷êó
Lcd "LCD test GOOD!!!" 'âûâîäèì íàäïèñü
'ÂÑÅ!!!
$regfile = "m8def.dat" 'îïðåäåëÿåì êîíòðîëëåð
$crystal = 8000000 'âíóòðåííèé ãåíåðàòîð
$lib "lcd4.lbx" 'ïîäêëþ÷àåì áèáëèîòåêó ÆÊÈ
$lib "mcsbyte.lbx" 'ïîäêëþ÷àåì áèáëèîòåêó ôóíêöèé
Enable Interrupts 'âêëþ÷àåì ïðåðûâàíèÿ
'óêàçûâàåì êîíôèãóðàöèþ ïîäêëþ÷åíèÿ äèñïëåÿ ê ïîðòàì ÌÊ
Config Lcdpin = Pin , Rs = Portb. Pb6 , E = Portb. Pb5 , Db4 = Portb. Pb7 , Db5 = Portb. Pb2 , Db6 = Portb. Pb3 , Db7 = Portb. Pb4
'èñïîëüçóåì äèñïëåé íà 2 ñòðî÷êè ïî 16 çíàêîìåñò â êàæäîé
Config Lcd = 16 * 2
'êîìàíäà âûêëþ÷åíèÿ äèñïëåÿ
Cls
'îñíîâíîé áåñêîíå÷íûé öèêë
Do
Locate 1 , 1 'âûâîäèì íàäïèñü
Lcd "0123456789111213"
Locate 2 , 1
Lcd "1415161718192021"
Loop
End
каляка вышла ' указываем конфигурацию подключения дисплея к портам МК
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
Config Lcd = 16 * 2 'используем дисплей на 2 строчки по 16 знакомест в каждой
Cls 'команда очистки дисплея
но вопрос почему дисплей не выводит даные
начел сборку что получилось.
исходники методом мыши встовлял в компилятор ,
что вышло.
$regfile = "m8def.dat" ' èñïîëüçóåì ATmega32 (MRC40 ñ óíèâåðñàëüíûì ìîäóëåì)
$crystal = 8000000 ' ÷àñòîòà óñòàíîâëåííîãî êâàðöà 8 mHz
$lib "lcd4.lbx" 'èñïîëüçóåì 4-õ áèòíîå ïîäêëþ÷åíèå äèñïëåÿ ñ ïîìîùüþ àëüòåðíàòèâíîé áèáëèîòåêè
'
'Áèáëèîòåêà lcd4.lbx èñïîëüçóåò ñëåäóþùåå ïîäêëþ÷åíèå -
'
'LCD = ATmega8
'---------------
'Rs = PortB.Pb6
'RW = PortB.Pb5
' E = PortB.Pb5
'E2 = PortB.3 äàííûé âûâîä èñïîëüçóåòñÿ äëÿ ïîäêëþ÷åíèÿ íåêîòîðûõ äèñïëååâ ñ äâóìÿ ÷èïàìè (çäåñü íå èñïîëüçóåòñÿ)
'Db4 = PortB.Pb7
'Db5 = PortB.Pb2
'Db6 = PortB.Pb3
'Db7 = PortB.Pb4
' óêàçûâàåì êîíôèãóðàöèþ ïîäêëþ÷åíèÿ äèñïëåÿ ê ïîðòàì ÌÊ
Config Lcdpin = Pin , Rs = Portb. Pb6 , E = Portb. Pb5 , Db4 = Portb. Pb7 , Db5 = Portb. Pb2 , Db6 = Portb. Pb3 , Db7 = Portb. Pb4
Config Lcd = 16 * 2 'èñïîëüçóåì äèñïëåé íà 2 ñòðî÷êè ïî 16 çíàêîìåñò â êàæäîé
Cls 'êîìàíäà î÷èñòêè äèñïëåÿ
Lcd "RoboZone.SU" 'âûâîäèì íàäïèñü
Lowerline ' ïåðåõîäèì íà íèæíþþ ñòðî÷êó
Lcd "LCD test GOOD!!!" 'âûâîäèì íàäïèñü
'ÂÑÅ!!!
$regfile = "m8def.dat" 'îïðåäåëÿåì êîíòðîëëåð
$crystal = 8000000 'âíóòðåííèé ãåíåðàòîð
$lib "lcd4.lbx" 'ïîäêëþ÷àåì áèáëèîòåêó ÆÊÈ
$lib "mcsbyte.lbx" 'ïîäêëþ÷àåì áèáëèîòåêó ôóíêöèé
Enable Interrupts 'âêëþ÷àåì ïðåðûâàíèÿ
'óêàçûâàåì êîíôèãóðàöèþ ïîäêëþ÷åíèÿ äèñïëåÿ ê ïîðòàì ÌÊ
Config Lcdpin = Pin , Rs = Portb. Pb6 , E = Portb. Pb5 , Db4 = Portb. Pb7 , Db5 = Portb. Pb2 , Db6 = Portb. Pb3 , Db7 = Portb. Pb4
'èñïîëüçóåì äèñïëåé íà 2 ñòðî÷êè ïî 16 çíàêîìåñò â êàæäîé
Config Lcd = 16 * 2
'êîìàíäà âûêëþ÷åíèÿ äèñïëåÿ
Cls
'îñíîâíîé áåñêîíå÷íûé öèêë
Do
Locate 1 , 1 'âûâîäèì íàäïèñü
Lcd "0123456789111213"
Locate 2 , 1
Lcd "1415161718192021"
Loop
End
каляка вышла ' указываем конфигурацию подключения дисплея к портам МК
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
Config Lcd = 16 * 2 'используем дисплей на 2 строчки по 16 знакомест в каждой
Cls 'команда очистки дисплея
но вопрос почему дисплей не выводит даные


