Skip to content

Commit

Permalink
Teensylu support.
Browse files Browse the repository at this point in the history
  • Loading branch information
ErikZalm committed Feb 9, 2012
1 parent da040fd commit 9173a57
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 52 deletions.
2 changes: 1 addition & 1 deletion Marlin/Configuration.h
Expand Up @@ -171,7 +171,7 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th

//LCD and SD support
//#define ULTRA_LCD //general lcd support, also 16x2
//#define SDSUPPORT // Enable SD Card Support in Hardware Console
#define SDSUPPORT // Enable SD Card Support in Hardware Console

//#define ULTIPANEL
#ifdef ULTIPANEL
Expand Down
14 changes: 9 additions & 5 deletions Marlin/Marlin.h
Expand Up @@ -46,7 +46,11 @@

#include "WString.h"


#if MOTHERBOARD == 8 // Teensylu
#define SERIAL Serial
#else
#define SERIAL MSerial
#endif

//this is a unfinsihed attemp to removes a lot of warning messages, see:
// http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=57011
Expand All @@ -59,10 +63,10 @@
//#define MYPGM(s) (__extension__({static prog_char __c[] = (s); &__c[0];})) //this does not work but hides the warnings


#define SERIAL_PROTOCOL(x) MSerial.print(x);
#define SERIAL_PROTOCOL(x) SERIAL.print(x);
#define SERIAL_PROTOCOLPGM(x) serialprintPGM(MYPGM(x));
#define SERIAL_PROTOCOLLN(x) {MSerial.print(x);MSerial.write('\n');}
#define SERIAL_PROTOCOLLNPGM(x) {serialprintPGM(MYPGM(x));MSerial.write('\n');}
#define SERIAL_PROTOCOLLN(x) {SERIAL.print(x);SERIAL.write('\n');}
#define SERIAL_PROTOCOLLNPGM(x) {serialprintPGM(MYPGM(x));SERIAL.write('\n');}


