−50
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
Timer_Overflow_Interrupt(void)
{
switch(TMR_State) // Обработчик прерывания по переполнению
{
case 0:
{
Clr_Pin(); // Вывод в 0
TCNT = 255-100; // Задержка в 100 (до переполнения)
TMR_State = 1; // Следующая стадия 1
Break; // Выход
}
case 1:
{
Set_Pin();
TCNT = 255-1;
TMR_State = 2;
Break;
}
case 2:
{
Clr_Pin();
TCNT = 255-5;
TMR_State = 3;
Break;
}
case 3:
{
Set_Pin();
TCNT = 255-2;
TMR_State = 4;
Break;
}
case 4:
{
Clr_Pin();
TCNT = 255-3;
TMR_State = 5;
Break;
}
case 5:
{
Set_Pin();
TCNT = 255-4;
TMR_State = 6;
Break;
}
case 6:
{
Clr_Pin();
Timer_OFF(); // Выключаем таймер. Работа окончена
TMR_State = 0; // Обнуляем состояние
Break;
}
default: break;
}
}
http://easyelectronics.ru/avr-uchebnyj-kurs-konechnyj-avtomat.html
А не лучше ли сделать массив указателей на функции, каждая из которых будет соответствовать case-у, и пусть там оно вызывает из массива фукнцию под номером TMR_State? Притом вот эту хню TMR_State = 1; TMR_State = 2; TMR_State = 3; которая дублируется во всех этих case-ах, ее ж можно хуйнуть всего один раз, типа TMR_State = (TMR_state+1)%7. Хотя для AVR контроллеров это скорее всего будет дорогая операция, так что можно хуйнуть TMR_State = TMR_state == 7 ? 0 : TMR_state+1;
Запостил: j123123,
20 Июля 2016
j123123 20.07.2016 18:49 # 0
j123123 20.07.2016 18:58 # 0
govnokod3r 21.07.2016 22:06 # +2
codemonkey 20.07.2016 19:44 # +2
bormand 20.07.2016 20:10 # 0
bormand 20.07.2016 20:41 # +2
codemonkey 21.07.2016 11:34 # 0
Кесарево кесарю, богу божье.
Do one thing and do it well.
bormand 21.07.2016 18:46 # 0
guestinho 21.07.2016 19:13 # 0
разве как и под сисдмином подразумевается офисный эникей
3_14dar 21.07.2016 20:03 # 0
bormand 21.07.2016 20:13 # 0
guestinho 21.07.2016 20:18 # 0
последний регистр, который можно было увидеть глазами, был наверное годах в 60х. Ламповый такой.
bormand 21.07.2016 20:22 # 0
guestinho 21.07.2016 20:29 # +2
ого, это даже не 60е, это еще раньше)
bormand 21.07.2016 20:30 # 0
guestinho 21.07.2016 20:35 # 0
собери-ка лучше сумматор или дешифратор, например
bormand 21.07.2016 20:36 # 0
З.Ы. И дешифратор для семисигментника.
guestinho 21.07.2016 20:40 # 0
bormand 21.07.2016 20:41 # 0
Что это?
guestinho 21.07.2016 20:43 # 0
bormand 21.07.2016 20:46 # 0
bormand 21.07.2016 20:49 # 0
guestinho 21.07.2016 20:51 # 0
Я, к сожалению, ни с чем таким не игрался. Только с компьютером, и то чисто софтварно.
bormand 21.07.2016 21:05 # +2
Ну и у отца на работе подрабатывал - всякую фигню для управления двигателями, титанами и прочими няшками на пускателях собирал. Зарядник ебических масштабов для автопогрузчика.
Потом комп пытался спаять по схеме из журнала, половина даже работала... В итоге забил когда появился настоящий комп :(
В общем, ничего особо серьёзного...
guestinho 21.07.2016 21:30 # +1
Но вообще это круто, на самом деле. Чем раньше человек начал, и чем более лоу левел были его первые эксперементы, тем более он годный компьютерщик.
bormand 21.07.2016 21:36 # +1
guestinho 21.07.2016 21:39 # +1
bormand 21.07.2016 21:42 # 0
kurwa-nextgen 22.07.2016 15:28 # 0
guestinho 22.07.2016 16:49 # +2
3_14dar 22.07.2016 18:05 # 0
j123123 22.07.2016 18:42 # +1
Иди вон http://www.zachtronics.com/kohctpyktop-engineer-of-the-people/ проходи, а потом ставь http://www.cburch.com/logisim/ и делай свой процессор.
3_14dar 22.07.2016 18:45 # 0
Чем лучше? Как ты их переключать собрался?
j123123 22.07.2016 18:49 # +1
3_14dar 22.07.2016 19:05 # 0
j123123 22.07.2016 19:18 # +1
inkanus-gray 22.07.2016 19:23 # +2
Ещё бывают поляризованные реле с контактами без возвращающей пружины: если к катушке приложить напряжение одной полярности, то контакты переключатся в одну сторону; если поменять полярность, то переключатель пойдёт в противоположную сторону; в покое последнее состояние сохраняется, если сильно не трясти.
j123123 22.07.2016 20:15 # 0
3_14dar 22.07.2016 20:21 # 0
inkanus-gray 22.07.2016 20:27 # 0
bormand 22.07.2016 19:26 # +2
bormand 20.07.2016 20:00 # +2
А зачем массив и индекс? Просто указатель на функцию. Один на весь автомат.
j123123 22.07.2016 14:35 # 0
bormand 22.07.2016 19:14 # 0
Ну static в сишку слава богу завезли. И единицы трансляции тоже. Так что юзай и наслаждайся инкапсуляцией ;)
j123123 22.07.2016 19:21 # 0
bormand 22.07.2016 19:28 # 0
> не использовали локальные переменные в функцях
Приписывай к глобалкам префикс g_, например.
Soul_re@ver 22.07.2016 19:30 # 0
double g_constant = 6.67408e-11
bormand 22.07.2016 19:32 # 0
А то ещё подумаешь, что в g_constant лежит не G, а g которое 9.8...
j123123 22.07.2016 19:35 # +2
bormand 20.07.2016 20:17 # +1
Хех, на tiny 13 эта "дорогая операция" съедала, емнип, 25% флеша.
dm_fomenok 20.07.2016 20:42 # +3
Регистронезависимость в Си?
guestinho 20.07.2016 21:03 # +2