Форум РадиоКот https://radiokot.ru/forum/ |
|
Помогите найти ошибку https://radiokot.ru/forum/viewtopic.php?f=20&t=74903 |
Страница 1 из 1 |
Автор: | ishutinvalera48 [ Чт июн 28, 2012 20:19:05 ] |
Заголовок сообщения: | Помогите найти ошибку |
Код пишу в CodeVisionAVR, мк Atmega48. Код: #include <mega48.h> #include <delay.h> //0b00000001 --1 //0b00000010 --2 //0b00000011 --3 //0b00000100 --4 //0b00000101 --5 //0b00000110 --6 //0b00000111 --7 //0b00001000 --8 //0b00001001 --9 //0b00001010 --0 //0b00001011 --* //0b00001100 --# void main(void) { DDRC=0xff; DDRD-0x00; while (1) { if (PIND == 0b00000001) { PORTC.0 = 1; } else { PORTC.0 = 0; } } } почему проверка условия проходит только один раз? |
Автор: | uldemir [ Чт июн 28, 2012 20:21:38 ] |
Заголовок сообщения: | Re: Помогите найти ошибку |
ishutinvalera48 писал(а): DDRD-0x00; ?
|
Автор: | ishutinvalera48 [ Чт июн 28, 2012 20:24:21 ] |
Заголовок сообщения: | Re: Помогите найти ошибку |
Исправил но всё равно проверка проходит только 1 раз |
Автор: | Ser60 [ Чт июн 28, 2012 20:40:08 ] |
Заголовок сообщения: | Re: Помогите найти ошибку |
Покажите схему. |
Автор: | ishutinvalera48 [ Чт июн 28, 2012 20:41:48 ] | ||
Заголовок сообщения: | Re: Помогите найти ошибку | ||
Вот
|
Автор: | Flasher [ Чт июн 28, 2012 20:48:11 ] |
Заголовок сообщения: | Re: Помогите найти ошибку |
ошибка зарыта в каких-то цепочках ДНК. |
Автор: | Ser60 [ Чт июн 28, 2012 20:54:47 ] |
Заголовок сообщения: | Re: Помогите найти ошибку |
Вероятно, как говорится, проблема между комьютером и стулом ![]() Уточните, что значит "проверка условия проходит только один раз" ??? |
Автор: | Olecorp [ Чт июн 28, 2012 22:48:59 ] |
Заголовок сообщения: | Re: Помогите найти ошибку |
Лень проверять, но разве свободные лапы контроллера не прочитаются как "1" (из-за внутренних подтягивающих резисторов)? И как, в таком случае может прочитаться 0b000...? Попробуй завести кнопки на корпус, а не на питание. И в любом случае, если ты хочешь проверить состояние одного бита, то проверяй один бит: Код: if (PIND & 0b00000001) {
|
Автор: | Soir [ Пт июн 29, 2012 09:33:49 ] | ||
Заголовок сообщения: | Re: Помогите найти ошибку | ||
ishutinvalera48 писал(а): Исправил но всё равно проверка проходит только 1 раз ??? Поставьте breakpoint или прогоните в пошаговом режиме симуляции и посмотрите сколько раз... Olecorp правильно заметил по поводу подтяжки выводов МК. По крайней мере для Proteus.
|
Автор: | mazda [ Пт июн 29, 2012 11:51:13 ] |
Заголовок сообщения: | Re: Помогите найти ошибку |
две причины 1-кнопки нужно повечсить на ноль, а не на питание, при чтении порта, он сам (как сказали ранее и как написано в даташите) подтянут на +5 в самой мк 2-проверяй так if ( PIND & 0b00000001==0 ) то...иначе... здесь 1 ставь на проверяемой ноге, пришёл ЗЕМЛЯ сигнал - сработает, не пришол - там будет +5, логика не обнулится и не сработает условие. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |