Мелкие вопросы по МК и ПЛИС.
Re: Мелкие вопросы по МК и ПЛИС.
Спасибо, попробую)
Re: Мелкие вопросы по МК и ПЛИС.
На 4Мб использовать FAT32 ??? Вы наверное забыли, что такое дискета 5.25" на 1.2Мб.Alexeyslav писал(а):Нельзя. По той простой причине, что как правило FAT-таблица отъедает приличный кусок. У вас есть микросхема FRAM на 4Мб чтобы под файлы реально использовать только два?
Человек спрашивал о возможности как таковой, а не о рациональности этого действа.
На счёт эмуляции FAT - повеселили.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Мелкие вопросы по МК и ПЛИС.
Привет котоводы!
Решил написать в этой теме дабы не плодить топики, я новичёк на этом форуме (хотя странно форум уже давно знаю и даже регался по моему) и у мня вопрос по поводу книг (поиск юзал хотя признаюсь через строку т.к. времени в обрез), есть ли книги по мк51 под си/с++?
В частности меня интересует не столько книга, сколько система комманд С/С++ (общение с МК), если есть у вас выложите сюда плз.
Спс!
Решил написать в этой теме дабы не плодить топики, я новичёк на этом форуме (хотя странно форум уже давно знаю и даже регался по моему) и у мня вопрос по поводу книг (поиск юзал хотя признаюсь через строку т.к. времени в обрез), есть ли книги по мк51 под си/с++?
В частности меня интересует не столько книга, сколько система комманд С/С++ (общение с МК), если есть у вас выложите сюда плз.
Спс!
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
kocmoc писал(а):система комманд С/С++ (общение с МК)
Таки вроде команды-то у всех общие. Это уже от конкретного компилятора будут зависеть нюансы.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
Спойлер
Код: Выделить всё
#include "stm32f10x.h"
#include "STM32_Init.h"
#include "rtl.h"
#define Set_PortC_Pin_8_output ((GPIOC->CRH |= 0x2)|(GPIOC->CRH &= ~0xC))
#define Set_PortC_Pin_9_output ((GPIOC->CRH |= 0x20)|(GPIOC->CRH &= ~0xC0))
const unsigned long led_mask[] = { 1UL<<8, 1UL<<9 };
OS_TID t_LED1;
OS_TID t_LED2;
void DevsInit(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
Set_PortC_Pin_8_output;
Set_PortC_Pin_9_output;
}
void LEDOn (uint32_t num)
{
GPIOC->BSRR = led_mask[num];
}
void LEDOff (uint32_t num)
{
GPIOC->BRR = led_mask[num];
}
__task void f_LED1 (void)
{
while (1)
{
LEDOn (0);
os_dly_wait (200);
LEDOff (0);
os_dly_wait (200);
}
}
__task void f_LED2 (void)
{
while (1)
{
LEDOn (1);
os_dly_wait (400);
LEDOff (1);
os_dly_wait (400);
}
}
__task void init (void)
{
os_tsk_prio_self (100);
t_LED1 = os_tsk_create (f_LED1, 20);
t_LED2 = os_tsk_create (f_LED2, 20);
os_tsk_delete_self ();
}
int main (void)
{
SystemInit ();
stm32_Init();
DevsInit();
os_sys_init(init);
return 0;
}
Если нужен UART, можно использовать STM32_Init.c. Использовать его можно и как визард, наставить нужных галочек, а можно прямо из него выдрать готовый код инициализации uart-а. Типа такого:
Код
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // enable clock for Alternate Function
AFIO->MAPR &= ~(1 << 2); // clear USART1 remap
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // enable clock for GPIOA
GPIOA->CRH &= ~(0xFFUL << 4); // Clear PA9, PA10
GPIOA->CRH |= (0x0BUL << 4); // USART1 Tx (PA9) alternate output push-pull
GPIOA->CRH |= (0x04UL << 8); // USART1 Rx (PA10) input floating
RCC->APB2ENR |= RCC_APB2ENR_USART1EN; // enable clock for USART1
USART1->BRR = (0x9C << 4);
USART1->BRR = 0x4;
USART1->CR1 |= (USART_CR1_RE | USART_CR1_TE); // RX, TX enable
USART1->CR1 |= USART_CR1_UE; // USART enable
А чтобы потом вывести что нить, достаточно дописать две короткие функции:
Код
void UartSendChar (char ch)
{
while (!(USART1->SR & USART_SR_TXE)) {}
USART1->DR=ch;
}
void UartSendStr (char *str)
{
while (*str != 0)
{
UartSendChar (*str++);
}
}
Это вырезка с форума, нашёл первый попавшийся код, это что за дефы? - #define Set_PortC_Pin_8_output ((GPIOC->CRH |= 0x2)|(GPIOC->CRH &= ~0xC))
#define Set_PortC_Pin_9_output ((GPIOC->CRH |= 0x20)|(GPIOC->CRH &= ~0xC0)) - т.е. извиняюсь за выражение что, какие то люди хрен знает что понаписали в хидерах и я должен знать что GPIOC->CRH |=0х20 - установка битов какого то именованного порта (имя которого они придумали и зыбили это в хидеры, а я должен эти имена выучить?)? Какая то бессмыслица получается .... поправьте если не так.
ЗЫ а спойлер реально сделать тут?
Реально. Gudd-Head
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Господа коты, есть маленькая проблема.
Имеем ATMEGA8 с драйвером RS485 на ногах USARTа.
Функция передачи следующая:
Все вроде нормально, пока шлю подряд массив за массивом. Но как только заканчиваю с передачей, то в конце теряются два байта.
Как я понял, это связано с FIFO буфером передачи USARTа, который как раз имеет размер в два байта.
Мне приходится пихать в конце передачи еще два нуля, чтобы решить эту проблему. Можно-ли как-то без этого?
UPD:
Вот я дурынь!!!
Я отрубаю передатчик RS485 раньше времени. Все, проблема понятна.
Правильнее так:
Имеем ATMEGA8 с драйвером RS485 на ногах USARTа.
Функция передачи следующая:
Код: Выделить всё
void usart_send(char *s, unsigned char Ln)
{
PORTC |= (1<<PC3); // RS485 на передачу
for(uchar r = 0;r<Ln;r++)
{
while(!(UCSRA & (1<<UDRE))){_wdr();} //Тупим, пока не освободится регистр UDR
UDR = s[r];
}
PORTC &= ~(1<<PC3); // RS485 на прием
}
Все вроде нормально, пока шлю подряд массив за массивом. Но как только заканчиваю с передачей, то в конце теряются два байта.
Как я понял, это связано с FIFO буфером передачи USARTа, который как раз имеет размер в два байта.
Мне приходится пихать в конце передачи еще два нуля, чтобы решить эту проблему. Можно-ли как-то без этого?
UPD:
Вот я дурынь!!!
Правильнее так:
Код: Выделить всё
void usart_send(char *s, unsigned char Ln)
{
PORTC |= (1<<PC3); // RS485 на передачу
for(uchar r = 0;r<Ln;r++)
{
while(!(UCSRA & (1<<UDRE))){_wdr();} //Тупим, пока не освободится регистр UDR
UDR = s[r];
}
}
///////////////////////////////////////////////////////////////////////////////
void USART_TXC_vect() //Прерывание по окончанию передачи
{
PORTC &= ~(1<<PC3); // RS485 на прием
}
I am DX168B and this is my favourite forum on internet!
- shinji2009
- Электрический кот
- Сообщения: 1057
- Зарегистрирован: Ср мар 17, 2010 18:19:09
- Откуда: новосибирск
Re: Мелкие вопросы по МК и ПЛИС.
привет. скажите пожалуйста... вот есть контроллер с включенным ср, и он не отдает программу... а что, нельзя прошить отдельно фьюзы, сбросив ср, и считать программу?
- shinji2009
- Электрический кот
- Сообщения: 1057
- Зарегистрирован: Ср мар 17, 2010 18:19:09
- Откуда: новосибирск
Re: Мелкие вопросы по МК и ПЛИС.
akl
а почему? в программе к программатору можно же убрать все галочки кроме «шить фьюзы»... что произойдет при попытке? ошибку выдаст?
а почему? в программе к программатору можно же убрать все галочки кроме «шить фьюзы»... что произойдет при попытке? ошибку выдаст?
Re: Мелкие вопросы по МК и ПЛИС.
На то она и защита. Можно стереть всё, и использовать контроллер как новый. А считать нельзя.
- rus084
- Друг Кота
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
возможно ли написать прошивку мк , чтобы вместо карбюратора поставить инжектор
Re: Мелкие вопросы по МК и ПЛИС.
Вообще-то МК от кварца тактируется. Иногда от внутреннего или внешнего генератора. Но чтобы от карбюратора или инжектора
Не, не слышал.
Не, не слышал.
- rus084
- Друг Кота
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
ну чтобы карбюраторный мотор переделать на моновпрыск ?
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
(Устало): можно.
(Я уже слышу, как вопрошавший рассказывает чётким пацанам, что читал на форуме, что "можно". Эти пацаны потом докапываются до местного кулибина. Кулибин им отвечает, мол вы чё, рехнулись? Пацаны ему - в интернете все это делают. Кулибин ныряет и пишет (мне) сделай! ps. А я-то думаю, откуда ноги растут у этой бредятины...)
(Я уже слышу, как вопрошавший рассказывает чётким пацанам, что читал на форуме, что "можно". Эти пацаны потом докапываются до местного кулибина. Кулибин им отвечает, мол вы чё, рехнулись? Пацаны ему - в интернете все это делают. Кулибин ныряет и пишет (мне) сделай! ps. А я-то думаю, откуда ноги растут у этой бредятины...)
Docendo discimus
- rus084
- Друг Кота
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
програмно нужно только высчитывать момент и длительность открытия форсунки и момент искроообразования .
больше ничего ведь ненадо?
з.ы. спрашиваю только теоретически
больше ничего ведь ненадо?
з.ы. спрашиваю только теоретически
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Где то в старых журналах "За рулём" описывалась система зажигания чуть ли не на транзисторах с похожей функциональностью. Возможно имеет смысл переделать под МК. Но делать Вы скорее всего будете на AVR - я тут не помощник, увы!
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Вот блин зажатый народ какой, может на паре транзисторов тогда слепить?Зачем себя ограничивать одним килобайтом, когда есть Мк на 20 рублей дороже и 8 килобайт памяти на борту
это больше похоже на стеб какой то, вопрос был не о том откуда тактировать Мк, а о том, как написать прошивку для Мк, чтобы его использовать вместо блока управления двигателем.
Кстати я где то висел в похожей теме, но там хотели всего лишь угол опережения регулировать.
Там как то тема заглохла, наверно терпения не хватило доделать.
И вообще есть ветка специально для авто-вело-мото.
Вообще-то МК от кварца тактируется. Иногда от внутреннего или внешнего генератора. Но чтобы от карбюратора или инжектора
это больше похоже на стеб какой то, вопрос был не о том откуда тактировать Мк, а о том, как написать прошивку для Мк, чтобы его использовать вместо блока управления двигателем.
Кстати я где то висел в похожей теме, но там хотели всего лишь угол опережения регулировать.
Там как то тема заглохла, наверно терпения не хватило доделать.
И вообще есть ветка специально для авто-вело-мото.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
убрать все галочки кроме «шить фьюзы»... что произойдет при попытке?
Ничего не произойдет. Биты защиты можно установить только один раз и сбрасываются только после окончания процесса полной очистки. В первых контроллерах были баги позволяющие разлочить контроллер без стирания программы - играться с напряжением питания и временем прерывания процесса стирания так что биты защиты стирались а программа нет - но этот процесс требует тонкой настройки на сотне подопытных из одной партии. Сейчас эта проблема решена и просто так не разлочишь. Остается только один выход - при помощи напильникаазотной кислоты снимать кристалл послойно и электронным микроскопом считывать состояния ячеек, потом по известной топологии кристалла восстановить содержимое FLASH-памяти побитно. Но сам представь сколько для этого потребуется ресурсов. Стоит ли того содержимое памяти контроллера?

