реклама на сайте
подробности

 
 
> Изменение текста программы при смене компилятора и чипа
RW6MKA
сообщение Oct 25 2010, 11:58
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 25-10-10
Из: Ростовская обл.
Пользователь №: 60 401



Привет всем. rolleyes.gif
Есть исходник программы написаный в IAR C v.3.10C для AT90S2313P, но такого камня уже не достать поэтому нужно переписать исходник для ATTINY2313V-10PU. Проблема в том,что IAR C v.3.10C триал или ломаная без библиотек и многого другого,поэтому изменять текст придётся в AVR Studio,но некоторые функции,как я понимаю,свойственны только IAR C v.3.10C(в частности h-файлы типа inavr.h и др.) Вообщем HELP!!! help.gif
Проще говоря нужно чтобы прога работала и компилировалась в AVR Studio или Code Vision AVR под камень ATTINY2313V-10PU. Вот сам исходник(чёт не получается файлом выложить)
/*
Компилировать IAR C v.3.10C
*/
#include <2313.h>
#include <inavr.h>

//#define DEBUG 1

// Подручные макросы
#define SetBit(address,bit) (address|=(1<<bit))
#define ClrBit(address,bit) (address&=~(1<<bit))
#define InvBit(address,bit) (address^=(1<<bit))
#define BitOn(address,bit) (address&(1<<bit))
#define BitOff(address,bit) (!(address&(1<<bit)))
#define NOP __no_operation()
#define IE __enable_interrupt()
#define DI __disable_interrupt()

#define DEBOUNCE 300
#define RUN 6 // Управление реле хода
#define REV 7 // Управление реле реверса
#define PRESC 2 // Прескалер таймера 0 (CLK/8)
#define AIN0 0
#define AIN1 1
#define T 7
#define SUM 50
#define YES 1
#define NO 0
#define REVPAUSE 800

typedef enum {Idle, RotL, RotR, LStop, RStop} State;


// Определения собственных типов данных
typedef unsigned char byte;
typedef unsigned int word;
typedef unsigned long ulong;

// Объявления прототипов функций
#ifdef DEBUG
void sb(byte data);
void phex(byte ch);
#define CRLF sb(13); sb(10)
#endif

byte GetKey(void);
byte KbdRotate(byte m);
byte KbdTest(void);
void ShiftReg(void);
void ShiftOne(byte r);
void RegClk(void);
void Strobe_1(void);
void Strobe_2(void);
void delayms (unsigned count);
unsigned getcount(void);
void RotCW(void);
void RotCCW(void);
void Stop(void);
word measure(void);
byte gp(void);
void Convert(byte data);
void Alarm(void);


__eeprom word dummy[8]= {0,0,0,0,0,0,0,0};
__eeprom State ee_stat;
__eeprom byte ee_angle;

// Таблица перевода количества импульсов, соответствующих входному
// напряжению в номер группы и номер светодиода в группе.
__flash byte LedPos[] = {
0x00,0x01,0x01,0x02,0x02,0x02,0x03,0x03,0x04,0x04,0x04,0x05,0x05,0x06,0x06,0x06,
0x07,0x07,
0x10,0x10,0x10,0x11,0x11,0x12,0x12,0x12,0x13,0x13,0x14,0x14,0x15,0x15,0x15,0x16,
0x16,0x17,
0x17,0x17,0x20,0x20,0x21,0x21,0x21,0x22,0x22,0x23,0x23,0x23,0x24,0x24,0x25,0x25,
0x26,0x26,
0x26,0x27,0x27,0x30,0x30,0x30,0x31,0x31,0x32,0x32,0x32,0x33,0x33,0x34,0x34,0x35,
0x35,0x35,
0x36,0x36,0x37,0x37,0x37,0x40,0x40,0x41,0x41,0x41,0x42,0x42,0x43,0x43,0x43,0x44,
0x44,0x45,
0x45,0x46,0x46,0x46,0x47,0x47,0x50,0x50,0x50,0x51,0x51,0x52,0x52,0x52,0x53,0x53,
0x54,0x54,
0x54,0x55,0x55,0x56,0x56,0x57};

__flash byte Mask[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

// Определение переменных программы
volatile word SysmS;
byte Regs[2];
byte Btn;
byte cnt;
volatile byte TH;
State Status;
byte Merge;
byte Angle;

// Начало основного модуля программы
__C_task void main(void){

// Настройка последовательного порта. Для настройки.
#ifdef DEBUG
UBRR = 25;
SetBit(UCR,TXEN);
#endif
Regs[1]=Regs[0]=0;
DDRD=0x71; PORTD=0x0E; // Настройка портов ввода/вывода
KbdRotate(0xFF); // Очистка регистра кнопок
ShiftReg(); // Очистка сдвигового регистра
// Настройка системного таймера на прерывания раз в 1 мсек
TCCR1B=0x0A;
OCR1=500;
TCNT1=0;
SetBit(TIMSK,OCIE1A);
SetBit(TIMSK,TOIE0);
ClrBit(DDRB,T); // Выключить транзистор
SetBit(DDRB,AIN0); // Разрядить конденсатор
delayms(1);
IE; // Разрешить глобальные прерывания
Merge = NO;
Status = ee_stat;
if ((Status==RotL) || (Status==RotR)) Alarm();
else Convert(Angle = ee_angle);
ee_stat = Status;

// ---------------------------------------------------------------
// Главная петля программы
while(1){
if ((Status==RotL)||(Status==RotR)){
Angle = gp();
Convert(Angle);
if (((Angle == 0x00)&&(Status==RotL)) || ((Angle == 0x57)&&(Status==RotR))){
Merge = YES;
Stop();
}
}
cnt = 0;
switch(Btn=GetKey()){
case 0x04: RotCW(); break;
case 0x08: Stop(); break;
case 0x10: RotCCW(); break;
}
}
}

void Alarm(void){
// Прокрутка трех кругов
byte c,i,j;
for (c=0; c!=3; c++)
for (j=0; j!=6; j++)
for (i=0; i!=8; i++){
Convert(i + (j<<4));
delayms(25);
}
Regs[0] = 0xFF;
Regs[1] = 0x00;
ShiftReg();
Status = Idle;
}

byte gp(void){
// Накопление и округление
word m = 0; byte i = SUM;
while(i--) m += measure();
i = m / SUM;
return((LedPos[i-20] & 0x77));
}

// Применение компаратора при измерении аналоговых величин.
word measure(void){
ClrBit(DDRB,AIN0); // Перевести в Z-состояние
TCNT0 = TH = 0; // Очистить счетчик-накопитель
TCCR0 = PRESC; // Включить Таймер 0
SetBit(DDRB,T); // Включить транзистор
while(BitOff(ACSR,ACO)); // Ждать изменения состояния компаратора
TCCR0 = 0; // Выключить Таймер 0
ClrBit(DDRB,T); // Выключить транзистор
SetBit(DDRB,AIN0); // Разрядить конденсатор
delayms(2); // Время для разряда
return(TH<<8 | TCNT0); // Возвращаем результат замера времени
}

#pragma vector = TIMER0_OVF0_vect
// Обработчик прерывания системного таймера
// Периодичность прерывания = 1 мсек
__interrupt void MeasureTick(void){
TH++;
}

void RotCW(void){
// Вращение по часовой стрелке
if (Status == RStop) return;
Merge = NO;
if (Status == RotL){
Stop();
delayms(REVPAUSE);
}
ClrBit(Regs[1],REV); // Выключить реле реверса
SetBit(Regs[1],RUN); // Включить реле хода
ShiftReg(); // Вывести в регистр
delayms(DEBOUNCE);
ee_stat = Status = RotR;
}

void RotCCW(void){
// Вращение против часовой стрелки
// Аналогично предыдущей функции
if (Status == LStop) return;
Merge = NO;
if (Status == RotR){
Stop();
delayms(REVPAUSE);
}
SetBit(Regs[1],REV); // но реле реверса включить
SetBit(Regs[1],RUN);
ShiftReg();
delayms(DEBOUNCE);
ee_stat = Status = RotL;
}

void Stop(void){
// Останов вращения
if ((Status==RotR)||(Status==RotL)){
ClrBit(Regs[1],REV);
ClrBit(Regs[1],RUN);
ShiftReg();
switch (Merge){
case YES: { if (Status==RotR)
Status = RStop; else
Status = LStop; break;}
case NO : Status = Idle; break;
}
Merge = NO;
ee_stat = Status;
ee_angle = Angle;
//CRLF; sb('S');sb('=');phex(Status);sb(' '); CRLF;
}
}

void Convert(byte data){
byte led, group;
static byte old;
if (data != old){
old = data;
led = data & 0x0F;
group = (data & 0x70)>>4;
Regs[0] = ~Mask[led];
Regs[1] &= 0xC0;
Regs[1] |= Mask[group];
ShiftReg();
}
}

void ShiftReg(void){
// Загрузка сдвигового регистра
ShiftOne(Regs[1]);
ShiftOne(Regs[0]);
Strobe_1();
}
void ShiftOne(byte r){
// Загрузка одного байта в регистр
char i=8;
while(i--){
if(!(r & 0x80)) ClrBit(PORTD,5); else SetBit(PORTD,5);
RegClk(); r <<=1;
}
}

byte GetKey(void){
// Сканирование кнопок с возвратом кода нажатой
byte Mask, temp = 0;
Mask = 0x3E; temp |= KbdRotate(Mask);
Mask = 0x3D; temp |= KbdRotate(Mask);
Mask = 0x3B; temp |= KbdRotate(Mask);
Mask = 0x37; temp |= KbdRotate(Mask);
Mask = 0x2F; temp |= KbdRotate(Mask);
Mask = 0x1F; temp |= KbdRotate(Mask);
return(temp & 0x3F);
}

byte KbdRotate(byte m){
// Вспомогательная функция для опроса кнопок
byte i=6, n = m;
while (i--){
if(!(m & 0x20)) ClrBit(PORTD,5); else SetBit(PORTD,5);
RegClk(); m <<=1;
}
Strobe_2();
if (BitOff(PIND,3)) return(~n);
return(0);
}

void RegClk(void){
// Формирование импульса тактировки регистра
SetBit(PORTD,4); ClrBit(PORTD,4);
}

void Strobe_1(void){
// Формирование строба первого регистра
SetBit(PORTD,6); ClrBit(PORTD,6);
}

void Strobe_2(void){
// Формирование строба второго регистра
SetBit(PORTD,0); ClrBit(PORTD,0);
}


#pragma vector = TIMER1_COMP1_vect
// Обработчик прерывания системного таймера
__interrupt void DelayTick(void){
++SysmS;
}

unsigned getcount(void){
// Возвращает значение системного счетчика (мсек)
unsigned t;
IE; t = SysmS; DI;
return (t);
}

void delayms (unsigned count){
// Функция формирования задержки в мсек
unsigned t = getcount();
while ((getcount() - t) <= count){}
}

#ifdef DEBUG
void phex(byte ch){
// Выводит байт в шестнадцатиричном формате
byte n;
n = (ch >> 4) + 0x30;
if (n > 0x39) n += 7;
sb(n);
n = (ch & 0x0F) + 0x30;
if (n > 0x39) n += 7;
sb(n);
}

void sb(byte data){
// Передача одного байта по последовательному порту
while ( !(USR & (1<<UDRE)) );
UDR = data;
}
#endif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sigmaN
сообщение Dec 17 2010, 10:15
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата
Какой файл нужно инклудить для тиньки2313?
инклудить надо avr/io.h. Для всех камней. А вот в свойствах проекта должен быть указан именно ваш контроллер. Этот io.h тогда сам и заинклудит чё надо )
Вообще, пока сделайте так:
Код
#include <stdint.h>
#include <avr/io.h>
#include <util/delay.h>
к типам из stdint.h советую привыкать сразу.
Цитата
Как разрешать и запрещать прерывания и нужно ли для этого что то инклудить?
Код
sei();//разрешить
cli(); //запретить


Цитата
то нужно добавить и что переделать?Функцию задержки delay_ms(x)ещё не делал
используйте типы из stdint.h ну и почитайте что это и зачем http://lord-n.narod.ru/download/books/wall...20/stdint_h.htm
на википедии русской статьи нет, есть инглиш http://en.wikipedia.org/wiki/Stdint.h в общем нагуглите если захотите...
Функция delay_ms(x) уже есть в util/delay.h Главное чтобы оптимизация в свойствах проекта была включена. Эта фишка многих раздражает и есть люди, которые принципиально не используют задержки из delay.h. Для вас пока что пойдет, дальше решите. Единственное, ещё на частоту контроллера обратите внимание(в свойствах проекта) чтоб стояла раельная на которой камень работать будет.
Код
Можно ли как в CodeVision использовать команды на асме?
команды на асме использовать можно, но нужно это делать только в тех редких случаях, когда на Си уж никак не описать того, что хотелось бы. Вот к примеру вместо sei(); конечно можно было бы команду асм вставить, но это подход неправильный, ведь есть интринсики sei() и cli() для этих целей и компилятор их более эффективно может использовать... но об этом потом... кстати, вот это бы изучить не мешало http://www.nongnu.org/avr-libc/user-manual/FAQ.html может и перевод где найдете. не знаю...

