Чт окт 12, 2017 19:58:23
Вт окт 24, 2017 15:20:02
Чт ноя 09, 2017 09:39:22
Сб фев 10, 2018 21:46:54
Сб фев 10, 2018 21:59:59
Я не специалист в CVAVR, но это не похоже на правду.sergejjj123 писал(а):Если записать так PORTD = masiv[*p] то запишется 1 в PD.1
А чтобы зажечь PD.0 надо изголиться - PORTD = masiv[*p-1]
Вс фев 11, 2018 02:36:31
Вс фев 11, 2018 07:26:02
Ещё раз,резюмируя. Проще всего это сделать так:sergejjj123 писал(а):Как в массиве с помощью указателя вытащить с 0-го индекса значение?
Ср фев 14, 2018 14:56:42
Ср фев 14, 2018 15:06:15
Ср фев 14, 2018 16:12:13
Я не специалист в CVAVR, но это не похоже на правду.sergejjj123 писал(а):Если записать так PORTD = masiv[*p] то запишется 1 в PD.1
А чтобы зажечь PD.0 надо изголиться - PORTD = masiv[*p-1]
Ср фев 14, 2018 19:04:09
может быть, наоборот - регистр в переменную? я так вангую, вы хотите свою функцию set_port использовать как-то такrvk писал(а):А как же тогда заставить codevision запихать переменную в регистр?
set_port(&PORTB, 3); // устанавливаем 3-й бит в PORTB
set_port(&PORTD, 2); // 2-й бит в PORTD
#define set_port(p,b) do{ p |= (1 << (b));}while(0)
set_port(PORTB, 3);
set_port(PORTD, 2);
Чт фев 15, 2018 00:55:43
такое возможно на самом деле в AVR-GCC, но на сколько мне известно, не в CVAVR.
в большинстве случаев вместо подобной функции вполне неплохо проявляют себя макросы
#define SET_PORT ( *reg, bit ) ( ( *reg ) |= ( 1 << ( bit ) ) )
#define CLEAR_PORT ( *reg, bit ) ( ( *reg ) &= ~( 1 << ( bit ) ) )
#define CHECK_PIN ( *pin, bit ) ( ( *pin ) & ( 1 << ( bit ) ) )
#define set_port(p,b) do{ p |= (1 << (b));}while(0)
#define SET_PORT ( *reg, bit ) ( ( *reg ) |= ( 1 << ( bit ) ) )
#define CLEAR_PORT ( *reg, bit ) ( ( *reg ) &= ~( 1 << ( bit ) ) )
#define CHECK_PIN ( *pin, bit ) ( ( *pin ) & ( 1 << ( bit ) ) )
uint8_t BITS_CHIP_PANEL[] = { 0, 1, 7, 6, 5, 4 };
uint8_t *PORTS_CHIP_PANEL[] = { &PORTA, &PORTA, &PORTD, &PORTD, &PORTC, &PORTC };
uint8_t *PINS_CHIP_PANEL[] = { &PINA, &PINA, &PIND, &PIND, &PINC, &PINC };
uint8_t *DDRS_CHIP_PANEL[] = { &DDRA, &DDRA, &DDRD, &DDRD, &DDRC, &DDRC };
CLEAR_PORT( PORTS_CHIP_PANEL[ i ], i );
Чт фев 15, 2018 03:42:16
Чт фев 15, 2018 11:39:42
define некорректные, а именно -звездочки в них.
uint8_t BITS_CHIP_PANEL[] = { 0, 1, 7, 6, 5, 4 };
uint8_t *PORTS_CHIP_PANEL[] = { &PORTA, &PORTA, &PORTD, &PORTD, &PORTC, &PORTC };
*PORTS_CHIP_PANEL[ 3 ] |= ( 1 << BITS_CHIP_PANEL[ 3 ] );
Вт фев 27, 2018 13:01:55
// Задаем режим работы таймера-счетчика 0
TCCR0A = _BV(COM0A0) | // COM0A1 = 0 и COM0A0 = 1 - переключение OC0A в момент совпадения
_BV(WGM01); // WGM = 010 - режим CTC
TCCR0B = _BV(CS02)| // CS = 101 - от внутреннего источника
_BV(CS00); // с предделителем 1024
OCR0A = M; // Инициализируем счетчик
Вт фев 27, 2018 15:51:04
TCCR0A = (1<<COM0A0) | (1<<WGM01);
Ср фев 28, 2018 06:53:33
Ср фев 28, 2018 10:00:02
лучший способ - плюнуть на визарды и взять справочник/datasheet. Если очень плохо с английским скачайте книжки Евстифеева - Микроконтроллеры AVR семейств Tiny и Mega - там все разжеванокак с этим разобраться
Ср фев 28, 2018 10:15:33
Ср фев 28, 2018 10:37:13
.. я же вам название дал, неужели поиск в гугле запретили? http://avr.ru/docs/books/avrbango писал(а):Поделитесь если есть