Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение sachok »

Если убрать while внутри функции то прерывание срабатывает.
Я не Сашок!!!
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение AI_Disable »

sachok писал(а):Если убрать while внутри функции то прерывание срабатывает.

А если вернуть, то НЕТ?! :shock: Что внутри while?
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение sachok »

Привожу полный код (полный):

Код: Выделить всё

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: Мелкие вопросы по МК и ПЛИС.

Сообщение ibiza11 »

Попробуйте добавить в Ваш злополучный цикл while сброс watchdog'а. Других мыслей пока нет. Вроде остальное верно.
Ставим плюсы: )
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение sachok »

ibiza11 Большое спасибо!!! Заработало!!!
Я не Сашок!!!
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Chip115 »

Как называется кабель для COM порта?

Есть два вида распайки кабеля 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: Мелкие вопросы по МК и ПЛИС.

Сообщение ibiza11 »

sachok писал(а):ibiza11 Большое спасибо!!! Заработало!!!
:beer: Всегда рад помочь!)
Ставим плюсы: )
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение 3DRaven »

Взял программатор stk500v2. МК ATMega8.
Написал программу:

Код: Выделить всё

#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: Мелкие вопросы по МК и ПЛИС.

Сообщение Engineer_Keen »

А с чего там что-то меняться должно? Один раз настраивается порт B на выход и на нем выставляются нули (кр. старшего бита), потом в цикле делается 6 200миллисекундных ожиданий...
Если и была попытка помигать портом, то она закомментирована да и порт не тот, который на выход настроен.
Ruslan-maniak
Открыл глаза
Сообщения: 40
Зарегистрирован: Вт янв 18, 2011 08:15:32

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Ruslan-maniak »

Здравствуйте. Возник у меня вопрос при изучении плисов. Приходит последовательный код со скоростью 1Мб/с. Переводится в сдвиговом регистре в 32-разрядный паралельный и выдаётся на шину столь же 32 разрядную. Эта шина идёт в блок памяти FIFO, то есть FIFO должна записывать в себя данные с шины с частотой около 31КГц. А клок для FIFO задан 100Мгц. Получается что мы должны с сдвигового регистра выдавать также сигнал на разрешение записи в FIFO соизмеримый с этим самым 100МГц-овым клоком, что бы во время разрешения записи на FIFO пришёл только один фронт клока. А вот где его сгенерить? Каким образом? Ведь если сигнал на разрешение записи будет дольше то FIFO назапишет одно и то же состояние шины множество раз. Как Быть? И Вообще правильно ли я размышляю. Прошу помощи у более опытных.
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Meteor »

Последовательный код это какой "стандарт": UART, SPI, I2C?
Если в общих чертах, то надо сделать так:
Берем автомат состояний, инициированный окончанием приема пакета из 4 байт.
После инициализации формируем сигнал записи в FIFO.
После записи, автомат ставится в режим ожидания
Своего рода ждущий мультивибратор получается
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение 3DRaven »

Так я не пытался моргать. Мне ндо было что бы на всех ногах порта был уровень лог 0, а на одной лог 1...то есть диод будет все время гореть если его подрубить к 0 и к 1 ноге порта.
А там везде лог 1 и мертво стоит, как ни крути. Беру тестер. Один щуп на землу, второй щуп на ногу и везде 3.3В примерно.
Ruslan-maniak
Открыл глаза
Сообщения: 40
Зарегистрирован: Вт янв 18, 2011 08:15:32

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Ruslan-maniak »

Последовательный код абстрактный привязанный к собственному клоку. Я сам его должен придумать. Я взял его таким: линия данных, линия клок, и линия с сигналом который принимает значение 1 при отправке первого бита и становится равным нулю при отправке последнего бита 4-байтового пакета. Если честно, я не очень понял что вы мне посоветовали? Под сигналом записи фифо вы подразумеваете сигнал на разрешение записи, или клок для фифо? И как это ставить автомат в режим ожидания? Прошу прощения если мои вопросы слишком дилетантские.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Engineer_Keen »

А... Понял, просто фраза
Но сам МК на программу вообще никак не реагирует! Я пробовал разные варианты, на ногих напряжение относительно земли не меняется.
ввела в заблуждение...
E4 это старший фьюз? Просто получается либо ресет отключен либо ISP. А если нижний, то тактирование от внешнего кварца, а это как раз ноги на которых светодиод висит.
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение 3DRaven »

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
Я их кручу менюшкой, а не нпрямую...так что маловероятно, что ошибка там...хотя кто знает.
Диод вообще убрал, оставил только МК. Ноги никак не реагируют.
Аватара пользователя
ximik
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Вс ноя 07, 2010 14:48:55
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ximik »

Не получается прошить мегу 48 и 88 в соик корпусе) в uniprof (прогер громова) пишет мк не определился и предлагает мне найти его в ручную. в sinaprog 2,0 (прогер на тини 2313) автоопределялка :)) тоже не обнаруживает мк и выдает ошибку, но при установки мк в ручную все ок, но не открывается окошко фьюзов) до этого тини 13, и 2313 программировались без проблем. может нужны какие то "особые" настройки, а то уже надоело с бубном плясать возле программаторов) :kill: :kill:
З.Ы контроллеры новые не программировались ни разу....
Если болит голова, значит она есть!)
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение 3DRaven »

Куплю новый МК, а там видно будет.
Аватара пользователя
ximik
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Вс ноя 07, 2010 14:48:55
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ximik »

3DRaven писал(а):Куплю новый МК, а там видно будет.

я так и поступил с мегой 48)) в замен ей купил мегу 88 ноль эффекта) :evil:
Если болит голова, значит она есть!)
3DRaven
Грызет канифоль
Сообщения: 294
Зарегистрирован: Пт мар 11, 2011 08:51:55

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение 3DRaven »

У меня программатор работал ранее...теперь вот нет. Надеюсь дело в МК, а не в программаторе.
Куплю новый, проверю.
Ответить

Вернуться в «Разные вопросы по МК»