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
-
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:
#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?!
-
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.
-
também eu achava que sim :S
-
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..
-
Provavelmente é o teu bootloader que está a fazer enable à UART. Desliga-a na inicialização e tenta de novo...
-
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!
-
Acrescentei isto e continua igual:
UCSRB = (1<<RXEN)|(1<<TXEN);
Alguma outra sugestão!
Sugiro que desligues a USART :D .
-
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
-
Colocando esses bits a zero:
UCSRB &= ~((1<<RXEN) | (1<<TXEN));
-
Pois parecia-me que estava a ligar com esse código..
-
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!
-
não resultou com : UCSRB &= ~((1<<RXEN) | (1<<TXEN));
-
Não podes mostrar o código todo?
-
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.
-
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!
-
OMG Problema na breadboard! :-[ :-X
-
Só podia ser de hardware, pois no código parecia tar normal... LOL mas já esta resolvido?
-
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!