collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

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

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

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
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.733
  • 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.753
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.733
  • 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.598
    • 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.753
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.598
    • 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.753
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.598
    • 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.753
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.753
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.753
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.753
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!