Мелкие вопросы по МК и ПЛИС.
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Если убрать while внутри функции то прерывание срабатывает.
Я не Сашок!!!
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
sachok писал(а):Если убрать while внутри функции то прерывание срабатывает.
А если вернуть, то НЕТ?!
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Привожу полный код (полный):
Когда while есть светодиод не срабатывает. Без while все хорошо.
Код: Выделить всё
volatile unsigned int timer_max = 0, timer_count = 0;
volatile unsigned char timer_flag = 0;
/* start TPM1 */
void timer_start(void) {
timer_flag = 0xFF;
timer_count = 0;
TPM1SC |= TPM1SC_CLKSA_MASK | TPM1SC_TOIE_MASK | TPM1SC_PS2_MASK
| TPM1SC_PS1_MASK | TPM1SC_PS0_MASK;
}
/* stop TPM1 */
void timer_stop(void) {
timer_flag = 0;
timer_count = 0;
TPM1SC = 0x00;
}
/* go forward */
void go_forward(char sec) {
timer_max = sec * 10;
timer_start();
while (timer_flag != 0) {
motor_1_A = 0;
motor_1_B = 1;
}
stop_motors();
}
/* stop motors */
void stop_motors(void) {
motor_1_A = 0;
motor_1_B = 0;
motor_2_A = 0;
motor_2_B = 0;
}
void main(void) {
EnableInterrupts;
/* include your code here */
io_init();
timers_init();
write74HC164(sensor_off);
/*******************************/
go_forward(5);
for (;;) {
__RESET_WATCHDOG(); /* feeds the dog */
//if (timer_flag != 0)
//_74HC164_clk = 0;
//else
//_74HC164_clk = 1;
}
/* loop forever */
/* please make sure that you never leave main */
}
/* INTERRUPTS */
interrupt void Timer1_OVF(void) {
TPM1SC_TOF = 0;
timer_count++;
if (timer_count == timer_max) {
timer_stop();
_74HC164_clk = 0; // тут на порту светодиот // 0 - светит
}
}Когда while есть светодиод не срабатывает. Без while все хорошо.
Я не Сашок!!!
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
Попробуйте добавить в Ваш злополучный цикл while сброс watchdog'а. Других мыслей пока нет. Вроде остальное верно.
Ставим плюсы: )
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Как называется кабель для COM порта?
Есть два вида распайки кабеля COM .
Когда RX->DX то это нуль-модемный кабель (полный/не полный)
А когда RX->RX ; DX->DX соединяются, то как грамотно называется такой кабель? (насколько я понимаю такой кабель юзают для подключения модема)
DTE-to-DCE serial cable или есть еще другое название такого кабеля?
Есть два вида распайки кабеля COM .
Когда RX->DX то это нуль-модемный кабель (полный/не полный)
А когда RX->RX ; DX->DX соединяются, то как грамотно называется такой кабель? (насколько я понимаю такой кабель юзают для подключения модема)
DTE-to-DCE serial cable или есть еще другое название такого кабеля?
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Chip115 писал(а):DTE-to-DCE serial cable или есть еще другое название такого кабеля?
Так и называют: "модемный кабель" в отличие от "нуль-модемного".
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
sachok писал(а):ibiza11 Большое спасибо!!! Заработало!!!
Всегда рад помочь!)Ставим плюсы: )
Re: Мелкие вопросы по МК и ПЛИС.
Взял программатор stk500v2. МК ATMega8.
Написал программу:
Прошил фьюзы:
E4 D9
Не меняется напряжение на ногах...и диод не горит соответственно.
Схема в приложении. Только диод свето, а не просто.
Программатор подрубаю к USB через конвертер UART. Воспользовался шнуром говенным, программатор не определился.
Потом поставил номарльный, он определился. Вроде шьет...раньше работал уже, я на другой схеме его пользовал. Записывает в память прогу, считывает, проверяет. Но сам МК на программу вообще никак не реагирует! Я пробовал разные варианты, на ногих напряжение относительно земли не меняется.
Помогите рзобраться, а то думаю йже программатор погорел...или МК.
На МК все время 1 на портах.
Написал программу:
Код: Выделить всё
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void) {
DDRB = 0b11111111;
PORTB = 0b10000000;
while (1) {
//PORTD = 0b00000000;
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
//PORTD = 255;
_delay_ms(200);
_delay_ms(200);
_delay_ms(200);
}
return (0); // should never happen
}
Прошил фьюзы:
E4 D9
Не меняется напряжение на ногах...и диод не горит соответственно.
Схема в приложении. Только диод свето, а не просто.
Программатор подрубаю к USB через конвертер UART. Воспользовался шнуром говенным, программатор не определился.
Потом поставил номарльный, он определился. Вроде шьет...раньше работал уже, я на другой схеме его пользовал. Записывает в память прогу, считывает, проверяет. Но сам МК на программу вообще никак не реагирует! Я пробовал разные варианты, на ногих напряжение относительно земли не меняется.
Помогите рзобраться, а то думаю йже программатор погорел...или МК.
На МК все время 1 на портах.
- Вложения
-
- termoind.pdf
- (16.4 КБ) 227 скачиваний
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
А с чего там что-то меняться должно? Один раз настраивается порт B на выход и на нем выставляются нули (кр. старшего бита), потом в цикле делается 6 200миллисекундных ожиданий...
Если и была попытка помигать портом, то она закомментирована да и порт не тот, который на выход настроен.
Если и была попытка помигать портом, то она закомментирована да и порт не тот, который на выход настроен.
-
Ruslan-maniak
- Открыл глаза
- Сообщения: 40
- Зарегистрирован: Вт янв 18, 2011 08:15:32
Re: Мелкие вопросы по МК и ПЛИС.
Здравствуйте. Возник у меня вопрос при изучении плисов. Приходит последовательный код со скоростью 1Мб/с. Переводится в сдвиговом регистре в 32-разрядный паралельный и выдаётся на шину столь же 32 разрядную. Эта шина идёт в блок памяти FIFO, то есть FIFO должна записывать в себя данные с шины с частотой около 31КГц. А клок для FIFO задан 100Мгц. Получается что мы должны с сдвигового регистра выдавать также сигнал на разрешение записи в FIFO соизмеримый с этим самым 100МГц-овым клоком, что бы во время разрешения записи на FIFO пришёл только один фронт клока. А вот где его сгенерить? Каким образом? Ведь если сигнал на разрешение записи будет дольше то FIFO назапишет одно и то же состояние шины множество раз. Как Быть? И Вообще правильно ли я размышляю. Прошу помощи у более опытных.
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Последовательный код это какой "стандарт": UART, SPI, I2C?
Если в общих чертах, то надо сделать так:
Берем автомат состояний, инициированный окончанием приема пакета из 4 байт.
После инициализации формируем сигнал записи в FIFO.
После записи, автомат ставится в режим ожидания
Своего рода ждущий мультивибратор получается
Если в общих чертах, то надо сделать так:
Берем автомат состояний, инициированный окончанием приема пакета из 4 байт.
После инициализации формируем сигнал записи в FIFO.
После записи, автомат ставится в режим ожидания
Своего рода ждущий мультивибратор получается
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Re: Мелкие вопросы по МК и ПЛИС.
Так я не пытался моргать. Мне ндо было что бы на всех ногах порта был уровень лог 0, а на одной лог 1...то есть диод будет все время гореть если его подрубить к 0 и к 1 ноге порта.
А там везде лог 1 и мертво стоит, как ни крути. Беру тестер. Один щуп на землу, второй щуп на ногу и везде 3.3В примерно.
А там везде лог 1 и мертво стоит, как ни крути. Беру тестер. Один щуп на землу, второй щуп на ногу и везде 3.3В примерно.
-
Ruslan-maniak
- Открыл глаза
- Сообщения: 40
- Зарегистрирован: Вт янв 18, 2011 08:15:32
Re: Мелкие вопросы по МК и ПЛИС.
Последовательный код абстрактный привязанный к собственному клоку. Я сам его должен придумать. Я взял его таким: линия данных, линия клок, и линия с сигналом который принимает значение 1 при отправке первого бита и становится равным нулю при отправке последнего бита 4-байтового пакета. Если честно, я не очень понял что вы мне посоветовали? Под сигналом записи фифо вы подразумеваете сигнал на разрешение записи, или клок для фифо? И как это ставить автомат в режим ожидания? Прошу прощения если мои вопросы слишком дилетантские.
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
А... Понял, просто фраза
E4 это старший фьюз? Просто получается либо ресет отключен либо ISP. А если нижний, то тактирование от внешнего кварца, а это как раз ноги на которых светодиод висит.
ввела в заблуждение...Но сам МК на программу вообще никак не реагирует! Я пробовал разные варианты, на ногих напряжение относительно земли не меняется.
E4 это старший фьюз? Просто получается либо ресет отключен либо ISP. А если нижний, то тактирование от внешнего кварца, а это как раз ноги на которых светодиод висит.
Re: Мелкие вопросы по МК и ПЛИС.
Low:E4 Hi:D9.
Программатор, программу в МК заливает, считывает и проверяет на совпадение. Говорит "прошил".
В программе все ноги выставляю на всех (BCD) портах в 0. А все равно везде 1. Даже не в диоде дело,
просто ноги меряю и там 1. На всех портах DDRX = 0xFF PORTX = 0x00.
Я думаю, может дело в программаторе...я его шнуром подрубил сначала плохим, он не определился
вообще...хотя шнур обыкновенный, а потом с хорошим определился, но вот такая байда.
Теперь пишет при прошивке:
avrdude: verification error, first mismatch at byte 0x0000
0x12 != 0x00
Блин...и неясно толи программатор, то ли МК виноват.
Частоту МК сбросил в 1МГц, проверка прошла.
Теперь фьюзы L:E1 H:D9
Я их кручу менюшкой, а не нпрямую...так что маловероятно, что ошибка там...хотя кто знает.
Диод вообще убрал, оставил только МК. Ноги никак не реагируют.
Программатор, программу в МК заливает, считывает и проверяет на совпадение. Говорит "прошил".
В программе все ноги выставляю на всех (BCD) портах в 0. А все равно везде 1. Даже не в диоде дело,
просто ноги меряю и там 1. На всех портах DDRX = 0xFF PORTX = 0x00.
Я думаю, может дело в программаторе...я его шнуром подрубил сначала плохим, он не определился
вообще...хотя шнур обыкновенный, а потом с хорошим определился, но вот такая байда.
Теперь пишет при прошивке:
avrdude: verification error, first mismatch at byte 0x0000
0x12 != 0x00
Блин...и неясно толи программатор, то ли МК виноват.
Частоту МК сбросил в 1МГц, проверка прошла.
Теперь фьюзы L:E1 H:D9
Я их кручу менюшкой, а не нпрямую...так что маловероятно, что ошибка там...хотя кто знает.
Диод вообще убрал, оставил только МК. Ноги никак не реагируют.
- ximik
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Вс ноя 07, 2010 14:48:55
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
Не получается прошить мегу 48 и 88 в соик корпусе) в uniprof (прогер громова) пишет мк не определился и предлагает мне найти его в ручную. в sinaprog 2,0 (прогер на тини 2313) автоопределялка
тоже не обнаруживает мк и выдает ошибку, но при установки мк в ручную все ок, но не открывается окошко фьюзов) до этого тини 13, и 2313 программировались без проблем. может нужны какие то "особые" настройки, а то уже надоело с бубном плясать возле программаторов)

З.Ы контроллеры новые не программировались ни разу....

З.Ы контроллеры новые не программировались ни разу....
Если болит голова, значит она есть!)
Re: Мелкие вопросы по МК и ПЛИС.
Куплю новый МК, а там видно будет.
- ximik
- Потрогал лапой паяльник
- Сообщения: 301
- Зарегистрирован: Вс ноя 07, 2010 14:48:55
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
3DRaven писал(а):Куплю новый МК, а там видно будет.
я так и поступил с мегой 48)) в замен ей купил мегу 88 ноль эффекта)
Если болит голова, значит она есть!)
Re: Мелкие вопросы по МК и ПЛИС.
У меня программатор работал ранее...теперь вот нет. Надеюсь дело в МК, а не в программаторе.
Куплю новый, проверю.
Куплю новый, проверю.