Цитата
и вопрос как реализовать двоичный индикатор для отображения тиков таймера?
А вот как научитесь светодиодики зажигать через регистры сдвиговые - тогда и ясно станет. Зачем вам сейчас именно калибровать эту крутилку? Это можно оставить и на потом ведь)



--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- RW6MKA   Изменение текста программы при смене компилятора и чипа   Oct 25 2010, 11:58
- - sigmaN   Цитатанужно чтобы прога работала и компилировалась...   Oct 26 2010, 02:46
- - RW6MKA   Кода действительно немного и переделать эту програ...   Oct 27 2010, 12:28
- - sigmaN   Не волоку в специфике CodeVisionAVR, я от WinAWR и...   Oct 28 2010, 17:52
- - RW6MKA   ЦитатаНе волоку в специфике CodeVisionAVR, я от Wi...   Oct 29 2010, 17:08
- - sigmaN   Давайте разберемся какая у вас цель то? 1. Вам нуж...   Oct 29 2010, 18:22
- - RW6MKA   Цитата1. Вам нужен просто рабочий девайс? Да,мне н...   Oct 30 2010, 17:27
- - sigmaN   Насчёт лички не согласен ) Прокомментировать ваш к...   Oct 30 2010, 17:50
- - RW6MKA   Спасибо,эта книга у меня есть её и читаю.Литератур...   Nov 1 2010, 17:54
- - sigmaN   Хорошо. Вот с этого и начните. Делаем пустой проек...   Nov 2 2010, 16:16
- - RW6MKA   Вот кусочек моих стараний ,при компиляции ошибок ...   Nov 4 2010, 16:15
- - sigmaN   Ну конечно не будет работать. Всё дело в том, что ...   Nov 4 2010, 17:06
- - RW6MKA   ЦитатаНу конечно не будет работать. Всё дело в том...   Nov 4 2010, 20:53
- - sigmaN   ЦитатаЦитатаКстати, судя по схеме, у вас RUN 1/0 з...   Nov 5 2010, 07:03
- - RW6MKA   ЦитатаВы кажется игнорируете то, что я вам говорю....   Nov 5 2010, 12:56
- - sigmaN   ЦитатаЯ видел что у вас выражено через оператор if...   Nov 5 2010, 15:18
- - RW6MKA   ЦитатаДа, но тогда у Вас зациклится присвоение зна...   Nov 5 2010, 18:43
- - sigmaN   ЦитатаЦитатаНапряжение измеряется с помощью ADC(АЦ...   Nov 6 2010, 02:18
- - RW6MKA   ЦитатаИзмеряемое напряжение подаётся на один вход,...   Nov 6 2010, 18:35
- - sigmaN   ЦитатаКстати я думаю эту таблицу можно повзаимство...   Nov 6 2010, 23:00
- - sigmaN   А ещё я тут подумал... Светодиоды(сдвиговые регист...   Nov 7 2010, 01:31
- - RW6MKA   ЦитатаВы знаете, я ещё не смотрел как там увАжаемы...   Nov 7 2010, 17:35
- - sigmaN   ЦитатаЦитатаВы знаете, я ещё не смотрел как там ув...   Nov 7 2010, 19:11
- - RW6MKA   ЦитатаТаким образом мы сняли бит номер 3. Всё это ...   Nov 7 2010, 20:05
- - sigmaN   ЦитатаВсё это для того что бы снять третий бит в б...   Nov 7 2010, 21:15
- - RW6MKA   ЦитатаА с USI будет всё более цивилизованно - загр...   Nov 8 2010, 19:17
- - sigmaN   Нужно! Нужно знать минимальный набор слов для ...   Nov 8 2010, 20:40
- - RW6MKA   ЦитатаНа поиск в гугле потратил минуты 3.... За эт...   Nov 9 2010, 05:55
- - 314   Вот Вам небольшой примерчик, как делать нежелатель...   Nov 9 2010, 06:33
- - sigmaN   ЦитатаСажусь курить доки biggrin.gif до полного пр...   Nov 9 2010, 13:04
- - RW6MKA   Не могли бы вы проверить этот кусок исходного кода...   Nov 11 2010, 10:28
- - sigmaN   Всё проверять лень(чем-то же и вы должны заниматьс...   Nov 11 2010, 18:40
- - RW6MKA   Цитатат.е. будет так в итоге 1101001000000000 | 00...   Nov 11 2010, 21:19
- - sigmaN   ЦитатаТ.е. в данном фрагменте программы,поскольку ...   Nov 12 2010, 01:05
- - 314   В tiny2313 таймер0 8-битный, ТН скорее всего должн...   Nov 12 2010, 06:13
- - RW6MKA   sigmaN ЦитатаЧто за предупреждение? Я думаю не дол...   Nov 12 2010, 09:07
- - sigmaN   ЦитатаWarning: dira.c(173): shift result will be 0...   Nov 12 2010, 09:45
- - RW6MKA   За ссылку спасибо,разобрался всё работает. Цитатав...   Nov 12 2010, 16:00
- - sigmaN   ЦитатаБлин,а в даташите практически об этом ни сло...   Nov 12 2010, 18:25
- - sigmaN   Что-то чем дальше, тем меньше мне нравится Ваш это...   Nov 13 2010, 01:33
- - RW6MKA   ЦитатаЧто-то чем дальше, тем меньше мне нравится В...   Nov 13 2010, 10:59
- - sigmaN   Да отвяжитесь вы от этой прошивки и её автора...   Nov 13 2010, 13:00
- - RW6MKA   Обидно,да.Я так понимаю,если человек выкладывает в...   Nov 13 2010, 20:06
- - sigmaN   Не порекомендую. не о чем там читать. Создаёте про...   Nov 13 2010, 20:29
- - RW6MKA   Вот рекомендуют перед установкой студии ставить Wi...   Nov 13 2010, 21:13
- - sigmaN   тулчайн - это и есть тот самый WinAVR. Только личн...   Nov 13 2010, 21:43
- - sigmaN   Абсолютно случайно наткнулся на статью http://easy...   Nov 14 2010, 02:03
- - 314   По мне, так проще все делать сразу в Programer_Not...   Nov 14 2010, 08:02
- - sigmaN   ИМХО пусть привыкает к работе над проектом в IDE. ...   Nov 14 2010, 10:12
- - RW6MKA   Всё установил как рекомендовали и спасибо за ссыло...   Nov 14 2010, 10:23
- - sigmaN   ЦитатаБуду писать прогу под эту схему с нуля.А вот...   Nov 14 2010, 10:39
- - RW6MKA   Подтягиваю теорию и в качестве практики разбирая и...   Nov 23 2010, 16:10
- - sigmaN   чё, опять IAR? вроде ж соскакивать с него решили....   Nov 23 2010, 20:33
- - RW6MKA   Цитата(sigmaN @ Nov 23 2010, 23:33) чё, о...   Nov 24 2010, 16:18
- - RW6MKA   Так я до конца и не понял строчку: return(TH<...   Nov 25 2010, 17:16
- - sigmaN   Цитатане пойму при чем здесь DEBUGПрограмма пишетс...   Nov 25 2010, 21:49
- - RW6MKA   Ага, спасибо с дебугом всё ясно.С ТН...Если не зап...   Nov 27 2010, 15:12
- - sigmaN   ЦитатаЕсли не записать 0 в старший байт,то туда за...   Nov 28 2010, 10:54
- - RW6MKA   Что делает TH<<8,что и куда переносится я по...   Nov 28 2010, 13:42
- - RW6MKA   Обязательно ли дергать строб при зажигании светоди...   Dec 6 2010, 15:20
- - sigmaN   ЦитатаЧто делает TH<<8,что и куда переноситс...   Dec 7 2010, 00:33
- - RW6MKA   Ага, с ТН разобрался, меня ввело в заблуждение то,...   Dec 7 2010, 15:10
- - sigmaN   ЦитатаАга, с ТН разобрался, меня ввело в заблужден...   Dec 8 2010, 03:49
- - RW6MKA   Спасибо за развернутые ответы. Читал статью по ва...   Dec 9 2010, 15:16
- - sigmaN   резистор R2. Не заморачивайтесь там с расчётами, ...   Dec 9 2010, 19:00
- - RW6MKA   А как узнать сколько таймер натикал?   Dec 9 2010, 22:17
- - sigmaN   очевидно нужно как-то выводить значение функции. т...   Dec 10 2010, 01:37
- - RW6MKA   Я думаю смоделировать всё это в Протеусе.А пока я ...   Dec 10 2010, 02:38
- - RW6MKA   Итак прибыв домой попробовал свои силы в новой для...   Dec 17 2010, 04:33
- - sigmaN   щас надо уезжать. вернусь часа через 3 и всё раст...   Dec 17 2010, 07:00
- - RW6MKA   Цитатаинклудить надо avr/io.h. Для всех камней. А ...   Dec 17 2010, 12:18
- - RW6MKA   Вот что я накропал на данный момент. CODE#include ...   Dec 17 2010, 14:10
- - sigmaN   ЦитатаТ.е. вместо бла бла бла можно написатьКодvo...   Dec 17 2010, 16:54
- - RW6MKA   Вот всё в исправленном состоянии CODE#include ...   Dec 18 2010, 00:07
- - _Pasha   Ниасилил весь топик, но 1. Автору - пользуйтесь co...   Dec 18 2010, 03:47
- - sigmaN   Нда... остаётся теперь только догадываться что вы ...   Dec 18 2010, 14:08
- - RW6MKA   Скачал и установил всё как вы рекомендовали. Созда...   Dec 18 2010, 14:40
- - sigmaN   Для начала давайте ка всю папку проекта как есть з...   Dec 18 2010, 16:24
- - RW6MKA   Вот всё что там есть   Dec 18 2010, 17:21
- - sigmaN   Путь к проекту не должен содержать русских букв и,...   Dec 18 2010, 20:54
- - RW6MKA   заработало,вот немного исправленный код и результа...   Dec 19 2010, 02:07
|- - _Pasha   Цитата(RW6MKA @ Dec 19 2010, 08:07) И воп...   Dec 19 2010, 04:30
- - sigmaN   открыть delay.h и глянуть, что там _delay_ms() - р...   Dec 19 2010, 03:47
- - sigmaN   Нет, он ни то там то сям - он теперь исключительно...   Dec 19 2010, 10:50
- - RW6MKA   Вот исправленный код CODE #include <stdint.h...   Dec 19 2010, 11:27
- - sigmaN   А вот теперь вам надо крепко подумать и реализоват...   Dec 19 2010, 13:50
- - RW6MKA   Вот с помощью этого кода пытался узнать тики.К вых...   Dec 19 2010, 14:11
- - sigmaN   Поймите вы меня, мил человек, я вам помогаю, но я ...   Dec 19 2010, 14:43
- - RW6MKA   Да мне всего и нужно сказать в проге косяк или в с...   Dec 19 2010, 14:51
|- - _Pasha   Цитата(RW6MKA @ Dec 19 2010, 20:51) в про...   Dec 19 2010, 17:22
- - sigmaN   ну мне то этот косяк тоже не с неба упадёт )) Я мо...   Dec 19 2010, 14:58
- - sigmaN   ничёё ничёё, научится. Желание есть, судя по всему...   Dec 19 2010, 17:40
- - RW6MKA   ЦитатаА не пора ли бить за такой образ мысли ? Не...   Dec 20 2010, 16:37
- - sigmaN   Ну не считает таймер и не работает компаратор очев...   Dec 20 2010, 21:37
- - RW6MKA   ЦитатаНу не считает таймер и не работает компарато...   Dec 21 2010, 01:58
- - sigmaN   Код//инициализация таймера0 TCCR0A=0x00; TCC...   Dec 21 2010, 02:20
- - RW6MKA   ЦитатаБоюсь, так дело не пойдет. Загляните в даташ...   Dec 21 2010, 07:49
- - sigmaN   Что значитЦитатаимпульс STB должен быть нулевым?? ...   Dec 21 2010, 12:34
- - RW6MKA   Ну насколько я могу понять пока STB=0 выходы Q0-8 ...   Dec 21 2010, 13:46
4 страниц V   1 2 3 > » 


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 03:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01634 секунд с 7
ELECTRONIX ©2004-2016