collapse

* Links de Robótica

* Posts Recentes

Palavras Cruzadas por Hugu
[Hoje às 00:54]


[Projecto] Bomba Airsoft por jm_araujo
[Ontem às 16:54]


Apresentação por Tech_JA
[Ontem às 09:19]


Medir Agua que está no Poço por filjoa
[21 de Setembro de 2017, 20:58]


URGENTE - display de 7 segmentos com backpack por helderjsd
[20 de Setembro de 2017, 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[19 de Setembro de 2017, 10:20]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]

Autor Tópico: Atmega8 - Usar Rx e Tx como IO's normais  (Lida 2353 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.726
Atmega8 - Usar Rx e Tx como IO's normais
« 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?!

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.390
  • Helpdesk do sitio
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #1 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.
Avr fanboy

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.726
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #2 em: 04 de Março de 2011, 00:47 »
também eu achava que sim :S

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.390
  • Helpdesk do sitio
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #3 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..
Avr fanboy

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.088
    • Tróniquices
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #4 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...

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.726
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #5 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!

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.088
    • Tróniquices
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #6 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 .

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.726
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #7 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

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.088
    • Tróniquices
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #8 em: 04 de Março de 2011, 21:45 »
Colocando esses bits a zero:

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

Offline GnGz

  • Mini Robot
  • *
  • Mensagens: 665
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #9 em: 04 de Março de 2011, 21:46 »
Pois parecia-me que estava a ligar com esse código..

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.726
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #10 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!

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.726
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #11 em: 04 de Março de 2011, 22:15 »
não resultou com : UCSRB &= ~((1<<RXEN) | (1<<TXEN));

Offline GnGz

  • Mini Robot
  • *
  • Mensagens: 665
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #12 em: 04 de Março de 2011, 22:16 »
Não podes mostrar o código todo?

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.726
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #13 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.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.726
Re: Atmega8 - Usar Rx e Tx como IO's normais
« Responder #14 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!