Problemas y soluciones

El led BOOT y el pulsador HWB son de uso exclusivo para indicar o entrar a Modo BOOT o los puedo utilizar también en Modo APP?

Si se puede utilizar en Modo APP.

He configurado el puerto C (PORTC) de salida, y USBee ha dejado de funcionar en modo APP! Parece que la CPU se hubiera congelado, que sucede?

Tal y como se indica en la hoja de datos del microcontrolador ATmega32U2, el pin PC0 del puerto C está compartido con el pin XTAL2, que es el pin donde está conectado el oscilador de USBee Duo. Debido a esto, si configuras este pin específico como salida, es muy probable que el oscilador deje de funcionar y por lo tanto USBee no pueda ejecutar instrucciones, ya que al estar bloqueado el oscilador, no existe reloj interno y por lo tanto la CPU del dispositivo pareciera no estar funcionando.  

El pin PC0 no está disponible en USBee Duo, sin embargo, en la programación de los registros pertenecientes al puerto C (DDRC, PINC, PORTC) podemos cometer errores en la asignación de valores, y erróneamente configurar este este pin. Por ejemplo, es común que si vamos a trabajar con ALGUNOS pines del puerto C como SALIDAS, y otros pines no los vamos a utilizar, se utilice esta sentencia de configuración:

 

DDRC = 0xFF;

 

Esta sentencia indica que TODOS los pines del puerto C serán SALIDAS. Esta es una mala práctica de programación, primero que todo porque ya vimos que el pin PC0 bloquea el oscilador, y segundo porque no todos los pines del puerto C están disponibles en USBee Duo (faltan los pines PC0, PC1 y PC3).

 

La recomendación es configurar los pines según el siguiente ejemplo:

Asumamos que los pines que se utilizarán como salidas son PC2 y PC5. Se utiliza la siguiente sentencia para configurar el registro DDRC:

 

DDRC |= (1<<PC2) | (1<<PC5);

 

Esta sentencia tiene la ventaja de que facilita la lectura de código (se observa claramente que los pines PC2 y PC5 son los que se están configurando), y no afecta la configuración de los demás pines del registro. El código ensamblador producido por esta sentencia es el siguiente: