I raised a question in the project guidance section but solved it myself within the hour. It's about how to set TX1 pin as gpio while receiving on RX1. I figured out the register bit to reset.http://forum.arduino.cc/index.php?topic=230319.0
This makes me think about some common arguments against Arduino, say from hackaday, from some people that prefer "bare metal". I never ever touch MCU registers. All my experience with x86 and especially 80386 architecture and registers are useless and forgotten now so why bother with AVR?! I must be considered by those people as dumbing down an AVR with Arduino because I use digitalWrite and libraries and I did hit a road block trying to use just arduino functions and languages to solve my problem.
But I did what should be done: I went in and read the HarewareSerial library code, identified approximately what commands are responsible for getting me back the gpio function of TX1, I then went and read atmel document on MEGA2560, on USART section with asm/C code example, then I understood how to set up USART "bare metal". I then went further into the document and found the name of the register (USART control status register B) and the bit (TXEN1), and reset the bit. This is exactly how I should have used arduino library code and atmel doc. I also was reminded that I/O must be mapped to SRAM address since I was reading register address (pretty low numbers). I did feel that my past life with x86 helped a tid bit but I didn't feel that arduino library and functions are preventing me from either learning or utilizing the so-called "bare metal" feature of the MCU. Instead, the library code provided me intermediate steps (of course without much comment) to reach the metal. I can see that another person, maybe a senior ECE student, only sticking to arduino libraries and functions and refusing to spend time to learn what's necessary to solve problems like the one I faced, that would be a bad example. But it's all about learning attitude. At me age, I mostly learn to solve an existing problem presented to me at work or in personal projects.
So my conclusion is: we need more instructional comments in official and contributed arduino library code to assist learning. We also need to provide learning objectives and paths to learners with the right attitude to achieve more hardware knowledge after they are comfortable with arduino environment, say with interrupts, timers, and all different registers and hardware they control. ATMEL's documents are pretty good but doesn't speak to most hobbyists. I might be able to make some video tutorials on what I learned so far, more people doing this will be quite useful as well. The arduino team can certainly host the content under learning -> advanced. Play ground is not perfect for learning.
Since arduino has made basic knowledge of MCU so easy to learn, why not making "more advanced" MCU knowledge also easy to learn and really laugh at those that thinks MCU should be difficult simply because they themselves felt it was difficult to learn in their schools.