Teille 0 13 апреля, 2010 Опубликовано 13 апреля, 2010 (изменено) · Жалоба Здравствуйте! Я только начинаю и не могу разобраться... Задача такая: написать программу для Атмеги32 в AvrStudio4 на языке Си, чтобы переключатель s2 управлял лампочками LED0 и LED2, s3 управлял LED1 и LED3, s4 --LED2 и LED4,s5 -- LED3 и LED5. Причем тот же переключатель (например s2) мог и выключать и включать лампочки (с использованием оператора XOR) Спасибо! Изменено 13 апреля, 2010 пользователем Teille Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mrKirill 1 13 апреля, 2010 Опубликовано 13 апреля, 2010 · Жалоба Определитесь для начала с контроллером. В названии ATmega16...в теме ATmega32... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Teille 0 13 апреля, 2010 Опубликовано 13 апреля, 2010 (изменено) · Жалоба ой,ошиблась, ATmega32 у меня ) исправила) и еще...может что-то непонятно написала в задании... На плате LED Board 8 лампочек, обозначенные буквой L, начинаются от L0 до L7.Эта плата подключена к порту "B". К порту "D" подключена плата Button Board, на которой есть 4 кнопки, они называются S0, S1, S2 и S3. Учусь в Финляндии и просто перевела задание, которое дали,не знаю как это в России всё правильно называется))) Изменено 13 апреля, 2010 пользователем Teille Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Teille 0 15 апреля, 2010 Опубликовано 15 апреля, 2010 · Жалоба Делала так(сначала для двух кнопок): #include <avr/io.h> #define S2 bit_is_clear(PIND, 2) // если S2 нажимаем #define S3 bit_is_clear(PIND, 3) // если S3 нажимаем int main(void) { DDRB = 0x00; // B-порт output DDRD = 0x00; // D-порт input PORTD = 0x00; while(1) { if(S2) // если S2 нажали PORTB^= 0b0000101; else if(S3) // если S3 нажали PORTB^= 0b00001010; else // ничего не нажимаем PORTB = 0x00; } } но не получилось... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mempfis_ 0 15 апреля, 2010 Опубликовано 15 апреля, 2010 · Жалоба DDRB = 0x00; // B-порт output DDRD = 0x00; // D-порт input С таким кодом далеко пойдёте..... Вас там в где учитесь думать учат? Не замечаете противоречия в коде? Для любой atmega DDRx - регистр направления, бит установленный в 1 обозначает выход, бит установленный в 0 - обозначает вход. PORTx для выходов позволяет установить состояние выхода, для входов - управляет подтяжкой (0 - нет подтяжки к VCC, 1 - есть подтяжка входа к VCC). Про такие понятия как антидребезг или таймер-счётчик думаю пока что рано вам рассказывать.... Для начала определитесь что у вас вход а что выход (где кнопочки а где светодиоды). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Teille 0 15 апреля, 2010 Опубликовано 15 апреля, 2010 · Жалоба Значит,будет DDRB = 0xFF; выход DDRD = 0x00; вход правильно? а PORTD = 0xFF; или PORTD = 0x00; ? Что значит управиляет подтяжкой? Спасибо!!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mempfis_ 0 15 апреля, 2010 Опубликовано 15 апреля, 2010 · Жалоба DDRB = 0xFF; выход DDRD = 0x00; вход Это правильно. Выходами можно зажигать лампочки. К входам подключаются кнопочки. Что значит управиляет подтяжкой? Pull-up или подтягивающий резистор. В атмеге это резистор который подключается между пином и VCC (если пин - вход (DDRx.i = 0)) при условии что PORTx.i=1. Позволяет удерживать потенциал входа в состоянии логической 1 если кнопка не нажата. А вообще приведите схему тогда точно будет понятно нужно-ли включать подтяжку для кнопочек и каким уровнем управляются лампочки (которые скорее всего являются светодиодами). :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Teille 0 16 апреля, 2010 Опубликовано 16 апреля, 2010 · Жалоба спасибо всем)) Я сделала уже,на паре учитель помог)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 16 апреля, 2010 Опубликовано 16 апреля, 2010 · Жалоба Я сделала уже)) ОФФ Так Вы и есть то олицетворение того самого "финского студента"?! Успехов! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться