OlegALL (11.02.2014 14:10 - 14:20, просмотров: 3789)
Привет Не выводятся единицы на порт D, контроллер ATmega8535
По аппаратной части вроде всё ок: все питания и земля есть, кварц работает, сигнал сброса есть, цепь сброса сделана.
через резистор 10кОм.
Код:
main.c
int main (void){
init();
PORTD = 0xFF;
while (1){
}
}
functions.c
#include "main.h"
void init(){
// порт A
//DDRA &= ~(1<<DDA0 | 1<<DDA1 | 1<<DDA2 | 1<<DDA3);
// порт B
DDRB |= (1<<DDB0) | (1<<DDB1);
// порт D
DDRD &= ~(1<<DDD0);
DDRD |= (1<<DDD1) | (1<<DDD2) | (1<<DDD7); // вывод 7 - моргасик
DDRD = 0xFF;
// UART
UBRR0 = 7; // скорость 57600
UCSR0B |= (1<<RXEN0) | (1<<RXCIE0) | (1<<TXEN0); // разрешили прерывания по приёму и передаче
// переменные и флаги
request[0] = 0; // посылка: 0x3A 0x01 0x00 0x3B
request[1] = 0;
request[2] = 0;
request[3] = 0;
answer[0] = REQUEST_START;
// Dir_1 Ain_0
answer[1] = 0;
answer[2] = 0;
answer[3] = 0;
answer[4] = 0;
// Dir_1 Ain_1
answer[5] = 0;
answer[6] = 0;
answer[7] = 0;
answer[8] = 0;
// Dir_1 Ain_2
answer[9] = 0;
answer[10] = 0;
answer[11] = 0;
answer[12] = 0;
// Dir_1 Ain_3
answer[13] = 0;
answer[14] = 0;
answer[15] = 0;
answer[16] = 0;
// Dir_2 Ain_0
answer[17] = 0;
answer[18] = 0;
answer[19] = 0;
answer[20] = 0;
// Dir_2 Ain_1
answer[21] = 0;
answer[22] = 0;
answer[23] = 0;
answer[24] = 0;
// Dir_2 Ain_2
answer[25] = 0;
answer[26] = 0;
answer[27] = 0;
answer[28] = 0;
//flags.send_answer = 0;
rx_stage = 0;
// прерывания:
SREG |= 0b10000000; // все
}