
Помогите разобратся с работой UART в atmege8
- Сообщения: 804
- Зарегистрирован: Чт мар 12, 2009 16:31:05
- Реклама
- Сообщения: 16
- Зарегистрирован: Чт май 02, 2013 06:23:11
- Сообщения: 16
- Зарегистрирован: Чт май 02, 2013 06:23:11
Упростил программу специально для форума, вырвал куски из программы. Почему не могу управлять PD2 из цикла? PD3 работает норм. примерно 4-5 раз в секунду моргает.
Код: Выделить всё
#include <avr/io.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
UBRRH = 0x00;
UBRRL = 0x19;
UCSRB = 0x18;
UCSRC = 0x03;
DDRD = 0x0c;
PORTD = 0x0c; <---------------------------------Здесь PD2 включается
char mystr[] = "Probe UART";
while (1)
{
PORTD ^= 0x0c; <------------------------А здесь PD2 не реагирует, PD3 - светодиод работает
for (int i=0; i < strlen(mystr); i++)
{
while ( !( UCSRA & (1<<UDRE)) );
UDR = mystr[i];
}
PORTD &= ~0x04; <------------------------PD2 должна выключить СP2102 но невыключает
}
}
поставьте задержку после
PORTD ^= 0x0c;
и
PORTD &= ~0x04;
наверняка Вы просто не замечаете переключение.
PORTD ^= 0x0c;
и
PORTD &= ~0x04;
наверняка Вы просто не замечаете переключение.
Ставим плюсы: )
- Реклама
я ничего не утверждаю, но может Вы как-то неправильно им пользуетесь? или осцилл нерабочий. не проще ли Вам поступить так, как я предложил и увидеть все своими глазами?
Ставим плюсы: )
- Сообщения: 16
- Зарегистрирован: Чт май 02, 2013 06:23:11


