LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: metRo_ em 04 de Março de 2011, 00:25

Título: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: metRo_ em 04 de Março de 2011, 00:25
Tenho aqui uma duvida que se calhar até é coisa básica, basicamente quero usar o PB0 e PB1 de um atmega8 como normais IO's no entanto não está a ser possivel. O código que estou a testar é tão simples como isto:

Código: [Seleccione]
#include <avr/io.h>

#define F_CPU 8000000UL
#include <util/delay.h>

#include "bit_tools.h"

int main(void) {

  uint8_t count=0;
  DDRB=0xff;
  DDRD=0xff;
  while(1)
  {
    PORTD=count;
    count++;
    if(count==256){
      count=0;
    }
    _delay_ms(100);
  }
 
  return 0;
}

Se fizer isto para o PORTD, como vêem no código, funciona bem, se fizer para o PORTB funciona quase bem, isto é, o PB0 manten-se sempre desligado enquanto o PB1 está sempre a piscar.

Os fuse bits são os seguintes: lfuse:0xe4 hfuse:0xd9

Alguma sugestão?!
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: senso em 04 de Março de 2011, 00:36
Isso é um bocadinho estranho, porque só quando se liga a USART é que esses pinos passam a ser efectivamente pinos da USART, de resto são sempre pinos digitais normais.
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: metRo_ em 04 de Março de 2011, 00:47
também eu achava que sim :S
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: senso em 04 de Março de 2011, 00:51
Experimenta meter o registo da usart, e o rxen e o txen mesmo a 0 então.
Se assim for ás tantas é por isso que o meu lcd nunca deu sinal de vida lol..
Mas se ligar um led pelo menos no atmega328p na usart, sem a ligar não faz diferença, mas esse chip é diferente..
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: Njay em 04 de Março de 2011, 01:09
Provavelmente é o teu bootloader que está a fazer enable à UART. Desliga-a na inicialização e tenta de novo...
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: metRo_ em 04 de Março de 2011, 21:04
Provavelmente é o teu bootloader que está a fazer enable à UART. Desliga-a na inicialização e tenta de novo...

Acrescentei isto e continua igual:
UCSRB = (1<<RXEN)|(1<<TXEN);

Alguma outra sugestão!
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: Njay em 04 de Março de 2011, 21:36
Acrescentei isto e continua igual:
UCSRB = (1<<RXEN)|(1<<TXEN);

Alguma outra sugestão!

Sugiro que desligues a USART :D .
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: metRo_ em 04 de Março de 2011, 21:42
Acrescentei isto e continua igual:
UCSRB = (1<<RXEN)|(1<<TXEN);

Alguma outra sugestão!

Sugiro que desligues a USART :D .

O meu problema é como!! lool Pensei que voces se referiam a isto :p
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: Njay em 04 de Março de 2011, 21:45
Colocando esses bits a zero:

UCSRB &= ~((1<<RXEN) | (1<<TXEN));
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: GnGz em 04 de Março de 2011, 21:46
Pois parecia-me que estava a ligar com esse código..
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: metRo_ em 04 de Março de 2011, 22:06
Colocando esses bits a zero:

UCSRB &= ~((1<<RXEN) | (1<<TXEN));

lool
Embora estivesse a fazer mal, colei aqui o código errado e não o que testei!
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: metRo_ em 04 de Março de 2011, 22:15
não resultou com : UCSRB &= ~((1<<RXEN) | (1<<TXEN));
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: GnGz em 04 de Março de 2011, 22:16
Não podes mostrar o código todo?
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: metRo_ em 04 de Março de 2011, 22:20
Só estou mesmo a usar aquele codigo, antes tinha o adc e coisas assim, mas depois apaguei tudo e coloquei só mesmo esse para ter a certeza que não eram outras coisas.
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: metRo_ em 04 de Março de 2011, 22:44
Há uma novidade, afinal o PD1 está a funcionar, o PD0 é que não, o piscar do PD1 tinha a ver com a contagem e nada mais!
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: metRo_ em 04 de Março de 2011, 22:47
OMG Problema na breadboard!  :-[ :-X
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: GnGz em 04 de Março de 2011, 22:49
Só podia ser de hardware, pois no código parecia tar normal... LOL mas já esta resolvido?
Título: Re: Atmega8 - Usar Rx e Tx como IO's normais
Enviado por: metRo_ em 04 de Março de 2011, 22:54
Só podia ser de hardware, pois no código parecia tar normal... LOL mas já esta resolvido?

Já, liguei o fio directo a pata do atmega e ele lá deu sinais de vida!