const prog_char errormagic[] PROGMEM ="Error:";
Expand All @@ -89,7 +93,7 @@ FORCE_INLINE void serialprintPGM(const char *str)
char ch=pgm_read_byte(str);
while(ch)
{
MSerial.write(ch);
SERIAL.write(ch);
ch=pgm_read_byte(++str);
}
}
Expand Down
8 changes: 4 additions & 4 deletions Marlin/Marlin.pde
Expand Up @@ -247,7 +247,7 @@ void suicide()
void setup()
{
setup_powerhold();
MSerial.begin(BAUDRATE);
SERIAL.begin(BAUDRATE);
SERIAL_ECHO_START;
SERIAL_ECHOLNPGM(VERSION_STRING);
SERIAL_PROTOCOLLNPGM("start");
Expand Down Expand Up @@ -318,8 +318,8 @@ void loop()

void get_command()
{
while( MSerial.available() > 0 && buflen < BUFSIZE) {
serial_char = MSerial.read();
while( SERIAL.available() > 0 && buflen < BUFSIZE) {
serial_char = SERIAL.read();
if(serial_char == '\n' || serial_char == '\r' || serial_char == ':' || serial_count >= (MAX_CMD_SIZE - 1) )
{
if(!serial_count) return; //if empty line
Expand Down Expand Up @@ -1209,7 +1209,7 @@ void process_commands()
void FlushSerialRequestResend()
{
//char cmdbuffer[bufindr][100]="Resend:";
MSerial.flush();
SERIAL.flush();
SERIAL_PROTOCOLPGM("Resend:");
SERIAL_PROTOCOLLN(gcode_LastN + 1);
ClearToSend();
Expand Down
11 changes: 3 additions & 8 deletions Marlin/MarlinSerial.cpp
Expand Up @@ -23,20 +23,15 @@
#include "Marlin.h"
#include "MarlinSerial.h"

#if MOTHERBOARD != 8 // !teensylu
// this next line disables the entire HardwareSerial.cpp,
// this is so I can support Attiny series and any other chip without a uart
#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H)






#if defined(UBRRH) || defined(UBRR0H)
ring_buffer rx_buffer = { { 0 }, 0, 0 };
#endif


FORCE_INLINE void store_char(unsigned char c)
{
int i = (unsigned int)(rx_buffer.head + 1) % RX_BUFFER_SIZE;
Expand Down Expand Up @@ -324,11 +319,11 @@ void MarlinSerial::printFloat(double number, uint8_t digits)
remainder -= toPrint;
}
}

// Preinstantiate Objects //////////////////////////////////////////////////////

MarlinSerial MSerial;

MarlinSerial MSerial;

#endif // whole file
#endif //teensylu

7 changes: 3 additions & 4 deletions Marlin/MarlinSerial.h
Expand Up @@ -31,7 +31,7 @@
#define BYTE 0



#if MOTHERBOARD != 8 // ! teensylu
// Define constants and variables for buffering incoming serial data. We're
// using a ring buffer (I think), in which rx_buffer_head is the index of the
// location to which to write the next incoming character and rx_buffer_tail
Expand Down Expand Up @@ -144,8 +144,7 @@ class MarlinSerial //: public Stream
void println(void);
};

#if defined(UBRRH) || defined(UBRR0H)
extern MarlinSerial MSerial;
#endif
extern MarlinSerial MSerial;
#endif // ! teensylu

#endif
48 changes: 23 additions & 25 deletions Marlin/SdBaseFile.cpp
Expand Up @@ -18,8 +18,6 @@
* <http://www.gnu.org/licenses/>.
*/

#define SERIAL MSerial

#include "Marlin.h"
#ifdef SDSUPPORT

Expand Down Expand Up @@ -345,38 +343,38 @@ int8_t SdBaseFile::lsPrintNext( uint8_t flags, uint8_t indent) {
&& DIR_IS_FILE_OR_SUBDIR(&dir)) break;
}
// indent for dir level
for (uint8_t i = 0; i < indent; i++) MSerial.write(' ');
for (uint8_t i = 0; i < indent; i++) SERIAL.write(' ');

// print name
for (uint8_t i = 0; i < 11; i++) {
if (dir.name[i] == ' ')continue;
if (i == 8) {
MSerial.write('.');
SERIAL.write('.');
w++;
}
MSerial.write(dir.name[i]);
SERIAL.write(dir.name[i]);
w++;
}
if (DIR_IS_SUBDIR(&dir)) {
MSerial.write('/');
SERIAL.write('/');
w++;
}
if (flags & (LS_DATE | LS_SIZE)) {
while (w++ < 14) MSerial.write(' ');
while (w++ < 14) SERIAL.write(' ');
}
// print modify date/time if requested
if (flags & LS_DATE) {
MSerial.write(' ');
SERIAL.write(' ');
printFatDate( dir.lastWriteDate);
MSerial.write(' ');
SERIAL.write(' ');
printFatTime( dir.lastWriteTime);
}
// print size if requested
if (!DIR_IS_SUBDIR(&dir) && (flags & LS_SIZE)) {
MSerial.write(' ');
MSerial.print(dir.fileSize);
SERIAL.write(' ');
SERIAL.print(dir.fileSize);
}
MSerial.println();
SERIAL.println();
return DIR_IS_FILE(&dir) ? 1 : 2;
}
//------------------------------------------------------------------------------
Expand Down Expand Up @@ -947,26 +945,26 @@ void SdBaseFile::printDirName(const dir_t& dir,
for (uint8_t i = 0; i < 11; i++) {
if (dir.name[i] == ' ')continue;
if (i == 8) {
MSerial.write('.');
SERIAL.write('.');
w++;
}
MSerial.write(dir.name[i]);
SERIAL.write(dir.name[i]);
w++;
}
if (DIR_IS_SUBDIR(&dir) && printSlash) {
MSerial.write('/');
SERIAL.write('/');
w++;
}
while (w < width) {
MSerial.write(' ');
SERIAL.write(' ');
w++;
}
}
//------------------------------------------------------------------------------
// print uint8_t with width 2
static void print2u( uint8_t v) {
if (v < 10) MSerial.write('0');
MSerial.print(v, DEC);
if (v < 10) SERIAL.write('0');
SERIAL.print(v, DEC);
}
//------------------------------------------------------------------------------
/** %Print a directory date field to Serial.
Expand All @@ -985,10 +983,10 @@ static void print2u( uint8_t v) {
* \param[in] fatDate The date field from a directory entry.
*/
void SdBaseFile::printFatDate(uint16_t fatDate) {
MSerial.print(FAT_YEAR(fatDate));
MSerial.write('-');
SERIAL.print(FAT_YEAR(fatDate));
SERIAL.write('-');
print2u( FAT_MONTH(fatDate));
MSerial.write('-');
SERIAL.write('-');
print2u( FAT_DAY(fatDate));
}

Expand All @@ -1002,9 +1000,9 @@ void SdBaseFile::printFatDate(uint16_t fatDate) {
*/
void SdBaseFile::printFatTime( uint16_t fatTime) {
print2u( FAT_HOUR(fatTime));
MSerial.write(':');
SERIAL.write(':');
print2u( FAT_MINUTE(fatTime));
MSerial.write(':');
SERIAL.write(':');
print2u( FAT_SECOND(fatTime));
}
//------------------------------------------------------------------------------
Expand All @@ -1016,7 +1014,7 @@ void SdBaseFile::printFatTime( uint16_t fatTime) {
bool SdBaseFile::printName() {
char name[13];
if (!getFilename(name)) return false;
MSerial.print(name);
SERIAL.print(name);
return true;
}
//------------------------------------------------------------------------------
Expand Down Expand Up @@ -1790,4 +1788,4 @@ void (*SdBaseFile::oldDateTime_)(uint16_t& date, uint16_t& time) = 0; // NOLINT
#endif // ALLOW_DEPRECATED_FUNCTIONS


#endif
#endif
4 changes: 2 additions & 2 deletions Marlin/SdFatUtil.cpp
Expand Up @@ -48,7 +48,7 @@ int SdFatUtil::FreeRam() {
* \param[in] str Pointer to string stored in flash memory.
*/
void SdFatUtil::print_P( PGM_P str) {
for (uint8_t c; (c = pgm_read_byte(str)); str++) MSerial.write(c);
for (uint8_t c; (c = pgm_read_byte(str)); str++) SERIAL.write(c);
}
//------------------------------------------------------------------------------
/** %Print a string in flash memory followed by a CR/LF.
Expand All @@ -58,7 +58,7 @@ void SdFatUtil::print_P( PGM_P str) {
*/
void SdFatUtil::println_P( PGM_P str) {
print_P( str);
MSerial.println();
SERIAL.println();
}
//------------------------------------------------------------------------------
/** %Print a string in flash memory to Serial.
Expand Down
2 changes: 1 addition & 1 deletion Marlin/fastio.h
Expand Up @@ -1928,7 +1928,7 @@ pins

#endif

#if defined (__AVR_AT90USB1287__)
#if defined (__AVR_AT90USB1287__) || defined (__AVR_AT90USB1286__)
// SPI
#define SCK DIO9
#define MISO DIO11
Expand Down
6 changes: 4 additions & 2 deletions Marlin/stepper.cpp
Expand Up @@ -254,7 +254,7 @@ FORCE_INLINE unsigned short calc_timer(unsigned short step_rate) {
timer = (unsigned short)pgm_read_word_near(table_address);
timer -= (((unsigned short)pgm_read_word_near(table_address+2) * (unsigned char)(step_rate & 0x0007))>>3);
}
if(timer < 100) { timer = 100; MSerial.print("Steprate to high : "); MSerial.println(step_rate); }//(20kHz this should never happen)
if(timer < 100) { timer = 100; SERIAL.print("Steprate to high : "); SERIAL.println(step_rate); }//(20kHz this should never happen)
return timer;
}

Expand Down Expand Up @@ -439,7 +439,9 @@ ISR(TIMER1_COMPA_vect)


for(int8_t i=0; i < step_loops; i++) { // Take multiple steps per interrupt (For high speed moves)
MSerial.checkRx(); // Check for serial chars.
#if MOTHERBOARD != 8 // !teensylu
MSerial.checkRx(); // Check for serial chars.
#endif

#ifdef ADVANCE
counter_e += current_block->steps_e;
Expand Down

0 comments on commit 9173a57

Please sign in to comment.