Перейти к содержанию
    

micronano

Участник
  • Постов

    33
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о micronano

  • Звание
    Участник
    Участник
  1. подсказали вот это: http://www.linetest.ru/shop/290/291/1368.html Все равно спасибо за ответ!
  2. Добрый день! Нужно найти шумящий диод, но кроме 2д2с (http://www.155la3.ru/datafiles/2d2s.pdf), древнего, Я ничего не нашел... Есть современные шумящие диоды? любые =)
  3. Добрый день! Нужно найти шумящий диод, но кроме 2д2с (http://www.155la3.ru/datafiles/2d2s.pdf), древнего, Я ничего не нашел... Есть современные шумящие диоды? любые =)
  4. Marian, ILYAUL, спасибо. Попробую сделать на прерываниях по фронту/спаду и записью длительности... Dog Pawlowa, нет, это не интерфейс какой-нить микросхемы радио управления. =)
  5. ILYAUL, считайте что хотите. Чем вам не понравилось слово прямоугольный, не понимаю.
  6. kovigor, да, мне нужно принимать биты.. ILYAUL, а не надо было расставлять точки, там все нормально было!=) Вместо сообщения, в котором "0" и "1" должно быть примерно пополам, мне приходит сообщение из одних только "1". Меандр - прямоугольный сигнал со скважностью 2. Прямоугольный =НЕ пилообразный, НЕ синусоида и т.д. Это что за прерывание? Можно поподробнее, пожалуйста? _Pasha, я на это уже ответил, что я так уже пробовал! ничего не меняется, абсолютно! К сожалению. Я экспериментировал с задержками как только можно! =(
  7. #include <avr/io.h> #include <avr/interrupt.h> #include <stdio.h> #include <util/delay.h> #include "uart_i2c.h" volatile int i = 0, pause = 0, uart = 0; // i - length of telegramm, pause - length of pause after telegramm char s[64]; #define F_CPU 1843200L // I/O ports init void init_io_ports() { DDRA =(1<< DDA0)|(1<< DDA1)|(1<< DDA2)|(1<< DDA3)|(1<< DDA4)|(1<< DDA5)|(1<< DDA6)|(1<< DDA7); DDRB =(1<< DDB0)|(1<< DDB1)|(1<< DDB2)|(1<< DDB3)|(1<< DDB4)|(1<< DDB5)|(1<< DDB6)|(1<< DDB7); DDRC =(0<< DDC0)|(0<< DDC1)|(1<< DDC2)|(1<< DDC3)|(1<< DDC4)|(1<< DDC5)|(1<< DDC6)|(1<< DDC7); DDRD =(1<< DDD0)|(1<< DDD1)|(1<< DDD2)|(1<< DDD3)|(1<< DDD4)|(1<< DDD5)|(1<< DDD6)|(1<< DDD7); PORTA =(0<< PA0)|(0<< PA1)|(0<< PA2)|(0<< PA3)|(0<< PA4)|(0<< PA5)|(0<< PA6)|(0<< PA7); PORTB =(0<< PB0)|(0<< PB1)|(0<< PB2)|(0<< PB3)|(0<< PB4)|(0<< PB5)|(0<< PB6)|(0<< PB7); PORTC =(1<< PC0)|(1<< PC1)|(0<< PC2)|(0<< PC3)|(0<< PC4)|(0<< PC5)|(0<< PC6)|(0<< PC7); PORTD =(0<< PD0)|(0<< PD1)|(0<< PD2)|(0<< PD3)|(0<< PD4)|(0<< PD5)|(0<< PD6)|(0<< PD7); } //************************************* Timer **************************************************** // Timer0 8bit init, no prescaler, CTC mode void init_timer() { TCCR0 = (0<< FOC0)|(0<< WGM00)|(0<< COM01)|(0<< COM00)|(1<< WGM01)|(0<< CS02)|(0<< CS01)|(1<< CS00); TIMSK = (1<< OCIE0); // enable interrupts sei(); // enable interrupts SREG = (1<< 7); // enable interrupts OCR0 = 192; // 1.8432Mhz of Xtal / 9600Hz = 192 } //******************************** Interrupt Vector ************************************************ ISR(TIMER0_COMP_vect) // interrupt vector { if (i <= 64) // while telegramm is ON 64 { if((PINC & (1 << PC0)) == 1) {s = '0';} // write "0" in s else {s = '1';} // write "1" in s i++; } else { if ((PINC & (1 << PC0)) == 0) //waiting the end of pause {pause++;} else {pause = 0;} } } //**************************************** MAIN **************************************************** int main(void) { init_io_ports(); init_uart(); while (1) { i = 0; pause = 0; uart = 0; if((PINC & (1 << PC0)) == 1) // waiting first "0" in Transmition on PC0 { _delay_ms(0.010); init_timer(); TCCR2 = 254; while (pause <= 50) // pause after telegramm = 50 bit {} TCCR2 = 0; // stop timer TCNT2 putstr(s); } } return 0; } без прерываний как? Глупы ошибки это да... =)
  8. Других прерываний нет =) В программе кроме считывания передачи и отправки пакетов на компорт, ничего нет... Ошибки конечно есть, но какого плана... каждое сообщение (порядка 60 бит), таймер запускаю заново по фронту первого бита, т.ч. врятли за 60 бит накапливается ошибка... Тем более что иногда (очень редко) приходит то, что надо!
  9. Теперь понял. А что мне это даст? ошибки от этого никуда не денутся и их причину я не пойму... Я увижу тоже самое, что и видел до этого! =) Просто например бывает что вместо сообщения (порядка 60 бит выборки), мне приходят 60 "1"... (состояние на линии без передачи - "1") Логика окончания приема сообщения - пауза в 50 бит перед следующим сообщением, состоящая из "1"
  10. Вот я и прошу подсказать существующие алгоритмы!! Т.к. мне нужно сделать это программно! И это не UART, не I2С, не SPI!!! kovigor, вы не чувствуете, что ничем не помогли, а просто проконстатировали то, что я и так уже написал? Не можете помочь алгоритмом - не отвечайте, можете - я буду вам очень благодарен! Непомнящий Евгений выдайте на ножку момент выборки - не понял) на другую - её результат - тоже не понял =) И что такое реальных вход? что есть что?=) Ммм сложно представить, как прерывание по сравнению может считывать не в тот момент...=) Или я что- то не понимаю..
  11. Непомнящий Евгений Да, спасибо, как вариант. AHTOXA, это не влияет. и фо фронту пробовал, и в середине бита. kovigor, если бы такой интерфейс бы был, я бы не пытался прочитать его столь извращенно. И если бы был такой МК с таким интерфейсом, то я бы взял его. Формат известен! - я пришел к тому же выводу, что и вы, и сразу задал такой вопрос! =) Минуя очевидные вещи.
  12. Всем доброго дня! Кто-нибудь может подсказать как прочитать передачу интерфейса? Известна его его скорость и структура. Даже не важно что это за интерфейс. Пытаюсь по первому биту запускать таймер, и с частотой раз в бит увожу контроллер в прерывание, где считываю значение порта. Но огромное количество ошибок самого разного плана: сдвиг, чтение 1 вместо 0, чтение 0 вместо 1... Не знаю что делать. Сигнал прямоугольный, так что дело к коде. Какие есть программные алгоритмы приема сигнала?
  13. Прочитать передачу

    Добрый день! Кто-нибудь может подсказать как прочитать передачу некоего интерфейса? Известна его его скорость и структура. Пытаюсь по первому биту запускать таймер, и с частотой раз в бит увожу контроллер в прерывание, где считываю значение порта. Но огромное количество ошибок самого разного плана: сдвиг, чтение 1 вместо 0, чтение 0 вместо 1... Не знаю что делать. Сигнал прямоугольный, так что дело к коде. Есть программные алгоритмы приема?
  14. Спасибо всем за ответы! Сначала попробую бестрансформаторное согласование =)
×
×
  • Создать...