Teensylu support.

This commit is contained in:
Erik van der Zalm 2012-02-09 19:27:45 +01:00
parent da040fd393
commit 9173a5713b
9 changed files with 50 additions and 52 deletions

View file

@ -171,7 +171,7 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th
//LCD and SD support //LCD and SD support
//#define ULTRA_LCD //general lcd support, also 16x2 //#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 //#define ULTIPANEL
#ifdef ULTIPANEL #ifdef ULTIPANEL

View file

@ -46,7 +46,11 @@
#include "WString.h" #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: //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 // http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=57011
@ -59,10 +63,10 @@
//#define MYPGM(s) (__extension__({static prog_char __c[] = (s); &__c[0];})) //this does not work but hides the warnings //#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_PROTOCOLPGM(x) serialprintPGM(MYPGM(x));
#define SERIAL_PROTOCOLLN(x) {MSerial.print(x);MSerial.write('\n');} #define SERIAL_PROTOCOLLN(x) {SERIAL.print(x);SERIAL.write('\n');}
#define SERIAL_PROTOCOLLNPGM(x) {serialprintPGM(MYPGM(x));MSerial.write('\n');} #define SERIAL_PROTOCOLLNPGM(x) {serialprintPGM(MYPGM(x));SERIAL.write('\n');}
const prog_char errormagic[] PROGMEM ="Error:"; const prog_char errormagic[] PROGMEM ="Error:";
@ -89,7 +93,7 @@ FORCE_INLINE void serialprintPGM(const char *str)
char ch=pgm_read_byte(str); char ch=pgm_read_byte(str);
while(ch) while(ch)
{ {
MSerial.write(ch); SERIAL.write(ch);
ch=pgm_read_byte(++str); ch=pgm_read_byte(++str);
} }
} }

View file

