Atmega8 & LV
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Atmega8 & LV
Запусти в медленном темпе (нажни на лампочку в меню сверху) и посмотри почему заканчивается после первой итерации. И вообще выложи сюда скрин, а то так в пустую болтаем.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Atmega8 & LV
Да, нет же. Ты направильно понял что куда вставлять. Тебе нужно было то, что я тебе запостил, включително цикл For, вставить в цикл While. А так же считывание 15-ти байт с порта вставить в тот же цикл While и подключить выход VISA Read ко входу моего куска кода, ну вместо контрола String.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Atmega8 & LV
VISA Close тебе надо быдет вынести в самый правый край, чтобы получилось так:
Конфигурация порта, начинается цикл while(в котором считывание с порта и цикл FOR), когда цикл заканчивается - порт закрываем.
Конфигурация порта, начинается цикл while(в котором считывание с порта и цикл FOR), когда цикл заканчивается - порт закрываем.
- EvgenIg
- beginner
- Сообщения: 40
- Зарегистрирован: 22 авг 2008, 21:34
- Версия LabVIEW: 8.5,2009
- Откуда: Санкт-Петербург
Re: Atmega8 & LV
цикл for не очень удобно использовать, т.к. в зависимости от количества передаваемых байт нужно в ручную менять количество интераций, хотелось бы это дело автоматизировать
и еще в функции VISA read надо выставлять число считываемых байт, тоже бы хотелось это дело отдать программе чтоб не думать об этом
и еще в функции VISA read надо выставлять число считываемых байт, тоже бы хотелось это дело отдать программе чтоб не думать об этом
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Atmega8 & LV
Тогда тебе надо просто напросто поменять протокол передачи данных (ввести байт синхронизации) и лучше передавать не три пакета враз, а один. То есть не 15 байт, а только 5.
А байт синхронизации тебе пригодится для поиска начала пакета.
А байт синхронизации тебе пригодится для поиска начала пакета.
- EvgenIg
- beginner
- Сообщения: 40
- Зарегистрирован: 22 авг 2008, 21:34
- Версия LabVIEW: 8.5,2009
- Откуда: Санкт-Петербург
Re: Atmega8 & LV
а как тогда в твоей программе RS232 Terminal реализован прием без ввода количества байт
у меня все прикрасно работало с любым количеством от 15 байт и выше?
у меня все прикрасно работало с любым количеством от 15 байт и выше?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Atmega8 & LV
Дело в том, что мой терминал не должен делить данные на составные, т.е. всё что приходит, то и выдаётся на экран. Произошла ошибка или пришло 10 байт или 1 - всё равно. Ведь мне не надо просто показать данные. А тебе надо получить конкретное количество байт и преобразовать в цифры.
Понимаешь у тебя двоичный протокол, а у меня в терминале ASCII символы выдаются. Один ASCII символ всегда состоит из одного байта, a тебе надо показать 4 числа сразу, при этом последнее число состоит не из одного, а из двух байт. Если у тебя по дороге потеряется хоть один байт, то всё последующее пойдёт вкривь и вкось, как раз для этого нужна синхронизация, длина пакета (которая у тебя к счастью постоянная) и даже контрольная сумма.
Всё не так просто как выглядит. Так что обдумай хорошо что к чему и если есть вопросы, то задавай. Я эти двоичные протоколы как орехи щёлкаю.
Понимаешь у тебя двоичный протокол, а у меня в терминале ASCII символы выдаются. Один ASCII символ всегда состоит из одного байта, a тебе надо показать 4 числа сразу, при этом последнее число состоит не из одного, а из двух байт. Если у тебя по дороге потеряется хоть один байт, то всё последующее пойдёт вкривь и вкось, как раз для этого нужна синхронизация, длина пакета (которая у тебя к счастью постоянная) и даже контрольная сумма.
Всё не так просто как выглядит. Так что обдумай хорошо что к чему и если есть вопросы, то задавай. Я эти двоичные протоколы как орехи щёлкаю.
- EvgenIg
- beginner
- Сообщения: 40
- Зарегистрирован: 22 авг 2008, 21:34
- Версия LabVIEW: 8.5,2009
- Откуда: Санкт-Петербург
Re: Atmega8 & LV
опустим пока синхронный режим.
хотелось бы разобраться с циклом while, почему при считывании, допустим, 15 байт, в этом цикле обрабатывются только 5, и потом опять переходит в режим считывания(Visa read)?
или во всем виноват асинхронный режим?
хотелось бы разобраться с циклом while, почему при считывании, допустим, 15 байт, в этом цикле обрабатывются только 5, и потом опять переходит в режим считывания(Visa read)?
или во всем виноват асинхронный режим?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Atmega8 & LV
До сих пор в своей практике не встречал синхронный режим считывания, честно сказать даже не очень знаю для чего он нужен в последовательных протоколах.
Выложи самый последний скрин твоей блоковой диаграммы, чтобы точно знать о чём ты говоришь.
Выложи самый последний скрин твоей блоковой диаграммы, чтобы точно знать о чём ты говоришь.
- EvgenIg
- beginner
- Сообщения: 40
- Зарегистрирован: 22 авг 2008, 21:34
- Версия LabVIEW: 8.5,2009
- Откуда: Санкт-Петербург
Re: Atmega8 & LV
не не, я говорил о режиме передаче, а не о считыванииeg писал(а):До сих пор в своей практике не встречал синхронный режим считывания, честно сказать даже не очень знаю для чего он нужен в последовательных протоколах.
Выложи самый последний скрин твоей блоковой диаграммы, чтобы точно знать о чём ты говоришь.
сейчас мой МК запрограммирован передавать данные в Асинхронном режиме (без бита четности),
а синхронный режим подразумевает наличие дополнительного провода по которому идут импульсы синхронизации параллельно передаваемой информации.
Допустим я сделаю бит четности (или бит четности это другое), как изменится схема?
схему я пока оставил практически без изменений
Последний раз редактировалось EvgenIg 16 сен 2008, 17:17, всего редактировалось 1 раз.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Atmega8 & LV
Ни как она не изменится, просто само считывание по идее будет работать стабильнее. Но я не думаю что твоя проблема в этом заключается.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Atmega8 & LV
Чтобы знать где находится начало пакета с данными. Представь, ты начинаешь считывать данные не с первого байта а например с третьего, то есть где то половину пакета. И что будет делать программа в этом случае?