Мелкие вопросы по МК и ПЛИС.
Нельзя. По той простой причине, что как правило FAT-таблица отъедает приличный кусок. У вас есть микросхема FRAM на 4Мб чтобы под файлы реально использовать только два? Конечно можно как компромисс использовать FAT12 но однако - такой же переводняк весьма ценного ресурса. Да и имеет ли смысл поддерживать FAT на микросхеме памяти которая никогда не сможет быть подключена самостоятельно без участия контроллера к компьютеру? Если транзитом через контроллер то FAT можно банально эмулировать, а на FRAM хранить файлы в собственном формате, предполагающем бОльшую экономию ценных ячеек.
- Реклама
- Сообщения: 91
- Зарегистрирован: Сб авг 11, 2012 22:31:57
Добрый день, я начинающий в сфере МК. Сделал плату для ATMEGA32A, написал программу в IAR эмулируюшую светофор. Работаю с портами: A B D спокойно. Могу посылать 1 и 0. Но вот проблемма с портом C4 и C5. C4 не реагирует на посылаемую 1, светодиод не горит. C5 даже если контроллер без прошивки светиться и держит логическую 1. я просто не могу избавиться от напряжения на порте C5.
- Вложения
-
- ABCD0007.JPG
- (98.12 КБ) 273 скачивания
А ты даташит смотрел? какие функции висят на порту С4 и С5, если там UART - то так и должно быть если UART включен.
Вот на картинке в гугле видно что эти порты имеют функцию TDI и TDO - это соответствует активному SPI-интерфейсу, отключи его и порты вернутся в твое распоряжение.
Вот на картинке в гугле видно что эти порты имеют функцию TDI и TDO - это соответствует активному SPI-интерфейсу, отключи его и порты вернутся в твое распоряжение.
Правильно. Эти лапы при запрограммированном FUSE-бит JTAGEN так и будут себя вести. Попробуйте снять этот бит.nikityan писал(а):... Сделал плату для ATMEGA32A ... проблемма с портом C4 и C5. C4 не реагирует на посылаемую 1, светодиод не горит. C5 даже если контроллер без прошивки светиться и держит логическую 1. я просто не могу избавиться от напряжения на порте C5.
- Сообщения: 91
- Зарегистрирован: Сб авг 11, 2012 22:31:57
- Реклама
На 4Мб использовать FAT32 ??? Вы наверное забыли, что такое дискета 5.25" на 1.2Мб.Alexeyslav писал(а):Нельзя. По той простой причине, что как правило FAT-таблица отъедает приличный кусок. У вас есть микросхема FRAM на 4Мб чтобы под файлы реально использовать только два?
Человек спрашивал о возможности как таковой, а не о рациональности этого действа.
На счёт эмуляции FAT - повеселили.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
- Сообщения: 2
- Зарегистрирован: Вт окт 30, 2012 08:37:51
Привет котоводы!
Решил написать в этой теме дабы не плодить топики, я новичёк на этом форуме (хотя странно форум уже давно знаю и даже регался по моему) и у мня вопрос по поводу книг (поиск юзал хотя признаюсь через строку т.к. времени в обрез), есть ли книги по мк51 под си/с++?
В частности меня интересует не столько книга, сколько система комманд С/С++ (общение с МК), если есть у вас выложите сюда плз.
Спс!
Решил написать в этой теме дабы не плодить топики, я новичёк на этом форуме (хотя странно форум уже давно знаю и даже регался по моему) и у мня вопрос по поводу книг (поиск юзал хотя признаюсь через строку т.к. времени в обрез), есть ли книги по мк51 под си/с++?
В частности меня интересует не столько книга, сколько система комманд С/С++ (общение с МК), если есть у вас выложите сюда плз.
Спс!
Таки вроде команды-то у всех общие. Это уже от конкретного компилятора будут зависеть нюансы.kocmoc писал(а):система комманд С/С++ (общение с МК)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 2
- Зарегистрирован: Вт окт 30, 2012 08:37:51
Спойлер
Код: Выделить всё
#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_9_output ((GPIOC->CRH |= 0x20)|(GPIOC->CRH &= ~0xC0)) - т.е. извиняюсь за выражение что, какие то люди хрен знает что понаписали в хидерах и я должен знать что GPIOC->CRH |=0х20 - установка битов какого то именованного порта (имя которого они придумали и зыбили это в хидеры, а я должен эти имена выучить?)? Какая то бессмыслица получается .... поправьте если не так.
ЗЫ а спойлер реально сделать тут?
Реально. Gudd-Head
Господа коты, есть маленькая проблема.
Имеем 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!
привет. скажите пожалуйста... вот есть контроллер с включенным ср, и он не отдает программу... а что, нельзя прошить отдельно фьюзы, сбросив ср, и считать программу?
akl
а почему? в программе к программатору можно же убрать все галочки кроме «шить фьюзы»... что произойдет при попытке? ошибку выдаст?
а почему? в программе к программатору можно же убрать все галочки кроме «шить фьюзы»... что произойдет при попытке? ошибку выдаст?
На то она и защита. Можно стереть всё, и использовать контроллер как новый. А считать нельзя.
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
возможно ли написать прошивку мк , чтобы вместо карбюратора поставить инжектор
Вообще-то МК от кварца тактируется. Иногда от внутреннего или внешнего генератора. Но чтобы от карбюратора или инжектора
Не, не слышал.
Не, не слышал.
"О сколько нам открытий чудных..." 
Docendo discimus
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
ну чтобы карбюраторный мотор переделать на моновпрыск ?
(Устало): можно.
(Я уже слышу, как вопрошавший рассказывает чётким пацанам, что читал на форуме, что "можно". Эти пацаны потом докапываются до местного кулибина. Кулибин им отвечает, мол вы чё, рехнулись? Пацаны ему - в интернете все это делают. Кулибин ныряет и пишет (мне) сделай! ps. А я-то думаю, откуда ноги растут у этой бредятины...)
(Я уже слышу, как вопрошавший рассказывает чётким пацанам, что читал на форуме, что "можно". Эти пацаны потом докапываются до местного кулибина. Кулибин им отвечает, мол вы чё, рехнулись? Пацаны ему - в интернете все это делают. Кулибин ныряет и пишет (мне) сделай! ps. А я-то думаю, откуда ноги растут у этой бредятины...)
Docendo discimus
- Сообщения: 3443
- Зарегистрирован: Вт июн 28, 2011 12:11:50
- Откуда: Россия,Ставропольский край, ст.Бекешевская
програмно нужно только высчитывать момент и длительность открытия форсунки и момент искроообразования .
больше ничего ведь ненадо?
з.ы. спрашиваю только теоретически
больше ничего ведь ненадо?
з.ы. спрашиваю только теоретически