@ -247,7 +247,7 @@ void suicide()
void setup() void setup()
{ {
setup_powerhold(); setup_powerhold();
MSerial.begin(BAUDRATE); SERIAL.begin(BAUDRATE);
SERIAL_ECHO_START; SERIAL_ECHO_START;
SERIAL_ECHOLNPGM(VERSION_STRING); SERIAL_ECHOLNPGM(VERSION_STRING);
SERIAL_PROTOCOLLNPGM("start"); SERIAL_PROTOCOLLNPGM("start");
@ -318,8 +318,8 @@ void loop()
void get_command() void get_command()
{ {
while( MSerial.available() > 0 && buflen < BUFSIZE) { while( SERIAL.available() > 0 && buflen < BUFSIZE) {
serial_char = MSerial.read(); serial_char = SERIAL.read();
if(serial_char == '\n' || serial_char == '\r' || serial_char == ':' || serial_count >= (MAX_CMD_SIZE - 1) ) if(serial_char == '\n' || serial_char == '\r' || serial_char == ':' || serial_count >= (MAX_CMD_SIZE - 1) )
{ {
if(!serial_count) return; //if empty line if(!serial_count) return; //if empty line
@ -1209,7 +1209,7 @@ void process_commands()
void FlushSerialRequestResend() void FlushSerialRequestResend()
{ {
//char cmdbuffer[bufindr][100]="Resend:"; //char cmdbuffer[bufindr][100]="Resend:";
MSerial.flush(); SERIAL.flush();
SERIAL_PROTOCOLPGM("Resend:"); SERIAL_PROTOCOLPGM("Resend:");
SERIAL_PROTOCOLLN(gcode_LastN + 1); SERIAL_PROTOCOLLN(gcode_LastN + 1);
ClearToSend(); ClearToSend();

View file

@ -23,20 +23,15 @@
#include "Marlin.h" #include "Marlin.h"
#include "MarlinSerial.h" #include "MarlinSerial.h"
#if MOTHERBOARD != 8 // !teensylu
// this next line disables the entire HardwareSerial.cpp, // this next line disables the entire HardwareSerial.cpp,
// this is so I can support Attiny series and any other chip without a uart // 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) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H)
#if defined(UBRRH) || defined(UBRR0H) #if defined(UBRRH) || defined(UBRR0H)
ring_buffer rx_buffer = { { 0 }, 0, 0 }; ring_buffer rx_buffer = { { 0 }, 0, 0 };
#endif #endif
FORCE_INLINE void store_char(unsigned char c) FORCE_INLINE void store_char(unsigned char c)
{ {
int i = (unsigned int)(rx_buffer.head + 1) % RX_BUFFER_SIZE; int i = (unsigned int)(rx_buffer.head + 1) % RX_BUFFER_SIZE;
@ -324,11 +319,11 @@ void MarlinSerial::printFloat(double number, uint8_t digits)
remainder -= toPrint; remainder -= toPrint;
} }
} }
// Preinstantiate Objects ////////////////////////////////////////////////////// // Preinstantiate Objects //////////////////////////////////////////////////////
MarlinSerial MSerial; MarlinSerial MSerial;
#endif // whole file #endif // whole file
#endif //teensylu

View file

@ -31,7 +31,7 @@
#define BYTE 0 #define BYTE 0
#if MOTHERBOARD != 8 // ! teensylu
// Define constants and variables for buffering incoming serial data. We're // 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 // 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 // location to which to write the next incoming character and rx_buffer_tail
@ -144,8 +144,7 @@ class MarlinSerial //: public Stream
void println(void); void println(void);
}; };
#if defined(UBRRH) || defined(UBRR0H) extern MarlinSerial MSerial;
extern MarlinSerial MSerial; #endif // ! teensylu
#endif
#endif #endif

View file

@ -18,8 +18,6 @@
* <http://www.gnu.org/licenses/>. * <http://www.gnu.org/licenses/>.
*/ */
#define SERIAL MSerial
#include "Marlin.h" #include "Marlin.h"
#ifdef SDSUPPORT #ifdef SDSUPPORT
@ -345,38 +343,38 @@ int8_t SdBaseFile::lsPrintNext( uint8_t flags, uint8_t indent) {
&& DIR_IS_FILE_OR_SUBDIR(&dir)) break; && DIR_IS_FILE_OR_SUBDIR(&dir)) break;
} }
// indent for dir level // 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 // print name
for (uint8_t i = 0; i < 11; i++) { for (uint8_t i = 0; i < 11; i++) {
if (dir.name[i] == ' ')continue; if (dir.name[i] == ' ')continue;
if (i == 8) { if (i == 8) {
MSerial.write('.'); SERIAL.write('.');
w++; w++;
} }
MSerial.write(dir.name[i]); SERIAL.write(dir.name[i]);
w++; w++;
} }
if (DIR_IS_SUBDIR(&dir)) { if (DIR_IS_SUBDIR(&dir)) {
MSerial.write('/'); SERIAL.write('/');
w++; w++;
} }
if (flags & (LS_DATE | LS_SIZE)) { if (flags & (LS_DATE | LS_SIZE)) {
while (w++ < 14) MSerial.write(' '); while (w++ < 14) SERIAL.write(' ');
} }
// print modify date/time if requested // print modify date/time if requested
if (flags & LS_DATE) { if (flags & LS_DATE) {
MSerial.write(' '); SERIAL.write(' ');
printFatDate( dir.lastWriteDate); printFatDate( dir.lastWriteDate);
MSerial.write(' '); SERIAL.write(' ');
printFatTime( dir.lastWriteTime); printFatTime( dir.lastWriteTime);
} }
// print size if requested // print size if requested
if (!DIR_IS_SUBDIR(&dir) && (flags & LS_SIZE)) { if (!DIR_IS_SUBDIR(&dir) && (flags & LS_SIZE)) {
MSerial.write(' '); SERIAL.write(' ');
MSerial.print(dir.fileSize); SERIAL.print(dir.fileSize);
} }
MSerial.println(); SERIAL.println();
return DIR_IS_FILE(&dir) ? 1 : 2; return DIR_IS_FILE(&dir) ? 1 : 2;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -947,26 +945,26 @@ void SdBaseFile::printDirName(const dir_t& dir,
for (uint8_t i = 0; i < 11; i++) { for (uint8_t i = 0; i < 11; i++) {
if (dir.name[i] == ' ')continue; if (dir.name[i] == ' ')continue;
if (i == 8) { if (i == 8) {
MSerial.write('.'); SERIAL.write('.');
w++; w++;
} }
MSerial.write(dir.name[i]); SERIAL.write(dir.name[i]);
w++; w++;
} }
if (DIR_IS_SUBDIR(&dir) && printSlash) { if (DIR_IS_SUBDIR(&dir) && printSlash) {
MSerial.write('/'); SERIAL.write('/');
w++; w++;
} }
while (w < width) { while (w < width) {
MSerial.write(' '); SERIAL.write(' ');
w++; w++;
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// print uint8_t with width 2 // print uint8_t with width 2
static void print2u( uint8_t v) { static void print2u( uint8_t v) {
if (v < 10) MSerial.write('0'); if (v < 10) SERIAL.write('0');
MSerial.print(v, DEC); SERIAL.print(v, DEC);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/** %Print a directory date field to Serial. /** %Print a directory date field to Serial.
@ -985,10 +983,10 @@ static void print2u( uint8_t v) {
* \param[in] fatDate The date field from a directory entry. * \param[in] fatDate The date field from a directory entry.
*/ */
void SdBaseFile::printFatDate(uint16_t fatDate) { void SdBaseFile::printFatDate(uint16_t fatDate) {
MSerial.print(FAT_YEAR(fatDate)); SERIAL.print(FAT_YEAR(fatDate));
MSerial.write('-'); SERIAL.write('-');
print2u( FAT_MONTH(fatDate)); print2u( FAT_MONTH(fatDate));
MSerial.write('-'); SERIAL.write('-');
print2u( FAT_DAY(fatDate)); print2u( FAT_DAY(fatDate));
} }
@ -1002,9 +1000,9 @@ void SdBaseFile::printFatDate(uint16_t fatDate) {
*/ */
void SdBaseFile::printFatTime( uint16_t fatTime) { void SdBaseFile::printFatTime( uint16_t fatTime) {
print2u( FAT_HOUR(fatTime)); print2u( FAT_HOUR(fatTime));
MSerial.write(':'); SERIAL.write(':');
print2u( FAT_MINUTE(fatTime)); print2u( FAT_MINUTE(fatTime));
MSerial.write(':'); SERIAL.write(':');
print2u( FAT_SECOND(fatTime)); print2u( FAT_SECOND(fatTime));
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -1016,7 +1014,7 @@ void SdBaseFile::printFatTime( uint16_t fatTime) {
bool SdBaseFile::printName() { bool SdBaseFile::printName() {
char name[13]; char name[13];
if (!getFilename(name)) return false; if (!getFilename(name)) return false;
MSerial.print(name); SERIAL.print(name);
return true; return true;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------

View file

@ -48,7 +48,7 @@ int SdFatUtil::FreeRam() {
* \param[in] str Pointer to string stored in flash memory. * \param[in] str Pointer to string stored in flash memory.
*/ */
void SdFatUtil::print_P( PGM_P str) { 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. /** %Print a string in flash memory followed by a CR/LF.
@ -58,7 +58,7 @@ void SdFatUtil::print_P( PGM_P str) {
*/ */
void SdFatUtil::println_P( PGM_P str) { void SdFatUtil::println_P( PGM_P str) {
print_P( str); print_P( str);
MSerial.println(); SERIAL.println();
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/** %Print a string in flash memory to Serial. /** %Print a string in flash memory to Serial.

View file

@ -1928,7 +1928,7 @@ pins
#endif #endif
#if defined (__AVR_AT90USB1287__) #if defined (__AVR_AT90USB1287__) || defined (__AVR_AT90USB1286__)
// SPI // SPI
#define SCK DIO9 #define SCK DIO9
#define MISO DIO11 #define MISO DIO11

View file

@ -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);
timer -= (((unsigned short)pgm_read_word_near(table_address+2) * (unsigned char)(step_rate & 0x0007))>>3); 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; return timer;
} }
@ -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) for(int8_t i=0; i < step_loops; i++) { // Take multiple steps per interrupt (For high speed moves)
#if MOTHERBOARD != 8 // !teensylu
MSerial.checkRx(); // Check for serial chars. MSerial.checkRx(); // Check for serial chars.
#endif
#ifdef ADVANCE #ifdef ADVANCE
counter_e += current_block->steps_e; counter_e += current_block->steps_e;