Compare commits

...

4558 Commits

Author SHA1 Message Date
Scott Lahteine
dee6322bf0 Merged 1.1.0-RC6 Version changes 2016-04-24 20:34:42 -07:00
Scott Lahteine
df2d0eb37c Merge pull request #3608 from thinkyhead/rcbugfix_merge_rc
Merge RC => RCBugFix changes since RC5
2016-04-24 20:28:25 -07:00
esenapaj
db56ff5881 follow-up to commit 200b248(Update README.md)
follow-up to commit 200b2487c2

Update release date in another place
2016-04-24 20:16:37 -07:00
Jochen Groppe
0ed43ec34b Update README.md
Oops! at least 1.6.0
2016-04-24 20:16:37 -07:00
Jochen Groppe
b899338c32 Update README.md
* Description for RC5
* Hint for deprecated Arduino versions
2016-04-24 20:16:36 -07:00
Scott Lahteine
30c9893be7 Updated README.md 2016-04-24 19:59:52 -07:00
Scott Lahteine
735f1f5bfa Merge pull request #3606 from thinkyhead/rc_step_sec_comments
Patch steps rate comment in trapezoid function
2016-04-24 19:48:41 -07:00
Scott Lahteine
fce1e843b9 Patch steps rate comment in trapezoid function 2016-04-24 19:38:58 -07:00
Scott Lahteine
8757463b46 Apply RC6 label to the version 2016-04-24 19:33:26 -07:00
Scott Lahteine
266ae90861 Merge pull request #3594 from jbrazio/feature/rework-versioning
Rework Marlin's versioning system
2016-04-24 17:42:45 -07:00
João Brázio
aa7a65e613 Updated travis config 2016-04-24 05:57:14 +01:00
João Brázio
7de0161204 Updated example config files 2016-04-24 05:21:17 +01:00
João Brázio
3b6f75511f Updated multiple pins files 2016-04-24 05:21:17 +01:00
João Brázio
170f7e8a45 Rework Marlin's versioning system 2016-04-24 05:21:17 +01:00
Scott Lahteine
c86d092ef3 Merge pull request #3598 from esenapaj/patch1
Cleanup for language files
2016-04-22 21:55:42 -07:00
esenapaj
8d0b2f358a Cleanup for language files
・Remove abolished strings (MSG_NOZZLE1, MSG_NOZZLE2)
・Remove duplicated strings 
・Arrange the strings in unified order
・Adjust spacing
・Remove some comments in Japanese files(follow-up the PR #3560)

The most part of these changes were salvaged from closed my PR#3550.
2016-04-23 13:27:05 +09:00
Scott Lahteine
2bb56ef6de Merge pull request #3597 from thinkyhead/rc_fix_g29_debug
Move G29 debug output before matrix.set_to_identity()
2016-04-22 21:21:00 -07:00
João Brázio
a901555da4 Moved G29 debug output before matrix.set_to_identity() 2016-04-22 20:57:22 -07:00
Scott Lahteine
d28db67ca9 Merge pull request #3596 from thinkyhead/rc_fix_typo_in_mbl
Fix a typo in #3586 to fix MBL
2016-04-22 20:16:28 -07:00
Scott Lahteine
88c6693b9e Fix a typo in #3586 to fix MBL 2016-04-22 20:04:08 -07:00
Scott Lahteine
8620024130 Merge pull request #3588 from thinkyhead/rc_z_safe_homing_deps
Allow Z_SAFE_HOMING to compile without a probe
2016-04-21 17:51:18 -07:00
Scott Lahteine
aaf9d19954 Allow Z_SAFE_HOMING to compile without a probe 2016-04-21 15:55:49 -07:00
Scott Lahteine
92ab2c7dd8 Merge pull request #3587 from thinkyhead/rc_z_safe_homing_deps
Define dependencies for Z_SAFE_HOMING if left out
2016-04-21 15:46:24 -07:00
Scott Lahteine
63142eef40 Define dependencies for Z_SAFE_HOMING if left out 2016-04-21 15:22:19 -07:00
Scott Lahteine
173334e535 Merge pull request #3418 from jbrazio/translate/danish
Missing Danish translation
2016-04-21 14:56:43 -07:00
João Brázio
fe4fc88494 Closes #3351: missing Danish translation 2016-04-21 21:31:47 +01:00
Scott Lahteine
ce141deba2 Merge pull request #3586 from thinkyhead/rc_revert_mbl_menu_hack
Revert MBL menus to "known" working point
2016-04-21 13:30:08 -07:00
Scott Lahteine
003aab6dfd Revert MBL menus to "known" working point 2016-04-21 12:59:55 -07:00
Scott Lahteine
6fac4d9211 Merge pull request #3579 from thinkyhead/rc_fix_dogm_and_mbl_menus
Fix menu redraw for DOGLCD, improve MBL
2016-04-20 20:52:56 -07:00
Scott Lahteine
7ddaa79ffe Merge pull request #3578 from thinkyhead/rc_fix_twibus_less_debug_code
Reduce PROGMEM usage by TWIBus, stopwatch
2016-04-20 20:52:16 -07:00
Scott Lahteine
cfd10fcba1 Merge pull request #3577 from thinkyhead/rc_fix_G92_set_e_twice
Fix G92 setting E twice
2016-04-20 20:52:09 -07:00
Scott Lahteine
fa81b01033 Merge pull request #3576 from thinkyhead/rc_heres_your_z_safe_homing
Z Safe Homing for all
2016-04-20 20:52:01 -07:00
Scott Lahteine
dc2281d2f4 Add nextMenu, nextEncoderPosition to change menus after handler loop 2016-04-20 20:19:12 -07:00
Scott Lahteine
7fa2bda1b9 Give the "alive dot" its own blink 2016-04-20 18:57:17 -07:00
Scott Lahteine
9d5e1f32fd Use axis_homed in _lcd_level_bed_homing, item in Prepare before homing 2016-04-20 18:53:33 -07:00
Scott Lahteine
0c2aa92b07 Z Safe Homing for all
The `Z_SAFE_HOMING` feature is coupled with probes and not leveling, so
make it available for general use.
2016-04-20 17:04:52 -07:00
Scott Lahteine
9bcb72e7f8 Further patches to MBL - break up into more handlers 2016-04-20 16:37:35 -07:00
Scott Lahteine
3f6ae85748 Fix some MBL display issues for DOGLCD 2016-04-20 16:36:45 -07:00
Scott Lahteine
71b4f189bf lcd_implementation_drawedit can take 1 arg 2016-04-20 16:36:45 -07:00
Scott Lahteine
1caa2628da Use sync_plan_position_e function elsewhere 2016-04-20 13:02:19 -07:00
Scott Lahteine
c7df961144 Fix G92 so it only sets the plan position once 2016-04-20 13:01:58 -07:00
Scott Lahteine
1addb50b62 Shrink debug code in TWIBus and disable by default 2016-04-20 12:44:30 -07:00
Scott Lahteine
21a6b66807 Shrink debug code in Stopwatch and disable by default 2016-04-20 12:44:30 -07:00
Scott Lahteine
e523a0dc61 Fix bug in TWIBus ctor declaration 2016-04-20 12:37:46 -07:00
Scott Lahteine
ee9bd66a68 Add comments to debug bit flags 2016-04-20 12:37:22 -07:00
Scott Lahteine
3db5a75f30 Merge pull request #3568 from thinkyhead/rc_various_fixes
General code cleanup, improved naming, etc.
2016-04-19 20:53:38 -07:00
Scott Lahteine
8a2587f017 Read size for MAX6675 from sizeof(max6675_temp) 2016-04-19 19:57:32 -07:00
Scott Lahteine
ac69fad96d lowercase "stop" function 2016-04-19 19:43:54 -07:00
Scott Lahteine
39ee9c526b setTargetedHotend => get_target_extruder_from_command 2016-04-19 19:43:54 -07:00
Scott Lahteine
cafa8b8ce3 Rename filament runout items 2016-04-19 19:43:39 -07:00
Scott Lahteine
27b2e2e786 Document some variables 2016-04-19 19:43:39 -07:00
Scott Lahteine
a4062a47ac Rename baricuda variables 2016-04-19 19:43:38 -07:00
Scott Lahteine
78747b1328 min_pos/max_pos => sw_endstop_min/sw_endstop_max 2016-04-19 19:43:38 -07:00
Scott Lahteine
3b0bf88233 Merge pull request #3571 from thinkyhead/rc_m303_with_pidtempbed
Allow setting PIDTEMP and PIDTEMPBED together or apart
2016-04-19 18:26:59 -07:00
Scott Lahteine
ba84d8d091 Allow setting PIDTEMP and PIDTEMPBED together or apart 2016-04-19 18:09:29 -07:00
Scott Lahteine
5cb8ec68ae Merge pull request #3566 from thinkyhead/rc_babystep_show_steps
Show steps done in the babystep display
2016-04-18 21:52:55 -07:00
Scott Lahteine
3083ee49f3 Merge pull request #3567 from thinkyhead/rc_mf_bash_scripts
Git helper shell scripts for MarlinFirmware
2016-04-18 21:41:24 -07:00
Scott Lahteine
00d36d10e2 Merge pull request #3560 from thinkyhead/rc_better_graphical_lcd
Aesthetic, functional improvements for Graphical Display
2016-04-18 21:38:02 -07:00
Scott Lahteine
dd94ce5bd5 Merge pull request #3565 from thinkyhead/rc_look_at_3563
Output error message for M303 if PIDTEMP is disabled
2016-04-18 21:22:50 -07:00
Scott Lahteine
9a12054e0e Git helper shell scripts for MarlinFirmware 2016-04-18 21:18:35 -07:00
Scott Lahteine
4f04bf7fe8 Show steps done in the babystep display 2016-04-18 20:52:38 -07:00
Scott Lahteine
d988708ceb Merge pull request #3559 from esenapaj/patch-1
Update and change Japanese translation
2016-04-18 20:17:54 -07:00
Scott Lahteine
026ae8f2f0 Call lcd_setFont only when needed 2016-04-18 20:09:04 -07:00
Scott Lahteine
90c97c8185 Add _draw_axis_label function to reduce source 2016-04-18 20:09:04 -07:00
Scott Lahteine
34b17d4a8a Reduce heater status code if no bed 2016-04-18 20:09:04 -07:00
Scott Lahteine
fc30aa9d88 Aesthetic and functional improvements for graphical LCD 2016-04-18 20:09:04 -07:00
Scott Lahteine
b281001329 Use MSG_X, etc., on Hitachi LCD 2016-04-18 20:09:04 -07:00
Scott Lahteine
f90a8661cb Uppercase XYZE on Graphical LCD 2016-04-18 20:09:03 -07:00
Scott Lahteine
3613c550fa Rename README file for fonts 2016-04-18 20:09:03 -07:00
esenapaj
1110814ecf Update and change Japanese translation
Update and change Japanese translation

・Follow-up the PR #3411(Update Readme.fonts about Kana), Remove "who really..." strings. I had forgotten it.
・Add readable translated strings in comment
・Add Japanese translation.
  MSG_LCD_ENDSTOPS "エンドストップ"
  (utf8 version only. Because non-utf8 version ("エンドストップ") over 8 characters)
・Change translation.
  MSG_ACC "カソクド mm/s2"
  MSG_ACC "\xb6\xbf\xb8\xc4\xde mm/s2" ("カソクド mm/s2")
2016-04-19 11:28:26 +09:00
Scott Lahteine
a26d70e932 Apply indentation to gcode_M303, PID_autotune 2016-04-18 19:04:45 -07:00
Scott Lahteine
ba66336503 Output error for disabled M303 2016-04-18 19:03:45 -07:00
Scott Lahteine
eda821ca1c Merge pull request #3556 from philfifi/fix_pullup
Fix bug in pullups handling for Z_MIN_PROBE
2016-04-18 18:04:26 -07:00
Scott Lahteine
25b1556a94 Merge pull request #3552 from tnw513/fix_endstops_witbox
Endstop settings modified (witbox). Issue #3547
2016-04-18 18:03:22 -07:00
Scott Lahteine
3479a07cb5 Merge pull request #3546 from thinkyhead/rc_oxivanisher_kossel_config
Update Kossel XL config for 1.1.x
2016-04-18 17:59:12 -07:00
Scott Lahteine
2bc2485313 Update font remarks in Conditionals.h 2016-04-18 17:33:41 -07:00
Philippe LUC
86c868771b Fix bug in pullups handling for Z_MIN_PROBE 2016-04-18 21:16:23 +02:00
Silvio Didonna
91de69bb6e Endstop settings modified. Witbox have max endstops for X and Y. 2016-04-18 16:46:19 +02:00
Scott Lahteine
f2558b1f2c Additional delta config updates 2016-04-17 20:04:52 -07:00
Marc Urben
9a661bdd59 Updated Kossel XL config files for the latest Marlin 2016-04-17 20:04:19 -07:00
Scott Lahteine
09c6323b68 Merge pull request #3543 from thinkyhead/rc_better_bootscreen
Better splash screen consolidation
2016-04-17 17:20:13 -07:00
Scott Lahteine
5905ec5ba8 Merge pull request #3541 from thinkyhead/rc_mbl_one_last_lift
Add a final lift, if configured, in Manual Bed Leveling
2016-04-17 17:20:02 -07:00
Scott Lahteine
af1711365b Merge pull request #3538 from jbrazio/bugfix/endtop-hit-redeclared
_ENDSTOP_HIT redeclared
2016-04-17 17:12:56 -07:00
Scott Lahteine
daade35253 Merge pull request #3544 from manianac/RCBugFix
Fixed Positional_Shift array overrun
2016-04-17 17:07:29 -07:00
Scott Lahteine
ed622ac796 Better splash screen consolidator 2016-04-17 17:06:07 -07:00
Jeff K
90c49f5a14 Fixed invalid addressing (overflow) of position_shift / software endstops
Signed-off-by: Jeff K
2016-04-17 19:28:50 -04:00
João Brázio
bcf1e027bb Fix the redeclaration of _ENDSTOP_HIT 2016-04-17 18:37:37 +01:00
Scott Lahteine
c242bee449 Add a final lift, if configured, in Manual Bed Leveling 2016-04-17 00:12:46 -07:00
Scott Lahteine
b6227932f5 Merge pull request #3530 from thinkyhead/rc_set_rcbugfix_for_now
Set version for RCBugFix
2016-04-16 21:40:55 -07:00
Scott Lahteine
19741a0ba6 Merge pull request #3503 from thinkyhead/rc_lcd_endstop_msg
Show all endstops on LCD in checkHitEndstops
2016-04-16 21:32:25 -07:00
Scott Lahteine
7aaff371b0 Set version for RCBugFix 2016-04-16 21:30:52 -07:00
Scott Lahteine
db86aaf385 Merge pull request #3528 from thinkyhead/rc_fix_bed_level_equation_oopsie
Fix borked set_bed_level_equation_lsq
2016-04-16 21:01:06 -07:00
Scott Lahteine
5847738bf9 Merge pull request #3527 from thinkyhead/rc_sd_readblock_cleanup
Improve code in Sd2Card::readBlock
2016-04-16 20:50:37 -07:00
Scott Lahteine
837df6108c Fix borked set_bed_level_equation_lsq 2016-04-16 20:35:42 -07:00
Scott Lahteine
7c16e774ca Show all endstops on LCD in checkHitEndstops 2016-04-16 20:08:42 -07:00
Scott Lahteine
40050db210 Improve code in Sd2Card::readBlock 2016-04-16 20:03:39 -07:00
Scott Lahteine
8429ae6beb Merge pull request #3525 from thinkyhead/rc_fix_pid_params_per_extruder
Fix broken PID_PARAMS_PER_EXTRUDER
2016-04-16 19:49:42 -07:00
Scott Lahteine
c7353d7929 Merge pull request #3526 from thinkyhead/rc_lcd_config_comments
Configuration.h LCD & SDCard section rewrite
2016-04-16 19:39:53 -07:00
Scott Lahteine
339b5b3e34 Patch more configs with new changes 2016-04-16 19:35:02 -07:00
Scott Lahteine
ef2fd620e9 Suggested fixups for LCD/SD config comments 2016-04-16 19:35:02 -07:00
João Brázio
7b5d6ba315 Rebase & feedback 2016-04-16 19:35:02 -07:00
João Brázio
d7cc2c0847 Moved some conditionals to Conditionals.h 2016-04-16 19:32:41 -07:00
João Brázio
36a49eab1c Improved the LCD and SD comments blocks in Configuration.h 2016-04-16 19:32:41 -07:00
Scott Lahteine
d4a848c72a Fix broken PID_PARAMS_PER_EXTRUDER
As noted by @FalloutBe in #3519
2016-04-16 19:19:40 -07:00
Scott Lahteine
0fc84b75f4 Merge pull request #3522 from esenapaj/patch-1
Follow-up and fix for the PR #3453(ELAPSED / PENDING for rollover-safe time checking)
2016-04-16 19:03:27 -07:00
Scott Lahteine
04fdb4de7d Merge pull request #3524 from thinkyhead/rc_fix_mbl_oopsie_1
Oops! Fix MBL move Z to MESH_HOME_SEARCH_Z between probes
2016-04-16 18:47:32 -07:00
Scott Lahteine
4b75b11a53 Wrap defines in parentheses in configs, M48 2016-04-16 18:21:09 -07:00
esenapaj
832e1c1f2a Follow-up and fix for the PR #3453(ELAPSED / PENDING for rollover-safe time checking)
・Add more "UL" suffix
・Restore removed "UL" suffix
2016-04-17 07:50:02 +09:00
Scott Lahteine
234987ee2f Fix MBL lift 2016-04-16 14:17:06 -07:00
Scott Lahteine
a5452902a6 Merge pull request #3516 from thinkyhead/rc_lcd_alert_only_on_error
Don't use LCD alert unless error or alert level is reset later
2016-04-15 19:56:24 -07:00
Scott Lahteine
e0830bf8f1 Don't use LCD alert unless error or alert level is reset later 2016-04-15 18:48:49 -07:00
Scott Lahteine
773229b020 Merge pull request #3515 from thinkyhead/rc_wider_splash
On wider screens show a wider splash page, if possible
2016-04-15 17:26:01 -07:00
Scott Lahteine
86467c24be On wider screens show a wider splash page, if possible 2016-04-15 16:42:29 -07:00
Scott Lahteine
a8e4d7c135 Merge pull request #3477 from alephobjects/BedTempHysteresis
Implementation of M190 bed temp hysteresis
2016-04-15 16:20:58 -07:00
Scott Lahteine
e06931495a Merge pull request #3514 from esenapaj/patch-1
Fix for PR #3502(General cleanup of arc code)
2016-04-15 16:14:04 -07:00
esenapaj
5ecd75eeb3 Fix for PR #3502(General cleanup of arc code) 2016-04-16 07:22:07 +09:00
gralco
8ec8d59df8 Use #if TEMP_RESIDENCY_TIME > 0 rather than #ifdef TEMP_RESIDENCY_TIME 2016-04-15 11:20:32 -06:00
Scott Lahteine
404c36c3bd Merge pull request #3505 from thinkyhead/rc_more_than_this
Fix minor spelling in comments
2016-04-14 21:42:32 -07:00
Scott Lahteine
1cc622b167 Fix minor spelling in comments 2016-04-14 20:06:59 -07:00
Scott Lahteine
866c5be395 Merge pull request #3500 from thinkyhead/rc_shrink_menu_macros
Reduce redundancy in MENU_ITEM code
2016-04-14 19:09:14 -07:00
Scott Lahteine
6e52b0b723 Merge pull request #3504 from thinkyhead/rc_fix_debugging
Fix debugging of vector_3
2016-04-14 19:08:30 -07:00
Scott Lahteine
88367a37f7 Merge pull request #3227 from thinkyhead/rc_home_offsets_and_limits
Relating current_position, min_pos, max_pos, and home_offset
2016-04-14 18:50:43 -07:00
Scott Lahteine
b20bf1826d Fix debugging of vector_3 2016-04-14 18:45:26 -07:00
Scott Lahteine
4fb8013be1 Reduce redundancy in MENU_ITEM code 2016-04-14 18:42:06 -07:00
Scott Lahteine
b243844690 Merge pull request #3502 from thinkyhead/rc_fix_arcs_bugs
General cleanup of arc code
2016-04-14 18:19:44 -07:00
Scott Lahteine
f2abfd6d48 Merge pull request #3501 from thinkyhead/rc_config_comment_cleanup
Update some comments in Configuration.h
2016-04-14 18:19:29 -07:00
Scott Lahteine
5da7de8431 Merge pull request #3488 from thinkyhead/rc_more_manual_level_fix
Mesh Bed Leveling – Add lift between probes, comments, cleanup
2016-04-14 17:59:16 -07:00
Scott Lahteine
2129db581e Simplify MBL movement, zigzag 2016-04-14 16:58:42 -07:00
Scott Lahteine
0493fccc0b mbl.active is a bool now 2016-04-14 16:58:42 -07:00
Scott Lahteine
b05f448317 Comments on MBL menu items 2016-04-14 16:58:42 -07:00
Scott Lahteine
e08dd0d831 Merge pull request #3498 from thinkyhead/rc_preheat_abs_both_3489
Fix bug in lcd_preheat_pla0123 and lcd_preheat_abs0123
2016-04-14 16:57:38 -07:00
Scott Lahteine
9e95f30de0 Merge pull request #3495 from jbrazio/bugfix/followup-3485
Throw an error if ENCODER_PULSES_PER_STEP < -1
2016-04-14 16:56:36 -07:00
Scott Lahteine
8e5099fa0c Update software endstop positions with M206, M428, G92, etc. 2016-04-14 16:47:22 -07:00
Scott Lahteine
5cfb2533d6 Initial cleaning up of arc code 2016-04-14 16:43:49 -07:00
Scott Lahteine
de8c0baf8b Update some comments in Configuration.h 2016-04-14 16:41:20 -07:00
Scott Lahteine
fda8f96f00 Fix bug in lcd_preheat_pla0123 and lcd_preheat_abs0123
Trying to preheat a non-existent extruder causes a crash.
2016-04-14 15:48:43 -07:00
João Brázio
9a3f676709 Throw an error if ENCODER_PULSES_PER_STEP < -1 2016-04-14 16:20:17 +01:00
gralco
69c00aea4c Include bed hysteresis setting in the example configs 2016-04-14 08:03:38 -06:00
Scott Lahteine
9ce4264fda Merge pull request #3490 from thinkyhead/rc_mbl_adjustments
Document some movement functions, rename a local
2016-04-13 20:55:20 -07:00
Scott Lahteine
f8e10ff1d8 Merge pull request #3491 from thinkyhead/rc_mechanical_probe
Support for "mechanical probe" with Allen Key as a special case
2016-04-13 20:55:14 -07:00
Scott Lahteine
50d083c3e6 Merge pull request #3492 from thinkyhead/rc_config_comment_cleanup
Update some comments in Configuration.h
2016-04-13 20:55:09 -07:00
Scott Lahteine
7eb476597f Update some comments in Configuration.h 2016-04-13 20:34:42 -07:00
esenapaj
2eb1b102f8 Support for "mechanical probe" with Allen Key as a special case 2016-04-13 20:34:12 -07:00
Scott Lahteine
cfcd3d7b3e Rename z_offset local to zoffset 2016-04-13 20:09:20 -07:00
Scott Lahteine
5fd20ecac3 Comments on some movement functions 2016-04-13 20:09:20 -07:00
Scott Lahteine
c1b953d38f Merge pull request #3487 from thinkyhead/rc_redo_esenpaj_3479
Apply esenapaj 3479 and delta/scara position bugfix
2016-04-13 18:11:33 -07:00
Scott Lahteine
bb56b1e74c Merge pull request #3435 from thinkyhead/rc_lcd_leveling_home_etc
More fine-grained control of LCD redraw
2016-04-13 17:59:19 -07:00
Scott Lahteine
a781a6f955 Apply esenapaj 3479 and delta/scara position bugfix 2016-04-13 17:41:20 -07:00
Scott Lahteine
2ae7394640 More fine-grained control of LCD redraw 2016-04-12 21:34:34 -07:00
Scott Lahteine
525d8256d4 Merge pull request #3481 from thinkyhead/rc_extruder_offset_array
Fix: gcode_T using non-existent Z offset
2016-04-12 18:23:08 -07:00
Scott Lahteine
b9301e6c62 Merge pull request #3482 from thinkyhead/rc_fix_HAS_Z_MIN_PROBE
Patch conditions for HAS_Z_MIN_PROBE
2016-04-12 18:23:02 -07:00
Scott Lahteine
dc0a3e37be Patch conditions for HAS_Z_MIN_PROBE 2016-04-12 18:11:36 -07:00
Scott Lahteine
46881c846c Add comments for extruder offset options 2016-04-12 17:16:58 -07:00
Scott Lahteine
edf376ce0d Fix: gcode_T using non-existent Z offset
As noted by @snowzach in #3461
2016-04-12 17:15:10 -07:00
gralco
178aeb79c8 Implementation of M190 bed temp hysteresis 2016-04-12 08:56:14 -06:00
Scott Lahteine
0439483bc8 Merge pull request #3476 from thinkyhead/rc_debug_leveling_gcode_t
Add DEBUG_LEVELING output for gcode_T
2016-04-11 21:03:15 -07:00
Scott Lahteine
c03e5f5efd Merge pull request #3475 from thinkyhead/rc_language_cleanup
General cleanup of language files
2016-04-11 20:50:57 -07:00
Scott Lahteine
910d3648bb Merge pull request #3474 from thinkyhead/rc_russian_apr2016
Additional Russian translations
2016-04-11 20:50:50 -07:00
Scott Lahteine
63d8893f5d Add DEBUG_LEVELING output for gcode_T 2016-04-11 20:45:10 -07:00
Scott Lahteine
081cfc5cf3 Merge pull request #3472 from thinkyhead/fix_issue_3375
Initialize stepper counts for Delta/SCARA
2016-04-11 19:59:12 -07:00
Scott Lahteine
fe0fe184aa Replace some tabs with spaces 2016-04-11 19:42:20 -07:00
Scott Lahteine
e773d081c0 General language file cleanup 2016-04-11 19:42:09 -07:00
Scott Lahteine
b63c79b5ff Merge pull request #3473 from thinkyhead/rc_one_more_elapse
Fix a messed up ELAPSED instance
2016-04-11 19:30:59 -07:00
Scott Lahteine
068bc980ce Additional Russian translations
Thanks to @gans-AD – #3363
2016-04-11 19:30:14 -07:00
Scott Lahteine
f840c7de4d Initialize stepper counts for Delta/SCARA 2016-04-11 19:02:35 -07:00
Scott Lahteine
c5a8755cc0 Fix a messed up ELAPSED instance 2016-04-11 18:48:27 -07:00
Scott Lahteine
bc33016efc Merge pull request #3471 from thinkyhead/rc_follow_3431
Fix Deutsch string errors, redundancies
2016-04-11 18:46:50 -07:00
Scott Lahteine
81918657f4 Fix Deutsch string errors, redundancies 2016-04-11 18:12:32 -07:00
Scott Lahteine
56acaf3594 Merge pull request #3469 from thinkyhead/rc_aleph_cooldownfix
Fix for M109 and M190 cooldown
2016-04-11 18:01:01 -07:00
gralco
c218db136a Fix for M109 and M190 cooldown
Also removes the re-definition of now inside M190's while loop
2016-04-11 17:12:23 -07:00
Scott Lahteine
e2a197ab71 Merge pull request #3467 from AnHardt/Fix-Servo-without-endstop-probe
Fix-Servo-without-endstop/probe
2016-04-11 17:04:54 -07:00
Scott Lahteine
3a1ac14bbc Merge pull request #3437 from thinkyhead/rc_lcd_encoder_movement
More bits when encoderPosition is cast as signed
2016-04-11 17:03:23 -07:00
Scott Lahteine
c5a2ce4366 Merge pull request #3446 from thinkyhead/rc_fixup_M206_and_mesh
Fix home_offset handling and account for it in G29
2016-04-11 16:49:01 -07:00
Scott Lahteine
b1bb1c7989 Merge pull request #3466 from thinkyhead/rc_look_for_leveling_bug
Add CORE support to st_set_position and plan_set_position
2016-04-11 16:45:00 -07:00
AnHardt
9cc571b312 Fix-Servo-without-endstop-probe
Sorry for not having realized someone (me) redefined not existing servo pinns to -1, some lines above.
This is a simple error - not a feature.
2016-04-12 01:01:11 +02:00
Scott Lahteine
3e5312f116 CORE support for st_set_position & plan_set_position 2016-04-11 15:13:42 -07:00
Scott Lahteine
e087a99a10 Some cleanup of st_get_pos functions 2016-04-11 15:13:42 -07:00
Roxy-3DPrintBoard
47e3564bbd Merge pull request #3462 from jbrazio/bugfix/old-ide-warning-followup
Versions of Arduino IDE prior to 1.6.0 are no longer supported
2016-04-11 15:58:05 -05:00
João Brázio
ca6c6ec4ca Versions of Arduino IDE prior to 1.6.0 are no longer supported 2016-04-11 19:03:06 +01:00
Scott Lahteine
fdee2be49c More logging of matrix behavior 2016-04-11 00:06:33 -07:00
Scott Lahteine
7f265db3ef Move sync_plan_position after DEBUG_LEVELING 2016-04-10 23:40:11 -07:00
Scott Lahteine
02550af7c3 Merge pull request #3453 from thinkyhead/rc_jbrazio_m190
ELAPSED / PENDING for rollover-safe time checking
2016-04-10 20:25:02 -07:00
Scott Lahteine
7c770f039c Merge pull request #3456 from thinkyhead/rc_MSG_ERR_REDUNDANT_TEMP
Remove redundant text from MSG_ERR_REDUNDANT_TEMP
2016-04-10 20:23:55 -07:00
Scott Lahteine
925cc305ce Merge pull request #3455 from michos-conradt/RCBugFix
Add missing translations for German
2016-04-10 19:18:42 -07:00
Scott Lahteine
011f4736f1 Remove redundant text from MSG_ERR_REDUNDANT_TEMP 2016-04-10 19:14:46 -07:00
Scott Lahteine
906c1c066f Merge pull request #3423 from jbrazio/translate/pt_BR
Added missing pt_BR translation
2016-04-10 19:13:52 -07:00
Scott Lahteine
b30e4528f1 Merge pull request #3454 from thinkyhead/rc_host_timeout_mods
Add a case for M113 to process_next_command
2016-04-10 19:00:40 -07:00
Scott Lahteine
803845ec18 Add a case for M113 to process_next_command 2016-04-10 18:53:03 -07:00
Michael Conradt
f3a7a5c99b Merge branch 'RCBugFix' into translations 2016-04-11 03:50:23 +02:00
Michael Conradt
8b923039e2 Add missing german translations. 2016-04-11 03:20:21 +02:00
Scott Lahteine
386140f361 Test time difference in safe way 2016-04-10 18:09:31 -07:00
Scott Lahteine
1b7356b3a1 Account for home_offset in G29 handler 2016-04-10 15:35:02 -07:00
Scott Lahteine
f3562dd895 Have M206 alter current_position, M428 use new function 2016-04-10 15:35:01 -07:00
Scott Lahteine
562e281c73 Merge pull request #3443 from thinkyhead/rc_host_timeout_tweak
Adjust timeout code in host_keepalive
2016-04-09 17:45:36 -07:00
Scott Lahteine
2925eb0b59 Merge pull request #3440 from floyd871/patch-1
Wrong Pin Assignment Megatronics 3
2016-04-09 17:01:23 -07:00
Scott Lahteine
6d465321b5 Adjust timeout code in host_keepalive 2016-04-09 16:58:17 -07:00
Scott Lahteine
8198cc30b5 More bits when encoderPosition is cast as signed 2016-04-09 14:22:12 -07:00
Michael Neumann
95acba2cfa Wrong Pin Assignment Megatronics 3
SERVO2 is doubled defined and causes compiler errors
2016-04-09 11:23:22 +02:00
Scott Lahteine
50c3140040 Merge pull request #3414 from thinkyhead/rc_host_timeout_mods
Host Keepalive configurable timeout with 2s default
2016-04-08 21:45:45 -07:00
Scott Lahteine
6bd20371f0 Merge pull request #3438 from thinkyhead/rc_M109_residency_loop_fix
Fix bug which can cause an infinite M109 loop
2016-04-08 21:36:30 -07:00
Scott Lahteine
96e37bb70a Merge pull request #3419 from DavidBjerreBjoerklund/patch-2
Update language_da.h
2016-04-08 21:35:58 -07:00
Scott Lahteine
13d758c651 Merge pull request #3420 from DavidBjerreBjoerklund/patch-3
Update language_da.h
2016-04-08 21:31:14 -07:00
Scott Lahteine
518068a5a8 Merge pull request #3425 from tnw513/FixLangIt
Optimized Italian strings to fit in 16 character display
2016-04-08 21:29:28 -07:00
Scott Lahteine
1b81e5adc7 Merge pull request #3431 from AnHardt/lang-de
de-language additions
2016-04-08 21:25:00 -07:00
Scott Lahteine
1acf901b63 Adjustments to residency_start_ms handling 2016-04-08 21:20:23 -07:00
gralco
907aed57db Fix bug which can cause an infinite M109 loop
Since residency_start_ms is -1 when entering the heatup while loop whilst the hotend temp is close to the target them already then it may not escape.

Hence "Start the TEMP_RESIDENCY_TIME timer when we reach target temp for the first time."
2016-04-08 21:20:23 -07:00
Scott Lahteine
3ecf38d32e Merge pull request #3436 from thinkyhead/rc_experimental_twibus
M155 and M156, a generic TWI/I2C interface for Marlin
2016-04-08 20:35:53 -07:00
jbrazio
dd3a06a95a Implemented M155 and M156, a generic TWI/I2C interface for Marlin 2016-04-08 20:14:37 -07:00
Scott Lahteine
843aa90b5a Merge pull request #3434 from thinkyhead/rc_more_debug_leveling
Additional debug leveling output
2016-04-08 18:57:18 -07:00
Scott Lahteine
a644ab1de4 Minor patch ups to G29
This may fix a subtle bug caused by doing `G29` more than once without
`G28` between.
2016-04-08 17:53:15 -07:00
Scott Lahteine
cba2698871 Additional DEBUG_LEVELING output 2016-04-08 17:53:15 -07:00
AnHardt
c3d1b7db2d de-language additions 2016-04-08 22:51:04 +02:00
Scott Lahteine
4e17187c96 Merge pull request #3426 from thinkyhead/rc_no_unhomed_lcd_move_on_delta_scara
No LCD Move for unhomed Delta/SCARA
2016-04-07 19:29:45 -07:00
Scott Lahteine
5e18d650c4 Merge pull request #3427 from thinkyhead/rc_better_SERIAL_ECHOPAIR
No casting needed for SERIAL_ECHOPAIR
2016-04-07 19:29:18 -07:00
Scott Lahteine
e0b0d1eb6b Add M113 to get/set Host Keepalive 2016-04-07 19:25:56 -07:00
Scott Lahteine
85883da90c Implement basic HOST_KEEPALIVE_INTERVAL 2016-04-07 19:25:56 -07:00
Scott Lahteine
2eca8d63b3 Add DEFAULT_KEEPALIVE_INTERVAL setting 2016-04-07 19:25:56 -07:00
Scott Lahteine
098fb8f8c9 Merge pull request #3413 from thinkyhead/rc_probe_G30_position
Report the probe position in G30
2016-04-07 19:25:33 -07:00
Scott Lahteine
3460d01441 Merge pull request #3422 from jbrazio/translate/pt_PT
Update pt_PT translation
2016-04-07 19:18:56 -07:00
Scott Lahteine
c9c7c66b95 Merge pull request #3421 from jbrazio/bugfix/m109-EXTRUDE_MINTEMP-expansion
M109: Protect against EXTRUDE_MINTEMP expansion
2016-04-07 19:18:34 -07:00
Scott Lahteine
d7cbb2eec9 Merge pull request #3403 from jbrazio/feature/stopwatch
Print job timer rework
2016-04-07 19:18:03 -07:00
Scott Lahteine
f834bcd43a Merge pull request #3415 from thinkyhead/rc_filwidth_issue
Fix FILAMENT_WIDTH_SENSOR measurement
2016-04-07 19:08:42 -07:00
Scott Lahteine
047c412df6 Merge pull request #3428 from thinkyhead/rc_consolidate_reprap_keypad
Consolidate REPRAPWORLD_KEYPAD, disallow moves for unhomed Delta/SCARA
2016-04-07 19:06:57 -07:00
Scott Lahteine
5fc6daba2b Disallow REPRAPWORLD_KEYPAD moves on Delta/SCARA until homed 2016-04-07 18:40:54 -07:00
Scott Lahteine
7bb15a1c57 Consolidate REPRAPWORLD_KEYPAD definitions 2016-04-07 18:40:54 -07:00
Scott Lahteine
dc19b69697 No casting needed for SERIAL_ECHOPAIR 2016-04-07 16:33:21 -07:00
Scott Lahteine
165e73794a Tweak encoderPosition non-zero test 2016-04-07 16:09:42 -07:00
Scott Lahteine
479d307a44 Disable LCD Move XYZ for unhomed Delta/SCARA 2016-04-07 16:09:42 -07:00
Silvio Didonna
9088802da1 Optimized Italian strings to fit in 16 character display 2016-04-07 19:18:22 +02:00
Silvio
cc4bb5aa09 Merge pull request #2 from MarlinFirmware/RCBugFix
Rc bug fix
2016-04-07 19:14:17 +02:00
João Brázio
801cd48a72 Added missing pt_BR translation 2016-04-07 13:07:57 +01:00
João Brázio
013f19054b Update pt_PT translation 2016-04-07 13:00:08 +01:00
João Brázio
471d30cc1c M109: Protected against EXTRUDE_MINTEMP expansion 2016-04-07 12:50:57 +01:00
DavidBjerreBjoerklund
5f840d2e30 Update language_da.h
Corrected:
MSG_KILLED
MSG_NO_MOVE
MSG_STOPPED
MSG_PRINT_ABORTED
MSG_ON
MSG_OFF
2016-04-07 13:42:27 +02:00
João Brázio
7c7e30f4cc Adherence to the new OOP coding standards 2016-04-07 12:41:09 +01:00
DavidBjerreBjoerklund
b80b40a578 Update language_da.h
Added translation mentioned in issue #3351:
Homing would be best tranlated homing, or "Kører til udgangsposition".

#define MSG_SET_HOME_OFFSETS
#define MSG_LEVEL_BED_HOMING
#define MSG_LEVEL_BED_WAITING 
#define MSG_LEVEL_BED_DONE
#define MSG_LEVEL_BED_CANCEL 
#define MSG_HOME_OFFSETS_APPLIED
2016-04-07 12:52:31 +02:00
Scott Lahteine
573d772c92 Merge pull request #3416 from paulusjacobus/RCBugFix
Optimised Ducth messages to fit in 16 Char display Update language_nl.h
2016-04-06 20:41:14 -07:00
paulusjacobus
3f7ae9a7ce Update language_nl.h
Optimised all added messages to fit within 16 Characters
2016-04-07 13:15:00 +10:00
Scott Lahteine
865dcf3fb4 Fix FILAMENT_WIDTH_SENSOR measurement
Only measure and store filament width when E is going forward.
2016-04-06 19:48:04 -07:00
Scott Lahteine
2f6c5fe2da Report the probe position in G30 2016-04-06 16:55:21 -07:00
Scott Lahteine
74effedbf5 Merge pull request #3412 from paulusjacobus/RCBugFix
rebased my fork with RCBugFix release in order to push language_nl.h
2016-04-06 16:53:35 -07:00
Scott Lahteine
bba1f16589 Merge pull request #3411 from esenapaj/patch-1
Update Readme.fonts about Kana
2016-04-06 16:19:19 -07:00
Scott Lahteine
c506743f63 Merge pull request #3406 from tnw513/FixLangIt
Update to language_it.h
2016-04-06 16:18:58 -07:00
Paul de Groot
48a4410f02 rebased my fork with RCBugFix release in order to push language_nl.h 2016-04-07 08:17:59 +10:00
esenapaj
ff9511b870 Update Readme.fonts about Kana
I think that that sentence has been completed its part. 
Because Kana fonts were revised by me the other day(PR #3289), who am a native Japanese.

And for @AnHardt,
I'd like to take this opportunity to express one's heartfelt gratitude as a far eastern person,
about you has been maintaining the resource of Japanese despite you are a far western person.
2016-04-07 07:13:46 +09:00
Silvio Didonna
e215c7100d fixed mistranslations and minor changes for consistency between "it" and "en" files. 2016-04-06 16:45:04 +02:00
Silvio Didonna
6208db3b00 fixed mistranslations and minor changes for consistency between "it" and "en" files. 2016-04-06 16:40:01 +02:00
Silvio
62612580ef Merge pull request #1 from MarlinFirmware/RCBugFix
Rc bug fix
2016-04-06 16:04:09 +02:00
João Brázio
e48d0263bf Bugfix: M32 was still using the old print timer 2016-04-06 04:41:36 +01:00
João Brázio
e8b80d8c20 Implemented M75, M76, M77 to control the print timer 2016-04-06 04:38:42 +01:00
João Brázio
eb61051556 Rework the print job timer to use the stopwatch class 2016-04-06 04:34:03 +01:00
João Brázio
399101fff3 Implemented the stopwatch class and methods 2016-04-06 04:23:45 +01:00
Scott Lahteine
2988147880 Merge pull request #3400 from thinkyhead/rc_sensor_per_extruder
Add more leveling-debug output
2016-04-05 19:38:03 -07:00
Scott Lahteine
98f2e9fc83 Reduce string storage required for DEBUG_LEVELING 2016-04-05 19:04:42 -07:00
Scott Lahteine
1af5d7b35f Add more leveling-debug output 2016-04-05 18:31:10 -07:00
Scott Lahteine
d5b19a49f6 Merge pull request #3384 from thinkyhead/rc_adjust_M111_output
Final tweaks to M111 output
2016-04-05 16:48:59 -07:00
Scott Lahteine
9536e28978 Merge pull request #3398 from thinkyhead/rc_sensor_per_extruder
Catch a TEMP_SENSOR error before a pins issue
2016-04-05 16:36:50 -07:00
Scott Lahteine
da2ff4a6d3 Catch a TEMP_SENSOR error before a pins issue 2016-04-05 16:17:28 -07:00
Scott Lahteine
90f6f02aca Merge pull request #3397 from thinkyhead/rc_menu_issues_fixer
Revert #3388, clean up lcd_move code
2016-04-05 15:45:35 -07:00
Scott Lahteine
fb38d698db Add feedback after "Click to Begin" 2016-04-05 15:35:05 -07:00
Scott Lahteine
d5f0db26dc Merge pull request #3390 from jbrazio/docs/update-source-url
Update DEFAULT_SOURCE_URL comment
2016-04-05 15:17:07 -07:00
Scott Lahteine
ce58d1d4d5 Merge pull request #3392 from barus93/patch-2
Update language_it.h
2016-04-05 15:16:24 -07:00
Scott Lahteine
bd5ca62290 Merge pull request #3393 from gege2b/RCBugFix
Some omitted french translation
2016-04-05 15:14:48 -07:00
Scott Lahteine
582b58e660 Add audio feedback to edit items 2016-04-05 14:51:11 -07:00
Scott Lahteine
a70c3ffc21 Minor syntax tweak with encoderPosition 2016-04-05 14:51:11 -07:00
Scott Lahteine
0f247187b8 Drop extra setting of currentMenu 2016-04-05 14:51:11 -07:00
Scott Lahteine
24cde86a4f Fix syntax highlighting of menu_edit_type lines 2016-04-05 14:51:11 -07:00
Scott Lahteine
86372cd394 Add underscore to internal lcd move function names 2016-04-05 14:51:11 -07:00
Scott Lahteine
aa97328cd3 Use min_pos/max_pos for _lcd_move 2016-04-05 14:51:10 -07:00
Scott Lahteine
f936df9507 Small cleanup of feedrate dead-zone 2016-04-05 14:51:10 -07:00
Scott Lahteine
f5c2fb27cd Handle defer_return_to_status in lcd_goto_menu 2016-04-05 14:51:10 -07:00
Scott Lahteine
8459f7fa5c Use ms where possible. 2016-04-05 14:51:10 -07:00
Scott Lahteine
34ce9c4c1c Restore save previous for menu edit items 2016-04-05 14:26:36 -07:00
Gege2B
03d5c9a482 Merge remote-tracking branch 'upstream/RCBugFix' into RCBugFix 2016-04-05 12:14:15 +02:00
Gege2B
4ea45d5c56 Some omitted french translation 2016-04-05 12:04:29 +02:00
barus93
f43e37bb0c Update language_it.h
New messages translated:
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
#define MSG_LEVEL_BED_WAITING "Click to Begin"
#define MSG_LEVEL_BED_DONE "Leveling Done!"
#define MSG_LEVEL_BED_CANCEL "Cancel"
. . .
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
2016-04-05 07:24:07 +02:00
João Brázio
9240682630 Followup #3326: Update DEFAULT_SOURCE_URL comment 2016-04-05 02:21:23 +01:00
Scott Lahteine
6c48b4e006 Merge pull request #3387 from thinkyhead/travis_readability
Comments for legibility, include DEBUG_LEVELING, SDSUPPORT
2016-04-04 17:05:58 -07:00
Scott Lahteine
4b8a71055e Merge pull request #3388 from thinkyhead/rc_fix_move_menu_bug
Fix: menu edit items saving position twice
2016-04-04 17:05:15 -07:00
Scott Lahteine
1220dfd5d6 Fix: menu edit items saving position twice 2016-04-04 16:36:04 -07:00
Scott Lahteine
ad61a8684a Comments for legibility, test DEBUG_LEVELING 2016-04-04 16:31:37 -07:00
Scott Lahteine
b5920837ea Merge pull request #3370 from esenapaj/patch-1
Drop DISABLE_M(IN|AX)_ENDSTOPS, replace with individual endstop flags
2016-04-04 16:12:50 -07:00
Scott Lahteine
53b397ab14 Merge pull request #3364 from jbrazio/script/find-missing-translations
Added a script to check all language files for missing translations
2016-04-04 16:10:36 -07:00
Scott Lahteine
d6fe454a13 Merge pull request #3386 from thinkyhead/rc_spanish_rebase
Add Missing Spanish translation
2016-04-04 16:07:34 -07:00
Scott Lahteine
2abea41c41 Merge pull request #3385 from thinkyhead/rc_dutch_translation
Update language_nl.h
2016-04-04 16:02:11 -07:00
RicardoGA
1bfaf57ee5 Add Missing Spanish translation
Add the missing translation (Spanish) issue #3353
2016-04-04 15:55:59 -07:00
paulusjacobus
4a4b797dca Update language_nl.h
Added these messages with Dutch translation
#define MSG_BED_Z
#define MSG_A_TRAVEL
#define MSG_HEATING_FAILED_LCD
#define MSG_ERR_REDUNDANT_TEMP
#define MSG_THERMAL_RUNAWAY
#define MSG_ERR_MAXTEMP
#define MSG_ERR_MINTEMP
#define MSG_ERR_MAXTEMP_BED
#define MSG_ERR_MINTEMP_BED
#define MSG_HEATING
#define MSG_HEATING_COMPLETE
#define MSG_BED_HEATING
#define MSG_BED_DONE
2016-04-04 15:46:50 -07:00
Scott Lahteine
1ee903f30d Merge pull request #3376 from gege2b/RCBugFix
French translation
2016-04-04 15:40:00 -07:00
Scott Lahteine
c5ff2c7d32 Merge pull request #3377 from clexpert/patch-1
Update language_cz.h
2016-04-04 15:39:44 -07:00
Scott Lahteine
99898ea652 Merge pull request #3379 from barus93/patch-2
Update language_it.h
2016-04-04 15:39:15 -07:00
Scott Lahteine
56e8e2b0eb Final tweaks to M111 output 2016-04-04 15:36:07 -07:00
Scott Lahteine
d5ccc9c70a Merge pull request #3374 from jbrazio/bugfix/m111-corrupted-output
M111: Add static keyword to PROGMEM debug variables
2016-04-04 15:31:57 -07:00
barus93
040a0c49db Update language_it.h
ADD missing translation
2016-04-04 20:22:34 +02:00
Petr Zahradnik
8b843e997a Update language_cz.h 2016-04-04 17:26:19 +02:00
Petr Zahradnik
3cd2beb750 Update language_cz.h 2016-04-04 16:54:26 +02:00
Gege2B
34bf9530c0 French translation 2016-04-04 16:45:06 +02:00
João Brázio
d819a4aff9 Fixes #3346, followup #3343: variables must defined with the static keyword to work with PROGMEM when defined inside functions 2016-04-04 15:02:18 +01:00
esenapaj
1326dc7258 Drop DISABLE_M(IN|AX)_ENDSTOPS, replace with individual endstop flags
This is follow-up the commit e5771346a4.
Update unnoticed files.
2016-04-04 17:49:25 +09:00
Scott Lahteine
0433df3835 Merge pull request #3366 from jbrazio/translate/pt_PT
Added missing translations for pt_PT
2016-04-03 21:02:13 -07:00
Scott Lahteine
1d6f90b0b1 Merge pull request #3365 from thinkyhead/fix_fancy_new_endstop_config
Fix bug in new endstop pullups handling
2016-04-03 20:58:52 -07:00
João Brázio
dff6adfbca Fixes #3361: Added missing translations for pt_PT 2016-04-04 04:57:32 +01:00
Scott Lahteine
c0e7257932 Fix bug in new endstop pullups handling 2016-04-03 20:52:32 -07:00
João Brázio
f94900ee79 Added a script to check all language files for missing translations 2016-04-04 04:46:04 +01:00
Scott Lahteine
de39056f68 Merge pull request #3343 from thinkyhead/rc_fix_m111_output
Fix M111 output using pgm_read_word, as required
2016-04-03 17:44:38 -07:00
Scott Lahteine
e0bef7dfcc Merge pull request #3342 from esenapaj/patch-1
Update Japanese translation
2016-04-03 17:38:28 -07:00
Scott Lahteine
fd0ac371b0 Fix M111 output using pgm_read_word as required
As noted by @taratata2016 in https://github.com/MarlinFirmware/Marlin/issues/3300#issuecomment-204687275
2016-04-03 17:33:06 -07:00
esenapaj
c4d7e0307c Update Japanese translation 2016-04-04 09:11:23 +09:00
Scott Lahteine
c045ec8cb3 Merge pull request #3065 from thinkyhead/rc_doc_tweaks
Simplified endstop configuration
2016-04-03 17:05:47 -07:00
Scott Lahteine
d771174797 Merge pull request #3337 from esenapaj/patch-2
suppress warnings
2016-04-03 17:01:22 -07:00
Scott Lahteine
f2032cfcf6 Merge pull request #3341 from thinkyhead/rc_english_patch
Fix English definition for MSG_LEVEL_BED_CANCEL
2016-04-03 16:58:51 -07:00
Scott Lahteine
fa97ba6230 Merge pull request #3340 from thinkyhead/japanese_accent_sanitize
Update Japanese translation
2016-04-03 16:48:30 -07:00
Scott Lahteine
09c6f80c1e Fix MSG_LEVEL_BED_CANCEL english 2016-04-03 16:41:27 -07:00
esenapaj
afe7d26543 Update Japanese translation 2016-04-03 16:39:37 -07:00
Scott Lahteine
3aee89b93a Merge pull request #3338 from thinkyhead/rc_patches_april_3
Add history to LCD Menus, fix up Manual Bed Leveling
2016-04-03 16:37:39 -07:00
Scott Lahteine
22a43980e8 Merge pull request #3339 from thinkyhead/rc_has_temp_hotend
Add HAS_TEMP_HOTEND, account for MAX31855 in conditionals
2016-04-03 16:35:54 -07:00
Scott Lahteine
7a2f73c6db Remove extra comma from LCDHandlerAction 2016-04-03 16:27:30 -07:00
Scott Lahteine
3fbf67e5ce Patch MBL feedback and event handling 2016-04-03 16:27:30 -07:00
Scott Lahteine
ef2fbaec98 Headings for menu sub-items, actions, etc. 2016-04-03 16:27:29 -07:00
Scott Lahteine
dc109ac4e2 Move MBL code to its logical place 2016-04-03 16:27:29 -07:00
Scott Lahteine
6730408ec1 Move lcd_autostart_sd to its logical place 2016-04-03 16:27:29 -07:00
Scott Lahteine
056b80dc53 Have "back" menu items go to the previous item 2016-04-03 16:27:29 -07:00
Scott Lahteine
c94482168b Add MSG_LEVEL_BED_CANCEL for MBL 2016-04-03 16:27:29 -07:00
Scott Lahteine
877fb1f588 Account for MAX31855 in conditionals 2016-04-03 16:19:17 -07:00
Scott Lahteine
d24f14a799 Add HAS_TEMP_HOTEND define 2016-04-03 16:18:49 -07:00
esenapaj
f9e1a0ee6c suppress warnings 2016-04-04 06:48:53 +09:00
Scott Lahteine
cf9a171aa9 Merge pull request #3330 from thinkyhead/rc_mbl_lcdDrawUpdate
Improvements to MBL, general LCD menu handling
2016-04-02 19:20:23 -07:00
Scott Lahteine
783e0122d6 Merge pull request #3331 from thinkyhead/rc_default_info
Split DEFAULT_MACHINE_NAME from DEFAULT_SOURCE_URL
2016-04-02 19:11:48 -07:00
Scott Lahteine
2b01649533 Move default machine info to pins files 2016-04-02 18:53:05 -07:00
Scott Lahteine
4f24323817 Split DEFAULT_MACHINE_NAME from DEFAULT_SOURCE_URL
Addressing #3325 – Avoid undefined symbol errors in the compiler.
2016-04-02 18:41:01 -07:00
Scott Lahteine
771ee1c1a9 Update MBL menu sub-function names 2016-04-02 18:20:47 -07:00
Scott Lahteine
d659777e70 Fix MBL to handle re-entrant calls 2016-04-02 18:14:49 -07:00
Scott Lahteine
5719fcba51 Add MSG_LEVEL_BED_DONE and MSG_LEVEL_BED_WAITING 2016-04-02 18:14:49 -07:00
Scott Lahteine
80b8fd1cad Add MSG_HOME_OFFSETS_APPLIED 2016-04-02 18:14:49 -07:00
Scott Lahteine
d1c45ff80b More user interaction in MBL 2016-04-02 18:14:49 -07:00
Scott Lahteine
240b71ee1c Give names to lcdDrawUpdate values 2016-04-02 18:14:48 -07:00
Scott Lahteine
b0a3c7a91c Add feedback sounds to MBL items 2016-04-02 17:08:43 -07:00
Scott Lahteine
782c598e66 Use ftostr43 with '+' option in MBL Z adjuster 2016-04-02 17:08:43 -07:00
Scott Lahteine
f08b0d034f Merge pull request #3328 from RicardoGA/RC_Babystepping_fix
Babystepping Fix
2016-04-02 16:48:45 -07:00
Scott Lahteine
09437466b1 Merge pull request #3324 from tnw513/fix_filament_dia
changed DEFAULT_NOMINAL_FILAMENT_DIA for consistency between example config files
2016-04-02 16:40:24 -07:00
Scott Lahteine
2b4c42610c Adjust SanityCheck messages 2016-04-02 16:39:23 -07:00
Scott Lahteine
a617d12f70 Account for Z_DUAL_ENDSTOPS in sanity checking of endstops 2016-04-02 16:39:23 -07:00
Scott Lahteine
868eebfdee Simplify configuration of Z2 endstops 2016-04-02 16:39:23 -07:00
Scott Lahteine
e5771346a4 Drop DISABLE_M(IN|AX)_ENDSTOPS, replace with individual endstop flags 2016-04-02 16:39:23 -07:00
Scott Lahteine
071c742b8a Move STRINGIFY to macros.h, use in language.h 2016-04-02 16:38:43 -07:00
Scott Lahteine
2ee599d873 Merge pull request #3321 from tnw513/fix_max_endstop
Max endstops disabled for stock Prusa i3 Hephestos.
2016-04-02 16:38:10 -07:00
Scott Lahteine
4e1bbdb89f Merge pull request #3320 from alhirzel/RCBugFix
Fix manual Y movement on delta (regression).
2016-04-02 16:37:14 -07:00
Scott Lahteine
5fb88a2754 Merge pull request #3314 from jbrazio/bugfix/followup-3235
Fixes missing icons from status screen
2016-04-02 16:36:18 -07:00
Scott Lahteine
3c14c01a3a Merge pull request #3310 from esenapaj/patch-2
Follow-up the commit a393941
2016-04-02 16:35:31 -07:00
Scott Lahteine
93f690afdb Merge pull request #3317 from jbrazio/bugfix/followup-3305
Wrong board def in pins.h
2016-04-02 16:34:39 -07:00
RicardoGA
6b1d2263a2 Babystepping Fix 2016-04-02 14:53:57 -06:00
Silvio Didonna
dfe891fe11 changed filament diameter for consistency between all example config files. 2016-04-02 21:05:25 +02:00
Alexander Hirzel
6e0d627c8c Unbreak the Delta radius clipping 2016-04-02 12:58:39 -04:00
Silvio Didonna
6c528e63eb max endstops disabled. Stock Prusa i3 Hephestos have min endstops. 2016-04-02 16:54:59 +02:00
Alexander Hirzel
949172606f Fix manual Y movement on delta (regression). 2016-04-02 10:48:13 -04:00
João Brázio
55a248d6b4 Fixes #3313 : Wrong board def in pins.h 2016-04-02 09:28:58 +01:00
João Brázio
04b2abb6aa Fixes #3312: Missing all icons from status screen 2016-04-02 06:50:02 +01:00
esenapaj
81593cb3cb Follow-up the commit a393941 2016-04-02 11:23:33 +09:00
Scott Lahteine
4d0d37aab7 Merge pull request #3309 from thinkyhead/rc_release_RC5
Release 1.1.0-RC5
2016-04-01 19:23:30 -07:00
Scott Lahteine
6a245fe4f7 Release 1.1.0-RC5 2016-04-01 19:14:49 -07:00
Scott Lahteine
e8f8a46ef5 Merge pull request #3303 from thinkyhead/rc_various_fixes
Various patches for LCD menu issues
2016-04-01 18:02:25 -07:00
Scott Lahteine
b98f72b483 Small optimization for ftostr43 2016-04-01 17:54:16 -07:00
Scott Lahteine
a393941d2d Combine "XYZ" with MSG_LEVEL_BED_HOMING 2016-04-01 17:51:03 -07:00
Scott Lahteine
097cc75ba8 Patch _lcd_level_bed draw to fix flicker, show proper offset 2016-04-01 17:51:03 -07:00
Scott Lahteine
1e1a18e091 Remove extra semicolon in ultralcd.cpp 2016-04-01 17:51:03 -07:00
Scott Lahteine
0b4f65dca8 Always limit blink to ~1 second intervals 2016-04-01 17:51:03 -07:00
Scott Lahteine
8e05b0037b Merge pull request #3307 from thinkyhead/rc_host_keepalive_comment
Fix comment about host keepalive interval
2016-04-01 17:48:17 -07:00
Scott Lahteine
ffe054c129 Fix comment about host keepalive interval 2016-04-01 17:28:08 -07:00
Scott Lahteine
0d6609c3c5 lcd_goto_menu should set lcdDrawUpdate to 2 2016-04-01 17:07:40 -07:00
Scott Lahteine
af89ccf96a Use flag to defer lcd return-to-status 2016-04-01 17:07:39 -07:00
Scott Lahteine
641b30217e Patch prevEncoderPosition compile issue
Thanks to @jbrazio #3301
2016-04-01 17:07:39 -07:00
Scott Lahteine
41aa4bdf1f Use XYZ translated strings in dogm 2016-04-01 17:07:39 -07:00
Scott Lahteine
92882fcc51 Allow lcd_implementation_drawedit to draw a message 2016-04-01 17:04:33 -07:00
Scott Lahteine
0114cf1101 RCBugFix version string 2016-04-01 17:04:33 -07:00
Scott Lahteine
9c43369ebb Merge pull request #3306 from thinkyhead/rc_fix_num2str
Clean up num2str functions, extend ftostr43
2016-04-01 17:04:03 -07:00
Scott Lahteine
6791401ca7 Merge pull request #3305 from thinkyhead/rc_emart_patch_3297
Support for MKS v1.3/1.4 and Sainsmart RAMPS 1.4 variants
2016-04-01 17:03:54 -07:00
Scott Lahteine
1da9d10173 Support for MKS v1.3/1.4 and Sainsmart RAMPS 1.4 variants 2016-04-01 16:54:35 -07:00
Scott Lahteine
fcedfd6e99 Clean up num2str functions, extend ftostr43 2016-04-01 16:52:59 -07:00
Scott Lahteine
2512d8fd5e Merge pull request #3304 from thinkyhead/rc_slow_buttons
Macros for buttons, some cleanup for slow buttons
2016-04-01 15:31:54 -07:00
Scott Lahteine
f543aaa54e Apply standard pin test to buttons
This is the easiest way to make button pin testing consistent without
renaming all the button pins. Just make a macro especially for testing
if button pins are set, since they are named consistently in the pins
files.
2016-04-01 15:12:12 -07:00
Scott Lahteine
f2ffc8b28b Rename local slow_buttons for clarity 2016-04-01 15:06:33 -07:00
Scott Lahteine
26279fa43c Merge pull request #3289 from esenapaj/patch-1
Update Kana font
2016-04-01 14:31:32 -07:00
Scott Lahteine
0bee67e5f1 Merge pull request #3294 from jbrazio/bugfix/mandatory-extrude-mintemp
Fix an error when EXTRUDE_MINTEMP is not defined
2016-04-01 14:23:32 -07:00
João Brázio
709dd5aa4d Fix an error when EXTRUDE_MINTEMP is not defined 2016-03-31 16:25:48 +01:00
Scott Lahteine
4f85226106 Merge pull request #3288 from thinkyhead/rc_servo_plus_delta
Fix servo deploy/stow issues with G29 and Delta
2016-03-30 19:01:00 -07:00
Scott Lahteine
bc86ee0271 Simplify homeaxis with some macros 2016-03-30 18:44:05 -07:00
esenapaj
cc5059478a Update Kana font 2016-03-31 10:02:47 +09:00
Scott Lahteine
82ef101ed5 Deploy & Stow in G29 for Delta + Z Servo Endstop 2016-03-30 16:41:16 -07:00
Scott Lahteine
33a9d32800 Merge pull request #3285 from thinkyhead/rc_fix_drawedit
Fix string issues in ultralcd.cpp
2016-03-30 13:01:07 -07:00
Scott Lahteine
6a4d394fff Fix pointer-to-string issues with set_home_offsets and _lcd_level_bed_homing 2016-03-30 12:32:25 -07:00
Scott Lahteine
de333c4fea Merge pull request #3279 from thinkyhead/rc_filament_width_sensor
FILAMENT_SENSOR -> FILAMENT_WIDTH_SENSOR
2016-03-30 12:16:27 -07:00
Scott Lahteine
0f835c0c4e Merge pull request #3259 from jbrazio/bugfix/old-ide-warning
Show a warning message when Arduino IDE is prior to 1.5
2016-03-30 12:15:51 -07:00
Scott Lahteine
8def2c31db Merge pull request #3284 from thinkyhead/rc_stop_watchheat_lcdset0
Fix temperature checking conditions (backwards!)
2016-03-30 12:10:39 -07:00
Scott Lahteine
b919a6f182 Merge pull request #3280 from esenapaj/patch-1
Update U8glib URL
2016-03-30 12:06:53 -07:00
Scott Lahteine
8bf5f7c676 Merge pull request #3282 from jbrazio/bugfix/m104-timer-wont-start
M104 not starting the print timer
2016-03-30 11:54:16 -07:00
Scott Lahteine
31450ad498 Fix temperature checking conditions (backwards!) 2016-03-30 11:52:03 -07:00
João Brázio
187c183c20 M104 was not starting the print timer 2016-03-30 11:33:24 +01:00
esenapaj
352294b5f5 Update U8glib URL 2016-03-30 14:26:28 +09:00
Scott Lahteine
507aef055f Patch broken M404 2016-03-29 20:54:31 -07:00
Scott Lahteine
1a79b13b7a FILAMENT_SENSOR -> FILAMENT_WIDTH_SENSOR 2016-03-29 20:54:31 -07:00
Scott Lahteine
7f81aa7ff3 Pins should always be defined (even for disabled features) 2016-03-29 20:44:14 -07:00
Scott Lahteine
5f32184254 Merge pull request #3278 from thinkyhead/rc_cleanup_m111_redo
Echo all debug levels in M111, default to DEBUG_NONE
2016-03-29 20:34:31 -07:00
Scott Lahteine
05765fb570 Add DEBUGGING macro 2016-03-29 19:50:01 -07:00
Scott Lahteine
4402760739 Echo all debug levels in M111, default to DEBUG_NONE
Redo of #3268 by @jbrazio
2016-03-29 19:18:45 -07:00
Scott Lahteine
f0b96f5cae Merge pull request #3276 from thinkyhead/rc_sdprint_and_lcd_sleuth
Refinements, fixes, reduced stack usage in CardReader
2016-03-29 18:30:18 -07:00
Scott Lahteine
12c0bf9521 Merge pull request #3277 from jbrazio/bugfix/m190-temp-never-reached
M190 bed temp is never reached
2016-03-29 18:28:51 -07:00
João Brázio
c6577aea60 M190 bed temp was never reached 2016-03-30 01:03:20 +01:00
Scott Lahteine
ce0a9d3dc6 A picky fix of indentation in cardreader.cpp 2016-03-29 16:23:12 -07:00
Scott Lahteine
4ed8351e3d Revert use of enqueue_and_echo_command_now 2016-03-29 16:23:12 -07:00
Scott Lahteine
70d1d4de5f Small code spacing adjustments 2016-03-29 03:19:27 -07:00
Scott Lahteine
0385acea7a Fix workDirParents -> getAbsFilename relationship 2016-03-29 03:18:53 -07:00
Scott Lahteine
27d70599d4 Change openFile default to "not-push" instead of "do-replace" 2016-03-29 03:16:35 -07:00
Scott Lahteine
372f93cc7a Rename "filenames" to "proc_filenames" 2016-03-29 03:15:01 -07:00
Scott Lahteine
6b01cf07c2 Use only as much stack as needed for the M23 command 2016-03-29 02:34:33 -07:00
Scott Lahteine
9e520ae319 Merge pull request #3272 from thinkyhead/rc_filament_sensor_scope
Minor cleanup to filament sensor code
2016-03-28 20:51:46 -07:00
Scott Lahteine
f83c03f594 Merge pull request #3271 from thinkyhead/rc_blink_limiter
Keep blinking limited to LCD_UPDATE_INTERVAL
2016-03-28 20:05:56 -07:00
Scott Lahteine
3252df7998 Minor cleanup to filament sensor code 2016-03-28 20:04:34 -07:00
Scott Lahteine
b60ea95adf Keep blinking limited to LCD_UPDATE_INTERVAL 2016-03-28 19:41:13 -07:00
Scott Lahteine
e0ab06cfae Merge pull request #3267 from thinkyhead/rc_command_args_null_oooops
Cleanup, simplification of command dispatcher code
2016-03-28 18:54:00 -07:00
Scott Lahteine
0b8ef5eba6 Split get_command into units, rename to get_available_commands 2016-03-28 06:00:04 -07:00
Scott Lahteine
545f7997ea Continue on empty lines instead of returning 2016-03-28 05:37:36 -07:00
Scott Lahteine
3dcf6d42ff Don't store escaped serial characters if comment_mode 2016-03-28 05:37:36 -07:00
Scott Lahteine
5f8e52aefb Minor cleanup to command dispatcher 2016-03-28 05:37:36 -07:00
jbrazio
0880fecbd4 Show a warning message when Arduino IDE is prior to 1.5 2016-03-28 11:55:42 +01:00
Scott Lahteine
f1ed310322 Add NUMERIC compare macros to simplify code 2016-03-28 03:52:49 -07:00
Scott Lahteine
4b697938e6 Merge pull request #3262 from thinkyhead/rc_less_uptight_temps
Relax the test for "Heating failed" errors
2016-03-27 09:52:50 -07:00
Scott Lahteine
3b2d159abd Relax the test for "Heating failed" errors 2016-03-27 07:02:10 -07:00
Scott Lahteine
2e4ddd5c22 Merge pull request #3260 from jbrazio/cleanup/standardize-comment-style
Formatted multi-line comments
2016-03-26 21:42:33 -07:00
jbrazio
443e6d26fe Formatted multi-line comments 2016-03-27 04:36:36 +01:00
Scott Lahteine
ee71f5a320 Merge pull request #3255 from esenapaj/patch-1
Use SBI macro
2016-03-26 17:49:20 -07:00
esenapaj
7950b5268a Use SBI macro 2016-03-26 20:17:52 +09:00
Scott Lahteine
e4039a9b5b Merge pull request #3250 from esenapaj/patch-1
Fix typo
2016-03-26 00:41:31 -07:00
Scott Lahteine
1d987cd280 Merge pull request #3253 from thinkyhead/rc_autotune_menu_optional
Make the Autotune option(s) in the LCD menu optional
2016-03-26 00:32:05 -07:00
Scott Lahteine
d6f92f9efe Remove Tonokip remnant from recent PR 2016-03-25 23:50:29 -07:00
Scott Lahteine
ab412a2153 PIDTEMPBED on #endif 2016-03-25 23:50:28 -07:00
Scott Lahteine
53cc6cca46 Formalize some dependencies on PIDTEMPBED 2016-03-25 23:50:28 -07:00
Scott Lahteine
5955a3063f Sanity check PIDTEMPBED plus BED_LIMIT_SWITCHING 2016-03-25 23:50:28 -07:00
Scott Lahteine
67fabb6044 Merge pull request #3252 from thinkyhead/rc_keepalive_less
Host Keepalive: Reduce frequency of "busy" messages
2016-03-25 23:37:02 -07:00
Scott Lahteine
d1bdd25b84 Merge pull request #3249 from esenapaj/patch-2
Update Japanese translation
2016-03-25 22:53:00 -07:00
Scott Lahteine
0d554c10ac Merge pull request #3244 from ch100/RCBugFix
Fixed backlight for PCF8575.
2016-03-25 22:50:20 -07:00
Scott Lahteine
cd4c3e90bc Send a busy signal every 10 seconds instead of every 2 2016-03-25 22:15:40 -07:00
Scott Lahteine
8cb04816b5 Apply PID_AUTOTUNE_MENU option to ultralcd.cpp 2016-03-25 19:31:56 -07:00
Scott Lahteine
4b31c67dce Add PID_AUTOTUNE_MENU option 2016-03-25 19:31:56 -07:00
Scott Lahteine
e08915a723 Fix comments in Configuration_adv.h 2016-03-25 19:31:31 -07:00
Scott Lahteine
26168676e7 Merge pull request #3246 from thinkyhead/rc_fix_numeric_filenames
Fix: current_command_args skips digits at the front
2016-03-25 16:38:36 -07:00
esenapaj
f54315c728 Fix typo
These are salvaged from closed-PR #3216.
2016-03-26 08:37:17 +09:00
esenapaj
37a0806420 Update Japanese trasration
Follow the PR #3242.
2016-03-26 08:21:17 +09:00
Scott Lahteine
f423716c6a Fix: current_command_args skips digits at the front
Closes #3245
2016-03-25 16:12:41 -07:00
Christian Inci
627f39e1e3 Fixed backlight for PCF8575.
Fixed backlight for PCF8575.

Signed-off-by: Christian Inci <chris.pcguy.inci@gmail.com>
2016-03-25 14:49:55 +01:00
Scott Lahteine
fc0baec991 Merge pull request #3240 from esenapaj/patch-1
Fix distribution date
2016-03-25 06:49:42 -07:00
Scott Lahteine
18de9f55ac Merge pull request #3242 from thinkyhead/rc_epatel_mesh_fixes
Updated Mesh Bed Leveling
2016-03-25 06:48:12 -07:00
Scott Lahteine
3a1e6b1752 Merge pull request #3243 from AnHardt/homed
axis_known_position -> axis_homed
2016-03-25 06:36:46 -07:00
Scott Lahteine
1ee76fa981 Merge pull request #3241 from thinkyhead/rc_general_clean
Code cleanup around MOTOR_CURRENT_PWM options
2016-03-25 06:13:35 -07:00
AnHardt
94962ee678 axis_known_position -> axis_homed
In all these cases we want the axis to be homed. If we could have lost
some steps is secondary.

Reenables homing seperate axis with DISABLE_X / DISABLE_Y true.
2016-03-25 14:05:20 +01:00
Edward Patel
14afe1a017 Move to Z=0 for G28 when using Manual Bed Leveling
copy of 406992f9dd
2016-03-25 04:58:44 -07:00
Edward Patel
c606ed447a Add "G29 S4" to fine tune Z level for Mesh Bed Leveling.
Also add mbl.z_offset to the EEPROM, bumping the version to V23.
2016-03-25 04:58:43 -07:00
Scott Lahteine
5d8036e554 Code cleanup around MOTOR_CURRENT_PWM options 2016-03-25 04:23:46 -07:00
esenapaj
bec112de87 Fix distribution date 2016-03-25 18:56:16 +09:00
Scott Lahteine
122bdd187f Merge branch 'RCBugFix' into RC 2016-03-25 01:15:38 -07:00
Scott Lahteine
f394c0639e Merge pull request #3230 from jbrazio/bugfix/ultra-lcd-warning
Fix a compiler warning in ultralcd.cpp
2016-03-25 01:14:54 -07:00
Scott Lahteine
9045ea3adf Merge branch 'RCBugFix' into RC 2016-03-25 01:12:37 -07:00
Scott Lahteine
f52f388bda Merge pull request #3239 from thinkyhead/rc_jbrazio_fanerr
Closes #3235. Fix dogm lcd error when FAN_PIN is defined as -1
2016-03-25 01:11:06 -07:00
João Brázio
f077c7abbf Fix dogm lcd error when FAN_PIN is defined as -1 2016-03-25 01:09:09 -07:00
Scott Lahteine
6f9442afca Merge branch 'RCBugFix' into RC 2016-03-25 01:01:03 -07:00
Scott Lahteine
080c85a4c9 Merge pull request #3236 from thinkyhead/rc_followup_3231
Further cleanup of comments, partial Doxygen-style
2016-03-25 00:53:10 -07:00
Scott Lahteine
0da744b7b0 Further cleanup of comments, partial Doxygen-style
Following up on #3231
2016-03-25 00:45:56 -07:00
Scott Lahteine
4823791eb0 Merge pull request #3228 from esenapaj/patch-1
Fix spelling
2016-03-25 00:40:51 -07:00
Scott Lahteine
af6049c6c2 Merge pull request #3231 from jbrazio/license/add-gpl3-header
Added GPLv3 header to all Marlin files
2016-03-24 22:40:40 -07:00
jbrazio
80f221ed11 Fixed: warning: extra tokens at end of #endif directive 2016-03-24 19:33:25 +00:00
jbrazio
5e5d250832 Added gplv3 header to all Marlin files 2016-03-24 18:01:20 +00:00
esenapaj
89a845659a Fix spelling
PROBABLE ->PROBEABLE
This is follow-up to #3069?
2016-03-25 02:13:37 +09:00
Scott Lahteine
e12a481e35 Prettier summaries in README 2016-03-24 07:47:59 -07:00
Scott Lahteine
c80e5aca30 New README for 1.1.0-RC4 2016-03-24 06:52:14 -07:00
Scott Lahteine
dd4d860ad7 Merge branch 'Release-1.1.0-RC4' into RC 2016-03-24 05:33:32 -07:00
Scott Lahteine
a6e39c1005 Release 1.1.0-RC4 2016-03-24 05:32:33 -07:00
Scott Lahteine
42ec1f39e7 Merge pull request #3207 from jbrazio/bugfix/toshiba-sdhc-flashair
Toshiba Flash Air Wifi SD card support
2016-03-24 05:28:48 -07:00
Scott Lahteine
b6ca86b974 Merge pull request #3197 from PheiPheiPhei/RCBugFix
Enabling servo usage on boards with PWM current control
2016-03-24 05:27:57 -07:00
Scott Lahteine
515c8d4fe9 Merge pull request #3226 from yarda/fix-use-arduino-protocol-for-programming
Use arduino programming protocol by default for sanguino
2016-03-24 05:26:02 -07:00
Scott Lahteine
a6805ddf30 Merge pull request #3225 from yarda/fix-melzi-makr3d
Fix MELZI_MAKR3D to use correct motherboard
2016-03-24 05:24:57 -07:00
Scott Lahteine
d62ba3d87e Merge pull request #3222 from thinkyhead/rc_persist_endstop_enabling
M120/M121 also set endstops non-homing state
2016-03-24 04:41:42 -07:00
Scott Lahteine
af32a7d5d6 M120/M121 also set endstops non-homing state 2016-03-24 03:24:23 -07:00
Scott Lahteine
02f466e633 Merge pull request #3202 from thinkyhead/rc_menu_item_M303_redo
Add Menu Items to initiate M303
2016-03-24 02:41:16 -07:00
Scott Lahteine
04fa9d4f47 Make Autotune options into Menu Edit Items 2016-03-24 02:00:08 -07:00
WPBack
e3f583a3be Fixes for PID AutoTune from menu
Fixes for #3189

Setting a temp is still missing
2016-03-24 01:47:30 -07:00
WPBack
3b3e8a02b5 Initial implementation of PID Autotune Menu Items
Adds the parameter U to M303. If U1 is included , it will use the
PID-values from the auto-tune.
2016-03-24 01:46:37 -07:00
Scott Lahteine
da9d4c4caf Merge pull request #3206 from esenapaj/patch-5
Follow-up the PR #3082, etc
2016-03-24 00:20:25 -07:00
Scott Lahteine
c5857f96c8 Merge pull request #3182 from thinkyhead/rcbugfix_printrboard_revf
Add support for Printrboard RevF
2016-03-24 00:12:06 -07:00
Scott Lahteine
f774420488 Merge pull request #3196 from thinkyhead/rc_controllerfan_bug
Make DISABLE_INACTIVE_X, etc., true if missing
2016-03-24 00:11:46 -07:00
Scott Lahteine
7d55d86081 Merge pull request #3219 from AnHardt/RH-pos-update
Send position updates to RH
2016-03-23 23:20:24 -07:00
Scott Lahteine
7ea4e095ad Merge pull request #3220 from thinkyhead/rc_tori_spelling
Patch minor spelling error in cn, en, gl language file headings
2016-03-23 22:43:11 -07:00
Scott Lahteine
bcbac698f2 Patch minor spelling issue in cn, en, gl language file headings 2016-03-23 22:30:07 -07:00
Scott Lahteine
49ed4696ea Merge pull request #3218 from AnHardt/lost-pin-undef
Fix lost undef Y_MAX_PIN in pins.h
2016-03-23 21:37:51 -07:00
Scott Lahteine
7112f2e41a Merge pull request #3204 from esenapaj/patch-3
Change link to the document
2016-03-23 20:56:52 -07:00
Scott Lahteine
041fc639d7 Merge pull request #3215 from AnHardt/fix-kickstart
Fix Fan KICKSTART
2016-03-23 20:54:58 -07:00
AnHardt
1c6a16d5bb Send position updates to RH
Send position updates to RH where RH can not know the end position.

For example after G28 RepetierHost assumes to be at the homing-point,
but with a servo probe we are much higher. Now the RH-software-endstops
will prevent us from going down (if activated). With this patch the
internal position of RH is updated with `current_position[]`.
2016-03-23 13:30:50 +01:00
AnHardt
1b336971ae Fix lost undef Y_MAX_PIN in pins.h 2016-03-23 12:48:06 +01:00
AnHardt
ba4eebad2f Fix Fan KICKSTART
Sorting ot what else belongs to what if was not so hard.
But the static `ms = ms = millis();` was a bit surpising.
2016-03-23 12:08:02 +01:00
Scott Lahteine
cbce025248 Merge pull request #3217 from thinkyhead/rc_updated_kana
Patch-up to commits for Kana #3203.
Closes #3203.
2016-03-23 02:46:26 -07:00
esenapaj
665338bb69 Update Japanese translation 2016-03-23 02:43:53 -07:00
Scott Lahteine
97ed8abd3f Merge pull request #3213 from AnHardt/extend-gitignore
Extend .gitignore
2016-03-23 00:34:30 -07:00
Scott Lahteine
b705ae0cb0 Merge pull request #3210 from thinkyhead/rc_cleanup_travis_ci
Improve Travis CI test
2016-03-23 00:32:45 -07:00
Scott Lahteine
1cd1ccbf86 Enable/disable multiple options on a single line. 2016-03-22 22:33:00 -07:00
Scott Lahteine
ff272c7b69 Improve Travis CI test
- Add shell scripts to help with managing configs
- Clean up .travis.yml file by using shell scripts
- Don’t download “astyle” – not needed and delays Travis results
2016-03-22 22:23:07 -07:00
AnHardt
0c8e747f88 extend .gitignore 2016-03-22 17:05:45 +01:00
Scott Lahteine
815943ceed Merge pull request #3209 from AnHardt/call-buzz-direct
Call buzz() directly from M428
2016-03-22 08:04:30 -07:00
AnHardt
6486e8b74a Call buzz() directly from M428 2016-03-22 15:05:04 +01:00
jbrazio
757661b299 Toshiba Flash Air Wifi SD card support 2016-03-22 11:42:11 +00:00
esenapaj
fc75e6f92d Follow-up the PR #3082, etc
Follow-up the PR #3082
Follow-up the commit 143ad74: unnoticed updates
Fix for commit b0f5ba0: Z offset: -front [of the nozzle] +behind -> Y offset: -front [of the nozzle] +behind
Standardize the writing method: Z-probe, z-probe -> Z Probe
Adjust spacing
2016-03-22 20:22:01 +09:00
esenapaj
22299c13c1 Change link to the document
documentation/LCDLanguageFont.md moved to http://www.marlinfirmware.org/ at commit 12d0983757,
but http://www.marlinfirmware.org/ isn't working.
2016-03-22 19:58:41 +09:00
PheiPheiPhei
adb5375a09 Enabling servo usage on boards with PWM current control
Enabling servo usage on boards with PWM current control
timer5 is used by some boards like the Mini Rambo for controlling motor current via PWM, see stepper.cpp.
```cpp
  #ifdef MOTOR_CURRENT_PWM_XY_PIN
    pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT);
    pinMode(MOTOR_CURRENT_PWM_Z_PIN, OUTPUT);
    pinMode(MOTOR_CURRENT_PWM_E_PIN, OUTPUT);
    digipot_current(0, motor_current_setting[0]);
    digipot_current(1, motor_current_setting[1]);
    digipot_current(2, motor_current_setting[2]);
    //Set timer5 to 31khz so the PWM of the motor power is as constant as possible. (removes a buzzing noise)
    TCCR5B = (TCCR5B & ~(_BV(CS50) | _BV(CS51) | _BV(CS52))) | _BV(CS50);
  #endif
}
```
Using the same timer for controlling servos results in loss of motor control. So use timer4/3 for those boards instead.
[See discussion here.](http://shop.prusa3d.com/forum/software-f13/enabling-auto-leveling-in-firmware-t416-s40.html)
2016-03-22 00:56:31 +01:00
Scott Lahteine
cadded1e21 Merge pull request #3201 from jbrazio/feature/update-hephestos2-default-config
Update the Hephestos 2 default config
2016-03-21 14:35:00 -07:00
jbrazio
04e57e2b5e Update the Hephestos 2 default config 2016-03-21 18:20:29 +00:00
Scott Lahteine
40c7e5d4e7 Merge pull request #3199 from esenapaj/patch-2
fix spelling
2016-03-21 05:49:59 -07:00
esenapaj
f260e00a72 fix spelling
Thermister -> Thermistor
2016-03-21 20:57:03 +09:00
Scott Lahteine
b1a3a95ad4 Tweak controllerFan to save a cycle or two 2016-03-20 22:11:09 -07:00
Scott Lahteine
04a6924633 Make DISABLE_INACTIVE_X, etc., the same as DISABLE_X (etc.) if missing 2016-03-20 22:10:52 -07:00
Scott Lahteine
15fccd43ee Fix spacing of an #endif 2016-03-20 20:32:55 -07:00
Scott Lahteine
be08eb6153 Merge pull request #3194 from jbrazio/feature/add-pt_pt-utf8
Add pt_pt-utf8 language pack and fix some minor compiler warnings
2016-03-20 17:42:45 -07:00
Scott Lahteine
d1ff7959b7 Merge pull request #3188 from esenapaj/patch-1
follow-up the commit b82d91e
2016-03-20 17:39:52 -07:00
Scott Lahteine
10caee2b7c Merge pull request #3187 from AnHardt/target_extruder_number
Fix extrudernum in MSG_INVALID_EXTRUDER
2016-03-20 17:15:22 -07:00
Scott Lahteine
1cc316f1fd Merge pull request #3082 from thinkyhead/updated_2820
This is quite comprehensive. If probes are disabled in any case when they shouldn't be, I'm sure we will hear about it soon.
2016-03-20 17:10:38 -07:00
Scott Lahteine
7bf5d117e7 Merge pull request #3069 from thinkyhead/rc_delta_compat_m48
Delta-compatible extensions to M48
2016-03-20 17:09:18 -07:00
Scott Lahteine
db8ab50c66 Merge pull request #3192 from tnw513/fix_lang
Added missing translations.
2016-03-20 17:07:00 -07:00
Scott Lahteine
06332f20be Merge pull request #3113 from jbrazio/bugfix/3061-stop-print-time-counter
Stop print timer with M105/M109
2016-03-20 17:05:07 -07:00
Scott Lahteine
ac4e461901 Merge pull request #3186 from AnHardt/Fix-KEEPALIVE_STATE
Fix KEEPALIVE_STATE
2016-03-20 16:29:19 -07:00
jbrazio
92a7d4515a Missing coma comment correction for the default cofig file 2016-03-20 23:23:11 +00:00
jbrazio
1aa531a3db Missing coma comment correction for all config files 2016-03-20 23:21:45 +00:00
jbrazio
68dda08fff Added pt_pt-utf8 language pack; Fixed some minor compiler warnings; Harmonize file suffix for the current existing UTF8 language packs; Updated all configuration files to reflect the new language packs 2016-03-20 23:14:24 +00:00
Silvio Didonna
f8c10d6b0e Added missing translations. 2016-03-20 22:34:00 +01:00
esenapaj
468df96b0f follow-up the commit b82d91e
follow-up the commit b82d91eca6
2016-03-20 20:57:14 +09:00
AnHardt
338b69c24b Fix extrudernum in MSG_INVALID_EXTRUDER
SERIAL_ECHO is not very good in printing uint8_t - so cast. to int.
2016-03-20 11:39:06 +01:00
AnHardt
b39b54031b Fix KEEPALIVE_STATE
Add return to NOT_BUSY for M105
Replace WAIT_FOR_USER with PAUSED_FOR_USER

Add Travis test for FILAMENTCHANGEENABLE
2016-03-20 10:41:56 +01:00
Scott Lahteine
32f75749e4 Merge pull request #3117 from Blue-Marlin/thermal-protection
Improve the descriptions for THERMAL_PROTECTION
2016-03-19 23:41:05 -07:00
Scott Lahteine
7aafee3003 Merge pull request #3185 from esenapaj/patch-1
follow-up the PR #3180, #3183
2016-03-19 23:36:55 -07:00
esenapaj
37eaa1406b follow-up the PR #3180 2016-03-20 15:33:02 +09:00
esenapaj
198d5d56fd follow-up the PR #3183 2016-03-20 13:58:05 +09:00
Scott Lahteine
4119cef32f Merge pull request #3180 from clexpert/RCBugFix
Czech language specific changes
2016-03-19 20:18:05 -07:00
Scott Lahteine
da94bcfebb Merge pull request #3184 from thinkyhead/fix_command_injection
Patch drain_queued_commands_P
2016-03-19 20:12:16 -07:00
Scott Lahteine
41145e6e81 Patch drain_queued_commands_P
Fix a SNAFU that should have been caught in #3012
2016-03-19 20:10:41 -07:00
Scott Lahteine
3ce0c5063f Merge pull request #3183 from thinkyhead/rc_lcm1602_support
Also closes #3181.
2016-03-19 19:28:50 -07:00
CoderSquirrel
eda95d8bed Add support for LCM1602 16x2 I2C LCD adapter 2016-03-19 19:26:44 -07:00
Scott Lahteine
59483221d5 Move stepper DAC to a separate file 2016-03-19 19:24:26 -07:00
Scott Lahteine
5d0570cea0 Make digitalPotWrite depend on HAS_DIGIPOTSS 2016-03-19 19:24:26 -07:00
Scott Lahteine
f96bc03081 Add M907-M910 g-codes support for Printrbot Rev. F 2016-03-19 19:24:26 -07:00
Scott Lahteine
8d9cf72db0 Merge pull request #3177 from thinkyhead/rc_finish_M665
Include M665 "ABC" parameters in EEPROM
2016-03-19 18:08:33 -07:00
Stephanie
6843b78f99 Add support for Printrboard RevF
The PrintrBoard Rev F utilizes a mcp4728 DAC to set motor current. Printrbot's implementation utilizes 2 new M-codes to set and write the DAC settings to the DAC EEPROM: `M909` (Read DAC) and `M910` (Write DAC). `M907` is re-used to set value, `M908` for direct control.

The Pins file for the RevF board is included.
2016-03-19 16:43:37 -07:00
Petr Zahradnik
98392782ea Update Configuration.h 2016-03-19 20:45:13 +01:00
Petr Zahradnik
daa52124b0 Update language_cz.h 2016-03-19 20:43:28 +01:00
Blue-Marlin
3166aed087 Improve the descriptions for THERMAL_PROTECTION 2016-03-19 14:08:59 +01:00
Scott Lahteine
a02ae36ae8 Include M65 "ABC" parameters in EEPROM
Addressing #2773
2016-03-19 05:52:20 -07:00
Scott Lahteine
7f2375ab46 Merge pull request #3176 from thinkyhead/rc_patch_3149_part_ii
Use const parameters in lcd_implementation_drawedit (etc.)
2016-03-19 05:18:25 -07:00
Scott Lahteine
cf7c444aff Apply unknown_position_error elsewhere 2016-03-19 05:13:40 -07:00
Scott Lahteine
eda5190581 Check for known position in M48 2016-03-19 05:13:40 -07:00
Scott Lahteine
68085ca855 Updated M48 friendly for DELTA
Partial implementation with reference to MarlinFirmware/Marlin#3011
2016-03-19 05:13:40 -07:00
Scott Lahteine
6a3529247f "Homing" as a translatable string 2016-03-19 04:41:03 -07:00
Scott Lahteine
c97c2dcaf7 Use const parameters instead of static casting
Alternative fix to #3149
2016-03-19 03:36:53 -07:00
Scott Lahteine
09ef955191 Merge pull request #3086 from thinkyhead/rc_two_fans
Support for multiple PWM fans
2016-03-19 03:19:18 -07:00
Scott Lahteine
38b0082bf2 Additional tweaks to M42 exit conditions 2016-03-19 03:10:18 -07:00
Scott Lahteine
4bbea5124d Support for multiple PWM fans 2016-03-19 03:10:18 -07:00
Scott Lahteine
637cc03686 Fix M109 so it won't wait for cooling
Addressing issue #2767
2016-03-19 03:00:58 -07:00
AnHardt
3f45a1acf9 Check probes only when deployed
Aim: Test probes in update_endstops only when activated

Changes:
Configurations
 Add define for FIX_MOUNTED_PROBE to handle the situation where formerly ENDSTOPS_ONLY_FOR_HOMING had to be set, or lowering the nozzle below Z_PROBE_OFFSET_FROM_EXTRUDER could give an "endstop hit" message.
 Add define for Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to indicate a common situation, that we have a probe but it is connected to an endstop pin
 Add some comments
 Shift some entries to have related things together.

Conditionals.h
 We have a probe (HAS_Z_MIN_PROBE) if one of the pins is defined AND one of the probes is defined.

SanityCheck.h
 Add some tests if the probe is connected and if we have defined a probe.

stepper.cpp
 Changes to test the probe only when it is deployed (z_probe_is_active).
 Test update_endstops() when the probe is deployed.

MarlinMain.cpp
 a. set and reset z_probe_is_active in deploy_z_probe(), stow_z_probe() and dock_sled()
 b. set and reset z_probe_is_active in the case a z-servo is moved to a defined position. The only remaining unhandled servo move is in M280 where we do not end in a defined position. If you want to handle a probe use M401/402
 c. skip deploying/stowing when already deployed/stowed in the dedicated deploy/stow functions.
 d. Handle the new FIX_MOUNTED_PROBE in parallel to a servo driven probe/endstop.

 To do: In another PR. handle all probes in deploy/stow_z_probe.
 Sort out SERVO_LEVELING vs. HAS_SERVO_ENDSTOPS.
2016-03-19 02:00:08 -07:00
Scott Lahteine
4634feaeab Merge pull request #3012 from thinkyhead/fix_command_injection
Use a serial line buffer to prevent queue corruption
2016-03-19 01:43:54 -07:00
Scott Lahteine
9bf87aac6a Merge pull request #3127 from thinkyhead/rc_core_babystepping
Implement BABYSTEPPING for COREXY and COREXZ
2016-03-18 23:25:26 -07:00
Scott Lahteine
4ae03df5c2 Merge pull request #3109 from thinkyhead/rc_host_keepalive
Provide feedback to hosts when busy
2016-03-18 23:22:29 -07:00
Scott Lahteine
963a92ceda Patch idle forevermore 2016-03-18 22:38:35 -07:00
Scott Lahteine
7ec7bb31c4 Send a Busy signal to hosts during long processes, wait for input, etc
If Marlin is blocking the serial input or command queue for any length
of time (for example more than 2 seconds), it needs to send a message
to serial out to inform the host that it is busy. Marlin should only
send these messages out when busy, and preferably not when trying to
print formatted output.
2016-03-18 22:38:35 -07:00
Scott Lahteine
861391d530 Merge pull request #3175 from esenapaj/patch-2
follow-up the PR #3114
2016-03-18 22:10:50 -07:00
esenapaj
8d580ea7e8 follow-up the PR #3114
follow-up the commit d56c6af24e
2016-03-19 13:17:34 +09:00
Scott Lahteine
d9e1f22682 BABYSTEPPING requires ULTRA_LCD 2016-03-18 18:22:53 -07:00
Scott Lahteine
e5fd43f343 Implement BABYSTEPPING for COREXY and COREXZ 2016-03-18 18:22:53 -07:00
Scott Lahteine
80277cc9c8 drain_queued_commands_P now returns true if there are more 2016-03-18 17:56:48 -07:00
Scott Lahteine
8fe7420310 Use a separate serial line buffer 2016-03-18 16:46:20 -07:00
Scott Lahteine
7d25c107a8 Merge pull request #3149 from esenapaj/patch-1
suppress warnings
2016-03-18 15:40:14 -07:00
Scott Lahteine
d56c6af24e Merge pull request #3114 from thinkyhead/rc_reverse_lcd_menu
Option to reverse the click-wheel direction in menus
2016-03-18 15:39:29 -07:00
Scott Lahteine
cc291aeb3c Move definition of "blink" to main ultralcd file 2016-03-17 18:19:05 -07:00
Scott Lahteine
e7e1866589 Merge pull request #3161 from Alex9779/fix_InitialExtruderDirection
Fix initial extruder direction for second/third/fourth extruder if they run inverted to the first
2016-03-16 12:58:10 -07:00
Scott Lahteine
57e82cacc9 Merge pull request #3156 from esenapaj/patch-3
Fix CardReader::lsDive()
2016-03-16 12:48:22 -07:00
Alexander Leisentritt
4338813814 save last extruder and set stepper directions too in case the extruder changed
fixes MarlinFirmware/Marlin#3144 and MarlinFirmware/Marlin#3083
2016-03-16 20:20:34 +01:00
Scott Lahteine
8f24475e02 Simplify limiting encoderLine in END_MENU 2016-03-16 04:05:41 -07:00
Scott Lahteine
fbef2f5b61 Implement reverse menu direction in ultralcd.cpp 2016-03-16 04:03:49 -07:00
Scott Lahteine
b8b51d8da8 Add the REVERSE_MENU_DIRECTION option 2016-03-16 04:02:40 -07:00
Scott Lahteine
999a76dbdf Merge pull request #3157 from esenapaj/patch-4
Use variable in lcd_erase_line()
2016-03-16 02:46:42 -07:00
Scott Lahteine
e8fa843c2d Merge pull request #3164 from epatel/epatel/RCBugFix
Fix for #3160 MESH_BED_LEVELING broke correct G1 movement in Z
2016-03-16 02:40:54 -07:00
Scott Lahteine
fc04b587cf Merge pull request #3147 from thinkyhead/rc_stringify_macro
Promote STRINGIFY to macros.h
2016-03-15 17:37:03 -07:00
Scott Lahteine
d7c6fd5c2f Merge pull request #3146 from thinkyhead/rc_enabled_true_false
Support "true" and "false" in the ENABLED macro
2016-03-15 17:35:55 -07:00
Edward Patel
cb0dbfa3b5 Fix for #3160 MESH_BED_LEVELING broke correct G1 movement in Z 2016-03-16 01:26:00 +01:00
esenapaj
a15c5d222a Use variable in lcd_erase_line()
lcd_erase_line() is called with argument, but the argument is ignored by lcd_erase_line().
2016-03-16 02:59:06 +09:00
esenapaj
609c0d46d9 Fix CardReader::lsDive()
If comparison between signed char(-128 ~ +127) and DIR_NAME_DELETED(uint8_t const 0XE5, it's +229),
it makes incorrect result.
2016-03-16 02:47:58 +09:00
Roxy-3DPrintBoard
3ba9b06b79 Update README.md 2016-03-15 09:12:06 -05:00
Roxy-3DPrintBoard
5286e73f29 Update README.md 2016-03-15 09:10:57 -05:00
Scott Lahteine
2ef49a9d53 Wrap DEFAULT_Ki, DEFAULT_Kd, PID_dT
Addition to #3140
2016-03-15 03:49:44 -07:00
Scott Lahteine
eb8cf29464 Merge pull request #3151 from hydrocat/RCBugFix
Uptades the pt-br translation
2016-03-15 02:46:46 -07:00
Scott Lahteine
91cdea4022 Merge pull request #3153 from thinkyhead/rc_fix_macro_expansion
Additional macro wrapping, patches for #3140
2016-03-15 01:37:28 -07:00
Scott Lahteine
6e1bc03d3b Additional wrapping for #3140 2016-03-15 01:18:58 -07:00
Scott Lahteine
cc9968f893 Patch spacing in #3140 2016-03-15 01:18:58 -07:00
Scott Lahteine
1c384930f3 Merge pull request #3140 from thinkyhead/rc_fix_macro_expansion
Wrap macros to prevent bad expansions
2016-03-15 00:25:34 -07:00
Scott Lahteine
ff30a18d9c Merge pull request #3150 from esenapaj/patch-2
Use local variable in recalc_delta_settings()
2016-03-14 18:55:57 -07:00
VITORIO MIGUEL PRIETO CILIA
de2cca73ac Uptades the pt-br translation 2016-03-14 21:16:57 -03:00
esenapaj
a4314c4907 Use local variable in recalc_delta_settings()
diagonal_rod hadn't been used anywhere.
2016-03-15 06:47:27 +09:00
esenapaj
8de7a6f9b1 suppress warnings 2016-03-15 06:34:02 +09:00
Scott Lahteine
21be07a6f6 Merge pull request #3126 from Blue-Marlin/stackoverflow-with-e
Extend stack_overflow_protection for lcd_move_e and _lcd_level_bed
2016-03-14 00:04:13 -07:00
Scott Lahteine
9418b4f2f3 Promote STRINGIFY to macros.h 2016-03-13 23:15:17 -07:00
Scott Lahteine
4b648793f2 Use ENABLED with DISABLE_[INACTIVE_][XYZ] 2016-03-13 22:15:45 -07:00
Scott Lahteine
73a59a4e45 Allow ENABLED(b) to work with "true" and "false" 2016-03-13 22:15:01 -07:00
Blue-Marlin
c73f1b2471 Extend stack_overflow_protection for lcd_move_e and _lcd_level_bed
Extend stack_overflow_protection for lcd_move_e() and _lcd_level_bed() with
a refined method of 3050.
2016-03-13 13:59:44 +01:00
Scott Lahteine
f4a3efd35e Merge pull request #3116 from thinkyhead/rc_fix_value_edit_bug
Fix value edit click bug
2016-03-13 04:08:43 -07:00
Scott Lahteine
3f5fbbd398 Merge pull request #3124 from jbrazio/bugfix/update-g29-auto-level-bed-topography
Update the bed topography output done by G29
2016-03-13 03:51:43 -07:00
Scott Lahteine
c16c47954c Merge pull request #3141 from esenapaj2/RCBugFix
follow-up the PR #3131
2016-03-13 03:37:39 -07:00
Scott Lahteine
30c3a21d1f Merge pull request #3112 from thinkyhead/rc_support_MAX31855 2016-03-13 03:30:48 -07:00
Scott Lahteine
81d759efb6 Merge pull request #3138 from jbrazio/bugfix/m109-r-could-wait-forever 2016-03-13 03:26:34 -07:00
Scott Lahteine
2179f598bf Merge pull request #3122 from thinkyhead/rc_group_filament_change 2016-03-13 03:25:38 -07:00
Scott Lahteine
62a9b9902d Merge pull request #3133 from thinkyhead/rc_machine_uuid_in_m115 2016-03-13 03:23:54 -07:00
Scott Lahteine
f928894c38 Merge pull request #3132 from thinkyhead/rc_heating_failed_err 2016-03-13 03:23:14 -07:00
esenapaj2
236a44c83b follow-up the PR #3131
follow-up the commit 7326d63ce0
update Configration_adv.h of Hephestos2
delete unnecessary spaces
2016-03-13 19:12:39 +09:00
Scott Lahteine
7326d63ce0 Merge pull request #3131 from thinkyhead/pwm_motor_current_config
PWM_MOTOR_CURRENT Flag
2016-03-13 00:03:03 -08:00
Scott Lahteine
f9ded2a7c4 Wrap macros to prevent bad expansions 2016-03-12 22:38:55 -08:00
jbrazio
a645860431 All print timer related activity now uses print_job_start(), print_job_timer() or print_job_stop() 2016-03-12 07:16:39 +00:00
jbrazio
1981e53d68 M109 R option if misused could cause a wait-forever situation 2016-03-12 06:24:24 +00:00
Scott Lahteine
7976e29399 Use MACHINE_UUID in M115
Addressing #2879. The M115 report should display `MACHINE_UUID` but it
always displays `UUID`.
2016-03-11 05:34:48 -08:00
Scott Lahteine
81aab828e2 Fix a "Heating failed" error
Addressing #3085. If the target_temperature is set directly it never invokes or disables the timer set in `start_watching_heater`, so after _stopping a print_ or turning off _all heaters_ you could get a “Heating failed” error.
2016-03-11 05:07:48 -08:00
Scott Lahteine
0c48eaf3de Expose motor current in more configs, disable by default 2016-03-11 02:25:36 -08:00
Elijah Snyder
e8b10d2836 Adding PWM_MOTOR_CURRENT flag to help expose PWM_MOTOR_CURRENTS in Configuration_adv.h similar to DIGIPOT_MOTOR_CURRENT 2016-03-11 02:25:36 -08:00
Scott Lahteine
7bb7ac8353 Merge pull request #3123 from thinkyhead/rc_move_stepper_macros
Move step macros to stepper_indirection.h
2016-03-10 18:31:01 -08:00
Scott Lahteine
cd2ef25032 Merge pull request #3119 from AnHardt/extend-Travis-for-SDSUPPORT 2016-03-10 05:38:35 -08:00
João Brázio
4d4a842cfb Update the bed topography output done by G29 2016-03-10 13:24:17 +00:00
Scott Lahteine
89838cdb10 Move step macros to stepper_indirection.h 2016-03-10 04:34:55 -08:00
Scott Lahteine
70a41a8532 Merge pull request #3121 from thinkyhead/rc_stepper_cleanup
Reduce code in stepper.cpp with some macros
2016-03-10 03:55:37 -08:00
João Brázio
793cd0ae3b Clean up the code a bit 2016-03-10 11:52:43 +00:00
Scott Lahteine
27f244ba2c Support MAX31855 as Temperature Sensor -3 2016-03-10 02:49:54 -08:00
Scott Lahteine
ce639b8b03 Group FILAMENT_SENSOR options together 2016-03-10 02:41:37 -08:00
Scott Lahteine
3fd31976c3 Reduce code in stepper.cpp with macros 2016-03-10 01:42:58 -08:00
Scott Lahteine
b45a0c4c60 Fix bugs in edit submenus so they return to origin
Expected behavior: After editing a value the menu should return to the
previous place with the edited item selected.
Actual behavior: Either the top (back) item from the previous screen is
selected, or the menu jumps up another level.
Solution: Pass the correct arguments to `lcd_goto_menu` on click when
editing a value.
2016-03-09 21:06:56 -08:00
AnHardt
25d1c94fa8 Add SDSUPPORT test to TRAVIS 2016-03-10 03:06:00 +01:00
Scott Lahteine
bedd4dab6a Merge pull request #3107 from AnHardt/z_raise_before_homing
Z_RAISE_BEFORE_HOMING -> MIN_Z_HEIGHT_FOR_HOMING
2016-03-08 19:21:43 -08:00
jbrazio
986b508ff7 Print timer now stops when it sees the last extruder temperature being shutdown 2016-03-08 18:11:02 +00:00
AnHardt
fd5414c6ea Z_RAISE_BEFORE_HOMING -> MIN_Z_HEIGHT_FOR_HOMING
rebased
corrected spelling
changed to #elif for error

Still with MIN_Z_HEIGHT_FOR_HOMING but con be done with (folder wide) search-replace when we have a better name.
2016-03-08 17:50:23 +01:00
Scott Lahteine
b7928a000a Merge pull request #3108 from AnHardt/M110+
M110 and M29 rework
2016-03-08 03:54:07 -08:00
Scott Lahteine
5cba0b4187 Merge pull request #3111 from thinkyhead/rc_drop_old_condition
Drop obsolete test for leading "N"
2016-03-08 03:07:25 -08:00
Scott Lahteine
302d1bfbc4 Drop obsolete test for leading "N" 2016-03-08 02:25:11 -08:00
Scott Lahteine
04b147645d Merge pull request #3105 from esenapaj2/esenapaj2-patch-1
update example configurations
2016-03-08 00:43:48 -08:00
AnHardt
37b857e8ec M110 ang M29 rework
Add 'ok' output for G29 actually closing the file.
Handle M110 when received without linenumber/checksumm.
2016-03-07 22:27:01 +01:00
esenapaj2
29e09c7c3e update example configurations
update old comments
update or delete deprecated definitions
complement forgotten updates
adjust spacing
some cosmetic changes
2016-03-07 22:03:33 +09:00
Scott Lahteine
fac85f6fa1 Merge pull request #3102 from jbrazio/bugfix-g28-multiple-z-movements
Bugfix: G28 was lifting Z-axis multiple times
2016-03-07 03:52:00 -08:00
jbrazio
642e3699ce Z-axis was being lift multiple times if Z_SAFE_HOMING was enabled and Z_RAISE_BEFORE_HOMING was greater than zero 2016-03-07 03:49:11 +00:00
Scott Lahteine
501f63802a Merge pull request #3077 from Blue-Marlin/watchdogreset-in-kill
Add Watchdog timer reset in kill()
2016-03-06 16:21:39 -08:00
Scott Lahteine
c23db208d9 Merge pull request #3101 from thinkyhead/rc_fix_stepper_func
Update name of st_get_axis_position_mm in stepper.h
2016-03-06 15:52:57 -08:00
Scott Lahteine
1002eb67c8 Update name of st_get_axis_position_mm in stepper.h 2016-03-06 15:46:39 -08:00
Jaroslav Škarvada
2cbcba1808 Use arduino programming protocol by default for sanguino
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2016-03-06 20:26:09 +01:00
Jaroslav Škarvada
7dde761aa6 Fix MELZI_MAKR3D to use correct motherboard
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2016-03-06 19:33:33 +01:00
Scott Lahteine
eafbc5e0cc Add AJ4P pins and fix RAMBO pins 2016-03-06 05:52:01 -08:00
Scott Lahteine
cf792fd8d8 Update configurations to use RAMPS 1.4 2016-03-06 05:52:01 -08:00
Scott Lahteine
cacf04f8a7 Base RAMPS-like boards on RAMPS 1.4 2016-03-06 05:52:00 -08:00
Scott Lahteine
50e3482e0a Handle RAMPS 1.3 as the special case 2016-03-06 05:52:00 -08:00
Scott Lahteine
679be3294f Rename RAMPS 1.3 pins for RAMPS 1.4 2016-03-06 05:52:00 -08:00
Scott Lahteine
f18d3f451a Limit LCD move_to_x/y coordinates for deltas
Related to MarlinFirmware/MarlinDev#270
2016-03-06 05:52:00 -08:00
Scott Lahteine
988332c67a Cosmetic tweaks from dev 2016-03-06 05:52:00 -08:00
Scott Lahteine
2690d8568e DOGLCD width/height in Conditionals.h 2016-03-06 05:51:59 -08:00
Scott Lahteine
614febaaf3 Fix acceleration limits
See: https://github.com/Ultimaker/Marlin/pull/7
2016-03-06 05:51:59 -08:00
Scott Lahteine
13ef12ad3f Fix power calculations
As suggested by @max-pau in #3073 - #3074
2016-03-06 05:51:59 -08:00
Scott Lahteine
e2b022cce2 Include #3053 2016-03-06 05:51:59 -08:00
Scott Lahteine
5cba0210f2 Small patch to Z_SAFE_HOMING comment 2016-03-06 05:51:58 -08:00
Scott Lahteine
6165fd41a5 Fix Hephestos 2 and other configs 2016-03-06 05:51:58 -08:00
Scott Lahteine
71718d888a Fix typos in check_axes_activity 2016-03-06 05:51:58 -08:00
Lukas Abfalterer
83795d3e63 deleted double used comments 2016-03-06 05:51:58 -08:00
jbrazio
143ad74db7 Update PROBE_OFFSET_FROM_EXTRUDER comment section in all example config
files.
2016-03-06 05:51:58 -08:00
jbrazio
b0f5ba0232 Update the PROBE_OFFSET_FROM_EXTRUDE comment section
This changes have being discussed at MarlinFirmware/Marlin#2849.
2016-03-06 05:51:57 -08:00
jbrazio
02b131b552 Replaced stock BQ PID values with fine tuned ones generated using M303 2016-03-06 05:51:57 -08:00
jbrazio
45dc8a51f3 Added readme file for bqh2 and disabled the SLOWDOWN config flag 2016-03-06 05:51:57 -08:00
Scott Lahteine
6a21180bd4 Implemented BQ ZUM Mega 3D board layout as an override to RAMPS 1.3 2016-03-06 05:51:57 -08:00
jbrazio
b18816fcbf Fine tuned XYJERK.
Disallowed the Z_PROBE_OFFSET_RANGE_MAX to be greater than zero.
2016-03-06 05:51:57 -08:00
jbrazio
be83036212 Applying suggestions by @thinkyhead at MarlinFirmware/Marlin#3049.
- Remove the forced activation of SDSUPPORT, I guess people may use the ZUM
3D board and not the LCD module.
 - Fixed the tab issue within boards.h file.
2016-03-06 05:51:56 -08:00
jbrazio
b82d91eca6 Added configuration example for the BQ Hephestos 2 3D printer.
Added support for BQ ZUM Mega 3D board and stock Hephestos 2 thermistor.
2016-03-06 05:51:56 -08:00
Scott Lahteine
45bcc43e48 Don't override SOURCE_CODE_URL in Default_Version.h
- Defining `SOURCE_CODE_URL` in `Default_Version.h` overrides it
elsewhere. So don’t define it there.
- Also fix up `language.h` so no `#undef` will be needed.
2016-03-06 05:51:56 -08:00
Scott Lahteine
ef68c1910c Check that the temperature is close to target 2016-03-06 05:51:56 -08:00
Scott Lahteine
ea9fd1200b Fix M109 so it won't wait for cooling
Addressing issue #2767
2016-03-06 05:51:56 -08:00
Scott Lahteine
e4945b30d2 sbi and cbi are deprecated 2016-03-06 05:51:55 -08:00
Scott Lahteine
ff13070b59 Use _BV macros, patch up others 2016-03-06 05:51:55 -08:00
Scott Lahteine
209f5f21e0 Use macros where possible
Apply `constrain`, `NOMORE`, `NOLESS` and `CRITICAL_SECTION` macros
wherever possible.
2016-03-06 05:51:55 -08:00
Scott Lahteine
c8f76bb8aa Create BITSET/BITCLR macros 2016-03-06 05:51:55 -08:00
Scott Lahteine
adc25db8c4 Merge pull request #3005 from thinkyhead/rcbugfix_eeprom
Fix layout descr. in configuration_store.cpp
2016-03-06 00:31:44 -08:00
Scott Lahteine
e7cf85b922 Merge pull request #3013 from thinkyhead/esenapaj-patch-1
Enhanced #3010 - formal Mesh/Manual dependency
2016-03-06 00:30:02 -08:00
Scott Lahteine
6e64895c30 Merge pull request #3001 from AlwaysTinkering/RCBugFix
Rc bug fix - Fix for issue #2931
2016-03-06 00:20:29 -08:00
Scott Lahteine
34b8b9f0f5 Merge pull request #2995 from thinkyhead/rcbugfix_corexy_corexz
Add CORE support to st_get_position_mm (and elsewhere)
2016-03-06 00:17:03 -08:00
Scott Lahteine
1e20949afb Merge pull request #3092 from thinkyhead/rc_2860_printrbot_lcd
Fix Printrboard with LCD (redo)
2016-03-06 00:14:29 -08:00
Scott Lahteine
f5972c4d2c Merge pull request #2994 from AnHardt/Inerrup-save-serial
Interrupt safe serial --- Guard against non-atomic variable changes from interrupt routines
2016-03-05 22:25:12 -08:00
Scott Lahteine
3a3d358df9 Fix Printrboard with LCD (redo)
Based on #2860 - rebased for RCBugFix
2016-03-05 22:13:00 -08:00
Scott Lahteine
eb85342fd9 Merge pull request #2989 from AnHardt/fix2661
Pre home display - Stepper release
2016-03-05 21:30:17 -08:00
Scott Lahteine
14f3ca1b2e Merge pull request #2978 from thinkyhead/tool_offset_abl_rcbugfix
Apply bed leveling matrix when switching extruders
2016-03-05 21:23:25 -08:00
Scott Lahteine
91fcdc2b99 Merge pull request #3090 from thinkyhead/rc_spelling
Various minor spelling corrections
2016-03-05 20:50:34 -08:00
Scott Lahteine
772460a7b8 Various minor spelling corrections
Redo of #2939 rebased against RCBugFix
2016-03-05 20:41:15 -08:00
Scott Lahteine
aa0b0483f4 Merge pull request #3089 from thinkyhead/rc_apply_2924
Correct raise_z_for_servo for Z offsets below the nozzle
2016-03-05 20:23:14 -08:00
lrpirlet
0fb507a75d correct raise_z_for_servo 2016-03-05 20:19:53 -08:00
Scott Lahteine
04a0d45c22 Merge pull request #2821 from MarlinFirmware/ReinitializeDisplay
Fix status LEDs update when reinitializing the display
2016-03-05 15:31:49 -08:00
Blue-Marlin
b4e5e0f11d Add Watchdog reset in kill()
Add watchdog reset in the kill loop to simplify recovering.
2016-03-04 00:35:18 +01:00
Scott Lahteine
547d35a921 Merge pull request #3067 from Blue-Marlin/ALARM_PIN
Remove unused ALARM_PIN
2016-03-02 20:20:26 -08:00
Scott Lahteine
79778d46d9 Merge pull request #3066 from Blue-Marlin/Fix-disable_all_heaters()
Fix disable_all_heaters() for MAX6675
2016-03-02 17:35:08 -08:00
Blue-Marlin
a68228bf55 Remove unused ALARM_PIN
Remove unused ALARM_PIN from all the Configuration.h's
2016-03-02 14:29:49 +01:00
Scott Lahteine
9eb4aceee4 Merge pull request #2986 from thinkyhead/enable_watchdog
Enable USE_WATCHDOG by default
2016-03-02 05:29:42 -08:00
Blue-Marlin
0631541166 Fix disable_all_heaters() for MAX6675 2016-03-02 14:17:23 +01:00
Scott Lahteine
222d13d5ed Merge pull request #3051 from thinkyhead/rcbugfix_dual_axis_offset
Code cleanup in gcode_T
2016-03-02 03:45:40 -08:00
Scott Lahteine
186629aee8 Merge pull request #3057 from jbrazio/3034-z_raise_after_probing_fix
Fix Z_RAISE_AFTER_PROBING for non DELTA printers
2016-03-02 03:14:27 -08:00
Scott Lahteine
a42fb35c56 Merge pull request #3050 from Blue-Marlin/fix-1166
Temporary workaround for stack overflow
2016-03-01 11:33:19 -08:00
jbrazio
67e15aac3d As pointed out by @Blue-Marlin the previous code would raise the Z axis
twice for a servo based probe.
2016-03-01 00:22:48 +00:00
jbrazio
17cc2a9663 Z_RAISE_AFTER_PROBING value was being ignored by Marlin because
raise_z_after_probing() was only called if the printer type was set to a
DELTA or if the printer had a docking sled for the probe.
2016-02-29 15:48:26 +00:00
Scott Lahteine
252f4a75cd Merge pull request #3043 from oxivanisher/RCBugFix
Example configuration for Kossel XL
2016-02-28 23:57:13 -08:00
Scott Lahteine
fd1243c184 Merge pull request #3052 from thinkyhead/rc_fix_m145_eeprom_output
Fix "M145" output in M503 report
2016-02-28 23:43:08 -08:00
Scott Lahteine
0bc648353f Merge pull request #3031 from tnw513/RCBugFix
Fix board type for Hephestos: RAMPS 1.4
2016-02-28 23:23:01 -08:00
AnHardt
f27c2b6b4b Reimplement #2892
Include #2892 to fix the isHeating symbol in the extruder graphics
2016-02-28 23:20:30 +01:00
AnHardt
615bec2329 Activate warning about possible reduced accuracy by default
Renamed `WARN_REDUCED_ACCURACY` to `DISABLE_REDUCED_ACCURACY_WARNING`

Changed the condition for blinking from
```
#if ENABLED(WARN_REDUCED_ACCURACY)
```
to
```
#if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING)
```
2016-02-28 23:20:21 +01:00
AnHardt
1c889cd303 Refresh previous_cmd_ms during run_z_probe()
Refresh previous_cmd_ms during run_z_probe() to prevent:
stepper shutdown for expired DEFAULT_STEPPER_DEACTIVE_TIME
and extrudes for expired EXTRUDER_RUNOUT_SECONDS
(https://github.com/MarlinFirmware/MarlinDev/issues/238)
2016-02-28 23:20:12 +01:00
AnHardt
4b02f33e69 Distribute config-changes to the other configurations 2016-02-28 23:20:04 +01:00
AnHardt
be24fdacea The same changes to the axis-letters now for the char-displays
Exactly the same - copy/paste.
2016-02-28 23:19:54 +01:00
AnHardt
5b0f659355 Changes for graphics displays
Replaced displaying "---" instead of the value of a coordinate when
unhomed or with reduced precision
with blinking the coordinate-prefix-character ('X','Y','Z').
For "unhomed" a '?' is shown every second second - until that axis is
homed. The value displayed is, as before the "---" where displayed, the
relative to the reset position coordinate value.
When the axis stepper was disabled, now we can display a hint on that,
by showing a blinking ' ' instead of the axis letter, when
WARN_REDUCED_ACCURACY is defined.

I suppose the code itself is here the better documentation.

A '+/-' character is in non of our charsets so i decided for a '?' for
now to reduce the work.
There is no additional space on the displays one could use to display
the information, so replacing something is the only option. As the axis
letters are totally redundant with their positions on the display they
contain the least information.
So my decision was to overwrite them.
2016-02-28 23:19:32 +01:00
AnHardt
32ae9f9ab7 Fix stepper shutdown during waiting for temperatures
In the wait loops of M109 M190 idle() is called, what checks
stepper_inactive_time against previous_cmd_ms.
Because we can be several minutes inside the loop, resetting
previous_cmd_ms only outside the loop caused stepper shutdowns.

The name of previous_cmd_ms does not really reflect its use. It's set
not only when a new command was received or executed but also in many of
the movement routines. For that the little extension of using it during
the wait will (hopefully) not hurt.

# Conflicts:
#	Marlin/Configuration_adv.h
2016-02-28 16:58:50 +01:00
AnHardt
b6e69e71ce Make stepper shutdown after inactivity dependent
Make stepper shutdown after inactivity dependent on a new set of
#defines.
DISABLE_INACTIV_X
DISABLE_INACTIV_Y
DISABLE_INACTIV_Z
DISABLE_INACTIV_E

And make exemplaric Configuration.
Names can be discussed.

This makes the disabling of the steppers independent from the DISABLE_?
settings witch shut down the steppers immediately.
2016-02-28 16:58:42 +01:00
AnHardt
051325ccd7 Introduce axis_homed
Introduce additional variable axis_homed to replace axix_known_position
when the coordinate display should indicate the axis is not homed.
This is to distinguish between "not homed" and "inexact position possible
because stepper was disabled".

# Conflicts:
#	Marlin/ultralcd_implementation_hitachi_HD44780.h
solved
2016-02-28 16:58:28 +01:00
AnHardt
e736779d7e blink for char-lcds
Implement and test blinking for char-lcds

# Conflicts:
#	Marlin/ultralcd_implementation_hitachi_HD44780.h
solved
2016-02-28 16:58:19 +01:00
Scott Lahteine
7253a1971d Fix "M145" output in M503 report 2016-02-27 22:28:08 -08:00
Scott Lahteine
d118e3f985 Merge pull request #3044 from thinkyhead/rc_gcode_spaces
Fix GCode handling of spaces between command letter and first digit
2016-02-27 22:21:28 -08:00
Scott Lahteine
100271e6ac minor cleanup in gcode_T 2016-02-27 19:56:56 -08:00
Blue-Marlin
fd9e94e5a4 Fix crashes when the Z axis is moved via LCD
Fix crashes when the Z axis is moved via LCD
by calling `plan_buffer_line` only when there is enough room in the
planner buffer, to avoid endless recursion.
A brief description about what went wrong is in #1166
2016-02-28 00:59:47 +01:00
Scott Lahteine
8dccd5a7ea Merge pull request #3018 from CONSULitAS/RCBugFix_K8200_backinsync
K8200: sample config back in sync
2016-02-27 05:22:12 -08:00
Scott Lahteine
6a4f06d35d Fix GCode handling of spaces between command letter and first digit 2016-02-26 18:42:59 -08:00
Marc Urben
68eae2b5a8 added kossel xl example configuration 2016-02-27 01:48:45 +01:00
Silvio Didonna
eb5817675d Fix board type: RAMPS 1.4 2016-02-25 15:52:41 +01:00
Scott Lahteine
8006684c19 Merge pull request #3027 from CONSULitAS/RCBugFix_current_command
Fix: current_command_args contains command
2016-02-24 17:43:38 -08:00
AnHardt
cb88fdd242 Protect MarlinSerial against interrupts
Protect MarlinSerial against interrupts
by shielding the CRITICAL_SECTIONs

Now with a test if RX_BUFFER_SIZE is in the required range.
Code in peek() and read() is now optimized for readability and showing the similarity between the two.

Maybe a bit overprotected in checkRx() and store_char(), but now some days without detected errors from this source.
2016-02-24 17:18:12 +01:00
AnHardt
dc0f41868e Make rx tail/head atomic 2016-02-24 15:51:34 +01:00
CONSULitAS
ea8409ad5d Fix: current_command_args contains command
@thinkyhead
Hi Scott,
your code from a0f362c@thinkyhead is great, but you forgot to skip the
command.
Symptom `M117 Test`shows `M117 Test` on LCD instead of `Test`.

see also
https://github.com/MarlinFirmware/Marlin/commit/a0f362c735401ebbcd95de3f
6f8e3c2f17ecc770 lines 941, 2851 and so on

Greetings and welcome back

Jochen
2016-02-24 09:35:04 +01:00
Scott Lahteine
9a3408e58f Merge pull request #3024 from thinkyhead/rc_remove_steps_mm_e
Remove obsolete STEPS_MM_E setting
2016-02-23 23:37:09 -08:00
Scott Lahteine
1093c780c8 Remove obsolete STEPS_MM_E setting 2016-02-23 01:11:58 -08:00
CONSULitAS
a4fe6a45ae K8200: sample config back in sync
* Configuration.h:
  * updated header comment
  * new UUID feature used
  * sync to default config
  * typos fixed
  * changes better documented
  * reflect change in SDSUPPORT feature
* Configuration_adv.h
  * updated header comment
  * thermal protection tuned to work with K8200
  * homing tuned
  * sync to default config
  * typos fixed
  * changes better documented
  * reflect change in LCD features
  * use long filenames
  * use Watchdog
  * use Babystepping
  * use Auto Filament Change
2016-02-21 16:06:25 +01:00
Scott Lahteine
c2e5c6c12c Nest Manual Bed Leveling options
This formalizes the dependency of MANUAL_BED_LEVELING on
MESH_BED_LEVELING
2016-02-20 20:35:10 -08:00
Scott Lahteine
042a6a0a37 Extend existing MESH_BED_LEVELING test 2016-02-20 20:35:10 -08:00
esenapaj
08b3147791 sanity check for MANUAL_BED_LEVELING 2016-02-20 20:35:10 -08:00
Scott Lahteine
9f8e6dce20 Merge pull request #2942 from esenapaj/esenapaj-patch-2
more suitable display format for delta printer
2016-02-18 17:59:35 -08:00
Scott Lahteine
e1beaf61eb Merge pull request #2985 from AnHardt/adv-ok
Repair N in ADVANCED_OK
2016-02-18 17:06:26 -08:00
esenapaj
34cde1b77c Merge pull request #14 from MarlinFirmware/RCBugFix
Rc bug fix
2016-02-19 09:19:23 +09:00
Scott Lahteine
f00ca3fd89 Fix layout descr. in configuration_store.cpp 2016-02-17 19:44:04 -08:00
Scott Lahteine
0c9db67273 Merge pull request #2983 from AnHardt/ok-echo
Replace the "ok" in M280, M301, M304, M851 with output not including …
2016-02-17 19:09:41 -08:00
Scott Lahteine
fbfbc5e330 Enable USE_WATCHDOG by default 2016-02-17 17:14:57 -08:00
Scott Lahteine
d4e7c2d694 Merge pull request #2976 from thinkyhead/drop_configurator
Drop the experimental Configurator
2016-02-17 17:08:08 -08:00
Scott Lahteine
9df0e0e0cc Merge pull request #2974 from thinkyhead/sanitycheck_spi_speed
Sanity-check deprecated options replaced by SPI_SPEED
2016-02-17 17:07:58 -08:00
Scott Lahteine
3e2473e695 Merge pull request #2988 from thinkyhead/z2_more_extruders
Use next open E connector for Y2/Z2
2016-02-17 17:07:07 -08:00
Scott Lahteine
8eaba020fb Merge pull request #2973 from thinkyhead/fix_splash_url
Remove references to marlinfirmware.org
2016-02-17 17:05:06 -08:00
Scott Lahteine
438a87eba8 Sanity check deprecated SDSLOW, SDEXTRASLOW 2016-02-17 14:54:10 -08:00
Scott Lahteine
b19b272172 Update configurations with SPI_SPEED
- Include aligned comment about new SDSUPPORT behavior
2016-02-17 14:54:09 -08:00
Scott Lahteine
7f30f85602 Merge pull request #2987 from thinkyhead/gcode_allow_no_initial_space
Fix handling of spaces in GCode
2016-02-17 14:51:19 -08:00
Scott Lahteine
b81d3b83cf Drop the experimental Configurator
Development moved to https://github.com/thinkyhead/MarlinConfigurator
2016-02-17 14:49:37 -08:00
Scott Lahteine
be691b51f1 Remove references to marlinfirmware.org
The domain is gone and doesn’t redirect, so for now show no URL on the boot screen.
2016-02-17 14:41:46 -08:00
Scott Lahteine
f3f58bd619 Merge pull request #2992 from thinkyhead/rc_rename_fpos_t
Rename fpos_t to avoid libc conflict
2016-02-17 14:40:33 -08:00
Scott Lahteine
b03787262a Merge pull request #2868 from esenapaj/esenapaj-patch-1
Fix AUTOTEMP documentation in configs
2016-02-17 14:15:29 -08:00
Scott Lahteine
83ffc9eb4f Show raw steps in M114
This is a proposed change. This section of M114 output is a debug
extension according to RepRap wiki.
2016-02-15 15:59:24 -08:00
Scott Lahteine
373e8a1ad4 Fixes for COREXY and COREXZ coordinates 2016-02-15 15:59:24 -08:00
unknown
31656e68bc Fix for homing X and Y before raising Z when Z_SAFE_HOMING is set. 2016-02-15 15:53:40 -06:00
unknown
8ea55323d8 Fix for not raising Z before homing X and Y 2016-02-15 14:52:04 -06:00
Scott Lahteine
b83e472bd3 Rename fpos_t to avoid libc conflict 2016-02-10 20:49:25 -08:00
Scott Lahteine
68457ee903 For Dual Y/Z use the next available extruder pins 2016-02-09 21:59:09 -08:00
Scott Lahteine
711e5db19a Tweak comment in process_next_command 2016-02-09 18:16:35 -08:00
Scott Lahteine
400e9329be Allow spaces after a code letter 2016-02-09 18:03:13 -08:00
Scott Lahteine
cdcb80f3c5 Allow no-space after initial command
Addresses issue #2715
2016-02-09 18:00:35 -08:00
AnHardt
6f473f7fc6 Repair N in ADVANCED_OK
Send the correct line number.
If no N was in the command - non't send an N.
2016-02-09 19:23:26 +01:00
AnHardt
efbd705eda Replace the "ok" in M280, M301, M304, M851 with output not including an "ok"
Replace the "ok" in M280, M301, M304, M851 with output not including an "ok"
to avoid senting two "ok"s for a single g-code.

Doing the same for M105 would break the input filters of the hosts.
For M105 the other "ok" is omitted.
2016-02-09 13:36:03 +01:00
Scott Lahteine
8e66028d25 Apply the ABL rotation matrix to the extruder offset. 2016-02-08 14:22:18 -08:00
esenapaj
ab5aa3fc92 Merge pull request #5 from MarlinFirmware/RCBugFix
Rc bug fix
2016-02-08 05:42:11 +09:00
esenapaj
27d918d836 Merge pull request #4 from MarlinFirmware/RCBugFix
Rc bug fix
2016-02-08 05:35:32 +09:00
Scott Lahteine
159ff94afd Remove obsolete HEATER_BED_DUTY_CYCLE_DIVIDER #2977 2016-02-07 08:02:11 -06:00
Richard Wackerbarth
1112dcd3c2 Merge Slow SD Handling #2848 2016-02-07 08:00:14 -06:00
Ruwan J Egoda Gamage
1270fbfd38 Using SET_INPUT instead of pinMode 2016-02-07 07:58:52 -06:00
Ruwan J Egoda Gamage
b58083b0fa Getting rid of SDEXTRASLOW, SDSLOW variables. 2016-02-07 07:58:52 -06:00
Ruwan J Egoda Gamage
1833049b8a reusing millis() 2016-02-07 07:58:52 -06:00
Ruwan J Egoda Gamage
1b7c443628 Adding SDULTRASLOW variable.
Instead of changing SDEXTRASLOW variable to a slower speed,  the new
SDULTRASLOW is used for rigidbot panel.
2016-02-07 07:58:52 -06:00
Ruwan J Egoda Gamage
6f9e9c0e4f Cleaning up, getting rid of the fake encoder count variable. 2016-02-07 07:58:52 -06:00
Ruwan J Egoda Gamage
becbfe1065 Fixing Rigidbot LCD Panel Support 2016-02-07 07:58:52 -06:00
esenapaj
4882a7eded more suitable display format for delta printer 2016-01-29 18:38:25 +09:00
esenapaj
d7272e3f36 Merge pull request #3 from MarlinFirmware/RCBugFix
Rc bug fix
2016-01-29 05:43:22 +09:00
esenapaj
9ed1275a37 Merge pull request #1 from MarlinFirmware/RCBugFix
Rc bug fix
2016-01-29 05:40:33 +09:00
Scott Lahteine
62bad1b60f Merge pull request #2848 from japzi/RCBugFix
Fixing Rigidbot LCD Panel Support
2016-01-26 17:30:12 -08:00
esenapaj
59d345a3dd Update Configuration.h 2016-01-22 07:27:11 -06:00
esenapaj
b8f0c8a4c7 Update Configuration.h 2016-01-22 07:27:11 -06:00
esenapaj
df0d599c79 Update Configuration.h 2016-01-22 07:27:11 -06:00
esenapaj
a366697649 Update Configuration.h 2016-01-22 07:27:11 -06:00
Richard Wackerbarth
7c94c83765 Repair formula mangled by PR#1319 in Jan 2015 2016-01-15 10:06:27 -06:00
Richard Wackerbarth
51aa7d93eb Merge pull request #2902 from Naruto-kyun/patch-1
Update stepper.cpp
2016-01-15 10:04:15 -06:00
Naruto-kyun
2932602643 Update stepper.cpp
Forgot Z2_MIN_PIN
2016-01-15 16:50:43 +01:00
Ruwan J Egoda Gamage
06555febdd Using SET_INPUT instead of pinMode 2015-12-24 12:12:25 -05:00
esenapaj
8d2aa2368d Update Configuration_adv.h 2015-12-23 08:16:36 +09:00
esenapaj
0de5fcad0a Update Configuration_adv.h 2015-12-23 08:16:06 +09:00
esenapaj
1403b9acc0 Update Configuration_adv.h 2015-12-23 08:15:20 +09:00
esenapaj
5cf1c38ea1 Update Configuration_adv.h 2015-12-23 08:12:54 +09:00
esenapaj
04ab61bf40 Update Configuration_adv.h 2015-12-23 08:12:28 +09:00
esenapaj
39c62fbd6f Update Configuration_adv.h 2015-12-23 08:12:04 +09:00
esenapaj
efcb769003 Update Configuration_adv.h 2015-12-23 08:09:57 +09:00
esenapaj
992fbb831d Update Configuration_adv.h 2015-12-23 08:08:45 +09:00
esenapaj
5ee6fe6385 Update Configuration_adv.h 2015-12-23 08:07:12 +09:00
esenapaj
056daf00fc Update Configuration_adv.h 2015-12-23 08:06:15 +09:00
esenapaj
71aafb79a0 Update Configuration_adv.h 2015-12-23 08:03:54 +09:00
Ruwan J Egoda Gamage
2c9e0415c7 Getting rid of SDEXTRASLOW, SDSLOW variables. 2015-12-13 23:23:01 -05:00
Ruwan J Egoda Gamage
a64bcd53e9 reusing millis() 2015-12-13 22:06:03 -05:00
Ruwan J Egoda Gamage
e6cc232184 Adding SDULTRASLOW variable.
Instead of changing SDEXTRASLOW variable to a slower speed,  the new
SDULTRASLOW is used for rigidbot panel.
2015-12-13 15:47:10 -05:00
Ruwan J Egoda Gamage
83c4131ba3 Cleaning up, getting rid of the fake encoder count variable. 2015-12-13 15:28:40 -05:00
Ruwan J Egoda Gamage
5eeea2f611 Fixing Rigidbot LCD Panel Support 2015-12-13 15:28:40 -05:00
Richard Wackerbarth
f6950acb8e Residual unused variable — Backport 2015-12-10 19:48:08 -06:00
Richard Wackerbarth
7a670e3911 Improve planner & stepper PR #263 2015-12-10 07:24:37 -06:00
Richard Wackerbarth
58658c9279 Call the probe pin a probe pin and not a min endstop 2015-12-10 07:20:52 -06:00
Richard Wackerbarth
0fa3bac8ee If unused, just don’t define it. 2015-12-10 07:20:52 -06:00
Richard Wackerbarth
3b2973da6a Prepare Ramps for user redefinition 2015-12-10 07:20:52 -06:00
Richard Wackerbarth
1635613c25 Backport cosmetic 2015-12-10 07:20:52 -06:00
Richard Wackerbarth
0b429461d5 Back port Cosmetic changes 2015-12-10 07:20:52 -06:00
Richard Wackerbarth
0cebe85e65 Clean up spacing and duplicate entries
• Removing trailing whitespace
• Adjusting indention for better readability
• Removing duplicated entries
2015-12-10 07:20:52 -06:00
Richard Wackerbarth
e7b40bbe98 Change link to U8glib source 2015-12-10 06:33:29 -06:00
Richard Wackerbarth
e2da2b4105 Back port language translation 2015-12-10 06:31:41 -06:00
Richard Wackerbarth
4f314afaf0 Allow Thermistor #12 to be used on hotends also
//100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed)

Caveat Emptor —- 
I’m not sure that this really makes sense,
but why keep someone from using it?
2015-12-10 06:31:31 -06:00
Scott Lahteine
60d5658da8 Revert nozzle_bed_fan_menu_items
For some reason that I cannot determine, using a sub-function causes
the Tune sub-menu to act strangely, yet replacing the function call
with its code content works perfectly.
2015-12-09 20:33:52 -06:00
Richard Wackerbarth
ae4acc42ec Merge ConformingHostMessages (PR#2822) 2015-12-07 16:12:46 -06:00
AnHardt
57da1b8497 Host parseble output for M109, M190 and M303
Make the output of M105 more similar to Repetier.
Make the text-print pert of M105 an extra function to make it reusable. `print_heaterstates()`
Use `print_heaterstates()` in M019, M190 and M303
2015-12-07 15:37:53 -06:00
AnHardt
fcceb98191 Unglobalize no_wait_for_cooling 2015-12-07 15:34:26 -06:00
Wurstnase
78a347a01a change nx, ny, nz and ne from float to long
st_set_position takes long
```void st_set_position(const long& x, const long& y, const long& z, const long& e)```
2015-12-07 08:22:44 -06:00
Wurstnase
6d691aceee change dx, dy, dz and de from float to long
anything is long, we don't need float there
2015-12-07 08:22:24 -06:00
Richard Wackerbarth
6bfcb74c25 The probe stowing coordinates have changed 2015-12-05 19:31:59 -06:00
Wurstnase
0fbfb22506 Renaming delta speeds (PR2824)
dx -> dsx
dy -> dsy
dz -> dsz
de -> dse
2015-12-04 07:55:45 -06:00
AnHardt
8d1eeff021 Fix status LEDs update when reinitializing the display
Fix status LEDs update when reinitializing the display

By using the regular update function during init.

Fixing #2683
2015-12-03 07:18:35 -06:00
AnHardt
e19fe4054d Update README.md 2015-12-03 00:38:27 +01:00
Richard Wackerbarth
5a54204f72 Marlin 1.1.0 Release Candidate 3 - 01 December 2015 2015-12-01 07:24:45 -06:00
AnHardt
bb4efcf603 Handle temp callbacks when THERMAL_PROTECTION_HOTENDS is not defined
by alternate definition for the callback macros
2015-12-01 07:21:52 -06:00
AnHardt
96d0d04b8f Update LCD buttons less frequently
Move slow_buttons_update into the LCD_UPDATE_INTERVAL block
lcd_implementation_read_slow_buttons() will then be executed ~10 times a
second.
2015-11-30 05:44:32 -06:00
Richard Wackerbarth
e293ea57f0 Unbalanced brackets in setPwmFrequency
This is a back port of the correct in issue #248
2015-11-30 05:44:32 -06:00
AnHardt
c956b52c4a Babystep Multiplier
Analog to https://github.com/MarlinFirmware/MarlinDev/pull/250 by
@RicardoGA

Restore the Babystep Multiplicator functionality and now it's available
for X/Y/Z
2015-11-30 05:43:10 -06:00
Richard Wackerbarth
956418c674 Kc is also a multi-PID parameter 2015-11-23 06:08:01 -06:00
Richard Wackerbarth
8cea79a81d Update reference to our wiki 2015-11-15 12:23:37 -06:00
AnHardt
33addc52a1 Suppress Z_MIN_PROBE_REPEATABILITY_TEST for DELTA and SCARA configurations (PR#2747)
For now Z_MIN_PROBE_REPEATABILITY_TEST is not possible for DELTA or SCARA
configurations.
This PR comments the feature out, where it is commented in by default.
2015-11-13 07:33:33 -06:00
AnHardt
8da2e98985 Split RAMPS 1.3 an 1.4 (PR#2741)
because of hardware differences on the SERVO0_PIN
2015-11-13 07:13:48 -06:00
AnHardt
6dfc7124a1 Add Travis check for ALLEN_KEY (PR#2748)
Tests DELTA, AUTO_BED_LEVELING_FEATURE and ALLEN_KEY
2015-11-13 07:09:05 -06:00
AnHardt
be7167ed97 Change XY formatting on LCD (PR#2740)
According to #123 negative values for XY at or below -100 are displaying incorrectly, dropping the first digit. Deltas can easily have XY values in this range. This PR adds a function to display floats/ints formatted like `_123`, `-123`, `_-12`, or `__-1` as appropriate and applies it to the XY coordinates on Hitachi displays. It also moves the Z value to the right to be consistent with the XY formatting.
2015-11-13 06:46:11 -06:00
vogtmann
9acdc6c234 Update LICENSE 2015-11-12 13:09:59 -06:00
Luis Correia
e7099ea597 Fix Portuguese (Portugal) strings (PR#2700)
Align strings with release
2015-11-12 00:08:42 -06:00
Richard Wackerbarth
a0f6407d6a Merge corrections from dev branch (PR#2704) 2015-11-12 00:04:18 -06:00
Scott Lahteine
754b13d8fe Patch issue #2315 2015-11-12 00:03:22 -06:00
Scott Lahteine
dbd4c17096 Init Kp, Ki, Kd to 0 2015-11-12 00:03:22 -06:00
Scott Lahteine
644c376e84 Use binary OR with endstop bits 2015-11-12 00:03:22 -06:00
Scott Lahteine
54a39d8c1a Use a ternary in qr_solve.cpp 2015-11-12 00:03:22 -06:00
Scott Lahteine
17c23bbaf3 Shorten gcode_M221 yet function the same 2015-11-12 00:03:22 -06:00
Scott Lahteine
c0e791dbe9 Only look for "N" line number as first parameter 2015-11-12 00:03:22 -06:00
Scott Lahteine
b4af4441c5 Clean up watchdog impl. 2015-11-12 00:03:22 -06:00
Scott Lahteine
8f16563bbd Use "defined" with LCD_PIN_BL and LCD_PIN_RESET 2015-11-12 00:03:22 -06:00
Scott Lahteine
6fa7e24af3 Use "UNUSED" to squash compiler warnings 2015-11-12 00:03:22 -06:00
Scott Lahteine
d5b7c595ae Use static locals in utf_mapper.h 2015-11-12 00:03:21 -06:00
Scott Lahteine
9bdab4f3a8 Clean up "else" and other spacing 2015-11-12 00:03:21 -06:00
Scott Lahteine
9b23490f01 Clean up spacing in configs 2015-11-12 00:03:21 -06:00
esenapaj
c6c37abd41 Update language_kana.h 2015-11-12 00:00:51 -06:00
esenapaj
c24045475a Update language_kana_utf8.h 2015-11-12 00:00:32 -06:00
Richard Wackerbarth
25d636c9e0 Compiler issues (PR#2696) 2015-11-11 23:52:11 -06:00
AnHardt
47401ec97b MSG_EXTRUDER_SWITCHED_OFF was renamed to MSG_REDUNDANCY
in language.h, but was not renamed here. If TEMP_SENSOR_1 is enabled as redundant then
an error is thrown that MSG_EXTRUDER_SWITCHED_OFF is not defined.

Originaly by @12dstring
2015-10-08 10:45:11 -05:00
Scott Lahteine
ba6a243197 DEBUG message has no parameter (PR#2671) 2015-10-03 22:03:03 -05:00
Scott Lahteine
0c7f7ebcfb Styling adjustments (PR#2668 & PR#2670)
Keep "astyled" reformatting
2015-10-03 22:02:45 -05:00
Rafa Couto
b5fb7075b9 Galician (gl) language. 2015-09-30 14:46:01 -05:00
Richard Wackerbarth
7b4bdc0203 DUAL_X_CARRIAGE motor enabling
As noted by @darkjavi et.al. in #103, the E1 motor was not being enabled in planner.cpp when using DUAL_X_CARRIAGE. This patch enables and disables E1 as it should.
2015-09-30 04:31:19 -05:00
Richard Wackerbarth
91b5156b3e Marlin 1.1.0 Release Candidate 2 - 29 September 2015 2015-09-29 20:28:41 -05:00
Richard Wackerbarth
03f0edb57e Fix high LCD status screen update frequency (PR#2655) 2015-09-28 11:07:33 -05:00
KiteLab
0ad25c6665 Hint for changed behaviour of SDSUPPORT 2015-09-28 11:07:33 -05:00
Richard Wackerbarth
56a6d85c41 Add (disabled) style test 2015-09-28 11:07:14 -05:00
Richard Wackerbarth
4cdafc0b35 Add astyle specification 2015-09-17 10:45:38 -05:00
Richard Wackerbarth
e01f5e1ef7 Cleanup 2015-09-17 10:44:23 -05:00
Mike Cochrane
5e36b64635 SDEXTRASLOW for some SD card readers (PR#176)
Add SDEXTRASLOW which runs the SD card at SPI_QUARTER_SPEED. Quarter speed is needed for RIGIDBOT_PANEL
2015-09-14 07:58:08 -05:00
Scott Lahteine
5d65a36dee Give lcd_sd_status an UNKNOWN state (PR#180) 2015-09-14 06:32:27 -05:00
fmalpartida
0f149ea0c6 LCD home button causes repeated homing (PR#175)
Fix: increased debounce delay.
2015-09-14 06:31:49 -05:00
Scott Lahteine
b825567e0f Drop www. from marlinfirmware.org (PR#175) 2015-09-14 06:28:53 -05:00
Richard Wackerbarth
42e381f8e2 Merge Extrusion_rate_heater_compensation 2015-09-12 07:54:42 -05:00
Scott Lahteine
db27e67580 Apply PID_ADD_EXTRUSION_RATE to extras 2015-09-12 07:53:20 -05:00
Scott Lahteine
bc50db9cf6 Implement PID_ADD_EXTRUSION_RATE 2015-09-12 07:53:20 -05:00
Richard Wackerbarth
b5987de08a Merge Menu Updates 2015-09-12 07:51:37 -05:00
Scott Lahteine
cffb2d457e Cleanup file formatting 2015-09-12 07:48:27 -05:00
Scott Lahteine
7ac7ddbf20 Show nozzles, heaters, and extruders numbered 1-4 2015-09-12 07:40:18 -05:00
Scott Lahteine
5bc480fee8 Fix Move E menu items 2015-09-12 07:33:49 -05:00
Scott Lahteine
fc882c34a3 Init lcd_sd_status as false to force lcd_update test
Replaces #145 which is way out of date
2015-09-12 07:32:20 -05:00
Scott Lahteine
e27dd5c22d Conditionalize functions that rely on SDSUPPORT 2015-09-12 07:30:09 -05:00
Scott Lahteine
fabf3ae4a0 Add final Z raise after Delta probe 2015-09-12 07:23:24 -05:00
Petr Zahradnik
8c768a76a2 Create language_cz.h
Czech language translation.
2015-09-12 07:18:05 -05:00
Petr Zahradnik
5b9010965d Update language.h
Added comment for Czech language (associated with file language_cz.h).
2015-09-11 04:43:54 +02:00
Scott Lahteine
89fb778684 Fix up probe pin define and test 2015-09-10 10:54:03 -05:00
Scott Lahteine
558665cd90 Constrain Tune > Nozzle/Flow menu items 2015-09-10 08:47:11 -05:00
Scott Lahteine
9f462f0cf5 Hack to address stuttering caused by ISR not finishing in time
(PR #138)

When the ISR does not finish in time, the timer will
wrap in the computation of the next interrupt time.

This hack replaces the correct (past) time with a time not far in the future.
2015-09-10 08:26:17 -05:00
Richard Wackerbarth
a356699882 Merge manual feedrates for deltas from PR#128 2015-09-08 13:12:21 -05:00
Scott Lahteine
8b3d63c423 Unify Delta XYZ homing rates
As noted in #130 allen key probe stow rate is based on homing rates,
but homing rates were left out of most delta configs. This unifies the
XYZ homing rates and applies the unified rates to allen key movements.
2015-09-08 13:11:55 -05:00
Scott Lahteine
7c72b57313 Unify manual feedrate and Fix LCD MANUAL_FEEDRATE (PR#128)
As noted by @o-lampe at https://github.com/MarlinFirmware/MarlinDev/issues/114#issuecomment-136757614 the `MANUAL_FEEDRATE` for Delta Z should be the same as XY.
2015-09-08 13:11:55 -05:00
Scott Lahteine
f690b82343 Remove extra MAX_FREQ_TIME define (PR#148) 2015-09-08 13:11:12 -05:00
fmalpartida
868dbbac6a Updated README to rearrange logo to avoid being crossed out by title.
Added my name following naming convention.
2015-09-07 09:51:06 -05:00
Richard Wackerbarth
8e4fa08a20 Merge Dual Y&Z towers (PR#108 & PR#147) 2015-09-07 09:49:34 -05:00
Scott Lahteine
a4c78ae786 Add E1 pins to SENSITIVE_PINS for Dual Y or Dual Z 2015-09-07 09:41:06 -05:00
Scott Lahteine
a39fadf876 Update kossel-pro example config (again?) 2015-09-07 09:41:06 -05:00
Scott Lahteine
34e0a8d848 Move Y2 and Z2 pins defines to pins.h 2015-09-07 09:41:06 -05:00
Scott Lahteine
28599c51c7 Wrap Dual Y options in a conditional 2015-09-07 09:41:05 -05:00
Scott Lahteine
11a065c0ca Remove Z2 pins overrides from Configuration_adv.h 2015-09-07 09:41:05 -05:00
Scott Lahteine
f7f6b5faae Fix lcd_move_e compile error (PR#143)
Fix a compile error introduced in #98
2015-09-07 09:36:05 -05:00
Richard Wackerbarth
fe0cbd40fe Default to SD Card Disabled (PR#139) 2015-09-06 02:05:47 -05:00
Scott Lahteine
2b30e8ac99 Conditionals for ULTIPANEL without SDSUPPORT 2015-09-06 02:04:49 -05:00
Scott Lahteine
7c7a4051fe Disable SDSUPPORT by default
As noted in #133 you can’t disable `SDSUPPORT` with `MAKRPANEL`,
`PANEL_ONE`, `MINIPANEL`, or `ULTIPANEL`. This patch makes it possible
to disable `SDSUPPORT` on these controllers and then disables it by
default.

Users of these controllers will now need to enable `SDSUPPORT` in their
configurations as others currently do.
2015-09-06 02:04:49 -05:00
Eric Kuzmenko
b23d765991 Added Extrude From Multiple Extruders from LCD feature 2015-09-05 05:33:18 -05:00
Scott Lahteine
fe8816214f GPLv2 LICENSE 2015-09-05 05:30:44 -05:00
fmalpartida
c3c4d50a99 Refreshed logo for release 1.1 2015-09-04 09:22:08 -05:00
Christian Lefrançois
8347a9d6e4 Fix HOMING_BUMP_DIVISOR for deltas configuration
* Re-bump speed divisor should be the same for delta printer.
2015-09-03 09:26:28 -05:00
Scott Lahteine
703df2cb6c Fix error message for probe region sanity check 2015-09-03 03:27:47 -05:00
Shane Francis
4c8330c15c Trim Adjustments for Delta Configurations 2015-09-03 01:05:33 -05:00
Roxy-3DPrintBoard
93a512cf97 Add Roxy-3DPrintBoard to dev team 2015-09-03 01:03:36 -05:00
Scott Lahteine
962120d1d2 Fix spacing in some conditional blocks 2015-08-27 20:59:09 -05:00
Richard Wackerbarth
109628a77e Merge tag debug_G29 (PR#54) 2015-08-27 20:56:25 -05:00
Richard Wackerbarth
20b4772155 Create DEBUG_LEVELING_FEATURE 2015-08-27 20:52:08 -05:00
Scott Lahteine
194f98ff95 Debug messages for homing and leveling 2015-08-27 20:52:08 -05:00
Richard Wackerbarth
6292d9e815 Rename ENABLE_AUTO_BED_LEVELING
With the introduction of the #if ENABLED(…)

reads better than
2015-08-27 20:52:08 -05:00
Richard Marko
91fd66ffba add Lulzbot TAZ4 example configuration (PR#104) 2015-08-27 08:36:43 -05:00
Wurstnase
7a275773ee remove colon in utf_mapper.h (PR#106) 2015-08-27 07:15:23 -05:00
Chris Bruner
6b4b6fa315 update for newest version of U8glib_Arduino 2015-08-26 19:52:59 -05:00
Christian Lefrançois
9897a9147c Update ABL comments (PR#95)
* Updates the auto bed leveling comments ONLY.
* Renames "Z probe" word usage in //comments and #errors properly.
2015-08-26 05:51:38 -05:00
Christian Lefrançois
a7822e3ff7 Some renaming of Z_PROBE to Z_MIN_PROBE (PR#91)
* Fix a couple of renames omission and macro expansion errors.
2015-08-20 06:04:46 -05:00
Richard Wackerbarth
4939c642b4 Merge Suppress some compiler warnings (PR#70) 2015-08-16 06:57:54 -05:00
Richard Wackerbarth
ad90e851b3 Use a small unsigned integer type 2015-08-16 06:56:47 -05:00
Richard Wackerbarth
29b456ae07 Suppress some compiler warnings 2015-08-16 06:56:47 -05:00
Scott Lahteine
23d742bf06 Don't free the stack array plane_equation_coefficients (PR#83) 2015-08-16 06:53:24 -05:00
Scott Lahteine
e3b1e08777 Patch G30 to use raise_z_for_servo (PR#73) 2015-08-15 21:47:04 -05:00
Richard Wackerbarth
c2f695c84e Merge Save a few bytes (PR#79) 2015-08-12 21:27:40 -05:00
Scott Lahteine
a1eb90d5c0 Save another 30 bytes in gcode_SET_Z_PROBE_OFFSET 2015-08-12 21:26:32 -05:00
Scott Lahteine
91122277f4 Reduce gcode_SET_Z_PROBE_OFFSET by 88 bytes 2015-08-12 21:26:25 -05:00
Richard Wackerbarth
9531b154ea Merge Zig-Zag Endpoint (PR#65) 2015-08-11 17:33:35 -05:00
AnHardt
5707a2c3d5 indexindexIntoAB is only vald for !DELTA 2015-08-11 17:32:11 -05:00
AnHardt
d8860f9ad9 Alway end at the same point
Always end at [RIGHT_PROBE_BED_POSITION, BACK_PROBE_BED_POSITION]
Regardles the evennes of auto_bed_leveling_grid_points.
2015-08-11 17:32:11 -05:00
AnHardt
4ca8f4a9a7 Always zigzag
Use the shortest way between probing-points.
2015-08-11 17:32:11 -05:00
AnHardt
3d23424121 Add array indexIntoAB[xx][yy]
and use it.
2015-08-11 17:32:11 -05:00
AnHardt
e2d69f66b2 Make Z_PROBE a Z_MIN_PROBE (PR#65)
Currently we use the probe exclusively as a device to find the build platform(bed).
For the currently supported setups this means, we use it as a additional min-endstop.
A triggered when not deployed probe disturbs the homing process for max-endstops.

Rename ENDSTOPPULLUP_ZPROBE to ENDSTOPPULLUP_ZMIN_PROBE
Rename Z_PROBE_ENDSTOP_INVERTING to Z_MIN_PROBE_ENDSTOP_INVERTING
Rename Z_PROBE_ENDSTOP to Z_MIN_PROBE_ENDSTOP
Rename DISABLE_Z_PROBE_ENDSTOP to DISABLE_Z_MIN_PROBE_ENDSTOP
Rename Z_PROBE_REPEATABILITY_TEST to Z_MIN_PROBE_REPEATABILITY_TEST
Rename Z_PROBE_ENDSTOP to Z_MIN_PROBE_ENDSTOP
Adjust comments accordingly
Remove Z_MAX  check for the probe in update_endstops().

Using an delta related idea of @clefranc from #61,
extended to the general change for all setups.

Tested with Prusa i3, max-z-endstop and permanently triggered z-probe.
Worked for @clefranc's delta.
2015-08-11 14:41:36 -05:00
AnHardt
8d23c4230e Add a Travis test for Z_DUAL_STEPPER_DRIVERS and Z_DUAL_ENDSTOPS (PR#68) 2015-08-10 17:47:49 -05:00
AnHardt
6a6e863a47 Resolve #2581 by adding a missed ';' (PR#67) 2015-08-10 12:51:59 -05:00
RicardoGA
e09ff79635 Update pins_RAMPS_13.h (PR#64)
Now all ramps configuration can enable Filament sensor not only EEB
2015-08-10 05:53:01 -05:00
Fourmi
e6aed7bb4e Update thermistortables for Hisens Thermistor (PR#2588) 2015-08-09 18:11:14 -05:00
Richard Wackerbarth
9d8cc24abf Continue from the line following the M999 (PR#60)
If the printer is going to accept the M999,
then it should continue from that line number.
2015-08-08 08:08:02 -05:00
wurstnase
f3ab1dba54 Z babystepping for coreXY (PR#47)
only X and Y were not implemented
2015-08-04 20:10:09 -05:00
Richard Wackerbarth
35afea1c0e Restore test
PR#2572 Changed this because of faulty Boolean Logic

NOT(A OR (NOT B) OR (NOT C)) !=

(NOT A) AND ((NOT B) OR C))


Besides, the compiler should be smart enough to
optimize this without help from the programmer
2015-08-04 15:22:56 -05:00
Richard Wackerbarth
3c7470dbc3 Windows doesn’t have AUTOMATIC VERSIONING yet 2015-08-03 19:34:47 -05:00
Richard Wackerbarth
c54076456b Merge Overridable Options - Part 12 (PR#39) 2015-08-03 16:05:23 -05:00
Scott Lahteine
6af75f4b5d Squish down deprecated tests in sanity check 2015-08-03 16:04:48 -05:00
Scott Lahteine
edeb58288e Use PIN_EXISTS in sanity check 2015-08-03 16:04:48 -05:00
Scott Lahteine
c30b7693e0 Clean up RUMBA pins conditions 2015-08-03 16:04:48 -05:00
Scott Lahteine
46453905d6 Apply remaining ENABLED/DISABLED conditionals 2015-08-03 16:04:48 -05:00
Richard Wackerbarth
4a72d2ba9c Merge Support PlatformIO (PR#34)
**** NOTE ****
This code is very EXPERIMENTAL and UNSUPPORTED
2015-08-03 15:55:23 -05:00
Richard Wackerbarth
8afd94ed3a Version Generator for PlatformIO Builds 2015-08-03 10:33:26 -05:00
Richard Wackerbarth
4c2948a8e6 PlatformIO Build Configurations
See http://platformio.org/
2015-08-03 10:33:26 -05:00
AnHardt
e3acc84b99 Merge pull request #7 from Wackerbarth/DetailedBuildVersion
Provide both long and short version strings
2015-08-03 15:40:54 +02:00
Richard Wackerbarth
b227d8c128 Supply a VERSION in a short form for displays
The long descriptor will still be available in M115
2015-08-03 08:21:09 -05:00
Richard Wackerbarth
cd7828a928 This will be the 1.1.0 Release rather than 1.0.3 2015-08-03 08:08:38 -05:00
Richard Wackerbarth
4e2f5618c1 Pick up Default_version when needed 2015-08-03 08:08:37 -05:00
Richard Wackerbarth
329acc852e Canonize Option flag USE_AUTOMATIC_VERSION 2015-08-03 08:08:37 -05:00
Richard Wackerbarth
a8db0aac32 Automatic Versioning was introduced in 1.6.3 2015-08-03 08:08:37 -05:00
Richard Wackerbarth
5a11d32a85 Move deprecation test to SanityCheck.h 2015-08-03 08:08:37 -05:00
Richard Wackerbarth
7bb7a52940 Bring config up-to-date 2015-08-03 07:35:33 -05:00
Richard Wackerbarth
e66ab97a3c Merge Bootscreen Text (PR#24) 2015-08-03 07:15:32 -05:00
AnHardt
244ea2014a Boot-screen for text-displays improvements
Centred the logo for 16x4 and 20 x4.
Moved version to the bottom line
Code shrink to 704 bytes.
2015-08-03 07:13:00 -05:00
AnHardt
80f2a20842 Enable bootscreen in all Configurations 2015-08-03 07:13:00 -05:00
AnHardt
2684d061ed Scroll too long strings on bootscreen 2015-08-03 07:13:00 -05:00
AnHardt
4f46df5dab Make bootscreen configurable for the graphic displays
Saves about 473 byte of progmem and 28 bytes of RAM.
2015-08-03 07:13:00 -05:00
AnHardt
09571b7753 Boot-screen for the character displays
Uses about 488 byte of progmem and 32 byte of RAM.
For that configurable.
2015-08-03 07:13:00 -05:00
Richard Wackerbarth
866efc14fe Add Danish translations 2015-08-03 07:06:17 -05:00
Scott Lahteine
267f3479d7 Adjust spacing in pins_RAMPS_13.h 2015-08-02 23:26:58 -05:00
Scott Lahteine
56702e7bb9 Define servo pins just like other pins 2015-08-02 23:26:58 -05:00
Richard Wackerbarth
4b9d5cd352 Use lowercase names for serial instances 2015-08-02 23:01:39 -05:00
Scott Lahteine
1e2deff4fd Rename BTENABLED to BLUETOOTH
- For some reason it’s easy to forget what BT stands for, but it
doesn’t need an abbreviation.
2015-08-02 22:56:50 -05:00
Scott Lahteine
68055a5959 Include RIGIDBOT_PANEL in Conditionals 2015-08-02 22:26:41 -05:00
Richard Wackerbarth
3cfe1dce1f Merge Rigidbot Configuration (PR#2579) 2015-08-02 22:14:36 -05:00
George Djabarov
f8ed3a835d Added comment with the RigidBot Big bed size 2015-08-02 22:13:37 -05:00
George Djabarov
7deae6b6be Updated RigidBot example configuration
- The default serial baud rate of 115200
- The regular RigitBot bed size 254mm/248mm/254mm
- Single stock extruder
- Stock termistors for extruder and hotbed
- Stock Min X/Y/Z stops. Max stops not connected
- Stock 32 teth tooleys (stock axis steps)
- No auto bed leveling
- No screen
2015-08-02 22:13:37 -05:00
Richard Wackerbarth
eb65c57496 Merge SD_DETECT_PIN (PR#2569) 2015-08-02 22:11:47 -05:00
Scott Lahteine
5418faa1f9 Add sanity checks for old names 2015-08-02 22:09:08 -05:00
Scott Lahteine
f03e063750 Rename BEEPER to BEEPER_PIN
For consistency with other pins, allowing use of `PIN_EXISTS` macro.
2015-08-02 22:09:08 -05:00
Scott Lahteine
270c766de2 SDCARDDETECT -> SD_DETECT, added docs
- `SD_DETECT_PIN` replaces `SDCARDDETECT`
- `SD_DETECT_INVERTED` replaces `SDCARDDETECTINVERTED`
- Revise the description of `SD_DETECT_INVERTED`
- Add a note about the override of `SD_DETECT_INVERTED` in
`Conditionals.h`
2015-08-02 21:59:41 -05:00
Scott Lahteine
496fc28dc3 Tweaks to pins comments 2015-08-02 21:34:13 -05:00
Scott Lahteine
8d3b74cc6e Rename SDCARDDETECT to SDCARDDETECT_PIN
- Rename the pin so it can be tested with `PIN_EXISTS`
- Fix some incorrect tests for `SDCARDDETECT`
2015-08-02 21:34:13 -05:00
Richard Wackerbarth
aa1d38613a Update README to reflect new repository 2015-08-01 19:34:33 -05:00
Scott Lahteine
0f5ada8cbd Group the fail case in one negation (PR#2572) 2015-08-01 18:55:50 -05:00
AnHardt
7ddf1cda1d Improve condition for SERVO_LEVELING (PR#2570) 2015-07-31 22:41:34 -05:00
Richard Wackerbarth
e309fb4bcb Merge BEEPER_PIN (PR#2564) 2015-07-31 17:14:40 -05:00
Richard Wackerbarth
f32048b8f5 In for a penny, in for a pound 2015-07-31 17:13:53 -05:00
Scott Lahteine
e944f960de Add a sanity check for old name "BEEPER" 2015-07-31 17:13:53 -05:00
Scott Lahteine
8ebf0b92be Spacing adjustments in some pins files 2015-07-31 17:13:53 -05:00
Scott Lahteine
94a796c8cc Rename BEEPER to BEEPER_PIN
For consistency with other pins, allowing use of `PIN_EXISTS` macro.
2015-07-31 17:13:53 -05:00
Richard Wackerbarth
b217474eab Compiler Complaints about concatenated tokens (PR#2566) 2015-07-31 17:08:44 -05:00
AnHardt
c39dc2908f New test for servos in Travis (PR#2565) 2015-07-31 07:14:11 -05:00
Richard Wackerbarth
d3532bd2a6 Merge Part 5 (PR#2557) 2015-07-31 01:26:09 -05:00
Scott Lahteine
2460f82d8b Make proper distinction between BEEPER and HAS_BUZZER 2015-07-31 01:24:33 -05:00
Scott Lahteine
58cfcd4239 Overridable Options - Part 5
Apply `ENABLED` / `DISABLED` macros to files needing only a small
number of changes.
2015-07-31 01:24:20 -05:00
Scott Lahteine
5e834352a9 Overridable Options - Part 11 (PR#2563)
Apply `ENABLED` / `DISABLED` macros to EEPROM-related files.
2015-07-31 01:07:04 -05:00
Scott Lahteine
bf6eb93c61 Overridable Options - Part 10 (PR#2562)
Apply `ENABLED` / `DISABLED` macros to planner files.
2015-07-31 01:06:29 -05:00
Scott Lahteine
51e89a269c Overridable Options - Part 9 (PR#2561)
Apply `ENABLED` / `DISABLED` macros to temperature-related files.
2015-07-31 01:05:55 -05:00
Scott Lahteine
c35fb88094 Overridable Options - Part 8 (PR#2560)
Apply `ENABLED` / `DISABLED` macros to stepper-related files.
2015-07-31 01:05:22 -05:00
Scott Lahteine
0d8989fc14 Overridable Options - Part 7 (PR#2559)
Apply `ENABLED` / `DISABLED` macros to LCD-related files.
2015-07-31 01:04:37 -05:00
Scott Lahteine
b4abb0ae7f Apply ENABLED / DISABLED to Marlin core files (PR#2558) 2015-07-31 01:03:58 -05:00
Scott Lahteine
c0d7ea3e7e Overridable Options - Part 4 (PR#2556)
Apply `ENABLED` / `DISABLED` / `HAS_SERVOS` macros to pins files.
2015-07-31 00:44:53 -05:00
Scott Lahteine
4b40964064 Overridable Options - Part 3 (PR#2555)
Apply `ENABLED` / `DISABLED` macros to language-related files.
2015-07-31 00:19:13 -05:00
Richard Wackerbarth
abe9905ef8 Merge Overridable Options (PR#2496) 2015-07-31 00:04:43 -05:00
Scott Lahteine
32683b282b Include configurator copies of configs 2015-07-31 00:03:36 -05:00
Scott Lahteine
37d1879386 Apply overridables to Configuration files 2015-07-31 00:03:36 -05:00
Richard Wackerbarth
819fa7216e Merge Redo Servo angles (PR#2554) 2015-07-30 23:36:38 -05:00
Scott Lahteine
9d151bb61b servo_endstop_angles -> servo_endstop_angle 2015-07-30 23:35:57 -05:00
Scott Lahteine
9334479aeb Minor cleanup of Conditionals.h 2015-07-30 23:35:57 -05:00
Scott Lahteine
1f63293624 servo_endstops -> servo_endstop_id 2015-07-30 23:35:57 -05:00
Scott Lahteine
edaaead7e0 Fix comment about SERVO_ENDSTOP_ANGLES 2015-07-30 23:35:57 -05:00
Scott Lahteine
ed4a6371ad Add HAS_SERVO_ENDSTOPS to simplify conditonals 2015-07-30 23:35:57 -05:00
Richard Wackerbarth
47ae96ce15 Merge Complete M200 output with M503 (PR#2506) 2015-07-30 23:33:36 -05:00
Scott Lahteine
70be61d416 Reset filament_size with a loop 2015-07-30 23:31:58 -05:00
Scott Lahteine
ae9274be05 Fix minor compiler warnings in for loops 2015-07-30 23:31:58 -05:00
Scott Lahteine
c7c8cfed6f Complete M200 output with M503
- The contents of EEPROM include filament diameters even with
Volumetric disabled. This change makes `M503` display the full
volumetric settings so that playing back the output of `M503 S0` will
fully restore them.
2015-07-30 23:31:58 -05:00
Scott Lahteine
4a58e447a1 Add array size to servo_endstop_angles (PR#2553) 2015-07-30 23:27:38 -05:00
Andrew Lenharth
a0ae9e30df don't pass integer by reference, inefficient. (PR#2547) 2015-07-30 17:51:12 -05:00
AnHardt
d03f037a92 Get rid of malloc() and free() (PR#2549)
Just the minimal changes to qr_solve.cpp and .h to get rid of malloc() and free().

Saves about 656 bytes of progmem (library-code)
and 22 bytes for static variables.

Should use exactly the same amount of stack as it did before on the heap.
2015-07-30 17:50:31 -05:00
Richard Wackerbarth
f9195d114b Merge Servo Endstops (PR#2543) 2015-07-30 16:39:55 -05:00
Scott Lahteine
3b2b2313ff Combine if block related to SERVO_ENDSTOPS 2015-07-30 16:39:05 -05:00
Scott Lahteine
0af2a80e06 Make SERVO_ENDSTOP_ANGLES 2-dimensional 2015-07-30 16:38:56 -05:00
Richard Wackerbarth
525d0dc239 Configurator is out-of-date AGAIN (PR#2550) 2015-07-30 16:36:01 -05:00
Richard Wackerbarth
67c4d22984 Update Developer References 2015-07-30 07:57:11 -05:00
Richard Marko
dd22cbbfb8 makefile: add buzzer.cpp (PR#2479) 2015-07-30 07:56:44 -05:00
Scott Lahteine
9f48798ffd Replace ENABLED with DEFINED for SERVO_ENDSTOPS (PR#2542) 2015-07-30 07:55:29 -05:00
Scott Lahteine
22b9fd97b2 Remove usage restriction to comply with GPL
Discussion at #2541
2015-07-30 07:54:09 -05:00
Richard Wackerbarth
3c1653207c Merge Memory Watcher (PR#2398) 2015-07-27 20:33:20 -05:00
Richard Wackerbarth
ae00fad75b Rename as M100 2015-07-27 20:31:59 -05:00
Richard Wackerbarth
a401d738df There is an echo in here 2015-07-27 20:31:59 -05:00
Richard Wackerbarth
ed7d45e8f5 Memory watcher 2015-07-27 20:31:59 -05:00
AnHardt
d17f7ebc8a Multiply WATCH_TEMP_PERIOD by 1000UL (PR#2535)
instead of 1000.  Else we get errors with times over 32 seconds.
2015-07-27 20:30:53 -05:00
Scott Lahteine
bea6739774 Don't include Z_RAISE_AFTER_PROBING if not used (PR#2527) 2015-07-27 20:24:33 -05:00
Scott Lahteine
81bba7ed88 More sanity checking for extruder requirements (PR#2531) 2015-07-27 10:14:43 -05:00
Richard Wackerbarth
78b7c486fd Merge Translate additional Displays (PR#2529) 2015-07-26 20:42:11 -05:00
AnHardt
87a97f3724 Fix conditions for display strings 2015-07-26 20:41:21 -05:00
AnHardt
aaccea0260 Shift some display only strings from language.h to lenguage_en.h
and translate them to German.
2015-07-26 20:41:15 -05:00
Scott Lahteine
e4c01f1c7e Simplify init with ARRAY_BY_EXTRUDERS1 macro (PR#2507) 2015-07-26 20:40:27 -05:00
Scott Lahteine
ab6f1fdf8b Move & document ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED (PR#2528)
As suggested in #2521
- Move `ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED` because `SDSUPPORT` is
also required.
- Add a note that endstops must be enabled for the feature to have any
effect
2015-07-26 20:36:37 -05:00
Richard Wackerbarth
096046c09f Merge Improve Makefile use of avrdude (PR#2477) 2015-07-26 20:32:10 -05:00
Richard Marko
1183c10a2e makefile: drop -q -q (much quiet) from avrdude flags
Annoying when trying to figure out if uploading
actually does something.
2015-07-26 20:31:31 -05:00
Richard Marko
0e064357f4 makefile: use /etc/avrdude/avrdude.conf on linux
No need to look for arduino specific avrdude configuration
as distributions ship their own avrdude.conf file that
is compatible with arduino.
2015-07-26 20:31:31 -05:00
Richard Wackerbarth
960de3411b Merge Temp Sanity Checks (PR#2514) 2015-07-25 21:18:32 -05:00
Scott Lahteine
bcb7d5a149 Improve sanitycheck for TEMP_SENSOR_1 2015-07-25 21:17:36 -05:00
Scott Lahteine
5b24f59401 Add sanity checks for temp sensors 2015-07-25 21:17:36 -05:00
AnHardt
fd0e81b0c7 Distinguish between BUZZER and SPEAKER (PR#2513)
A speaker needs a AC or a pulsed DC to make a sound, a buzzer only needs a DC.
A buzzer has it's own resonator. It works in most cases to feed the buzzer with a pulsed DC, but the sound will not be as loud as with pure DC.

There seem to be boards where the BEEPER-pin is not able to handle a PWM. Obviously intended for a buzzer.
To make these board able to handle a speaker

* replace the PWM based tone()-function again with a on-delay-off-delay loop.

Hopefully the last time I touch the beeper code.
2015-07-24 22:10:04 -05:00
Richard Wackerbarth
53d9c9ff23 Merge G29 Ending Position (PR#2498) 2015-07-24 22:08:30 -05:00
Scott Lahteine
e2957df05c Shorthand for do_blocking_move_to 2015-07-24 22:07:41 -05:00
Scott Lahteine
819c5b9b50 Adjust comment on Z adjustment 2015-07-24 22:07:41 -05:00
Scott Lahteine
5a7356b6fc Patch for G29 final Z position
Include all the necessary pieces to get the final Z position after
probing the bed, and add commentary about other possible changes.
2015-07-24 22:07:41 -05:00
Richard Wackerbarth
d233976737 Merge Servo Corrections (PR#2510) 2015-07-24 22:05:53 -05:00
AnHardt
088e09e052 Add forgotten Marlin_main.cpp 2015-07-24 22:04:49 -05:00
AnHardt
8b876241bd Some more servo code tweaks
Just set up the pin. Don't move to a random position.

Simplify servo::move()
* servo::move() does not need the pin parameter - The pin is set during servo_init() with attach().
* servo::move() does not need a return value.

SERVO_LEVELING is the wrong condition to deactivate the servos.

Remove some temporary (Servo *) variables.
SanityCheck for the servo indexes.
2015-07-24 22:04:49 -05:00
Scott Lahteine
b116c096bd Reduce set_homing_bump_feedrate, save 42 bytes (PR#2512)
Updates to `set_homing_bump_feedrate`:
- Move the string into Program Memory, reduce length by 31 bytes
- Use an auto to get the divisor, adjust it on error
- Set feedrate once, at the end
2015-07-24 22:00:25 -05:00
Scott Lahteine
f7e7862588 Better Sanguinololu & Graphical Controller (PR#2504)
- Change suggested at
https://github.com/MarlinFirmware/Marlin/issues/2482#issuecomment-123553
266
2015-07-23 23:47:07 -05:00
Scott Lahteine
a1154d4a20 Enable Y and sanity-check CoreXZ (PR#2509) 2015-07-23 23:46:27 -05:00
Richard Wackerbarth
0a7f2a8be7 Merge MegaController & MINIPANEL (PR#2508) 2015-07-23 22:52:51 -05:00
Scott Lahteine
932f1c109e Move servos to the top in pins_MEGACONTROLLER.h 2015-07-23 22:51:41 -05:00
Scott Lahteine
90f8ddfc1e Apply MINIPANEL to other configs 2015-07-23 22:51:41 -05:00
AndySze
00dbf69b6d add MINIPANEL defines 2015-07-23 22:51:40 -05:00
AndySze
8ac5e56934 fixed some format problems and cleaned code 2015-07-23 22:51:40 -05:00
AndySze
eef595aa64 add makerlab mega controller pin configs 2015-07-23 22:51:40 -05:00
Richard Wackerbarth
a0120a533c Merge CORE_XZ (PR#2503) 2015-07-23 19:53:33 -05:00
AnHardt
4e14e152fa Add Travis tests for CORXY and COREXZ 2015-07-23 19:52:48 -05:00
AnHardt
27d7d2ccab Correct bracketing for COREXY-XZ 2015-07-23 19:52:21 -05:00
Scott Lahteine
469843427d Reduce code in gcode_M81 (PR#2497) 2015-07-23 08:14:00 -05:00
Scott Lahteine
c66955aaf9 Mark unchanging arrays as const (PR#2494)
The compiler may be able to optimize if it knows an array won’t be
changing.
2015-07-22 21:37:37 -05:00
Richard Wackerbarth
72b9e3a6ac Merge Configuration Macros (PR#2495) 2015-07-22 18:17:27 -05:00
Scott Lahteine
278aa15301 Add COUNT macro and apply 2015-07-22 18:16:05 -05:00
Scott Lahteine
d85861d296 Move macros, add ENABLED/DISABLED, add includes 2015-07-22 18:16:05 -05:00
Scott Lahteine
17960fd2b0 Neaten up pins_MEGATRONICS.h (PR#2493) 2015-07-22 17:23:22 -05:00
Scott Lahteine
aac2b9aa9d Reduce code in gcode_M84 (PR#2492)
`gcode_M84` only needs to call `finishAndDisableSteppers`, which calls
all the other functions.
2015-07-22 17:22:01 -05:00
Scott Lahteine
4971fa73f9 Add a sanitycheck error for old servo settings (PR#2491)
- Documentation solution for #2476
2015-07-22 16:35:10 -05:00
Scott Lahteine
96ace72ddc Servos attach/detach based only on servo config
Assuming #2470 fixed up the main issue.
2015-07-22 16:34:26 -05:00
Richard Wackerbarth
b80a6a8d31 Correct Kossel Pro Configuration_adv (PR#2473) 2015-07-22 16:32:08 -05:00
Scott Lahteine
000a6fce46 Extract update_endstops from stepper ISR (PR#2474) 2015-07-19 18:33:18 -05:00
Richard Wackerbarth
adfcfcba95 Merge G2/G3 for Delta (PR#2469) 2015-07-19 16:19:37 -05:00
Scott Lahteine
e83eac312e Move plan_arc next to prepare_move 2015-07-19 16:18:46 -05:00
Scott Lahteine
5c5936508d G2/G3 Arcs for Delta
- Update prepare_move_delta to take a target argument
- Add Delta support to plan_arc
2015-07-19 16:18:46 -05:00
Richard Wackerbarth
39092efe88 Merge CORE_XZ (PR#2300) 2015-07-19 16:17:55 -05:00
Scott Lahteine
9f53e2f0c9 Implement COREXZ in stepper.cpp and planner.cpp 2015-07-19 16:17:03 -05:00
Scott Lahteine
fa00e1d97f Explode conditions common to corexy and cartesian 2015-07-19 16:17:03 -05:00
Scott Lahteine
c7dd5527b4 Add a C_AXIS and Z_HEAD to support COREXZ 2015-07-19 16:17:03 -05:00
Scott Lahteine
129f986ccf Add COREXZ option to configurations 2015-07-19 16:17:03 -05:00
Scott Lahteine
69b0490b77 Show minimal preheat options in menus (PR#2471) 2015-07-19 16:14:59 -05:00
Scott Lahteine
9d1d590f43 Merge pull request #2470 from thinkyhead/patch_servo_move
Patch servos code for move
2015-07-19 12:10:10 -07:00
Scott Lahteine
eacfe132aa Change the name of servos[] and servo_t 2015-07-19 11:35:48 -07:00
Scott Lahteine
3b23ccd366 Patch servos code for move
- Have `Servo::attach` explicitly return -1 if it fails
- Check for -1 in `Servo::move` because `servoIndex` might be 0
- Make `attach` / `detach` calls conditional on `SERVO_LEVELING`
- Move `SERVO_LEVELING` define to `Conditionals.h`
2015-07-19 11:24:23 -07:00
Richard Wackerbarth
54ddc1d417 Simplify DRY RUN (PR#2358)
Elsewhere DRYRUN turns off the heating elements
and ignores constraints on them.

Here, whenever motion is entered into the planner,
if DRY RUN is set, we instantly act as if the E_AXIS
is in the desired final position.
2015-07-19 10:15:53 -05:00
Richard Wackerbarth
c2760c3cac Merge Reduce IsDive memory usage (PR#2455) 2015-07-19 10:14:42 -05:00
Scott Lahteine
944090c19c Optimize lsDive logic 2015-07-19 10:13:40 -05:00
Scott Lahteine
417706e578 Include space for the terminating nul in lsDive 2015-07-19 10:13:39 -05:00
Scott Lahteine
f3c1a6b19c Reduce lsDive stack usage to the minimum 2015-07-19 10:13:39 -05:00
Patrick Bogen
fba4e6241b Specify print format for reporting invalid tmp_extruder (PR#2465) 2015-07-18 16:40:01 -05:00
AnHardt
d15d869267 Rename axis_is_at_home() to set_axis_is_at_home() (PR#2464)
to make clear - it's not a question but an order.
2015-07-18 10:27:21 -05:00
Scott Lahteine
f209b755a5 Move the Z probe as far as needed to trigger the switch (PR#2461) 2015-07-16 20:02:44 -05:00
Richard Wackerbarth
a91263f79e Merge Clean up code_seen (PR#2395) 2015-07-16 16:41:38 -05:00
Scott Lahteine
0f1df62389 Fixup comments in code_seen 2015-07-16 16:40:52 -05:00
Scott Lahteine
2945eb6650 Call code_seen only once per parameter 2015-07-16 16:40:52 -05:00
Scott Lahteine
b742af2e2a Move Y_STOP_PIN for Printrboard with SD (PR#2420) 2015-07-16 16:39:55 -05:00
Richard Wackerbarth
e0f4fc2033 Merge Cleanup (PR#2445) 2015-07-16 16:37:33 -05:00
Scott Lahteine
baa9199973 Define extern delta only for delta 2015-07-16 16:36:30 -05:00
Scott Lahteine
77e80ef367 Require extruders for thermal code 2015-07-16 16:36:30 -05:00
Scott Lahteine
3bde4f4855 Require temp sensor for bed thermal protection 2015-07-16 16:36:30 -05:00
Scott Lahteine
82a3ed2f9a Cleanup and dev notes in Marlin.h 2015-07-16 16:36:30 -05:00
Scott Lahteine
db23b9b184 Minor tweak to M204 code (PR#2457) 2015-07-16 16:35:13 -05:00
Scott Lahteine
81d42406b7 Move braces in homeaxis to prevent a hanging else (PR#2451) 2015-07-16 10:25:54 -05:00
Scott Lahteine
552a327df8 Fix lsDive filename stack overrun (PR#2449) 2015-07-16 10:23:56 -05:00
Richard Wackerbarth
ee71845d60 Merge Servo pin (PR#2425) 2015-07-15 20:53:21 -05:00
AnHardt
a6628f12cc Eliminate the further use of the pin-parameter 2015-07-15 20:50:58 -05:00
AnHardt
8504992e9f Remove the additional pin variable in Servo.cpp
as sugested by @c-born
inhttps://github.com/MarlinFirmware/Marlin/issues/1885#issuecomment-92618240
2015-07-15 20:50:58 -05:00
Richard Wackerbarth
2cbb85fe88 Merge Bed leveling residuals (PR#2444) 2015-07-15 19:52:42 -05:00
AnHardt
ed6598adf5 Corrected Bed Height vs. Bed Topology for verbosity > 3
and cleaned out some tabs.

Everything else is a rebased PR#2017 as proposed by @CptanPanic
2015-07-15 19:51:40 -05:00
brian
62302ceb9e Add calculation of difference between auto-correct bed level plane, and measured topo map. 2015-07-15 19:51:40 -05:00
Richard Wackerbarth
f7659f02bb Merge Config cleanup (PR#2448) 2015-07-15 19:14:29 -05:00
Scott Lahteine
de25a48dec Remove PID examples from preconfigured configs 2015-07-15 19:13:53 -05:00
Scott Lahteine
7456710a1f Update configs formatting 2015-07-15 19:13:47 -05:00
Scott Lahteine
391386dd94 Update configs for new servo deactivation 2015-07-15 19:13:40 -05:00
Richard Wackerbarth
63715aba4f Merge Anti-jitter for all servo moves (PR#2427) 2015-07-15 17:40:59 -05:00
AnHardt
5243d8b523 Deactivate DEACTIVATE_SERVOS_AFTER_MOVE by default 2015-07-15 17:39:43 -05:00
AnHardt
49609f6c14 Activate the new servo.move() function
by replacing the sequences (attach, write, delay, detach), and their conditions with the new function in Marlin.main.cpp
and removing the old configuration in the ABL part of Configuration.h
2015-07-15 17:39:43 -05:00
AnHardt
40b6edcad7 Introduce DEACTIVATE_SERVOS_AFTER_MOVE in Configuration.h
DEACTIVATE_SERVOS_AFTER_MOVE is ought to replace PROBE_SERVO_DEACTIVATION_DELAY.
But it will work on all servo moves, not only the probe servo moves.
2015-07-15 17:39:43 -05:00
AnHardt
2ddb2a2be9 Add Servo::move() to servo.cpp
move(pin, angel) - Sequence of attach(pin), write(angel),
                   if DEACTIVATE_SERVOS_AFTER_MOVE is defined waits SERVO_DEACTIVATION_DELAY, than detaches.

As we have jitter on the servos during moves of the steppers, and detaching them improves this behaviour,
the usual sequence to handle a servo movement is:
attach(pin)
write(angel)
delay(until the servo finished the move)
detache()

Here a function to handle the complete sequence.
2015-07-15 17:39:43 -05:00
mkile
8a01e5fb7a Update Russian translation (PR#2443)
Slightly updated translation.
2015-07-15 10:35:36 -05:00
Richard Wackerbarth
e83575537a Compiler defines USBCON for USB devices (PR#2433) 2015-07-15 10:32:11 -05:00
ayberkozgur
7268d46508 Always calculate extruder temperature PID d term (PR#2432) 2015-07-13 13:22:26 -05:00
Scott Lahteine
87a872e103 Use st_get_position_mm where possible (PR#2411) 2015-07-12 22:15:54 -05:00
Scott Lahteine
2e0da8abdc Allow N to take a negative argument (PR@2402) 2015-07-12 22:14:25 -05:00
Richard Wackerbarth
85b7cca4d0 Merge Stepper reset for RigidBot (PR#2417) 2015-07-11 16:04:56 -05:00
Scott Lahteine
447dbd6fa5 Add STEPPER_RESET_PIN support 2015-07-11 16:04:11 -05:00
Scott Lahteine
a0351bdb73 Remove STEPPER_RESET_FIX option 2015-07-11 16:04:11 -05:00
Scott Lahteine
6b1b8cb2b3 Also nullify spaces before the checksum asterisk (PR#2409) 2015-07-10 09:03:07 -05:00
Richard Wackerbarth
0fd814e4f1 Merge RigidBot (PR#2401) 2015-07-09 11:37:26 -05:00
Scott Lahteine
8e61314323 Use RIGIDBOT_PANEL for consistency with online docs 2015-07-09 11:36:46 -05:00
Scott Lahteine
4b204da3c1 Cleanup of pins_RAMPS_13.h 2015-07-09 11:36:46 -05:00
Scott Lahteine
536f86e896 RigidBot CONTROLLERFAN_PIN in Configuration_adv.h 2015-07-09 11:36:46 -05:00
Scott Lahteine
f068e46661 RigidBoard include for pins.h 2015-07-09 11:36:46 -05:00
Scott Lahteine
9ebcae496d RIGIDBOARD / RIGIDPANEL 2015-07-09 11:36:46 -05:00
Scott Lahteine
c3c605c658 Move note about LiquidTWI2 to Configuration.h (PR#2406) 2015-07-09 05:33:17 -05:00
Richard Wackerbarth
3b769753eb Merge M11 fixes (PR#2394) 2015-07-07 07:04:30 -05:00
Scott Lahteine
4e9d658141 Prevent a hanging SERIAL_ECHO_START in M111 2015-07-07 06:59:10 -05:00
Scott Lahteine
bc0fdbe88e Use SERIAL_EOL in SERIAL_PROTOCOLLN macros 2015-07-07 06:59:10 -05:00
Scott Lahteine
d78ebbc0e9 Remove unused MSG_OK_B and MSG_OK_T 2015-07-07 06:59:10 -05:00
Scott Lahteine
6b494c1535 Use disable_all_heaters in M111 2015-07-07 06:59:10 -05:00
Scott Lahteine
15190d40df Add extra EOL after M111 2015-07-07 06:59:10 -05:00
AnHardt
0e1cf78f5c Remove code for testing if probing range is too small (PR#2390)
becaue it is over-restrictive and superseeded by the now working tests
if the probe-recktangle can be reached. See iss#2366
2015-07-07 06:58:01 -05:00
AnHardt
d421f5250d Correct the sign of zprobe_zoffset for G29 (PR#@391)
Sign flipped with #2167.
See also comments
https://github.com/MarlinFirmware/Marlin/issues/2040#issuecomment-118568355
and following.
2015-07-07 06:55:33 -05:00
Scott Lahteine
52fcc743ab Replace "target" with "destination" in M600 (PR#2374)
- Also fix a bug in `M600` where `Z_MAX_ENDSTOP_INVERTING` is being
used as the index into the `destination[AxisEnum]` array.
2015-07-04 05:55:25 -05:00
Scott Lahteine
a5033c3652 Enable LCD_PIN_RESET if it exists (PR#2375) 2015-07-04 05:53:22 -05:00
AnHardt
23c8c5348f Z-height fix V2b (PR#2351)
here the other two occurences of `Z_PROBE_OFFSET_FROM_EXTRUDER` are
replaced with `zprobe_zoffset`.
2015-07-02 20:30:40 -05:00
Todd Swindoll
a111fbbd0a z-probe offset fix (PR#2361)
verified via 1.0.2 tag that compiles by multiple people,
credit for the fix goes to paulusjacobus for the initial find and
sniffle for the correction so M851 works.
2015-07-02 20:28:07 -05:00
AnHardt
dae4eb36ad Add MagoKimbra to the list of contributors (PR#2356)
in Development
2015-06-30 08:23:38 -05:00
AnHardt
2c1414f81f Reactivate tests for more extruders in Travis (PR#2348)
BOARD_ULTIMAKER was not the default any more
- sed failed to change the board
- RAMPS_EFB has no second extruder
- ...
- Added test for bed

Rebased.
2015-06-29 09:30:33 -05:00
Richard Wackerbarth
316469e76a Clean up comments and spacing 2015-06-28 08:22:29 -05:00
Scott Lahteine
42465ee444 Cleanup of comments & spacing 2015-06-28 08:20:28 -05:00
Scott Lahteine
9682ed455e Fix comment on M83, add comment to prepare_move 2015-06-28 08:20:19 -05:00
Richard Wackerbarth
8c760f1c31 Modify Travis build to use IDE 1.6.4 2015-06-27 16:51:42 -05:00
Richard Wackerbarth
cfb416fda9 Merge branch 'PrepareForIDE1.6' (PR#2306) 2015-06-27 15:49:12 -05:00
Richard Wackerbarth
9643e6c744 Make the platform.local a bit more generic 2015-06-27 15:45:25 -05:00
Richard Wackerbarth
4683645036 Vendor (Marlin) files 2015-06-27 15:45:25 -05:00
Richard Wackerbarth
efd5658e32 library - SPI 2015-06-27 15:45:25 -05:00
Richard Wackerbarth
9b13e60e38 core - AT90USB… 2015-06-27 15:45:25 -05:00
Richard Wackerbarth
907032616e core - arduino 2015-06-27 15:45:25 -05:00
Richard Wackerbarth
e2f2458928 library - Liquid Crystal 2015-06-27 15:45:24 -05:00
Richard Wackerbarth
d8785ffc6f library - TMC26x Stepper 2015-06-27 15:45:24 -05:00
Richard Wackerbarth
ae9de515b8 library - L6470 2015-06-27 15:45:24 -05:00
Richard Wackerbarth
363d7c505f library - Wire 2015-06-27 15:45:24 -05:00
Richard Wackerbarth
7592bb1f2f library - U8glib upgrade to v1.17 2015-06-27 15:45:24 -05:00
Richard Wackerbarth
deea00dde3 library - U8glib 2015-06-27 15:45:23 -05:00
Richard Wackerbarth
1fd335b702 Bootloaders 2015-06-27 15:45:22 -05:00
Richard Wackerbarth
bf629cf7b1 Have Travis Get additional information from the git repository
Travis builds from a detached head.
We need to use the current branch so that versioning works properly
2015-06-27 15:45:22 -05:00
Scott Lahteine
bb44fe17cf Fix typo in buzzer.h endif (PR#2337) 2015-06-27 06:10:19 -05:00
AnHardt
36746143a1 Correct output of M48 (PR#2336)
n_samples is an uint8_t .
Got printouts like:
50 of 2  ...
2015-06-27 06:08:40 -05:00
Richard Wackerbarth
47b78ed1af Merge Implement M110 (PR#2327) 2015-06-26 18:15:09 -05:00
Scott Lahteine
f6ca5a8da8 Allow "M110 N123" without a checksum 2015-06-26 18:13:54 -05:00
Scott Lahteine
aaad65ff5d Include a comment documenting M110 2015-06-26 18:13:54 -05:00
Scott Lahteine
862c72b030 Put the mandatory test of gcode_N first 2015-06-26 18:13:54 -05:00
Scott Lahteine
30976f9773 Allow M110 to handle a second N argument 2015-06-26 18:13:53 -05:00
Scott Lahteine
d135b15bb8 Init all endstop bits to 0 (PR#2332) 2015-06-26 07:10:22 -05:00
Richard Wackerbarth
e09abb1b31 Merge Fix M600 (PR#2301) 2015-06-25 20:45:55 -05:00
Scott Lahteine
5ccb1c9e7d Use millis for M600 audio feedback interval 2015-06-25 20:45:03 -05:00
Scott Lahteine
fb16a83b8a Cleanup M600 documentation comments 2015-06-25 20:45:03 -05:00
Scott Lahteine
97ec224d72 Replace target with destination in M600 2015-06-25 20:45:03 -05:00
Scott Lahteine
4ce9ddbb74 Check the temperature before filament change 2015-06-25 20:45:03 -05:00
Richard Wackerbarth
a1e8714d5f Merge 'Ultimaker' (PR#2331) 2015-06-25 09:13:50 -05:00
Jaime van Kessel
b8b5762e55 Update Ultimaker URL 2015-06-25 09:12:44 -05:00
Jaime van Kessel
d5bfbf5a59 Added correct dutch translation for calibrate. 2015-06-25 09:12:44 -05:00
Scott Lahteine
149c474e55 Updated Russian language (PR#2325)
Gleaned from
https://github.com/MarlinFirmware/Marlin/commit/4ac14a7e5fa8e6e395436664
8976eafd1ae220ae
2015-06-22 23:07:19 -04:00
AnHardt
722829b058 Move buzzing code to buzzr.h & buzzer.cpp (PR#2307)
at least the lcd independent part from Marlin_main.cpp.
2015-06-22 22:31:48 -04:00
AnHardt
c461975140 Rename and repair MELZI_1284 (PR#2301)
to MELZI_MAKR3D.

Fix for #2288
As the normal MELZI also can have a 1284.
2015-06-22 22:30:07 -04:00
schlotzz
1e9cf905c7 Enable ZigZag AutoBedLeveling on Deltas (PR#2273)
ZigZag has been disabled by fault due to do_topography_map
2015-06-15 20:26:25 -05:00
Scott Lahteine
ec93383ec8 Add SanityCheck for bed probe position settings (PR#2282) 2015-06-15 20:22:44 -05:00
Richard Wackerbarth
c2cef42f8e Merge (PR#2285) 2015-06-15 20:21:01 -05:00
Scott Lahteine
dc40a5f6e0 Patch up more outdated config lines 2015-06-15 20:20:32 -05:00
Scott Lahteine
98c9111a7d Update delta configs with latest settings 2015-06-15 20:20:32 -05:00
Scott Lahteine
e6baf8afd9 Fix up allen key settings in delta configs 2015-06-15 20:20:31 -05:00
Scott Lahteine
3b293fc5d1 Move Delta settings lower in delta files 2015-06-15 20:20:31 -05:00
Scott Lahteine
df21857583 Move extruder offset settings next to extruders setting 2015-06-15 20:20:31 -05:00
Scott Lahteine
2dd1859247 Cleanup spaces and comments in configs and conditionals 2015-06-15 20:20:31 -05:00
Scott Lahteine
a274769f4f Clean up spacing and comments
Also clean up some trailing spaces in a few other sources
2015-06-15 20:20:31 -05:00
Scott Lahteine
d3bce05d54 Fix up spacing for filament sensor values 2015-06-15 20:20:31 -05:00
Scott Lahteine
b4b10a57fe Fix configurator section directives and values lists 2015-06-15 20:20:31 -05:00
Scott Lahteine
bba14dcbe6 Move Z Safe Homing point to the middle of the movement range 2015-06-15 20:20:31 -05:00
Richard Wackerbarth
06906bc1c8 Merge (PR#2295) 2015-06-15 20:18:21 -05:00
Scott Lahteine
318318b02f Add pins_RAMPS_13_EFB.h to reduce redundancy 2015-06-15 20:17:09 -05:00
Scott Lahteine
346c8b339b Remove a test from pins_RAMPS_13.h
- Add 3 new lines to `pins.h` to remove 2 redundant tests in
`pins_RAMPS_13.h`
2015-06-15 20:15:38 -05:00
AnHardt
b93cddfcc9 Add lost MKS_BASE to pins.h (PR#2297) 2015-06-15 10:23:46 -05:00
AnHardt
6ab7b560af Rework buzzing (PR#2296)
by:
Moving HAS_LCD_BUZZ macro to Coditionals.h
Renaming HAS_LCD_BUZZ to HAS_BUZZER to make clear is has nothing to do with the lcd.
Removing the ULTRALCD condition.

Moving declaration of lcd_buzz() out of the ULTRA_LCD block in ultralcd.h
Moving definition of lcd_buzz() out of the ULTIPANEL block in ultralcd.cpp
Renaming lcd_buzz() to buzz() to make clear is has nothing to do with the lcd.

All buzzing code is now only dependent on the existence of a BEEPER-pin or the definition of a LCD_USE_I2C_BUZZER.

To do: Check the conditions for the BEEPER-pin in all pin-files.
2015-06-15 06:13:26 -05:00
Scott Lahteine
29122db2fa Fix ULTRA_LCD spelling in HAS_LCD_BUZZ 2015-06-15 06:12:34 -05:00
Richard Wackerbarth
1418470ae9 Merge PR(#2271) 2015-06-14 20:01:40 -05:00
Scott Lahteine
1d94d098bf Formatting tweaks as part of fixing issue 1497 2015-06-14 19:57:27 -05:00
Scott Lahteine
e602c28ad9 Set auto fan pins to OUTPUT during init
Fixes the problem of these pins being left in INPUT state, as described
in #1497
2015-06-14 19:57:27 -05:00
Scott Lahteine
90f858aa85 Use translated strings for axis movement (PR#2280)
Suggest we use the translated strings here. They use (except for
German) the phrasing “Move X” instead of just the axis letter, but they
should fit the available space. The “Extruder” string would be the
same, except it will be translated.
2015-06-14 08:16:00 -05:00
Scott Lahteine
e2a4a83586 Don't re-apply Z_RAISE_BETWEEN_PROBINGS in probe_pt (PR #2281) 2015-06-12 22:39:35 -05:00
Scott Lahteine
6b1b3adaf0 Consistent punctuation in SanityCheck errors (PR#2283) 2015-06-12 09:31:02 -05:00
MagoKimbra
eb81982fcd Fix error next command in autotune (PR#2274)
Now send only temperature for T or B, but not send OK.
Host interprets the line to show the right temperature, but not in
response to M105 then stop and send commands until it ends the autotune.
2015-06-12 07:10:38 -05:00
AnHardt
55b23c896a Optimise out_of_range_error() (PR#2265)
by avoiding the strncopy()
2015-06-12 02:20:40 -05:00
filipmu
b0860adab6 Fix volumetric multiplier display for filament sensor (PR#2264)
The volumetric multiplier display needs to be multiplied by 100 in order to make it an integer for display purposes.
2015-06-12 02:19:27 -05:00
AnHardt
45642b7fe8 Respect DISABLE_AXIS settings (PR#2216)
when DEFAULT_STEPPER_DEACTIVE_TIME is over
instead of simply turn off all.
2015-06-11 11:35:05 -05:00
wurstnase
c85a486445 make the dual z-endstop optional (PR#2277)
it's disabled by default
2015-06-10 15:45:59 -05:00
Scott Lahteine
962b107341 Prevent current_command_args from bypassing nul (PR#2270) 2015-06-09 16:07:10 -05:00
Richard Wackerbarth
4061279218 Merge pull request #2260 from Wackerbarth/DropArduino0.x.x
Deprecate Support for Arduino IDE < 1.0.5
2015-06-08 17:16:25 -05:00
Richard Wackerbarth
06ae832276 Deprecate Support for Arduino IDE < 1.0.5
Note that newer versions of the IDE can still
be made to support compilation for the older boards.
2015-06-08 17:15:28 -05:00
Richard Wackerbarth
4c3ca0b5b6 Deprecate Support for Arduino IDE < 1.0.5
Note that newer versions of the IDE can still
be made to support compilation for the older boards.
2015-06-08 17:15:28 -05:00
Scott Lahteine
ff6081be3a Parse N[0-9]+[ ]* differently (PR #2263)
More general solution to skip N[0-9]+[ ]* in the parser as in #2218
2015-06-08 17:06:49 -05:00
Richard Wackerbarth
d8e2f5d333 Merge pull request #2167 from thinkyhead/reverse_zoffset_sign
Reverse the sign of zprobe_zoffset
2015-06-08 05:10:05 -05:00
Scott Lahteine
aad121864e Include "Z" in M851 report 2015-06-08 05:09:27 -05:00
Scott Lahteine
96a3fba8ac Reverse the sign of zprobe_zoffset
- When editing on the LCD, minus now means below the nozzle
- Stores the opposite sign in EEPROM, so bumped to “V20”
2015-06-08 05:09:27 -05:00
Richard Wackerbarth
1ad2c5bfc0 Merge pull request #2257 from fmalpartida/bugFixing
Updated SAV MkI extension module header connector.
2015-06-08 05:07:48 -05:00
fmalpartida
f92907183c Updated SAV MkI pin header. 2015-06-08 05:07:11 -05:00
Richard Wackerbarth
58941e543e ELB_FULL_GRAPHIC_CONTROLLER_SDCARDDETECTINVERTED removed
#defining something just to define something else doesn’t
make sense

If you want SDCARDDETECTINVERTED, just define it yourself.

If the previous code was intended to define, undefined and then again define the term, that code is improper.
2015-06-06 21:44:59 -05:00
Richard Wackerbarth
cf5d64d940 Merge PR #2118 2015-06-06 20:14:50 -05:00
CONSULitAS
788eb6e647 planner.cpp: remove tab
planner.cpp: single evil and hidden tab removed ♻️ 😏
2015-06-06 20:13:56 -05:00
CONSULitAS
3a5963c0e7 Configuration_adv.h: Add FAN_MIN_PWM for slow fan stopping issue …
* all Configuration_adv.h: Add #define FAN_MIN_PWM for slow fan stopping
issue
* for K8200: uncommented with tested (and working) values
2015-06-06 20:13:56 -05:00
CONSULitAS
e55e65d1e4 planner.cpp: Add FAN_MIN_PWM for slow fan stopping issue …
@CONSULitAS

planner.cpp: Add FAN_MIN_PWM for slow fan stopping issue (V2.1 with
macro and linear scaling)

@thinkyhead thanks for idea on linear scaling
2015-06-06 20:13:56 -05:00
Richard Wackerbarth
5239a4e839 Merge bPR #1882 2015-06-06 19:47:07 -05:00
paclema
8d295547be * Auto filament change on CHANGEFILAMENT feature. Now you can activate this option that extrude filament until you press the button. 2015-06-06 19:45:45 -05:00
Richard Wackerbarth
3eea5222cf Merge PR #1767 2015-06-06 19:00:27 -05:00
atfield90
6d0e91328d Renamed Board_megatronics_1 to Board_minitronics 2015-06-06 18:59:04 -05:00
atfield90
c4a2e5ac23 Renamed Pins_megatronics_1 to Pins_minitronics 2015-06-06 18:59:04 -05:00
atfield90
2076906aaa Renamed Pins_megatronics_1 to Pins_minitronics 2015-06-06 18:59:04 -05:00
tonokip
10733a2bb0 added minirambo pin definitions. V2 2015-06-06 18:37:58 -05:00
Richard Wackerbarth
0c7bdf569c Merge branch 'ProbeDeployment' into Development 2015-06-06 17:49:20 -05:00
Richard Wackerbarth
303d47228e Define Probe Path in new format 2015-06-06 17:48:27 -05:00
Richard Wackerbarth
ad09d6a60f 3 Step Allen Key Probe 2015-06-06 17:48:27 -05:00
Richard Wackerbarth
8359cdf01d Check compatibility for Teensy-based processor
The instruction say to set a #define in fastio.h
However, that value is not included before this test.
2015-06-06 17:24:34 -05:00
Richard Wackerbarth
6b095af9b1 Merge branch 'GenerateVersionHeader' into Development 2015-06-06 17:21:35 -05:00
Richard Wackerbarth
b3a3080b4b Suppress error when on detached head 2015-06-06 17:20:01 -05:00
Daniel Friesen
54375cc7a4 Quote paths so build scripts work when directories have space in their name.
Currently if you clone Marlin to a directory with a space in the name, Arduino will generate an error.
Because when executed the path ends up split into two separate arguments.
2015-06-06 17:20:01 -05:00
Richard Wackerbarth
bdf778bec2 Merge SDCARDDETECTINVERTED (#2144) 2015-06-06 16:44:13 -05:00
Ed Boston
08968c29bb Adding ELB_FULL_GRAPHIC_CONTROLLER_SDCARDDETECTINVERTED to Examples 2015-06-06 16:40:32 -05:00
Ed Boston
fed18bcc20 Removed SDSLOW for ELB_FULL_GRAPHIC_CONTROLLER
Hardware changes has removed the need for this option.
2015-06-06 16:40:32 -05:00
Ed Boston
b94a0e1501 Added ELB_FULL_GRAPHIC_CONTROLLER_SDCARDDETECTINVERTED
The new define allows the sd card detect to be inverted or not from
Configuration.h
2015-06-06 16:40:31 -05:00
Ed Boston
bc205c76a3 SDCARDDETECTINVERTED problems
Fixed an error where SDCARDDETECTINVERTED was being defined/undefined
improperly
2015-06-06 16:40:31 -05:00
AnHardt
2bf482ce65 Merge pull request #2238 from AnHardt/TRP-Travis-again
Remove the 'Thermal Runaway Protection' section from .travis.yml
2015-06-03 12:48:13 +02:00
AnHardt
e400fce271 Merge pull request #2221 from MagoKimbra/Dryrun
Insert Debug DRYRUN Repetier Host compatible
2015-06-03 12:30:48 +02:00
AnHardt
5ed0c1a2bd Remove the 'Thermal Runaway Protection' section from .travis.yml
because its activated by default now.

Closes #2234.
2015-06-03 12:25:57 +02:00
AnHardt
95f1feab1a Merge pull request #2232 from Wackerbarth/AutoVersioning
Automatic versioning for Travis builds
2015-06-03 12:22:01 +02:00
AnHardt
163a9ff58e Merge pull request #2230 from AnHardt/psm
Fix thermal protection state machine target temp. V2
2015-06-03 09:46:53 +02:00
AnHardt
c3fe6e61ae Merge pull request #2229 from AnHardt/position-out-of-range
Fix out_of_range_error()
2015-06-03 09:46:22 +02:00
MagoKimbra
4db8d2def4 Moved MSG_DEBUG in language.h 2015-06-03 08:18:27 +02:00
AnHardt
38c21ff34d Merge pull request #2236 from AnHardt/backto103def
Back to 1.0.3 dev - for now
2015-06-03 01:08:05 +02:00
AnHardt
b7e9ba7591 Back to 1.0.3 dev - for now 2015-06-03 00:47:11 +02:00
AnHardt
d1f4471000 Merge pull request #2146 from Wackerbarth/Versioning
Versioning
2015-06-02 18:31:21 +02:00
Richard Wackerbarth
ac382cbdaf Automatic versioning for Travis builds 2015-06-02 08:13:43 -05:00
AnHardt
b1404a0743 fix thermal protection state machine target temp. V2
If the target temperature is changed then it would always stay in the reset state.
Thanks to @tonokip.

Replaces #2119
2015-06-02 12:26:21 +02:00
AnHardt
17b0ec84ed Fix out_of_range_error()
For sprintf_P() the first parameter has to be a `char*` not `const char*`.
2015-06-02 11:50:32 +02:00
AnHardt
35af5ef23e Merge pull request #2225 from Wurstnase/naming
consistency name for multiplier
2015-06-02 10:18:22 +02:00
wurstnase
e7e964432b consistency name for multiplier
replace extruder_multiply with extruder_multiplier
like feedrate_multiplier or volumetric_multiplier
2015-06-01 22:33:22 +02:00
AnHardt
d4c6fc5d0a Merge pull request #2223 from AnHardt/dualz-semicolon
Add a semicolon to make Z_DUAL_STEPPER_DRIVERS compile again.
2015-06-01 20:15:55 +02:00
AnHardt
0d9d21d15f Add a semicolon to make Z_DUAL_STEPPER_DRIVERS compile again. 2015-06-01 19:51:43 +02:00
MagoKimbra
76306f9073 Insert Debug DRYRUN Repetier Host compatible 2015-06-01 18:34:45 +02:00
AnHardt
ca2dcff9d4 Merge pull request #2219 from MagoKimbra/Cura_bug
Fix problem Width Cura
2015-06-01 17:54:10 +02:00
MagoKimbra
881146bc22 Fix problem Width Cura 2015-06-01 17:25:32 +02:00
Bo Herrmannsen
c33fffd6a7 Merge pull request #2209 from AnHardt/u8glib
Replace U8GLI v1.11 with v1.17
2015-06-01 07:01:59 +02:00
Bo Herrmannsen
01a7b5cc97 Merge pull request #2210 from fmalpartida/bugFixing
Addes support for SDD1306 I2C OLED LCD
2015-06-01 07:01:35 +02:00
Bo Herrmannsen
cc5d006087 Revert "updated addons for IDE 1.6.4"
This reverts commit 2724baae8b.
2015-06-01 07:00:30 +02:00
Bo Herrmannsen
2724baae8b updated addons for IDE 1.6.4 2015-05-31 23:52:39 +02:00
fmalpartida
11e3f3375d Merge commit '764e61708b8e73410c7819d59c4970d7089ca6f5' into bugFixing
Updated LCD wiki location.
2015-05-31 21:20:26 +02:00
AnHardt
6f4873329e Replace U8GLI v1.11 with v1.17
In Travis we already test against 1.17.
2015-05-31 20:25:36 +02:00
AnHardt
764e61708b Merge pull request #2208 from alexxy/ru_translations
Update ru translation
2015-05-31 19:46:59 +02:00
Alexey Shvetsov
a8670b66a7 Update ru translation
Signed-off-by: Alexey Shvetsov <alexxy@gentoo.org>
2015-05-31 20:09:10 +03:00
fmalpartida
93da52d011 Added support for OLED SSD1306 I2C based LCDs. 2015-05-31 18:53:29 +02:00
Wurstnase
9c09967803 Merge pull request #2149 from Wurstnase/enstop_bits
faster compare
2015-05-31 16:02:55 +03:00
wurstnase
0f3f7d6835 clean up double endstops 2015-05-31 14:06:13 +02:00
AnHardt
9d2a980bcf Merge pull request #2170 from thinkyhead/beep_M600_elsewise
Slight size reduction by adding idle()
2015-05-30 12:42:32 +02:00
AnHardt
2728dc0606 Merge pull request #2194 from thinkyhead/reduce_strings
Redo "invalid extruder" to save 304 bytes
2015-05-30 11:05:08 +02:00
Scott Lahteine
be5236e839 Reduce setTargetedHotend by removing the switch 2015-05-29 18:03:58 -07:00
Scott Lahteine
06f401e7e5 Redo "invalid extruder" to save 264 bytes
- Use `setTargetedHotend` in `M200`, as with other commands that use
`T` for the extruder
- Synthesize the "invalid extruder" message, obviating several long
strings
2015-05-28 22:25:28 -07:00
Scott Lahteine
1a882bcc2e Merge pull request #2193 from thinkyhead/ignore_unrecognized_commands
Ignore unknown commands if they start with G, M, or T
2015-05-28 22:03:48 -07:00
Scott Lahteine
a672872717 Merge pull request #2187 from AnHardt/MAX6675M105
Print active extruder with M105 for MAX6675
2015-05-28 18:12:48 -07:00
Scott Lahteine
9beed830eb Drop commented code_is_good lines 2015-05-28 17:53:47 -07:00
Scott Lahteine
068d4a1eb2 Ignore unknown commands if they start with G, M, or T 2015-05-28 17:44:09 -07:00
Scott Lahteine
5824f613ff Merge pull request #2185 from jothan/bed_integral
Separate the maximum integral power for the bed from PID_INTEGRAL_DRI…
2015-05-28 16:32:02 -07:00
Scott Lahteine
c5c9d12630 Merge pull request #2183 from AnHardt/displayinit
Initialize the display earlier
2015-05-28 16:29:18 -07:00
Scott Lahteine
ef4becc413 Merge pull request #2188 from AnHardt/FtoN
Replace MSG_F? with MSG_N?
2015-05-28 16:18:50 -07:00
Scott Lahteine
eecabf0b00 Merge pull request #2190 from thinkyhead/new_parser_m33
Update M33 for new gcode parser
2015-05-28 16:17:32 -07:00
Scott Lahteine
0564625757 Update M33 for new gcode parser 2015-05-28 14:17:39 -07:00
AnHardt
f18f689c01 Replace MSG_F? with MSG_N?
To avoid double definitions.
I prefer to read N for Number not for Nozzle.
2015-05-28 20:30:23 +02:00
AnHardt
af7e3f5076 Print active extruder with M105 for MAX6675
Was omitted when T0 is a MAX6675.
2015-05-28 19:03:16 +02:00
Jonathan Bastien-Filiatrault
d46d9d998e Add maximum bed integral term in example configurations. 2015-05-28 12:51:37 -04:00
Jonathan Bastien-Filiatrault
e86f2342c0 Separate the maximum integral power for the bed from PID_INTEGRAL_DRIVE_MAX / PID_MAX.
My PID_INTEGRAL_DRIVE_MAX was at 96, which was insufficient for my bed
to reach its intended temperature. The head requires a low maximum power since
I run on 24 volts and it has a somewhat low thermal mass.
2015-05-28 11:48:04 -04:00
AnHardt
a8a8f236d2 Merge pull request #2180 from thinkyhead/fix_radian
Fix DEGREES macro
2015-05-28 16:19:41 +02:00
AnHardt
f0523b5816 Initialize the display earlier
to have it ready to display errors during (temperature)-setup.
2015-05-28 16:08:17 +02:00
Scott Lahteine
790c697c19 Fix DEGREES macro 2015-05-28 00:19:48 -07:00
Scott Lahteine
76b4678f99 Merge pull request #2171 from thinkyhead/gcode_110_is_good
M110 is a known command
2015-05-26 21:17:58 -07:00
Scott Lahteine
03d5709b09 M110 is a known command
- The command parser now displays “unknown command” in more cases.
Known commands must be added to the `switch` inside `process_commands`
to suppress the error.
2015-05-26 20:31:18 -07:00
Scott Lahteine
d76a01194d Slight size reduction by adding idle() 2015-05-26 20:08:21 -07:00
Scott Lahteine
22c8bc5ef4 Merge pull request #2157 from AnHardt/bed-mintemp
Activate BED_MINTEMP error
2015-05-26 17:49:37 -07:00
Scott Lahteine
97a48e36e9 Merge pull request #2156 from AnHardt/kill3
Call kill() only once when triggered by a temperature error
2015-05-26 15:34:47 -07:00
Richard Wackerbarth
2deb5a8ac5 Temporary Hack
REVERT THIS CHANGE

In proper use, we want to force the vendor to update this file to reflect distribution parameters

However, until most users have converted to automatic versioning,
we “grant them a pass”
2015-05-25 15:54:08 -05:00
Richard Wackerbarth
b5743d6927 Use SOURCE_CODE_URL rather than FIRMWARE_URL 2015-05-25 15:53:34 -05:00
Richard Wackerbarth
5ea139fd79 Revised Versioning mechanism 2015-05-25 15:53:14 -05:00
AnHardt
da246f5cb1 Activate BED_MINTEMP error.
And call _temp_error() directly for ERR_MAXTEMP_BED to avoid the only one time use of bed_max_temp_error().

Includes #2156.
2015-05-25 13:23:19 +02:00
AnHardt
959da98d8e Call kill() only once when triggered by a temperature error
to avoid stack overflow when called from interrupt.

Some clean up for calls of disable_all_heaters().
'disable_all_heaters()' is called in kill() and again when 'killed' is already set inside _temp_error().
2015-05-25 12:44:03 +02:00
Scott Lahteine
ffc39dc182 Merge pull request #2153 from thinkyhead/leveling_shrink
Reduce code size with out_of_range_error function
2015-05-24 20:32:51 -07:00
Scott Lahteine
68f6f149d0 Reduce code size with out_of_range_error function
- Affects code size when automatic bed leveling is enabled
2015-05-24 20:18:02 -07:00
Scott Lahteine
f8aabd670e Notes about Development in its README.md 2015-05-24 18:47:00 -07:00
wurstnase
94120740d8 faster compare
!(~(ab)&0x3) and ab == 0x3 are equal
2015-05-23 07:55:15 +02:00
Scott Lahteine
c9141e604a Merge pull request #2145 from thinkyhead/gcode_folding
Indentation in process_commands
2015-05-22 18:47:37 -07:00
Scott Lahteine
3778362f88 Merge pull request #2143 from thinkyhead/fix_command_parser_M110
Cleanup pins in RAMPS_13_EFB boards
2015-05-22 18:47:10 -07:00
Scott Lahteine
b55f8718c3 Indent G90/G91, G92 2015-05-22 17:34:08 -07:00
Scott Lahteine
b0d520b109 Indent G30, G31/G32 2015-05-22 17:33:17 -07:00
Scott Lahteine
ffe27a6225 Indent G29 2015-05-22 17:32:46 -07:00
Scott Lahteine
86083badc2 Indent G4, G10/G11, G28 2015-05-22 17:32:27 -07:00
Scott Lahteine
47d7a9cb5e Indent G2/G3 2015-05-22 17:31:38 -07:00
Scott Lahteine
350f239d84 Indent G0/G1 2015-05-22 17:31:24 -07:00
Scott Lahteine
672b0c1fd3 Cleanup pins in RAMPS_13_EFB boards 2015-05-22 16:20:54 -07:00
Scott Lahteine
f4584c51c5 Merge pull request #2142 from thinkyhead/fix_command_parser_M110
No need for +1 on initial seen_pointer
2015-05-22 15:32:11 -07:00
Scott Lahteine
15a2351675 No need for +1 on initial seen_pointer 2015-05-22 15:31:30 -07:00
Scott Lahteine
8cba3bd811 Merge pull request #2141 from thinkyhead/fix_command_parser_M110
Set seen_pointer before calling code_value
2015-05-22 15:29:15 -07:00
Scott Lahteine
550dd87b2a Set seen_pointer before calling code_value 2015-05-22 15:11:48 -07:00
Scott Lahteine
38cc0b93c6 Merge pull request #1874 from AnHardt/Bulgarian
Introduction of Bulgarian - language_bg.h
2015-05-22 13:59:50 -07:00
Scott Lahteine
04a1622172 Merge pull request #2127 from Wackerbarth/Kossel_Pro
Kossel Pro
2015-05-21 18:43:26 -07:00
Scott Lahteine
81c2ca3e10 Merge pull request #2131 from thinkyhead/bq_is_ramps_13_efb
Witbox and Hephestos are RAMPS EFB
2015-05-21 18:39:02 -07:00
Scott Lahteine
f919a2fed1 Merge pull request #2134 from AnHardt/preheat-all
Shift call of start_watching_heater() into setTargetHotend()
2015-05-21 18:36:28 -07:00
Scott Lahteine
65343e8ae8 Merge pull request #2138 from thinkyhead/tweak_swh
Fix a couple of doubled semicolons
2015-05-21 18:36:04 -07:00
Scott Lahteine
063881b5bd Fix a couple of doubled semicolons 2015-05-21 18:15:29 -07:00
AnHardt
94dff5b36a Merge pull request #2137 from thinkyhead/tweak_swh
Move millis call in start_watching_heater
2015-05-22 02:02:07 +02:00
Scott Lahteine
70d2f48d4e Merge pull request #2136 from thinkyhead/M303_suppress_error
Suppress the line mismatch error after M303
2015-05-21 16:46:30 -07:00
AnHardt
0c0ace2a04 Remove start_watching_heater() fom M104 and M109 2015-05-22 01:44:50 +02:00
Scott Lahteine
00716d0ca0 Small start_watching_heater adjustment 2015-05-21 16:44:49 -07:00
Scott Lahteine
834747deb7 Merge pull request #2135 from Wurstnase/new_endstop_bits
new endstop bits
2015-05-21 16:35:54 -07:00
Scott Lahteine
bde9c70d42 Suppress the line mismatch error after M303 2015-05-21 16:27:22 -07:00
Scott Lahteine
50bd7493cc Merge pull request #2108 from thinkyhead/m33_long_filename_host_support
M33 LONG_FILENAME_HOST_SUPPORT
2015-05-21 16:22:47 -07:00
Scott Lahteine
4d11b29959 Merge pull request #2113 from thinkyhead/command_sanitizer
Command sanitizer
2015-05-21 16:21:58 -07:00
Scott Lahteine
71ff9adb12 Merge pull request #2132 from thinkyhead/fix_M120_M121
M120 and M121 are reversed
2015-05-21 16:20:03 -07:00
wurstnase
ff98b8632b new endstop bits 2015-05-21 23:16:43 +02:00
AnHardt
9b0fa9c309 Changed dependency of start_watching_heater() in setTargetHotend() to THERMAL_PROTECTION_HOTENDS 2015-05-21 21:07:37 +02:00
AnHardt
bc0764894a Shift call of start_watching_heater() into setTargetHotend()
to warrant watching is set or reset.

Make setTargetBed() in _lcd_preheat() dependant of TEMP_SENSOR_BED.
Use disable_all_heaters() in lcd_cooldown() and abort_on_endstop_hit.
2015-05-21 20:36:11 +02:00
Richard Wackerbarth
b878bc5620 Introducing the Kossel Pro Build Configuration 2015-05-21 11:47:34 -05:00
Richard Wackerbarth
3004359191 Libraries supporting Marlin platform 2015-05-21 11:47:34 -05:00
Richard Wackerbarth
6c86266fb6 Brainwave Bootloaders 2015-05-21 11:47:34 -05:00
Richard Wackerbarth
3eee09cb6c Brainwave Variants 2015-05-21 11:47:34 -05:00
Richard Wackerbarth
945fd2cf82 Brainwave Core from Arduino 1.0.1 (In 1.5 file structure) 2015-05-21 11:47:34 -05:00
Richard Wackerbarth
1b707a7cf7 Platform and Boards 2015-05-21 11:47:34 -05:00
Richard Wackerbarth
1d8f61ca8a AT90USB is defined in pins.h 2015-05-21 11:46:54 -05:00
Richard Wackerbarth
735bf2d35f Describe Custom M Code 2015-05-21 08:06:33 -05:00
Scott Lahteine
f39658c822 M120 and M121 are reversed 2015-05-21 00:17:44 -07:00
Scott Lahteine
6eb4f90ce7 Also synchronize configurator copies of configs 2015-05-20 21:34:00 -07:00
Scott Lahteine
9d1961ebe3 Witbox and Hephestos are just RAMPS_13_EFB 2015-05-20 21:33:23 -07:00
AnHardt
d6c1285ab5 Merge pull request #2115 from AnHardt/_temp_error
Use _temp_error() for all errors thrown by different heater sanity check mechanisms
2015-05-21 00:36:30 +02:00
AnHardt
4422365a53 Merge branch 'Development' of https://github.com/MarlinFirmware/Marlin into _temp_error 2015-05-20 23:34:39 +02:00
AnHardt
4113762062 Merge pull request #2130 from AnHardt/kill2
Add a string parameter to kill()
2015-05-20 23:32:51 +02:00
AnHardt
89d2ee6f13 Make output on display dependant of ULTRA_LCD 2015-05-20 22:03:16 +02:00
AnHardt
120d4c7a8c Merge remote-tracking branch 'origin/kill2' into _temp_error 2015-05-20 21:25:32 +02:00
AnHardt
cb6e82dc60 Change from kill() to kill(const char *)
in temperature.cpp
2015-05-20 21:22:48 +02:00
AnHardt
9d13942278 Use new kill() with parameter. 2015-05-20 21:18:52 +02:00
AnHardt
6398c5e28d Merge remote-tracking branch 'origin/kill2' into _temp_error 2015-05-20 21:08:19 +02:00
AnHardt
f4a93ed997 Add a string parameter to kill()
Makes the output on the LCD adjustable.
2015-05-20 20:53:48 +02:00
AnHardt
2990c6c45f Use new kill_() for _temp_error()
instead of stop(). We really want to require a reset and no chance to set a new temperature.
2015-05-20 14:03:14 +02:00
AnHardt
9b8c6ed254 Merge pull request #2120 from chris-bo/dogm_config
move dogm font selection to configuration_adv.h
2015-05-20 10:11:34 +02:00
AnHardt
06513565e9 Merge pull request #2105 from eboston/Development
Add  ELB_FULL_GRAPHIC_CONTROLLER with ADAFRUIT_ST7565 display.
2015-05-20 09:56:21 +02:00
Ed Boston
082ed3beed Propagate Configuration.h changes
Updated all the example Configuration.h files for the new display type.
2015-05-19 14:04:57 -07:00
Ed Boston
152b681bb5 Added link to controller github
Added the link to the github information about the
ELB_FULL_GRAPHIC_CONTROLLER
2015-05-19 04:14:55 -07:00
AnHardt
995b84944b Merge pull request #1982 from CONSULitAS/Development_Update_language.h
language.h: update documentation / URL für K8200
2015-05-19 12:13:35 +02:00
Scott Lahteine
7bc5fd8193 Merge pull request #2123 from AnHardt/Duemilanove
Remove Duemilanove
2015-05-18 20:36:05 -07:00
Scott Lahteine
94de1e0d93 Merge pull request #2116 from AnHardt/wording
transpire -> expire
2015-05-18 20:34:46 -07:00
AnHardt
23ee57c1c1 Remove DUEMILANOVE from Travis too. 2015-05-19 03:17:56 +02:00
AnHardt
4d4fa3607b Remove Duemilanove
No way to fit Marlin into 32K.
2015-05-19 02:46:37 +02:00
AnHardt
e353d27430 Merge branch 'Development' of https://github.com/MarlinFirmware/Marlin into Bulgarian 2015-05-18 23:56:53 +02:00
AnHardt
775ea401c8 Delete Documentation/LCDLanguageFont.mf to avoid conflicts with Development 2015-05-18 23:56:26 +02:00
Ed Boston
ca8d1756d5 Define fixes
Fixed a couple defines that were not changed or commented out.
2015-05-18 14:23:31 -07:00
CONSULitAS
b96b28b7cc language.h: update documentation for LANGUAGE_INCLUDE
language.h: update documentation for LANGUAGE_INCLUDE

@thinkyhead What do you think? I think there should be a warning like
this.
2015-05-18 23:11:26 +02:00
Christian Bohn
258bcdefe0 move dogm font selection to configuration_adv.h 2015-05-18 22:54:53 +02:00
AnHardt
7750180c93 transpire -> expire
Minor wording correction.
2015-05-18 21:48:10 +02:00
AnHardt
70163dafb9 Use _temp_error() for all errors thrown by different mechanisms
Now ending in an endless loop.
Tidy up the output format.
We now get:
ERRORTEXT ", system stopped! Heater_ID: " HEATERID

Where ERRORTEXT can be:
"Heating failed"
"Thermal Runaway"
"MAXTEMP triggered"
"MINTEMP triggered"
and soon
"Thermal Jump"

HEATERID can be
0, 1, 2 ,3 , "bed"

This messages are always followed by the common:
"Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
2015-05-18 20:26:25 +02:00
Scott Lahteine
a0f362c735 Simplify & optimize with current_command_args 2015-05-18 07:08:04 -07:00
Scott Lahteine
adc8fcb77f More parser comments, optimize code_seen, save with goto 2015-05-18 07:08:04 -07:00
Scott Lahteine
c6d8dd19d9 use fetched value 2015-05-18 07:08:04 -07:00
Scott Lahteine
1116e13f5a Further optimization of command parser 2015-05-18 07:08:03 -07:00
Scott Lahteine
3a4c3ab76e Pre-sanitize the command before handling
- Use a global pointer for the current sanitized command
- Pre-sanitize the current command to bypass `N` and nullify `*`,
removing the need for handlers to bypass, ignore, or nullify these
parts, and reducing overhead for `code_seen`, etc.
- Pre-skip leading whitespace.
- Only look for G, M, T codes at the start of the command.
- Verify that G, M, T codes are followed by command codes.
2015-05-18 07:06:51 -07:00
Ed Boston
a83bf18ee1 More functional seperation
Moved SDCARDDETECTINVERTED and SDSLOW to Conditionals.h.
Added U8GLIB_LM6059_AF to define display specific actions.
Added reminder to compile in u8glib
2015-05-18 05:37:46 -07:00
Scott Lahteine
cad248fc55 Merge pull request #2111 from AnHardt/at
Name magic value 20 to MAX_OVERSHOOT_PID_AUTOTUNE
2015-05-18 05:25:51 -07:00
AnHardt
97ca1b3f4d Name magic value 20 to MAX_OVERSHOOT_PID_AUTOTUNE
to make it better findable.
2015-05-18 14:15:29 +02:00
Scott Lahteine
7ff18f6657 Merge pull request #2107 from thinkyhead/fix_issue_2106
Have G92 set the nozzle position on Delta and SCARA
2015-05-17 17:39:09 -07:00
Scott Lahteine
0f2c9bacfd M33 LONG_FILENAME_HOST_SUPPORT 2015-05-17 17:36:32 -07:00
Scott Lahteine
3feaef6526 Have G92 set the nozzle position on Delta and SCARA 2015-05-17 17:08:05 -07:00
Ed Boston
047e688e93 Changed ADAFRUIT_ST7565 to ELB_FULL_GRAPHIC_CONTROLLER
Rename of define to avoid confusion between the controller and the
display which had similar names.
2015-05-17 15:23:17 -07:00
Ed Boston
1999ac415c Formatting Changes
Fixes for some code formatting changes and commenting out the
ADAFRUIT_ST7565 define that was left defined.
2015-05-17 13:39:24 -07:00
Ed Boston
41f8cdb3a6 ADAFRUIT_ST7565
Added support for new display type
2015-05-17 12:47:41 -07:00
Scott Lahteine
c5feb9c6a1 Merge pull request #2103 from Wurstnase/rework_out_bits
rework out_bits
2015-05-17 07:07:21 -07:00
wurstnase
21ff773832 rework out_bits 2015-05-17 14:33:09 +02:00
Scott Lahteine
6c27eaf864 Merge pull request #2101 from thinkyhead/code_style
Code style and a dangling "else"
2015-05-17 03:39:08 -07:00
Scott Lahteine
80d2c11f9d Merge pull request #2099 from thinkyhead/gcode_rename
Rename gCode to codenum as a consistency
2015-05-17 03:09:46 -07:00
Scott Lahteine
d580a0d186 Use "+=" in plane rotation 2015-05-17 01:51:14 -07:00
Scott Lahteine
2f3a410cb0 Fix a potential hanging "else" bug 2015-05-17 01:50:30 -07:00
Scott Lahteine
b83e3f0905 Combine "Bed X: " strings 2015-05-17 01:49:52 -07:00
Scott Lahteine
7dfb8becdb Adjust some names and types in Marlin_main.cpp 2015-05-17 01:48:51 -07:00
Scott Lahteine
c966aa26ff Comments in Marlin_main.cpp 2015-05-17 01:47:53 -07:00
Scott Lahteine
c54a2ea042 Adjust spacing in Marlin_main.cpp and stepper.* 2015-05-17 01:47:02 -07:00
Scott Lahteine
072625ccad Update headings in Marlin_main.cpp and stepper.cpp 2015-05-17 01:44:53 -07:00
Scott Lahteine
16032f149f Rename to codenum as a consistency 2015-05-16 23:17:35 -07:00
Scott Lahteine
273a4a253f Merge pull request #2096 from thinkyhead/cherry_picking3
Hide M117 with no LCD
2015-05-16 21:10:28 -07:00
Scott Lahteine
64825a3d1e Merge pull request #2095 from thinkyhead/cherry_picking2
Add gcode_line_error to reduce code size
2015-05-16 21:09:15 -07:00
Scott Lahteine
ea3df2b0b3 Merge pull request #2094 from thinkyhead/cherry_picking
Rename process_commands to process_next_command
2015-05-16 21:08:59 -07:00
Scott Lahteine
ca79282eaf Hide M117 with no LCD 2015-05-16 20:59:04 -07:00
Scott Lahteine
ce218cafdb Add gcode_line_error to reduce code size 2015-05-16 20:54:58 -07:00
Scott Lahteine
46d59784ad Rename preocess_command to process_next_command 2015-05-16 20:47:40 -07:00
Scott Lahteine
98c4f22432 Merge pull request #2093 from thinkyhead/timeout_default
Tweak to fan kick routine
2015-05-16 19:43:45 -07:00
Scott Lahteine
513077c317 Minor change to fan kick 2015-05-16 19:42:28 -07:00
Scott Lahteine
ef62463d20 Merge pull request #2089 from thinkyhead/timeout_default
NO_TIMEOUTS and ADVANCED_OK off by default
2015-05-16 18:35:29 -07:00
Scott Lahteine
76438195f0 NO_TIMEOUTS and ADVANCED_OK off by default 2015-05-16 02:47:20 -07:00
Scott Lahteine
7fecc48174 Merge pull request #2081 from thinkyhead/better_lsdive
Allow lsDive to recurse with minimal stack usage
2015-05-15 22:16:59 -07:00
Scott Lahteine
d2563804c8 Add LF to file errors 2015-05-15 04:37:22 -07:00
Scott Lahteine
e114662cfa Adjust SdBaseFile spacing 2015-05-15 03:23:49 -07:00
Scott Lahteine
98e91f5253 Allow lsDive to recurse with minimal stack usage 2015-05-15 03:19:07 -07:00
Scott Lahteine
8b2cd930c3 Update README.md 2015-05-14 18:21:53 -07:00
Scott Lahteine
19166a92e4 Merge pull request #2057 from Wurstnase/serial_wait
add plan buffer remaining for 'P' and block buffer remaining 'B'
2015-05-14 04:57:08 -07:00
Scott Lahteine
95f5a68006 Merge pull request #2074 from thinkyhead/lcd_xyz_unknown
Display unknown XYZ on the LCD as "---"
2015-05-14 04:56:38 -07:00
Scott Lahteine
e97fcafd0e Merge pull request #2076 from thinkyhead/mendel_inverting
Use MSG_OK in M105
2015-05-14 04:54:11 -07:00
Scott Lahteine
197a256669 Hardtung 2015-05-14 04:43:10 -07:00
Scott Lahteine
2e6f57baa9 More active authors 2015-05-14 04:40:07 -07:00
Scott Lahteine
0f6cd3640b Drop extraneous ok_to_send 2015-05-14 04:38:09 -07:00
Scott Lahteine
0ce355d9e7 Use MSG_OK in M105 2015-05-14 03:33:38 -07:00
Scott Lahteine
a366e57385 Merge pull request #2075 from thinkyhead/mendel_inverting
Use Mendel default for INVERT_Y_DIR
2015-05-14 03:29:24 -07:00
Scott Lahteine
7b3acfbb6f Merge pull request #2072 from thinkyhead/better_arc_code
Consolidate arc code, remove motion_control.*
2015-05-14 00:27:22 -07:00
Scott Lahteine
78beef2d73 Use Mendel default for INVERT_Y_DIR 2015-05-14 00:25:47 -07:00
Scott Lahteine
1a4a09c26f Display unknown XYZ on the LCD as "---"
- Also show 2 digits past decimal for Z on DOGM
2015-05-13 22:45:58 -07:00
Scott Lahteine
68ce419147 Note on segment size 2015-05-13 19:11:36 -07:00
Scott Lahteine
8b92249f18 Bring arc_offset into auto scope 2015-05-13 19:00:46 -07:00
Scott Lahteine
80807b2d71 Consolidate arc code, remove motion_control.* 2015-05-13 18:52:41 -07:00
Scott Lahteine
56126786a6 Merge pull request #2069 from thinkyhead/sd_alpha_sort
Formatting tweaks
2015-05-13 02:04:24 -07:00
Scott Lahteine
f65833931d Formatting tweaks 2015-05-13 02:02:19 -07:00
Scott Lahteine
56090fc374 Merge pull request #2067 from thinkyhead/thermal_unified
Fix heating error message
2015-05-12 19:06:16 -07:00
Scott Lahteine
fcfd99c1ae Add comments to lcd_control_temperature_menu 2015-05-12 18:46:16 -07:00
Scott Lahteine
d693e0f378 Use WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1 as difference limit 2015-05-12 18:30:38 -07:00
Scott Lahteine
6697a8f375 Watch the heater a little longer 2015-05-12 18:22:47 -07:00
Scott Lahteine
5693a6e3c9 Fix heating error message 2015-05-12 18:17:13 -07:00
Scott Lahteine
747fd5801c Merge pull request #2055 from thinkyhead/thermal_unified
Combine thermal runaway and watch-period
2015-05-12 08:04:29 -07:00
Scott Lahteine
6e5572228d Merge pull request #2064 from thinkyhead/wait_before_g28
Split up prepare_move by type
2015-05-12 07:53:11 -07:00
Scott Lahteine
27ad381e25 Allow fractional seconds in G4 and M0 2015-05-12 07:52:08 -07:00
Scott Lahteine
5146694452 Merge pull request #1884 from shaggythesheep/feature_new_board_ramps_cnc_controller
Feature: Add RAMPS CNC Controller Board
2015-05-12 04:31:49 -07:00
Scott Lahteine
b2bd9aae7c SCARA_SEGMENTS_PER_SECOND 2015-05-12 04:18:15 -07:00
Scott Lahteine
bd20bd5444 Merge pull request #2063 from chris-bo/autobed_sled
improve sled handling
2015-05-12 03:29:21 -07:00
Scott Lahteine
9e95ceb3fc Split up prepare_move by type
- For better encapsulation add inlines for each prepare_move type
- Move controllerFan vars inside the function as statics
- Some formatting cleanup
- Rename `ClearToSend` as `ok_to_send`
2015-05-12 02:08:20 -07:00
Scott Lahteine
9ba8cf5fe3 Merge pull request #2061 from thinkyhead/wait_before_g28
Always do st_synchronize() before G28
2015-05-12 02:05:30 -07:00
Scott Lahteine
873f7d6f2a Check that configs are up-to-date 2015-05-12 01:33:51 -07:00
Christian Bohn
f48599f172 add pin definition to some motherboards 2015-05-12 10:02:23 +02:00
Scott Lahteine
b5200e184c Remove extra setup_for_endstop_move 2015-05-12 01:01:53 -07:00
Scott Lahteine
8d814de558 Return void in prevent_dangerous_extrude 2015-05-12 00:55:00 -07:00
Scott Lahteine
367e2eb9f4 Global setup_for_endstop_move 2015-05-12 00:51:22 -07:00
Wurstnase
fd873c00c6 Merge pull request #2062 from Wurstnase/z_probe_bit_fix
add missing endstop-bits
(Travis don't see that part of code)
2015-05-12 09:47:52 +02:00
Wurstnase
1d5677cc3b add missing Z-bits 2015-05-12 09:36:19 +02:00
Wurstnase
df12e68e7d add missing Z_PROBE-bit 2015-05-12 09:33:24 +02:00
Scott Lahteine
fa951f8a0b Always do st_synchronize() before G28 2015-05-12 00:31:51 -07:00
Christian Bohn
27a3b1d895 disable sled pin by default 2015-05-12 08:51:01 +02:00
Christian Bohn
fb44b53ae3 sled improvements
- create sled pin definition
- G28 Works with sled
2015-05-11 23:22:19 +02:00
Wurstnase
46d1932380 add plan buffer remaining for 'P' and block buffer remaining 'B' 2015-05-11 13:04:00 +02:00
Scott Lahteine
429c6ccad2 Neaten config formatting 2015-05-10 23:27:00 -07:00
Scott Lahteine
8a0dc4d54a Merge pull request #1922 from Wurstnase/serial_wait
Serial wait
2015-05-10 23:10:25 -07:00
Scott Lahteine
8332a15899 Fix testing of runaway options in temperature.cpp 2015-05-10 23:03:24 -07:00
Wurstnase
526ad82d20 activate advanced_ok and no_timeout 2015-05-11 08:01:51 +02:00
Scott Lahteine
2b92b01afc Fix typo in SanityCheck.h 2015-05-10 22:58:37 -07:00
Scott Lahteine
2445ae3d3a Combine thermal runaway and watch-period
- Make thermal protection for all hotends and/or bed into simple
switches
- Now enable `WATCH_TEMP_PERIOD` when `THERMAL_PROTECTION_HOTENDS` is
enabled
- Move detailed thermal parameters to `Configuration_adv.h`
- Add sanity checks to warn about old configurations
- Change `WATCH_TEMP_PERIOD` to seconds instead of milliseconds
2015-05-10 22:52:01 -07:00
Scott Lahteine
4097207c75 Merge pull request #2041 from thinkyhead/watch_temp
More thermal protection
2015-05-10 21:39:05 -07:00
Scott Lahteine
45d64040fe Merge pull request #2048 from Wurstnase/hit_bits
replace some bools
2015-05-10 20:37:17 -07:00
Scott Lahteine
9b3d4380d3 Only watch the heater that was set 2015-05-10 20:26:45 -07:00
Scott Lahteine
52c0696e44 Merge pull request #2044 from thinkyhead/fix_servos_too
Make some z probe and servo code tweaks
2015-05-10 20:10:42 -07:00
Scott Lahteine
58781cb88c Merge pull request #2045 from delagela/upstream
Correction traductions
2015-05-10 17:58:00 -07:00
Wurstnase
b55f32f8a1 replace some bools
this PR replaces some bools with one char. this will safe 3 bytes and should also be sometimes a little bit faster.
2015-05-10 21:37:39 +02:00
Laurent DELAGE
e70e6e2b48 Correction traductions 2015-05-10 15:38:50 +02:00
Scott Lahteine
f73f4ce555 Make some z probe and servo code tweaks 2015-05-09 19:11:19 -07:00
Bo Herrmannsen
598c7aea5d Update README.md 2015-05-09 23:27:54 +02:00
Bo Herrmannsen
4cafe9e275 updated info on hangout 2015-05-09 23:27:34 +02:00
Bo Herrmannsen
b0235adccd Update README.md 2015-05-09 23:18:39 +02:00
Bo Herrmannsen
875d86bf9b removed donation as it was agreed that we should not have it 2015-05-09 23:16:56 +02:00
Bo Herrmannsen
37219072c1 moved to http://www.marlinfirmware.org/ 2015-05-09 23:15:52 +02:00
Bo Herrmannsen
4aa2490099 moved to http://www.marlinfirmware.org/ 2015-05-09 23:14:52 +02:00
Bo Herrmannsen
1351e40c72 moved to http://www.marlinfirmware.org/ 2015-05-09 23:11:42 +02:00
Bo Herrmannsen
c0b318330b moved to http://www.marlinfirmware.org/ 2015-05-09 23:11:33 +02:00
Bo Herrmannsen
12d0983757 moved to http://www.marlinfirmware.org/ 2015-05-09 23:11:18 +02:00
Bo Herrmannsen
7cd7b2e4c8 moved to http://www.marlinfirmware.org/ 2015-05-09 22:58:49 +02:00
Bo Herrmannsen
031294bdd2 moved to http://www.marlinfirmware.org/ 2015-05-09 18:31:44 +02:00
Bo Herrmannsen
b2b595f8f4 moved to http://www.marlinfirmware.org/ 2015-05-09 18:29:23 +02:00
Bo Herrmannsen
2ddace1a84 moved to http://www.marlinfirmware.org/ 2015-05-09 18:26:58 +02:00
Bo Herrmannsen
caf15371e2 moved to http://www.marlinfirmware.org/ 2015-05-09 18:24:31 +02:00
Bo Herrmannsen
29f4ebf32a moved to http://www.marlinfirmware.org/ 2015-05-09 18:16:28 +02:00
Bo Herrmannsen
39d6de1558 Update README.md 2015-05-09 14:59:48 +02:00
Bo Herrmannsen
711f7b0180 Update README.md 2015-05-09 14:56:59 +02:00
Bo Herrmannsen
b413cf34e9 moved to http://www.marlinfirmware.org/ 2015-05-09 14:55:22 +02:00
Bo Herrmannsen
d92b52b19b moved to http://www.marlinfirmware.org/ 2015-05-09 14:40:18 +02:00
Bo Herrmannsen
b9b9a2085a moved to http://www.marlinfirmware.org/ 2015-05-09 14:39:46 +02:00
Bo Herrmannsen
0de83187ea moved to http://www.marlinfirmware.org/ 2015-05-09 14:29:07 +02:00
Bo Herrmannsen
6e8f8706b0 moved to http://www.marlinfirmware.org/ 2015-05-09 14:28:43 +02:00
Bo Herrmannsen
d54fe3a40c moved to http://www.marlinfirmware.org/ 2015-05-09 14:19:07 +02:00
Bo Herrmannsen
86ed55e75c moved to http://www.marlinfirmware.org/ 2015-05-09 14:18:23 +02:00
Scott Lahteine
28c87ec81b Disable all heaters on temp error 2015-05-08 23:17:25 -07:00
Scott Lahteine
79106638a8 Fix documentation of heating sanity check 2015-05-08 22:50:08 -07:00
Scott Lahteine
6110494a56 Change default to 4°C in 16s 2015-05-08 22:41:12 -07:00
Scott Lahteine
54deb9eea3 Enable WATCH_TEMP_PERIOD by default 2015-05-08 22:36:02 -07:00
Scott Lahteine
deedb00c18 Document WATCH_TEMP_PERIOD 2015-05-08 22:25:51 -07:00
Scott Lahteine
9a6423ea17 Merge pull request #2021 from brupje/Development
Fixes for reprapworld's keypad
2015-05-08 20:35:37 -07:00
Scott Lahteine
be77cfd895 Merge pull request #2032 from Wurstnase/toshiba_for_all_stepper
We don't need the old standard one. The STEP_ADD and STEP_IF_COUNTER …
2015-05-08 20:32:30 -07:00
Scott Lahteine
8b59e620bb Merge pull request #2039 from thinkyhead/mks_base
Support for MKS BASE 1.0 board
2015-05-08 20:29:57 -07:00
Scott Lahteine
44decda00b Add documentation for MKS BASE 1.0 et. al. 2015-05-08 19:35:59 -07:00
Scott Lahteine
cb4ea75fab Support for MKS BASE 1.0 board 2015-05-08 19:07:37 -07:00
Scott Lahteine
0e70511381 Merge pull request #2036 from brupje/mainline
Fixes for reprapworld's keypad
2015-05-08 18:19:31 -07:00
Wurstnase
0cb87795a3 advanced 'ok'
ok N(linenumber) P(bufferremaining)
the host can use this to send the data much faster.

Some pseudo code:
If (bufferremaining > 0)  send command
## as long there is free buffer send command

Also
if (linenumber > lastsend - bufferremaining) send command
## as long last linenumber received is bigger than lastsend (host) - last bufferremaining received
2015-05-08 22:28:51 +02:00
Wurstnase
182e0d99c9 Merge remote-tracking branch 'Marlin8bit/Development' into serial_wait 2015-05-08 21:27:18 +02:00
brupje
b425851441 Rename Configuration_megatronics.h to Configuration.h 2015-05-08 14:40:14 +02:00
brupje
d1148a0198 Rename Configuration_megatronics.h to Configuration.h 2015-05-08 14:36:23 +02:00
Scott Lahteine
7f3252eea9 Merge pull request #1999 from paclema/Filrunout_configurable_script
Added configurable script for filrunout from configuration.h
2015-05-08 04:39:59 -07:00
Scott Lahteine
0511ccda23 Merge pull request #2034 from thinkyhead/fixup_configs
Edit thermal runaway description
2015-05-07 21:46:05 -07:00
Scott Lahteine
181ccc884c Edit thermal runaway description 2015-05-07 20:46:03 -07:00
Wurstnase
073e4af7e2 We don't need the old standard one. The STEP_ADD and STEP_IF_COUNTER are also good for non-Toshiba stepper driver. 2015-05-07 18:55:47 +02:00
brupje
b7fcb11580 Added example configuration for Megatronics 2015-05-07 13:18:05 +02:00
brupje
8f8174dc93 Revert "Default configuration for megatronics."
This reverts commit 22e0d2afcb.
2015-05-07 13:12:17 +02:00
Scott Lahteine
91fa1dea82 Merge pull request #2029 from thinkyhead/hardware_md
Initial Hardware.md to fix 404 error
2015-05-06 19:16:30 -07:00
Scott Lahteine
69655205f5 Demote headers, add TOC 2015-05-06 19:04:54 -07:00
Scott Lahteine
b492391fa7 Initial Hardware.md to fix 404 error
- Addressing issue #1935
2015-05-06 18:30:10 -07:00
Scott Lahteine
26c53634e1 Add a TOC 2015-05-06 18:24:10 -07:00
Scott Lahteine
72bf6acb5b Merge pull request #2027 from thinkyhead/fix_mbl_compile_err
Fix MBL compile error
2015-05-06 14:26:48 -07:00
Scott Lahteine
79633a74ab Fix MBL compile error 2015-05-06 14:25:13 -07:00
brupje
ba9741139e Clean up pins file for megatronics 2015-05-05 14:01:52 +02:00
brupje
22e0d2afcb Default configuration for megatronics. 2015-05-05 14:01:20 +02:00
brupje
816aa19861 Up/down buttons were reversed, swapped the assignments 2015-05-05 13:04:46 +02:00
brupje
df4d50579a This is conflicting with the settings in ultralcd.h. Not sure why it' s redefined here anyway. 2015-05-05 12:47:24 +02:00
brupje
8f8bf3a897 Make Marlin actually compile when #define REPRAPWORLD_KEYPAD is uncommented 2015-05-05 11:03:20 +02:00
Scott Lahteine
777f2d3820 Merge pull request #2018 from fmalpartida/bugFixing
Bug corrected: persistent HOMING message when HOME button pressed for homing.
2015-05-05 00:12:32 -07:00
Scott Lahteine
ecb46de349 Merge pull request #2013 from bq/Fix_lowercase
Fixed lowercase change missing on commit a22a228b.
2015-05-04 23:50:56 -07:00
fmalpartida
150a35eff8 Bug corrected:
Persistent homing message.
Message was declared as an alert, therefore it was persistent.
Updated to message.
2015-05-04 19:48:49 +02:00
Gina Häußge
7dbb595424 Merge pull request #2015 from foosel/revert/changedLinenumberMessage
Reverting changes to error messages on serial console
2015-05-04 15:25:36 +02:00
Gina Häußge
ab246ab032 Reverting changes to error messages on serial console
This reverts the changes done to the error message for line number mismatches done in commit d43cc2dd5f
2015-05-04 15:03:00 +02:00
Ivan Galvez Junquera
59529b755d Fixed lowercase change missing on commit a22a228b.
Servo.cpp and Servo.h were changed to lowercase in Makefile but not their actual filenames.
2015-05-04 09:44:34 +02:00
Scott Lahteine
df4c104637 Merge pull request #2012 from BrianGilbert/Development
Add example configuration for Boots Industries V2.5 Delta Printer
2015-05-03 20:42:32 -07:00
Scott Lahteine
1f039cde61 Merge pull request #1992 from thinkyhead/too_many_probes
Stow Z probe on M402 without extra raise
2015-05-03 20:40:26 -07:00
Brian Gilbert
1285784a49 Add Boots Industries V2.5 example configuration 2015-05-04 09:10:42 +10:00
Scott Lahteine
65487b75e2 Merge pull request #2011 from thinkyhead/fix_2004
Tweak to planner.cpp position.debug
2015-05-03 16:03:30 -07:00
Scott Lahteine
35493e1af9 Tweak to planner.cpp position.debug 2015-05-03 16:03:05 -07:00
paclema
26015b02d8 Fixed typo and updated Configuration.h of configurator 2015-05-03 02:39:34 +02:00
paclema
aedd580911 Updated all configuration.h examples 2015-05-03 02:28:43 +02:00
Scott Lahteine
555128d9e6 Merge pull request #2008 from thinkyhead/fix_2004
Cleanup language.h
2015-05-01 21:39:28 -07:00
Scott Lahteine
2c892fca6a Cleanup of language.h 2015-05-01 21:38:32 -07:00
Scott Lahteine
4b156a612a Merge pull request #2007 from thinkyhead/fix_2004
Fix compile error in configuration_store.cpp
2015-05-01 21:17:12 -07:00
Scott Lahteine
2db384a21d Fix compile error in configuration_store.cpp 2015-05-01 21:15:26 -07:00
Scott Lahteine
ca8cec8e8a Merge pull request #1998 from paclema/Filament_runout_fix
Fixed sintaxis error of filament runout
2015-04-29 19:53:25 -07:00
Scott Lahteine
425cd46c12 Merge pull request #1993 from AnHardt/TRP-bed
Enable TRP for the bed
2015-04-29 19:44:50 -07:00
Scott Lahteine
b12bcd0f92 Merge pull request #2001 from thinkyhead/thermal_protection_on
Add M428 to set home_offset logically
2015-04-29 19:15:31 -07:00
Scott Lahteine
d4c74b8f8c Don't apply M428 if an error occurs
- Also move audio feedback into the command
- Added shorthand for `lcd_buzz` availability
2015-04-29 19:05:48 -07:00
Scott Lahteine
d065d37822 Add M428 to set home_offset logically 2015-04-29 18:26:16 -07:00
Scott Lahteine
e47e888a08 Merge pull request #1991 from thinkyhead/thermal_protection_on
Enable thermal runaway protection by default
2015-04-29 15:43:18 -07:00
paclema
013a09dbe6 Added configurable script for filrunout form configuration.h 2015-04-29 21:38:40 +02:00
paclema
4dcc0fd55a Fixed sintaxis error of filament runout 2015-04-29 21:32:27 +02:00
AnHardt
514d8ac460 Enable TRP for the bed
in all Configurations.
2015-04-29 08:47:01 +02:00
Scott Lahteine
ce3caf447b Tweak how homeaxis deploys and stows 2015-04-28 19:17:48 -07:00
Scott Lahteine
a235dca79c Stow z on M402 without extra raise 2015-04-28 19:10:07 -07:00
Scott Lahteine
2610b8d047 Enable thermal runaway protection by default 2015-04-28 17:40:29 -07:00
AnHardt
b4b19a6cbd Merge https://github.com/MarlinFirmware/Marlin into Bulgarian
Conflicts:
	Marlin/Configuration.h
	Marlin/configurator/config/Configuration.h
	Marlin/example_configurations/Felix/Configuration.h
	Marlin/example_configurations/Felix/Configuration_DUAL.h
	Marlin/example_configurations/Hephestos/Configuration.h
	Marlin/example_configurations/K8200/Configuration.h
	Marlin/example_configurations/SCARA/Configuration.h
	Marlin/example_configurations/WITBOX/Configuration.h
	Marlin/example_configurations/delta/generic/Configuration.h
	Marlin/example_configurations/delta/kossel_mini/Configuration.h
	Marlin/example_configurations/makibox/Configuration.h
	Marlin/example_configurations/tvrrug/Round2/Configuration.h

Conflicts with my Chinese implementation resolved.
2015-04-28 09:24:32 +02:00
Scott Lahteine
7548a56f64 Merge pull request #1886 from ex-nerd/pins_BRAINWAVE_PRO
Add pin configuration for Brainwave Pro
2015-04-27 23:13:26 -07:00
Scott Lahteine
02acf0641a Merge pull request #1983 from CONSULitAS/Development_Update_language_de.h
language_de.h: updated translation and minor typos
2015-04-27 22:45:24 -07:00
Scott Lahteine
a9a4f0ed3b Merge pull request #1989 from thinkyhead/pid_tuning_report
Fix the M303 S-1 report text
2015-04-27 22:41:59 -07:00
Scott Lahteine
a120bf3fe4 Latest upstream commits 2015-04-27 22:40:19 -07:00
Scott Lahteine
3688256f86 Merge pull request #1974 from thinkyhead/eeprom_in_gcode
Make EEPROM reproducible in GCode
2015-04-27 22:35:41 -07:00
Scott Lahteine
ae53b3cdc3 Fix the M303 S-1 report text 2015-04-27 22:25:00 -07:00
Scott Lahteine
c1fbef1722 Merge pull request #1988 from thinkyhead/bye_string_url
Remove obsolete STRING_URL
2015-04-27 22:12:05 -07:00
Scott Lahteine
31516e2a3b Merge pull request #1985 from Arengorn/Development
Update of servo.h
2015-04-27 22:10:02 -07:00
Scott Lahteine
185f8a0a66 Merge pull request #1917 from CONSULitAS/Development_Update_K8200_Config
Example Configuration for K8200: comments/URL/readme
2015-04-27 21:59:56 -07:00
Scott Lahteine
0970102950 Remove obsolete STRING_URL 2015-04-27 21:59:14 -07:00
Scott Lahteine
0f687b5dda Merge branch 'Development' into eeprom_in_gcode
Latest upstream commits
2015-04-27 21:47:47 -07:00
Scott Lahteine
28aef684b4 Merge pull request #1957 from Voxel8/sjk/home_y_before_x
Allow Y to home before X with option in Configuration_adv.h.
2015-04-27 21:41:14 -07:00
Scott Lahteine
c1dd9bda7f Merge pull request #1987 from thinkyhead/fix_homing_zpos
Disable endstops between homing bumps
2015-04-27 21:16:47 -07:00
Scott Lahteine
71a0b1a5bb Disable endstops between homing bumps 2015-04-27 21:14:30 -07:00
Scott Lahteine
8c28e36e75 Merge pull request #1986 from thinkyhead/fix_homing_zpos
Fix homing Z position
2015-04-27 20:58:14 -07:00
Scott Lahteine
c36226c4dc Fix homing Z position
Add `sync_plan_position()` after `axis_is_at_home(axis)` to keep the
planner position in sync when homing.
2015-04-27 20:55:19 -07:00
Scott Lahteine
2bc1d70a31 Merge pull request #1977 from AnHardt/Cinese2
We mark this historic day, when Marlin went to China.
2015-04-27 20:37:00 -07:00
Scott Lahteine
ff178d8cf7 Change M421 to take coordinates
This makes `M421` more amenable for irregular matrices
2015-04-27 19:48:34 -07:00
Scott Lahteine
ed988e39a8 Merge pull request #1984 from thinkyhead/leveling_menu_items
Level Bed in Prepare submenu
2015-04-27 19:32:59 -07:00
Bernardo
e449659338 Update Servo.cpp
Updated "servo.h" to "Servo.h"
2015-04-27 23:30:11 -03:00
Bernardo
ff67ee73fc Update Marlin_main.cpp
Corrected "servo.h" to "Servo.h" because of the updated filename.
2015-04-27 23:29:16 -03:00
Scott Lahteine
5b248757c7 Level Bed in Prepare submenu
- Add “Level Bed” menu item for auto bed leveling
- Hide the option if homing has not been done yet
- Arrange the Prepare submenu more logically (?)
- Add documentation comments, some white-space
- Apply some coding standards here and there
- Move old encoder multiplier debug option to `ultralcd.cpp`
2015-04-27 19:11:25 -07:00
CONSULitAS
c5dfb35597 language_de.h: updated translation and minor typos
language_de.h: updated translation and minor typos
2015-04-28 01:03:54 +02:00
CONSULitAS
6423fe7601 language.h: update documentation / URL für K8200
language.h: update documentation for LANGUAGE_INCLUDE
language.h: URL für K8200 github repository
2015-04-28 01:01:57 +02:00
CONSULitAS
8f8824e1d3 Merge remote-tracking branch 'upstream/Development' into Development 2015-04-28 00:59:43 +02:00
CONSULitAS
6af40e9dc0 K8200 example Configuration.h: STRING_URL removed
K8200 example Configuration.h:
* STRING_URL removed: like proposed by thinkyhead in #1917
2015-04-27 23:59:10 +02:00
CONSULitAS
d1c1f766d5 Merge remote-tracking branch 'upstream/Development' into K8200_2015-04-23_TEST
Conflicts:
	Marlin/example_configurations/K8200/Configuration.h
2015-04-27 23:54:47 +02:00
Steve Kelly
98ca46006c Allow Y to home before X with option in Configuration_adv.h.
This addresses comments in #1956 and #1079. In particular, this is useful
when both endstops are stationary on a CoreXY system, and the Y axis needs
to be homed before the X so the flags are aligned.
2015-04-27 16:17:30 -04:00
AnHardt
6cba6bcd82 Add 'cn' to the other 'Configuration.h's 2015-04-27 13:24:51 +02:00
AnHardt
1d9699be0f Add some doku 2015-04-27 13:16:20 +02:00
AnHardt
76b12edecf Give TALL_FONT_CORRECTION a default 2015-04-27 12:47:11 +02:00
AnHardt
6b1b71837c Intit. commit for Chinese
Edited the European part of 'ISO10646_CN.fon' to match the existing fonts.
Added Chinese font to make_fonts.bat
Created 'dogm_font_data_ISO10646_CN.h'
Added Chinese to 'language.h'
Added 'language_cn.h' with some minor edits.
Added Chinese font in 'language_en.h' to not fall back to European font.
Added cn to 'Configuration.h'
Changed WIDTH to LCD_PIXEL_WIDTH and HEIGHT to LCD_PIXEL_HEIGHT to have more descriptive names.

In 'dogm_lcd_implementation.h'
Added Chinese Font
Made 1 pixel more room for the larger Chinese font on the status line.
Changed geometry of the 'select bar' by one pixel.
Changed the way the position for values and postcars are set.
2015-04-27 12:15:36 +02:00
Scott Lahteine
fb379384ee Reduce MBL eeprom read code 2015-04-26 21:06:04 -07:00
Scott Lahteine
0fca084ea6 Make EEPROM reproducible in GCode
With these changes the output of `M503 S0` is all you need to restore
the EEPROM. Building on this it is straightforward to save and restore
the EEPROM state using the SD card or external GCode file.

- Added `M145` to set “heatup states” for the LCD menu
- Added `M420` to toggle Mesh Bed Leveling
- Added `M421` to set a single Mesh coordinate
- Extended `Config_PrintSettings` with added M codes
- Cleaned up some comments here and there
2015-04-26 20:56:33 -07:00
Scott Lahteine
01bedd17c9 Merge pull request #1973 from thinkyhead/m111_debug_level
M111 - Debug Level
2015-04-26 20:39:56 -07:00
Scott Lahteine
d43cc2dd5f M111 - Debug Level
- Add `M111` as a standard option to set the debug level
- Implement `DEBUG_ECHO` in `process_commands`
- Other debug levels (e.g., `DEBUG_DRYRUN`) need more work
2015-04-26 20:08:45 -07:00
Scott Lahteine
1f530beaf1 Merge pull request #1970 from thinkyhead/rename_files
Rename files to move them in the IDE
2015-04-26 15:15:51 -07:00
Scott Lahteine
0ec444720f Rename blinkm files 2015-04-25 21:06:19 -07:00
Scott Lahteine
a22a228bcc Rename files to move them in the IDE 2015-04-25 21:04:54 -07:00
Scott Lahteine
ac9ca64c50 Merge pull request #1969 from thinkyhead/buzz_duration
Fix BEEPER duration
2015-04-25 03:26:28 -07:00
Scott Lahteine
a932e7490f No noTone needed, but delay is 2015-04-25 03:25:30 -07:00
Scott Lahteine
9c5d14ea68 Fix BEEPER duration 2015-04-25 03:12:49 -07:00
Scott Lahteine
b3436c875a Merge pull request #1968 from thinkyhead/more_disable_warning
Add a warning for DISABLE_[XYZ] options
2015-04-25 00:47:42 -07:00
Scott Lahteine
5c29fda167 Add a warning for DISABLE_[XYZ] options 2015-04-25 00:46:33 -07:00
Scott Lahteine
0438f0d835 Merge pull request #1924 from thinkyhead/raise_z_for_m401_m402
Raise Z for M401 and M402
2015-04-24 22:41:12 -07:00
Scott Lahteine
a640cad139 Merge pull request #1967 from thinkyhead/g4_dwell_message
Use millis_t for progress_bar_ms and expire_status_ms
2015-04-24 22:17:28 -07:00
Scott Lahteine
c92b59952a Use millis_t for progress_bar_ms and expire_status_ms 2015-04-24 22:16:09 -07:00
Scott Lahteine
b275946a52 Merge pull request #1966 from thinkyhead/g4_dwell_message
G4 shows status message only if no message is set already
2015-04-24 22:02:37 -07:00
Scott Lahteine
97dfa0365d Rename expireStatusMillis to expire_status_ms 2015-04-24 21:51:10 -07:00
Scott Lahteine
7295640f44 Remove extraneous ; 2015-04-24 21:37:27 -07:00
Scott Lahteine
0d8c00d3f6 Define lcd_hasstatus for no lcd also 2015-04-24 21:36:04 -07:00
Scott Lahteine
777ca11760 Merge pull request #1925 from thinkyhead/move_zoffset
Apply zprobe_zoffset in axis_is_at_home
2015-04-24 21:29:07 -07:00
Scott Lahteine
182f2cda35 Minor cleanup of M48 2015-04-24 21:26:36 -07:00
Scott Lahteine
3a6fd912cd Latest upstream commits, merged 2015-04-24 21:14:13 -07:00
Scott Lahteine
3c9e94e035 Merge pull request #1964 from AnHardt/Max6675again
Add variant for MAX6675 in M104
2015-04-24 20:44:45 -07:00
Scott Lahteine
56ff46eb8b Improve code_has_value test 2015-04-24 20:43:16 -07:00
Scott Lahteine
ce142afdda G4 shows status message only if no message is set already
- Address issue raised in #1961
2015-04-24 20:13:01 -07:00
Scott Lahteine
c5a1b227a4 Merge pull request #1965 from thinkyhead/g28_xyz_are_flags
Remove set-coordinate extension of G28
2015-04-24 19:34:38 -07:00
Scott Lahteine
35e79d56a5 Remove set-coordinate extension of G28 2015-04-24 19:23:12 -07:00
Scott Lahteine
3a74bb5039 Merge pull request #1945 from Wurstnase/max_endstopp
Max endstopp
2015-04-24 19:17:38 -07:00
Scott Lahteine
2606d1d892 Merge pull request #1960 from Wurstnase/macro_steppercpp
Macro steppercpp
2015-04-24 18:45:19 -07:00
AnHardt
0fed46360c Add variant for MAX6675 in M104
Else will throw error:
@:0 B@:0
Error:No thermistors - no temperature
[ERROR] Error:No thermistors - no temperature

when no bed is defined
2015-04-24 16:43:19 +02:00
Wurstnase
79a44a9de3 stepper.cpp macros rework
delete some tabs
2015-04-24 08:03:17 +02:00
Scott Lahteine
588ed70d4a Latest upstream commits, merged 2015-04-23 21:18:48 -07:00
Scott Lahteine
7fb8d9fe05 Merge remote-tracking branch 'origin/move_zoffset' into move_zoffset 2015-04-23 21:12:53 -07:00
Scott Lahteine
0165560333 Apply zprobe_zoffset in axis_is_at_home
Ensure the probe offset will always be included when homing Z.
2015-04-23 21:12:38 -07:00
Scott Lahteine
075386e7fe Merge pull request #1959 from thinkyhead/lcd_move_rate
Include axis parameter to ultralcd's line_to_current
2015-04-23 21:06:57 -07:00
Scott Lahteine
2558c10c6c Use the slower feedrate for XY axes 2015-04-23 20:06:17 -07:00
Scott Lahteine
31932912dd Use AxisEnum instead of int for _lcd_move 2015-04-23 19:32:37 -07:00
Scott Lahteine
c2e11daf66 Merge pull request #1958 from thinkyhead/redo_1937
Fix homing of YZ with DUAL_X_CARRIAGE
2015-04-23 19:12:51 -07:00
Scott Lahteine
c3560e0288 Include axis parameter to ultralcd's line_to_current 2015-04-23 19:10:09 -07:00
Scott Lahteine
a0a5ff61c4 Merge pull request #1951 from AnHardt/Azteeg_x3
Fix for #1946
2015-04-23 18:40:00 -07:00
Scott Lahteine
0094481e55 Merge pull request #1955 from AnHardt/langlang
Add DISPLAY_CHARSET_HD44780_CYRILLIC as alternative in SanityCheck.h
2015-04-23 18:36:06 -07:00
Scott Lahteine
64268f3312 Fixup axis_is_at_home a little 2015-04-23 18:16:44 -07:00
Scott Lahteine
996d0a9185 Squish the code down a little 2015-04-23 18:06:36 -07:00
Scott Lahteine
8534bc376c Fix homing of YZ with DUAL_X_CARRIAGE 2015-04-23 17:56:37 -07:00
Scott Lahteine
3b97a7d446 Merge pull request #1944 from AnHardt/beep2
More Beeper clean up
2015-04-23 17:50:02 -07:00
Scott Lahteine
461aaf2126 Merge pull request #1941 from thinkyhead/gcode_M410
Add M410 QuickStop command
2015-04-23 17:30:58 -07:00
Wurstnase
be9e4ceddc fix typo
c'n'p ftw :/
2015-04-23 10:35:14 +02:00
unknown
c26d816839 filter any 0 2015-04-22 12:09:57 +02:00
AnHardt
f2c94b3298 tone will end automaticly 2015-04-22 01:49:55 +02:00
AnHardt
c5e0e29d23 Add DISPLAY_CHARSET_HD44780_CYRILLIC as alternative in SanityCheck.h
and add some documentation - how to integrate a new font.
2015-04-21 21:42:00 +02:00
AnHardt
b59e92ab99 Fix for #1946
Syntax error.
2015-04-21 13:50:28 +02:00
Wurstnase
61ae43f35e v <-> code_value 2015-04-20 23:31:10 +02:00
Wurstnase
da0d91a79b max endstopp
no user will home to 0 with a max endstopp
2015-04-20 23:28:46 +02:00
AnHardt
3a27a78f9e Commented REPRAP_DISCOUNT_SMART_CONTROLLER again
and removed some tabs.
2015-04-20 15:01:43 +02:00
AnHardt
064f2b37d0 More Beeper clean up.
Centralised beep code to lcd_buzz().
From gcode_M300() and lcd_quick_feedback().

Enforced max. duration for M300 to 5 seconds.

Corrected description in 'Configuration.h'

LCD_FEEDBACK_FREQUENCY_HZ 0 gives now a silent delay of
LCD_FEEDBACK_FREQUENCY_DURATION_MS.
2015-04-20 11:11:13 +02:00
Wurstnase
92575cecca new timout/add adv_ok 2015-04-20 00:22:40 +02:00
AnHardt
671aaf2dc9 Minor fix for M300
Corrected wrong order of parameters.
2015-04-19 13:25:20 +02:00
Scott Lahteine
d931220a65 Tweak comments 2015-04-18 23:12:29 -07:00
Scott Lahteine
47847765e2 Add M410 QuickStop command 2015-04-18 23:07:48 -07:00
Scott Lahteine
a4ca87ba99 Merge pull request #1933 from bq/Fix_stray_in_configuration
Fixed compilation error "error: stray ‘\357’ in program"
2015-04-18 03:56:31 -07:00
Scott Lahteine
5e3bb4bdf3 Merge pull request #1931 from paclema/M303_echo
Added new PID autotune info, to make easy copy & paste results to marlin
2015-04-18 03:49:31 -07:00
Scott Lahteine
67a4471324 Merge pull request #1926 from nophead/acceleration_fix
Fixed jump in speed at high accelerations on axes with lots of steps
2015-04-18 03:09:54 -07:00
Ivan Galvez Junquera
b99e63a7bf Fixed compilation error "error: stray ‘\357’ in program" in several configuration files.
Introduced in commit 697ee2dc and later spread to other files.
2015-04-17 16:10:58 +02:00
Bo Herrmannsen
2d1e730216 Update README.md 2015-04-17 15:00:21 +02:00
paclema
581685a231 Added new PID autotune info, to make easy copy & paste results to marlin 2015-04-17 11:15:09 +02:00
Chris Palmer
483384aaa4 Fixed faulty comment merge 2015-04-17 09:31:53 +01:00
Chris Palmer
cc6b7cf3ce Fixed some comment spellings. 2015-04-17 09:28:08 +01:00
Chris Palmer
e4595fa24a Fixed jump in speed when using high accelerations on axes with lots of steps.
I.e., when acceleration * steps per mm > 2,000,000.
This was done by changing MultiU24X24toH16 to take a 32b bit operand.
Removed the claim that stepper.cpp uses the Leib algorithm.
2015-04-16 23:04:38 +01:00
Wurstnase
b09a957fce make 'wait' optional and mark as workaround 2015-04-16 21:42:54 +02:00
Scott Lahteine
d0b65ff642 Merge pull request #1923 from thinkyhead/babystep_delay_2us
Babystep delay 2us
2015-04-16 07:51:37 -07:00
Scott Lahteine
58d128b7a9 Apply zprobe_zoffset in axis_is_at_home
Ensure the probe offset will always be included when homing Z.
2015-04-16 07:41:19 -07:00
Scott Lahteine
63b98b8280 Raise Z for M401 and M402 2015-04-16 07:24:33 -07:00
wurstnase
d69da22f7c last_command_time inside get_command() 2015-04-16 16:20:23 +02:00
Scott Lahteine
53be0f3399 Babystep delay 2us 2015-04-16 04:16:36 -07:00
wurstnase
574e2d856e remove config 2015-04-16 13:07:20 +02:00
Scott Lahteine
f49a73d69f Merge pull request #1919 from paclema/M48_mismatch
Fixed M48 mismatch between n and P parameter on documentation
2015-04-16 03:25:23 -07:00
paclema
cde5eee2a5 Removed unnecessary comments 2015-04-15 19:01:09 +02:00
paclema
e1b69db6d1 Fixed M48 mismatch between n and P parameter on documentation 2015-04-15 18:17:58 +02:00
Bo Herrmannsen
d0b1f70118 Update Compilation.md 2015-04-15 16:35:02 +02:00
Bo Herrmannsen
f8389b1076 Update README.md 2015-04-15 15:25:18 +02:00
elgambitero
60f46276bf Some minor translations to spanish 2015-04-15 10:06:51 +02:00
CONSULitAS
a40c274310 Example Configuration for K8200 back in sync
example_configurations\K8200\Configuration.h:
* merge upstream changes from default Configuration.h manually
* add some machine specific comments
2015-04-15 10:06:50 +02:00
CONSULitAS
1de9b568db Example Configuration for K8200: comments/URL/readme
Example Configuration for K8200 : comments/URL/readme

example_configurations\K8200\Configuration.h:
* add machine specific header
* change STRING_URL to K8200 fork (@thinkyhead: What do you think?)

example_configurations\K8200\readme.md:
* updated documentation
* added URLs and links
2015-04-15 10:02:13 +02:00
CONSULitAS
0af5e3a04f Example Configuration for K8200: comments/URL/readme
Example Configuration for K8200 : comments/URL/readme

example_configurations\K8200\Configuration.h:
* add machine specific header
* change STRING_URL to K8200 fork (@thinkyhead: What do you think?)

example_configurations\K8200\readme.md:
* updated documentation
* added URLs and links
2015-04-15 10:00:41 +02:00
Scott Lahteine
637babb99b Merge pull request #1915 from elgambitero/Development
Some minor translations to spanish
2015-04-14 19:59:39 -07:00
Scott Lahteine
71f183a3a2 Merge pull request #1913 from CONSULitAS/Development_Update_K8200_Config
Example Configuration for K8200 back in sync
2015-04-14 19:52:47 -07:00
elgambitero
cb9ac490d4 Some minor translations to spanish 2015-04-14 23:14:52 +02:00
CONSULitAS
3851ac6226 Example Configuration for K8200 back in sync
example_configurations\K8200\Configuration.h:
* merge upstream changes from default Configuration.h manually
* add some machine specific comments
2015-04-14 17:12:42 +02:00
CONSULitAS
b447a4ffab Merge remote-tracking branch 'upstream/Development' into Development 2015-04-14 15:35:08 +02:00
Scott Lahteine
d57b23b1e3 Merge pull request #1912 from thinkyhead/some_fixes
Enable all old_z_*_endstop vars for Z_DUAL_ENDSTOPS
2015-04-14 05:12:49 -07:00
Scott Lahteine
7336e6df07 Always define old_z, not always z2 2015-04-14 04:55:20 -07:00
Scott Lahteine
5dd87d2e74 Enable all old_z_*_endstop vars for Z_DUAL_ENDSTOPS
- Potentially addressing #1911
2015-04-14 04:05:51 -07:00
Scott Lahteine
639ffc341e Merge pull request #1910 from thinkyhead/some_fixes
Rename servos[] array in Marlin to servo[]
2015-04-14 03:44:20 -07:00
Scott Lahteine
3f02da646c Make sure axis_active is cleared for #1908 2015-04-14 03:41:37 -07:00
Scott Lahteine
e0e68c5cbc Rename servos[] array in Marlin to servo[] 2015-04-14 03:13:25 -07:00
Chris Petersen
ffaf1b4f22 Add pin configuration for Brainwave Pro
Copied from jcrocholl's contributions to the OpenBeamUSA Marlin fork
2015-04-13 23:46:57 -07:00
Scott Lahteine
dee6840c50 Merge pull request #1907 from thinkyhead/some_fixes
Fix type of code_has_value
2015-04-13 18:04:53 -07:00
Scott Lahteine
642f6a92bc fix type of code_has_value 2015-04-13 18:02:17 -07:00
Scott Lahteine
6b51305c4b Merge pull request #1906 from thinkyhead/some_fixes
Naming and code comments
2015-04-13 17:59:48 -07:00
Scott Lahteine
17ad80c1e1 Spacing in XYZ_CONSTS 2015-04-13 17:58:47 -07:00
Scott Lahteine
09d60e0128 Naming and code comments 2015-04-13 17:17:36 -07:00
Scott Lahteine
c05b347617 Merge pull request #1902 from msutas/Development
Fix Syntax Error Filament Runout Statement
2015-04-13 14:31:57 -07:00
Mehmet Sutas
5a9e45cc4a Fix Syntax Error Filament Runout Statement 2015-04-13 22:37:18 +03:00
Scott Lahteine
0908c41156 Merge pull request #1899 from thinkyhead/squash_fixups
Several fixups
2015-04-12 23:31:31 -07:00
Scott Lahteine
257a907456 Fix typo in next_bed_check_ms 2015-04-12 23:17:28 -07:00
Scott Lahteine
e4b1e8651b next_ vars faster than previous_
- Change some `previous_` time vars to `next_` so an add only happens
at intervals
- Fix `HEATER_0_USES_MAX6675` polling too frequently, or not at all
2015-04-12 23:06:50 -07:00
Scott Lahteine
cfa60bdb97 Merge branch 'Development' into squash_fixups
Conflicts:
	Marlin/ultralcd.cpp
2015-04-12 22:51:18 -07:00
Scott Lahteine
ccddc280be Apply three more commits 2015-04-12 22:47:44 -07:00
Scott Lahteine
666f9cd7b4 Merge pull request #1897 from epatel/Development
Manual bed leveling menu fixes.
2015-04-12 21:26:36 -07:00
Scott Lahteine
e7aae314de Merge pull request #1896 from thinkyhead/cold_extrude
Homing fixes
2015-04-12 17:50:19 -07:00
Scott Lahteine
74e4b42f7e Default MACHINE_NAME to "3D Printer" 2015-04-12 17:17:41 -07:00
Scott Lahteine
8857b9e921 Use the extruder argument in plan_buffer_line 2015-04-12 16:57:00 -07:00
Edward Patel
a37c7ff16d Manual bed leveling menu fixes.
lcdDrawUpdate = 2 helped a lot!
2015-04-12 16:56:17 +02:00
Scott Lahteine
ac2b23f574 Homing fixes
- Prevent `Z_SAFE_HOMING` from homing Z twice in some cases
- Allow `G28` with XYZ values of 0 to explicitly set the position
- Don’t add `home_offset` when setting XYZ explicitly in `G28`
- Add `code_has_value` function to check for the presence of a numeric
value (could just test for space or nul to allow other types of values)
2015-04-11 20:06:48 -07:00
Scott Lahteine
b089eb42eb Merge pull request #1893 from thinkyhead/cold_extrude
Fix doubled lcd_quick_feedback
2015-04-11 04:57:00 -07:00
Scott Lahteine
055b11814a Additional cleanup of ultralcd.cpp 2015-04-11 04:56:08 -07:00
Scott Lahteine
388dd0cfa5 Fix doubled lcd_quick_feedback
- MENU_ITEM causes lcd_quick_feedback to be called, so only those calls
to `lcd_goto_menu` outside of the `MENU_ITEM` macro need to set the
`feedback` flag when calling `lcd_goto_menu`.
2015-04-11 04:45:04 -07:00
Scott Lahteine
f8b4ee079b Merge pull request #1891 from thinkyhead/cold_extrude
machine name for hephestos too
2015-04-11 01:37:07 -07:00
Scott Lahteine
c6bb98abad machine name for hephestos too 2015-04-11 01:36:24 -07:00
Scott Lahteine
79a5b14eb7 Merge pull request #1890 from thinkyhead/cold_extrude
Apply CUSTOM_MACHINE_NAME to configs
2015-04-11 00:04:46 -07:00
Scott Lahteine
ccbe2c4ea3 Apply CUSTOM_MACHINE_NAME to configurations
- Replace “Mendel” with “RepRap”
2015-04-10 21:29:42 -07:00
Scott Lahteine
71adb1ee59 Merge branch 'Development' into cold_extrude
Latest upstream commits
2015-04-10 21:13:50 -07:00
Scott Lahteine
f1a03c5447 Merge pull request #1887 from thinkyhead/cold_extrude
Break out prevent_dangerous_extrude feature
2015-04-10 16:16:52 -07:00
Scott Lahteine
5fe382949b Some G-Codes comment cleanup 2015-04-10 16:16:13 -07:00
Scott Lahteine
8f164f4c83 Clean up M85 in GCodes.md 2015-04-10 16:04:32 -07:00
Scott Lahteine
a327d876fe Document G92 arguments in GCodes.md 2015-04-10 16:02:00 -07:00
Scott Lahteine
652d59cd80 Spacing of g-codes in GCodes.md 2015-04-10 15:59:55 -07:00
Scott Lahteine
fe912f44dc Smaller headings 2015-04-10 15:58:32 -07:00
Scott Lahteine
93eb63238f Move G Codes into categories with M Codes 2015-04-10 15:57:54 -07:00
Scott Lahteine
a3b13eb5ac Organize M Codes by Category
- In GCodes.md
2015-04-10 15:54:36 -07:00
Scott Lahteine
3105ebc562 Restore M928, M999 2015-04-10 15:05:00 -07:00
Scott Lahteine
01654bdec1 Cleanup formatting of some M codes 2015-04-10 15:03:41 -07:00
Scott Lahteine
907e8e98e5 Add GCodes from Marlin 1.0.3 dev, format as pre 2015-04-10 14:55:21 -07:00
Scott Lahteine
8b16ebe705 Break out prevent_dangerous_extrude feature
- It’s inline here, but could be a macro and duplicated for
`planner.cpp`
2015-04-09 22:40:37 -07:00
Scott Lahteine
67c0e8323e Merge pull request #1879 from thinkyhead/cold_extrude
Fix moves for DELTA for MANUAL_BED_LEVELING
2015-04-09 22:06:06 -07:00
Scott Lahteine
740152ee70 Merge branch 'Development' into cold_extrude
Latest upstream commits
2015-04-09 20:23:47 -07:00
Scott Lahteine
5914d9d7de Shuffling declarations.. 2015-04-09 20:21:30 -07:00
Scott Lahteine
b328c6e6b6 Shuffling declarations. 2015-04-09 20:05:10 -07:00
Scott Lahteine
fb4cefc91d Define lcd_move_[xyz] ahead of lcd_move_menu_axis 2015-04-09 19:33:16 -07:00
Richard Miles
4c3736ed43 Feature: Add RAMPS CNC Controller Board
Created a new board to make using RAMPS as a CNC machine controller
easier. It maps pin 8 to the spindle and pin 9 to the controller fan.
2015-04-09 16:32:56 +01:00
Scott Lahteine
9189cc66ab Fix moves for DELTA for MANUAL_BED_LEVELING
- Use `line_to_current` in place of `plan_buffer_line`
2015-04-09 04:32:14 -07:00
AnHardt
56fc3a4835 bgr -> bg
+ update in documentation
2015-04-09 13:09:18 +02:00
Scott Lahteine
7a1aef1450 Merge pull request #1877 from AnHardt/display-only
Made encoderPosition and quick_feedback dependant on NEWPANEL
2015-04-09 03:54:05 -07:00
Scott Lahteine
6096164d79 Merge pull request #1878 from thinkyhead/cold_extrude
Cold extrude
2015-04-09 03:41:54 -07:00
Scott Lahteine
a488445cbe Fix spelling of "too" 2015-04-09 03:41:31 -07:00
Scott Lahteine
b1950a7f25 Merge pull request #1875 from Natealus/Development
Z Probe inverting not present in example configs, causes error
2015-04-09 03:37:24 -07:00
AnHardt
df50523605 Made encoderPosition and quick_feedback dependant on NEWPANEL
where the hardware is available.
Fix for #1873
2015-04-09 12:26:45 +02:00
Scott Lahteine
dcde09fdff Merge remote-tracking branch 'upstream/Development' into Development
Latest upstream commits
2015-04-09 03:21:36 -07:00
Scott Lahteine
2ca099d1e7 Merge pull request #1876 from thinkyhead/cold_extrude
Catch dangerous extrude before trying several
2015-04-09 03:21:19 -07:00
Scott Lahteine
837ceb9abb Merge pull request #1867 from epatel/Development
Added sanity check for MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS
2015-04-09 02:29:47 -07:00
Scott Lahteine
a95544f92a Spell adjustment 2015-04-09 02:04:06 -07:00
Scott Lahteine
a00ebf03d4 Merge pull request #1868 from AnHardt/LCD_STR
Moved the definitions of the LCD_STR_* to Conditionals.h
2015-04-09 01:56:23 -07:00
Scott Lahteine
7f22464353 Merge remote-tracking branch 'upstream/Development' into Development
Latest upstream commits
2015-04-09 01:41:10 -07:00
Scott Lahteine
1269c445ab Catch dangerous extrude before trying several 2015-04-09 01:40:48 -07:00
Scott Lahteine
4abd23ae9e Merge pull request #1866 from AnHardt/contrast
Remove Contrast Menu for device U8GLIB_ST7920
2015-04-09 00:34:25 -07:00
Natealus
585eee6549 Z Probe inverting not present in example configs, causes error
The line const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to
invert the logic of the endstop is in the main configuration.h but
wasn't present in the example configuration.h's. Causes a compiling
error with Z Probe enabled. Just added it to all the configs. :)
2015-04-08 18:57:30 -06:00
AnHardt
c5961892e3 Bulgarian for all the Configuration.h's 2015-04-09 01:52:13 +02:00
AnHardt
6248c93f37 Introduction of Bulgarian - language_bgr.h
Thank you @Nprod!
2015-04-09 01:26:48 +02:00
AnHardt
540dbb35e2 And an other MSG_BED in Marlin_main.cpp 2015-04-09 01:16:06 +02:00
AnHardt
14d4419e16 Replaced SERIAL_PROTOCOLPGM(MSG_BED) with SERIAL_PROTOCOLPGM("Bed")
Resolved some warnings in Marlin_main.cpp regarding compares of signed and unsigned integers by replacing 'int' or 'uint16_t' with 'uint8_t'.
2015-04-08 23:59:01 +02:00
AnHardt
ea897654a4 Moved the definitions of the LCD_STR_* to Conditionals.h
to avoid errors in Marlin_main.cpp. #1860

In the include tree of Marlin_main.cpp the decision between the display types is not made.
To include the right LCD_STR_* ether 'dogm_lcd_implementation.h' or 'ultralcd_implementation_hitachi_HD44780.h' with all their code.
A 'dogm_lcd_implementation.h.h' would be a curiosity.
So i moved both of the definition blocks to conditionals.h

On the long term it could make sense to use the same numbering for the u8glib and the hitachi symbols.
2015-04-08 21:53:58 +02:00
Edward Patel
7dc64efe67 Added sanity check for MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS 2015-04-08 20:52:48 +02:00
AnHardt
6a514f3dc9 Aplied HAS_LCD_CONTRAST also to Marlin_main.cpp
and cleaned typo.
2015-04-08 13:26:29 +02:00
AnHardt
a76fb42ca6 Merge https://github.com/MarlinFirmware/Marlin into contrast 2015-04-08 13:05:21 +02:00
AnHardt
bcc04192fc Remove Contrast Menu for U8GLIB_ST7920
The other two devices we use in u8glib have more than only dummy code.
Checked this in the library code.
2015-04-08 12:56:38 +02:00
Scott Lahteine
98f3130a5c Merge pull request #1865 from thinkyhead/configurator_values
Thermistor values for configurator
2015-04-08 03:13:27 -07:00
Scott Lahteine
4788b59300 Thermistor values for configurator 2015-04-08 03:12:21 -07:00
Scott Lahteine
bb917ecda8 Merge pull request #1853 from thinkyhead/dev_version
Set version to "1.0.3 dev"
2015-04-08 01:57:51 -07:00
Scott Lahteine
caa7734402 Merge pull request #1864 from thinkyhead/is_running
IsStopped / IsRunning inline
2015-04-08 01:10:36 -07:00
Scott Lahteine
c82da64d10 Merge pull request #1863 from lcfm1/patch-3
Update language_ru.h
2015-04-08 01:07:12 -07:00
Scott Lahteine
3162971cd6 current_position not static 2015-04-08 01:05:39 -07:00
Scott Lahteine
27cb90da8b IsStopped / IsRunning inline 2015-04-08 00:56:19 -07:00
Max
07fc2b5b70 Update language_ru.h 2015-04-08 13:18:45 +06:00
Scott Lahteine
756bb5e268 Cleanup formatting in hitachi & dogm lcd 2015-04-07 22:04:10 -07:00
Scott Lahteine
7431ef7e2d Merge branch 'Development' into dev_version
Latest upstream commits
2015-04-07 21:14:00 -07:00
Scott Lahteine
43773ff735 Formatting and lcd contrast masking 2015-04-07 21:11:03 -07:00
Scott Lahteine
eb6e3886f4 Set version to "1.0.3 dev" 2015-04-07 20:38:43 -07:00
Scott Lahteine
cf9b58452c Minimum delay in menu click feedback
Squished #1849
2015-04-07 20:20:30 -07:00
Scott Lahteine
419f3ebc03 Merge pull request #1850 from OpCode1300/docs
Fix typo in readme
2015-04-07 20:14:53 -07:00
Administrator
ff429cdd8a Fix typo in readme 2015-04-07 23:03:46 -05:00
Scott Lahteine
1d291be2ba Fix de after PREVENT_DANGEROUS_EXTRUDE
- Set `de` to 0 when `position[E] = target[E]`
- Address regression mention in #1846
2015-04-07 20:01:08 -07:00
Scott Lahteine
e03da4805b Merge pull request #1774 from epatel/Development
Mesh bed leveling: Added G29 S3 + finer display steps during manual input + bug fix
2015-04-07 19:24:46 -07:00
Scott Lahteine
5b2c67f4c3 Merge pull request #1847 from thinkyhead/more_configurator
Fix G29 not deploying probe in some instances
2015-04-07 15:41:02 -07:00
Scott Lahteine
f7c4e7e19f Fix G29 not deploying in some instances 2015-04-07 15:38:29 -07:00
Edward Patel
a9ed39b12d Moved checks into SanityCheck.h + removed previous added checks. 2015-04-07 22:58:08 +02:00
Edward Patel
002340f32c Merge branch 'Development-Marlin' into Development 2015-04-07 22:49:12 +02:00
Scott Lahteine
3db4e0fb5d Merge pull request #1842 from thinkyhead/more_configurator
Configurator updates
2015-04-06 23:38:20 -07:00
Scott Lahteine
c379f17117 Encapsulate setting of homing_bump_feedrate 2015-04-06 23:21:33 -07:00
Scott Lahteine
7d2c2f1790 Updates for the configurator
- Sections in all `Configuration_adv.h`
- Recognize JAPANESE/WESTERN/CYRILLIC options
- Better capturing of comments for tooltips
2015-04-06 23:16:01 -07:00
Scott Lahteine
967db181d0 Latest upstream commits 2015-04-06 21:46:18 -07:00
Scott Lahteine
e502144eda Fixup formatting of last commit 2015-04-06 21:28:14 -07:00
Scott Lahteine
d05efa008d Merge pull request #1825 from shaggythesheep/bugfix_no_heaters
Bugfix: Temperature checks when no heaters in use
2015-04-06 21:25:22 -07:00
Scott Lahteine
d20f42c883 Don't stow the probe until the last grid point!
- Address Issue #1682 at hash #issuecomment-89756858
2015-04-06 20:58:09 -07:00
Scott Lahteine
5c2bb05af3 Merge pull request #1839 from AnHardt/fix-statusmessage
Fix lcd_status_message
2015-04-06 19:08:25 -07:00
Scott Lahteine
d70a4a3847 Merge pull request #1823 from AnHardt/splashscreen
Disable splash-screen when done once
2015-04-06 18:48:48 -07:00
Scott Lahteine
56aea5f8e5 Merge pull request #1829 from Natealus/Development
Azteeg X3 Pro Pin fix ups
2015-04-06 18:19:33 -07:00
Scott Lahteine
6a860b99dc Merge pull request #1828 from Wackerbarth/Configurator
Update Configurator Files
2015-04-06 18:09:26 -07:00
AnHardt
ac843fbf3b Fix lcd_status_message
Because we now can use utf8 with up to 3 bytes per symbol,
lcd_status_message[] must be 3*LCD_WIDTH wide.
Filling up the message, or cutting to length, are fixed to.

Fix for #1832 about at the end.
2015-04-07 02:33:34 +02:00
Scott Lahteine
6d084c017f Fix typo in FWRETRACT handler
Should be `retracting` and not `retract`
2015-04-06 17:04:22 -07:00
Scott Lahteine
ed7a2f9fac Merge pull request #1827 from thinkyhead/fixup_dualz
Fix compile error with Z_DUAL_ENDSTOPS
2015-04-06 16:34:04 -07:00
Edward Patel
d27c82a450 Added check for Delta printers in Mesh, #error not yet supported. 2015-04-06 23:03:06 +02:00
Edward Patel
9a093b2e8f Added #error + mention not to enable ABL and Mesh at the same time 2015-04-06 19:38:59 +02:00
AnHardt
6ae714894e Now the simplycistic solution.
Just and only display splashscreen only once.
2015-04-06 12:43:38 +02:00
AnHardt
d521693641 Revert "Draw content in display loop only when needed"
This reverts commit bf04a92cc0.
2015-04-06 12:31:31 +02:00
Natealus
b6f2bff461 Azteeg X3 Pro Pin fix ups 2015-04-05 23:34:56 -06:00
Scott Lahteine
d867c18535 Fix compile error with Z_DUAL_ENDSTOPS 2015-04-05 20:48:08 -07:00
Richard Wackerbarth
46474cf2f2 Incorporate @section headers from configurator 2015-04-05 22:39:40 -05:00
Richard Wackerbarth
cf66cb8808 Bring configurator up-to-date 2015-04-05 22:38:15 -05:00
Richard Miles
1a5293c2ce Prevents MINTEMP / MAXTEMP when no heaters present
This commit checks whether or not HEATER_0 is in use, and if not, skips
the MIN / MAX temperature checks.
2015-04-05 22:27:14 +01:00
Edward Patel
5360158545 Merge branch 'Development-Marlin' into Development 2015-04-05 20:28:44 +02:00
AnHardt
bf04a92cc0 Draw content in display loop only when needed
Example for splash screen.
2015-04-05 12:53:20 +02:00
AnHardt
9865318f1c Disable splash-screen when done once
Splash screen was shown with every display init.
That means every time the menus where entered.

Note the 2 in the initialisation.
The buffer is already written in two steps a 512 byte.
Without the 2 only the upper half is shown.
2015-04-05 12:24:01 +02:00
Scott Lahteine
f5dad8ade2 Merge pull request #1819 from thinkyhead/fixup_probing
Have the configurator read from MarlinFirmware repo
2015-04-04 20:19:44 -07:00
Scott Lahteine
53eb662908 Have the configurator read from MarlinFirmware repo 2015-04-04 20:19:17 -07:00
Edward Patel
d24ea7c03f Added Comment in hope of github seeing these updates 2015-04-05 05:14:06 +02:00
Edward Patel
61de6ecd54 Added change to example Configuration.h's 2015-04-05 04:26:35 +02:00
Edward Patel
2f0081bbb5 Compile error fix! Fix for merge artifacts. 2015-04-05 04:16:16 +02:00
Edward Patel
0e6514e7bd Bug fix! Missed putting z value back in right slot after zigzag mod. 2015-04-05 04:13:34 +02:00
Edward Patel
ea10601406 Merge branch 'Development-Marlin' into Development
Conflicts:
	Marlin/Configuration.h
	Marlin/Marlin_main.cpp
2015-04-05 04:06:02 +02:00
Scott Lahteine
cb02bc6db4 Merge pull request #1817 from AnHardt/dogm_looptest
Execute DOGM display-loop less often
2015-04-04 17:29:56 -07:00
Scott Lahteine
f3597cf55a Merge pull request #1818 from quillford/patch-1
Fixed scara directions
2015-04-04 16:27:33 -07:00
quillford
b02a55e60f Fixed scara directions
Config said for a delta instead of for a scara
2015-04-04 15:26:35 -07:00
Scott Lahteine
6c5f07c5cb Merge pull request #1813 from thinkyhead/fixup_probing
Fix bad thermal runaway trigger
2015-04-04 14:41:43 -07:00
AnHardt
340d165a9c Reduce display updates for dogm displays
In 'if (encoderPastThreshold || LCD_CLICKED)' lcdDrawUpdate was not set.

'lcd_status_update_delay'-loop was not effective in  function
lcd_status_screen().
The loop prevented the update of the status screen but not the displays
update.
Shifted the loop into lcd_update().
2015-04-04 22:02:24 +02:00
AnHardt
418d22d7b3 Revert "Testloop cleanup"
This reverts commit 6361404b91.
2015-04-04 18:33:36 +02:00
AnHardt
6361404b91 Testloop cleanup
Shifted condition should still be in.
2015-04-04 17:56:13 +02:00
AnHardt
6d4b3f0d6a Move the condition before the loop
Result see: https://youtu.be/AEnBzdu9_tk
Dot is moving not so fast -> less executed loops.
2015-04-04 17:49:39 +02:00
AnHardt
4cb7dfc546 Move the 'alive dot' in every displayloop
Result see: https://www.youtube.com/watch?v=tdu7J0i-c4g
Loop is executed several times per display update.
2015-04-04 17:34:28 +02:00
Scott Lahteine
b0f198c153 heater_index above its use 2015-04-04 06:18:08 -07:00
Bo Herrmannsen
3d01492228 Update README.md 2015-04-04 15:07:36 +02:00
Bo Herrmannsen
bf5dbb90c4 Update README.md 2015-04-04 15:06:13 +02:00
Scott Lahteine
60f8e0386f More thermal runaway states 2015-04-04 05:45:36 -07:00
Scott Lahteine
f9dbd73652 Fix tr_target_temperature type - float! 2015-04-04 05:25:53 -07:00
Scott Lahteine
c83faa9c5e Merge pull request #1811 from thinkyhead/fixup_probing
Compare indices instead of floats for probe actions
2015-04-04 05:14:59 -07:00
Bo Herrmannsen
cabd713610 Update README.md 2015-04-04 14:12:36 +02:00
Bo Herrmannsen
f39e5988a3 Update README.md 2015-04-04 14:09:59 +02:00
Bo Herrmannsen
20a047b8c5 Update README.md 2015-04-04 14:09:39 +02:00
Bo Herrmannsen
a5e9263987 Update README.md 2015-04-04 14:08:30 +02:00
Bo Herrmannsen
506a42338b Update README.md 2015-04-04 14:07:59 +02:00
Bo Herrmannsen
2f189be2e4 Update README.md 2015-04-04 14:07:20 +02:00
Bo Herrmannsen
1836aa2615 Update README.md 2015-04-04 14:02:58 +02:00
Scott Lahteine
61f8394361 Compare indices instead of floats for probe actions 2015-04-04 05:01:16 -07:00
Scott Lahteine
a98183b463 Merge pull request #1809 from Wackerbarth/LanguageCleanup
Deferring default definition made #undef unnecessary
2015-04-04 04:37:20 -07:00
Scott Lahteine
41ded7e996 Merge pull request #1805 from thinkyhead/fixup_probing
Optimize coordinate copying, fix EXTRUDER_RUNOUT_PREVENT
2015-04-04 03:49:54 -07:00
Richard Wackerbarth
4119738e69 Deferring default definition made #undef unnecessary 2015-04-04 05:48:07 -05:00
Scott Lahteine
6f06d33be5 Fix missing refresh_cmd_timeout function 2015-04-04 03:47:25 -07:00
Scott Lahteine
2d099a2c70 Fix missing backslash in macro 2015-04-04 03:35:16 -07:00
Scott Lahteine
0f9b29e6c5 Merge pull request #1803 from Natealus/Development
Z_PROBE_ENDSTOP Pin for Azteeg X3 Pro
2015-04-03 23:45:05 -07:00
Scott Lahteine
0935084141 Fix manage_inactivity
- Document `manage_inactivity` function
- Allow `EXTRUDER_RUNOUT_PREVENT` to work with all extruders
- Use faster `memcpy` for copying coordinates
2015-04-03 23:42:50 -07:00
Scott Lahteine
c065da52ec Spacing and spelling 2015-04-03 22:54:48 -07:00
Scott Lahteine
a3e129e091 Merge pull request #1801 from thinkyhead/fixup_probing
Minor optimizations
2015-04-03 22:30:01 -07:00
Scott Lahteine
e8a711994a Merge pull request #1802 from Natealus/Development
Compiling error temperature.cpp with multiple extruders defined
2015-04-03 22:14:12 -07:00
Natealus
ab11f90da0 Z_PROBE_ENDSTOP Pin for Azteeg X3 Pro
Just a simple #ifdef Z_PROBE_ENDSTOP to define the pin for it. Also has
a couple commented lines for switching Z_MIN_PIN if needed.
2015-04-03 23:14:03 -06:00
Scott Lahteine
8680b515b0 Fix missing tmp_extruder -> target_extruder 2015-04-03 22:12:49 -07:00
Natealus
a6ba40ae48 Compiling error temperature.cpp with multiple extruders defined
It wouldn't compile because of this line in temperature.cpp it turns out
it was just a stray ( that didn't line up with the previous lines so I
just made it in line with the rest and it compiled fine.
2015-04-03 23:09:31 -06:00
Scott Lahteine
fc3c76fc16 Fix #1800 2015-04-03 22:04:42 -07:00
Scott Lahteine
c185912c19 Latest upstream commits, mostly 2015-04-03 21:58:48 -07:00
Scott Lahteine
1e5c18bb14 Add code_value_short and SERIAL_CHAR 2015-04-03 21:43:30 -07:00
Scott Lahteine
e0d4368cb5 Minor code cleanup, move NUM_AXIS out of config 2015-04-03 20:45:24 -07:00
Scott Lahteine
4c7af484f8 Merge pull request #1787 from thinkyhead/fixup_tr
Fix: thermal_runaway_protection triggered by target temperature increase
2015-04-03 20:06:56 -07:00
Scott Lahteine
c747becec1 Merge pull request #1796 from thinkyhead/pidbed_temp_eeprom
Add PIDTEMPBED to EEPROM
2015-04-03 20:03:38 -07:00
Scott Lahteine
369a497300 Merge pull request #1797 from quillford/Development
Fixed README typos
2015-04-03 19:58:09 -07:00
Scott Lahteine
84e4edaea7 Add M48 comment for #1794 2015-04-03 19:52:00 -07:00
Scott Lahteine
9ba55baa5b Track target temperature separately for each heater 2015-04-03 19:42:40 -07:00
Scott Lahteine
528e32a1d4 Fix timeout in thermal_runaway when temperature is set higher 2015-04-03 19:34:55 -07:00
Scott Lahteine
b98ebd517e disable / enable_all_steppers functions 2015-04-03 19:25:22 -07:00
Scott Lahteine
713953d8c1 Upstream commits, allow no extruder in M105 2015-04-03 19:16:38 -07:00
Scott Lahteine
8f893eb8df Merge pull request #1798 from thinkyhead/fixup_probing
Fix probe height at G28 start
2015-04-03 19:03:00 -07:00
Scott Lahteine
dde7e11f8e Merge branch 'Development' into fixup_tr
Latest upstream commits
2015-04-03 18:56:52 -07:00
Scott Lahteine
abd7fc36b6 Fix probe height at G28 start 2015-04-03 18:54:55 -07:00
Scott Lahteine
610c8c5471 Merge pull request #1795 from thinkyhead/fixup_probing
Finish pin tests
2015-04-03 18:44:44 -07:00
quillford
1ad5fb1178 Fixed README typos 2015-04-03 18:36:01 -07:00
Scott Lahteine
e4934164e4 Merge pull request #1790 from Wurstnase/fix_home_z
fix feedrate for homing z
2015-04-03 18:35:09 -07:00
Scott Lahteine
a469d796e1 Add cleanups needed for #1772 2015-04-03 18:14:57 -07:00
Scott Lahteine
c0ca26cd50 Merge branch 'Development' into fixup_probing
Latest upstream commits
2015-04-03 18:05:17 -07:00
Scott Lahteine
5c1f08a35f Merge pull request #1772 from croadfeldt/Merge_cleanup
Z_PROBE_ENDSTOP
2015-04-03 18:04:31 -07:00
Scott Lahteine
db7b0ea0cf Merge pull request #1569 from Wackerbarth/Development
Incorporating Build Numbers
2015-04-03 16:56:31 -07:00
Scott Lahteine
92119d0f7d Static delta[] for SCARA 2015-04-03 16:46:56 -07:00
Scott Lahteine
007a4bd421 Adjust spacing in view function 2015-04-03 16:41:58 -07:00
Scott Lahteine
424d5495e4 Add PIDTEMPBED to EEPROM 2015-04-03 16:38:05 -07:00
Scott Lahteine
6b919e14c1 Group all universal variables 2015-04-03 15:45:41 -07:00
Scott Lahteine
21cd2e4fae Merge branch 'Development' into fixup_probing
Latest upstream commits
2015-04-03 15:32:15 -07:00
Scott Lahteine
0e8182bbf2 Additional pin tests, cleanup 2015-04-03 15:31:35 -07:00
Scott Lahteine
e8700bd1e2 Merge pull request #1788 from AnHardt/iss1786
Fix typo in Marlin_main.cpp
2015-04-03 15:14:58 -07:00
Wurstnase
45565b680d second wrong feedrate 2015-04-03 18:01:28 +02:00
Wurstnase
581b2aae04 fix feedrate for homing z
max_feedrate is in mm/s. line_to_destination needs a feedrate in mm/min because there is feedrate/60.
2015-04-03 16:11:32 +02:00
Edward Patel
48b1c3822f Merge branch 'Development-Marlin' into Development 2015-04-03 00:46:30 +02:00
Richard Wackerbarth
8f620de0ff Actually activate Automatic Versioning 2015-04-02 09:20:24 -05:00
Richard Wackerbarth
ccdaea51ba Add KosselPro 2015-04-02 09:20:24 -05:00
Richard Wackerbarth
f4599143eb Allow M115 to better reflect the build 2015-04-02 09:20:24 -05:00
Richard Wackerbarth
a33e20b27d Adjust per-project .gitignore
Refer to http://git-scm.com/docs/gitignore
to see why this is appropriate
2015-04-02 09:20:24 -05:00
Richard Wackerbarth
34c7d45879 Hook for Auto-generated Build Version
The automatic versioning system extracts a
build version number from the SCM system

That versioning information is written to the file
_Version.h, a file that is NOT preserved in the SCM.

If such a file will be present,
we include it here to utilize the parameters
that are defined therein.
2015-04-02 09:20:24 -05:00
Scott Lahteine
c756b4cf07 Comment tweak 2015-04-02 06:11:03 -07:00
AnHardt
23cd54755f Fix typo in Marlin_main.cpp
related to current_position[Z_AXIS] and retract_zlift.

'+ =' -> '+='

Fix for #1786
2015-04-02 14:50:31 +02:00
Scott Lahteine
e96df67630 Clarify thermal_runaway_protection
- Add comments documenting `thermal_runaway_protection`
- Add an enum for the thermal runaway states
- Add macros for temperature helper functions
- Fix a glitch with the z probe sled in homeaxis
2015-04-02 05:10:14 -07:00
Bo Herrmannsen
93fdc2951b Update README.md 2015-04-02 07:22:01 +02:00
Chris Roadfeldt
79b56b083f Merge branch 'Development' into Merge_cleanup 2015-04-01 19:33:11 -05:00
Chris Roadfeldt
0afe6696f0 Merge remote-tracking branch 'MarlinFirmware/Development' into Merge_cleanup 2015-04-01 19:31:20 -05:00
Chris Roadfeldt
9e603920c2 Merge branch 'Merge_cleanup' into Development 2015-04-01 19:31:14 -05:00
Chris Roadfeldt
59994bd519 Not doing network admin work, pin not ping... :) 2015-04-01 19:24:42 -05:00
Chris Roadfeldt
916f59e35f Spaces not tabs in language.h.
Catch unlikely but possible error and head crash when using
Z_PROBE_REPEATABILITY_TEST
2015-04-01 19:22:05 -05:00
Scott Lahteine
66b3b53e76 Merge pull request #1762 from AnHardt/MiMa
Fix MIN&MAX temperatures again
2015-04-01 16:52:07 -07:00
alexborro
56633da44f Merge pull request #1773 from Wurstnase/cartesian_old_bump
old bump_divisor for cartesian/corexy-printer
2015-04-01 20:39:04 -03:00
Bo Herrmannsen
ae2ebc6951 Update README.md 2015-04-01 23:18:51 +02:00
Edward Patel
6bdebede27 Added description in the documentation for the new parts. 2015-04-01 21:32:28 +02:00
Edward Patel
6b91b7b411 Mesh bed leveling: Added G29 S3 + finer steps in manual probing.
* Use "G29 S3 Xn Yn Zn.nn" to modify bad probed point manually
* Changed manual Z steps from 0.05 to 0.025 and made brought it to Configuration.h
2015-04-01 21:18:51 +02:00
Chris Roadfeldt
26dc80bf2d Typo fixed... 2015-04-01 13:47:17 -05:00
Chris Roadfeldt
b84db7ff5b Merge branch 'Merge_cleanup' into Development 2015-04-01 13:36:02 -05:00
Chris Roadfeldt
2966ae2022 Fix Z_PROBE_PING not declared, allows code to compile if Z_PROBE_ENDSTOP
is not used.
2015-04-01 13:32:25 -05:00
Wurstnase
67d5e7973e old bump_divisor for cartesian/corexy-printer
some people are starting to ask why homing is so slow. this is the old standard hard-coded value.
2015-04-01 20:17:49 +02:00
Chris Roadfeldt
fb74995fe3 Merge branch 'Merge_cleanup' into Development 2015-04-01 12:15:01 -05:00
Chris Roadfeldt
bb41edc2ef Fixed extra #endif 2015-04-01 12:13:25 -05:00
Chris Roadfeldt
f53e951462 Merge branch 'Merge_cleanup' into Development 2015-04-01 11:52:34 -05:00
Chris Roadfeldt
a57862e29f Cleaning up code in prep for merge with upstream. 2015-04-01 11:40:24 -05:00
Chris Roadfeldt
ca40921bf1 Merge branch 'Merge_cleanup' into Development 2015-04-01 10:34:36 -05:00
Chris Roadfeldt
745d9fe1a4 Merge remote-tracking branch 'MarlinFirmware/Development' into Merge_cleanup
Conflicts:
	Marlin/Marlin_main.cpp
2015-04-01 10:31:02 -05:00
AnHardt
488666832b Remove the previously introduced () 2015-04-01 13:40:05 +02:00
Scott Lahteine
443468df8d Merge pull request #1771 from AnHardt/iss1770
Added new - changed entries from Fix up LCD_PROGRESS_BAR
2015-04-01 02:13:30 -07:00
Scott Lahteine
9593f09b99 Merge pull request #1764 from thinkyhead/probe_leveling
Fix homing and leveling
2015-04-01 02:00:39 -07:00
Scott Lahteine
7bf31cc8a1 Merge pull request #1768 from atfield90/atfield90-patch-1
Added support for Atmega 1281 chip
2015-04-01 01:59:39 -07:00
Scott Lahteine
72c7de3570 Cleanup M48 2015-04-01 01:48:45 -07:00
Scott Lahteine
97a258b0b0 Clean up, document home_axis 2015-04-01 01:44:13 -07:00
AnHardt
831016b09f Added new - changed entries from Fix up LCD_PROGRESS_BAR
for when no LCD is defined.
Fix for #1770.
2015-04-01 10:17:17 +02:00
Chris Roadfeldt
a508d835db Changed Z_PROBE_AND_ENDSTOP to Z_PROBE_ENDSTOP.
Updated documentation in Configuration.h.
Cleaned up and commented some code relating to Z_PROBE_ENDSTOP.
Separated Z_MIN_ENDSTOP and Z_PROBE_ENDSTOP completely.
2015-04-01 02:14:55 -05:00
Chris Roadfeldt
fdb4ddbdea Merge remote-tracking branch 'MarlinFirmware/Development' into Development 2015-04-01 00:52:08 -05:00
atfield90
d273c90d53 Added support for Atmega 1281 chip 2015-04-01 05:15:27 +02:00
Scott Lahteine
1c7391717e Include sync_plan_position_delta for SCARA also 2015-03-31 19:58:03 -07:00
Scott Lahteine
8231fb166d Merge pull request #1758 from AnHardt/MENU_MULTIPLIER_ITEM
Fix: Audio feedback for MENU_MILTIPLIER_ITEM click
2015-03-31 19:29:48 -07:00
Scott Lahteine
0b57a2ab8b Merge pull request #1757 from bq/Translation-strings
Added new trasnslatable labels.
2015-03-31 18:56:25 -07:00
Scott Lahteine
18bb6be80e Fix homing and leveling
- Include the current Z when raising the axis after and between probing
- Add `sync_plan_position_delta` for parity with `sync_plan_position`
- Clean up and clarify `M48`, `dock_sled`, and others
2015-03-31 18:52:19 -07:00
AnHardt
3f2e863206 Improve conditions for HAS_TEMP
and use them in temperuture.h

Flattened the if structure - the preprocessor is doing the work - not the Arduino. Arduino.
2015-04-01 02:56:14 +02:00
AnHardt
85f8a26ba4 Fix MIN&MAX temperatures again
replaced GE0 with th matching GEX in the second row.
added some ()
2015-04-01 00:48:04 +02:00
AnHardt
19b11dfdd7 Fix can't enter MENU_MULTIPLIER_ITEM 2015-03-31 18:29:16 +02:00
Chris Roadfeldt
c89b8368ee Merge remote-tracking branch 'MarlinFirmware/Development' into Development
Conflicts:
	Marlin/Marlin_main.cpp
2015-03-31 11:08:36 -05:00
Ivan Galvez Junquera
d08782386b Added new trasnslatable labels.
* Added MSG_END_HOUR and MSG_END_MINUTE labels to all language files.
* Available translations:
  EN, FR, DE, ES, IT, PT, PT-BR.
2015-03-31 16:59:43 +02:00
Scott Lahteine
be593b600b Merge pull request #1756 from thinkyhead/fixup_config
Correct XYZ after obtaining plan_bed_level_matrix
2015-03-31 05:08:41 -07:00
Scott Lahteine
97a69d9b1c Correct XYZ after obtaining plan_bed_level_matrix
The current position needs to be updated by using the inverse
`plan_bed_level_matrix` on X, Y, and Z. All moves in the planner are
transformed by the `plan_bed_level_matrix` from this point forward.
2015-03-31 04:24:13 -07:00
Scott Lahteine
5f6962dd90 Merge pull request #1755 from thinkyhead/fixup_config
Raise when not retracting
2015-03-31 03:47:01 -07:00
Scott Lahteine
ae89ccd2c7 Use Z_RAISE_BETWEEN_PROBINGS 2015-03-31 03:45:21 -07:00
Scott Lahteine
9a5a7a3f68 Raise when not retracting
Code to raise the probe before retraction is good, but the code should
always raise the probe, not just when retracting
2015-03-31 03:38:03 -07:00
Scott Lahteine
6ff1620fcb Merge pull request #1753 from thinkyhead/fix_extruder_offset
Fix EXTRUDER_OFFSET compiler error
2015-03-31 03:21:45 -07:00
Scott Lahteine
8a4ed3c241 Merge pull request #1754 from thinkyhead/fixup_config
Correct the comment about M206
2015-03-31 03:20:57 -07:00
Scott Lahteine
cda4bd4ad9 Correct the comment about M206 2015-03-31 03:20:15 -07:00
Scott Lahteine
db4d8e835c Merge pull request #1752 from thinkyhead/fix_lcd_click
Fix LCD click
2015-03-31 02:52:17 -07:00
Scott Lahteine
935592cf6a offsets off by default 2015-03-31 02:50:52 -07:00
Scott Lahteine
2a45922afe Restore extruder_offset, init more simply 2015-03-31 02:49:47 -07:00
Scott Lahteine
28792e5731 Fix typo in assignment 2015-03-31 02:10:49 -07:00
Scott Lahteine
bb6174524f Fix EXTRUDER_OFFSET compiler error
- Addressing issue #1741
2015-03-31 02:08:57 -07:00
Scott Lahteine
571652c49b Fix LCD click
- Make the default LCD click sound more pleasant
- Fix warnings about bed temperature runaway
2015-03-31 01:41:24 -07:00
Chris Roadfeldt
45ece5afb1 Merge remote-tracking branch 'MarlinFirmware/Development' into Development 2015-03-31 03:07:57 -05:00
Chris Roadfeldt
17707e7479 Fixed Z_PROBE_PIN pullup bug.
Documented some additional areas that should be addressed if Z_PROBE is
fully separated from Z_MIN or Z_MAX.
Fixed a documentation error in sanity checks. Servos start at 0 not 1.
2015-03-31 02:56:41 -05:00
Scott Lahteine
21ab44cfa7 Merge pull request #1750 from thinkyhead/fixup_config
Bring all configs up to date
2015-03-30 23:49:04 -07:00
Scott Lahteine
50145266cd Merge pull request #1748 from thinkyhead/raise_before_homing
Apply Z_RAISE_BEFORE_HOMING before homing XY
2015-03-30 23:37:41 -07:00
Scott Lahteine
a117b6bff6 Merge pull request #1747 from thinkyhead/progress_bar_tweak
Fix up LCD_PROGRESS_BAR
2015-03-30 23:37:28 -07:00
Scott Lahteine
3348b3bf0c Allow SD_FINISHED_RELEASECOMMAND to be undefined 2015-03-30 23:31:48 -07:00
Scott Lahteine
82794fa5f7 Add delta generic not renaming 2015-03-30 23:25:04 -07:00
Scott Lahteine
ba2c7cb467 Update configs with all the latest 2015-03-30 23:24:33 -07:00
Chris Roadfeldt
ec1d9c0b8f Use Z_PROBE_ENDSTOP_INVERTING when checking pin status. 2015-03-31 01:06:01 -05:00
Chris Roadfeldt
3175c70c79 Manually synching back up with MarlinFirmware/Development. 2015-03-31 00:11:11 -05:00
Chris Roadfeldt
faac2af4af Merge remote-tracking branch 'origin/Development' into Development 2015-03-31 00:03:07 -05:00
Chris Roadfeldt
3be00cce6f Merge remote-tracking branch 'MarlinFirmware/Development' into Development
Conflicts:
	Marlin/Configuration.h
2015-03-30 23:59:01 -05:00
Chris Roadfeldt
e08f8eed05 Revert 06f767d..cba5692
This rolls back to commit 06f767d608.
2015-03-30 23:51:36 -05:00
Scott Lahteine
2e7a4bd7db Merge pull request #1749 from thinkyhead/fixup_config
Restore ENDSTOPPULLUPS in Configuration.h
2015-03-30 21:15:44 -07:00
Scott Lahteine
5e82ed4f30 Restore ENDSTOPPULLUPS in Configuration.h 2015-03-30 21:15:16 -07:00
Scott Lahteine
b8973051c3 Merge pull request #1746 from thinkyhead/power_supply
Allow POWER_SUPPLY to be 0
2015-03-30 21:00:40 -07:00
Chris Roadfeldt
992b07ca57 Don't disable Z_RAISE_BEFORE_HOMING when Z_PROBE_AND_ENDSTOP is enabled. 2015-03-30 22:58:10 -05:00
Chris Roadfeldt
cba5692673 Merge remote-tracking branch 'MarlinFirmware/Development' into Development
Conflicts:
	Marlin/Marlin_main.cpp
	Marlin/stepper.cpp
2015-03-30 22:33:05 -05:00
Scott Lahteine
8500c80b33 Apply Z_RAISE_BEFORE_HOMING before homing XY 2015-03-30 20:22:21 -07:00
Scott Lahteine
92b54aa27e #define HAS_POWER_SWITCH 2015-03-30 19:44:53 -07:00
Scott Lahteine
5519882eea Fix up LCD_PROGRESS_BAR
- Some messages should not expire with `PROGRESS_MSG_EXPIRE`.
- Simplify conditional for progress bar with sanity checks.
- Rename `messageTick` to `expireStatusMillis` and make it the expire
time.
2015-03-30 18:00:54 -07:00
Scott Lahteine
6864280803 Use elif and parentheses in conditionals 2015-03-30 16:52:27 -07:00
Scott Lahteine
8c136a5ab5 Conditionals and comments for PS = 0 2015-03-30 16:50:05 -07:00
Scott Lahteine
2faed961ce Allow POWER_SUPPLY 0 for no power switch 2015-03-30 16:39:47 -07:00
Scott Lahteine
baa6787393 Merge pull request #1740 from thinkyhead/fixup_homing
Apply leveling for DELTA
2015-03-30 15:45:33 -07:00
Scott Lahteine
346c07cc1a Merge pull request #1743 from AnHardt/extrudemultiply
Replace extrudemultiply by extruder_multiply[active_extruder]
2015-03-30 15:45:10 -07:00
AnHardt
9ac7dc675e Make filament display on dogm_... same as hitachi...
Thanks @MagoKimbra.
2015-03-30 16:56:21 +02:00
AnHardt
50a732360a Replace extrudemultiply by extruder_multiply[active_extruder]
Fix for #1460.

Seems to work with only one extruder. Can't test this myself with more.
2015-03-30 13:35:03 +02:00
Scott Lahteine
e63076504d Merge pull request #1733 from AnHardt/c20
Get back folder symbols on Hitachi displays
2015-03-30 01:57:00 -07:00
Scott Lahteine
41d258697a Pass the z for after probing to retract_z_probe
A `z_before` value is passed to probe_pt, but the `retract_z_probe`
function assumes that Z is 0, doesn’t add `current_position[Z_AXIS]` as
other cases do. This may be superfluous, so this is a test, and will be
reverted if it has no effect.
2015-03-30 00:45:02 -07:00
croadfeldt
06f767d608 Merge remote-tracking branch 'upstream/development' into development 2015-03-30 02:10:49 -05:00
Scott Lahteine
b47fa8c064 Merge pull request #1735 from AnHardt/compilerCandy
Remove some further warnings
2015-03-29 23:55:19 -07:00
Scott Lahteine
e96db1cd6c Make G29 shared function inline 2015-03-29 23:21:39 -07:00
Scott Lahteine
d73b169de3 Apply leveling for DELTA,
- Fix `prepare_move` function not calling `adjust_delta`
- Add more shorthand for plan_buffer_line.
- Fix wrong `federate` usage, assuming they are all mm/m
- Minor `stepper.cpp` cleanup
2015-03-29 23:16:12 -07:00
Scott Lahteine
85b67e5223 Merge pull request #1738 from thinkyhead/fixup_homing
Fix G29 E and M48 n
2015-03-29 20:08:19 -07:00
Scott Lahteine
ce44bee28b Small code reduction 2015-03-29 19:45:14 -07:00
Scott Lahteine
0213f7f016 Cleanup case for M666 2015-03-29 19:39:43 -07:00
Scott Lahteine
803425e12c Fix G29 E and M48 n
- Users prefer `G29 E` to work like `M48 E` so fixed that
- `M48 n` replaced with `M48 P` (or `p`). `n` legacy support
- Shorten some strings to save precious bytes
- Smaller code for 3-point probing
2015-03-29 18:56:09 -07:00
Scott Lahteine
1e9999711c Merge pull request #1736 from thinkyhead/fixup_homing
Fix G28 homing Y with X
2015-03-29 18:27:17 -07:00
Scott Lahteine
d738b7acdd Merge pull request #1724 from Natealus/Development
Viki 2 Pins from Manual and Azteeg X3 Pro Endstop Reswap
2015-03-29 18:26:32 -07:00
Scott Lahteine
e8ae51bfe3 Fix G28 homing Y with X
- Fixed a typo causing G28 to home incorrectly
- Added documentation to G28
- Added homeXYZ bools to neaten the code
- Added a note about home_offsets being questionable
2015-03-29 18:06:59 -07:00
AnHardt
7b2550a604 Times can't be negative.
cardreader.cpp needs temperature.h for autotempShutdown() when
AUTOTEMP is defined but warns about unused variables.
Unpublished variables by putting them in to temperature.cpp.
2015-03-30 01:58:46 +02:00
AnHardt
507efa771b Remove unused variable fan_rot
and satisfy the compiler about the implicit compare.
2015-03-30 01:46:38 +02:00
AnHardt
2b959a7752 Some additional {} to make the compiler happy. 2015-03-30 01:42:35 +02:00
AnHardt
0f1bd6e4a7 In ST7920_SWSPI_SND_8BIT(uint8_t val) parameter is unsigned
therefor in macro ST7920_WRITE_BYTE(a) cast a to uint8_t
to make the compiler happy.
2015-03-30 01:40:58 +02:00
AnHardt
81bab8739d Get back folder symbols on Hitachi displays
and make use of column 20.
2015-03-29 17:29:48 +02:00
Chris Roadfeldt
a9802c95b3 Ensure Z_PROBE_PIN is defined if Z_PROBE_AND_ENDSTOP is. 2015-03-29 04:18:37 -05:00
Chris Roadfeldt
62834a1c43 Don't deploy probe on Z Axis homing if Z_PROBE_AND_ENDSTOP is enabled,
unless Z_SAFE_HOMING is.
2015-03-29 03:55:41 -05:00
Chris Roadfeldt
666fad3494 Typo fixed in sanity check. 2015-03-29 03:25:03 -05:00
Chris Roadfeldt
08a7aa16c5 Don't deploy Z Probe on Z homing if Z_PROBE_AND_ENDSTOP is defined. 2015-03-29 03:21:48 -05:00
Chris Roadfeldt
80285251cc More config cleanup work for Z_PROBE_AND_ENDSTOP. 2015-03-29 03:06:20 -05:00
Chris Roadfeldt
fe4549cd83 Config file Z_PROBE_AND_ENDSTOP description clean up. 2015-03-29 03:04:59 -05:00
Chris Roadfeldt
82d2f11129 More additional sanity checks for Z_PROBE_AND_ENDSTOP 2015-03-29 02:53:55 -05:00
Chris Roadfeldt
05134f0807 Additional Sanity Checks for Z_PROBE_AND_ENDSTOP 2015-03-29 02:51:51 -05:00
Chris Roadfeldt
c75a5e8c55 Fixed typo for Z_PROBE_AND_ENDSTOP support in pins_RAMPS.h.
Confirmed Sanity checks are working.....
2015-03-29 02:38:08 -05:00
Chris Roadfeldt
a98ac4033b Added Z_PROBE_PIN to #define for Z_PROBE_AND_ENDSTOP support. 2015-03-29 02:36:26 -05:00
Chris Roadfeldt
6125124d6c Config file cleanup for Z_PROBE_AND_ENDSTOP support. 2015-03-29 02:29:16 -05:00
Chris Roadfeldt
324c14943b Bug fixes for Z_PROBE_AND_ENDSTOP.
Code cleanup for Z_PROBE_AND_ENDSTOP.
Added Z_PROBE_PIN to pins_RAMPS_13.h
2015-03-29 02:16:09 -05:00
Natealus
ca5821aa57 Made #ifdef DELTA branch instead
Another fellow here gave me the idea to do it this way
2015-03-29 01:08:00 -06:00
Natealus
04fda6b3e9 Undesired behavior with endstops swapped
Made my swap commented out so its the option not the default.
2015-03-29 00:55:47 -06:00
Natealus
ca1477d830 Revert "Undesired behavior with endstops swapped"
This reverts commit 15028e9b08.
2015-03-29 00:52:53 -06:00
Natealus
15028e9b08 Undesired behavior with endstops swapped
I made my changes to swap MIN and MAX endstops on the Azteeg X3 Pro the
option rather than the default to fix unexpected reversal.
2015-03-29 00:42:40 -06:00
Nate Stokes
18245c6cd2 Update pins_RAMBO.h
Updated for the changes that Thinkyhead made before I submitted mine.
2015-03-28 22:29:54 -06:00
Natealus
234a9d0b12 Viki 2 Pins from Manual
I added in the pins into the new board files for the Azteeg X3, X3 Pro,
Printrboard, and Rambo. I'm sure it can be added for others too but
these are the manual specified pins. Just like many things here though,
I can't test for the boards other than the Azteeg X3 Pro. Hopefully it
works smoothly for everyone who happens on this nifty display. :)
2015-03-28 22:11:12 -06:00
Scott Lahteine
a22efc5f11 Merge pull request #1597 from Wurstnase/g29_auto_script
G29 auto script
2015-03-28 20:54:17 -07:00
Scott Lahteine
62a3da9618 Merge pull request #1723 from thinkyhead/tweak_g92
Tweak G92
2015-03-28 20:53:37 -07:00
Scott Lahteine
cc7a081cae Merge pull request #1722 from Natealus/Development
Azteeg X3 Pro Pin Revisions
2015-03-28 20:45:55 -07:00
Scott Lahteine
afff968e88 ARRAY_BY_EXTRUDERS, shorthand to sync planner
- Add some documentation to planner and stepper headers
- Patch up RAMBO pins with undefs
- Add `sync_plan_position` inline to set current XYZE
- Swap indices in `extruder_offset` to fix initialization values
2015-03-28 20:33:21 -07:00
Scott Lahteine
2b0c25a091 Tweak G92 to call plan_set_position only once, yes? 2015-03-28 19:18:24 -07:00
Natealus
22bea37393 Azteeg X3 Pro Pin Revisions
I added the fan pins in here and left them at -1 in configuration_adv.h
and it works fine. Pinned for a 4 extruder from 1-4 and HE5 being the
controller fan, HE6 being the Extruder Auto Fan/Water pump in the Kraken
case, and HE7 being for part cooling fan. Added in descriptions for the
MIN MAX pin swap and for servo motor additions.
2015-03-28 20:14:42 -06:00
Scott Lahteine
93dc0d0518 Merge pull request #1718 from AnHardt/blink
Move variable blink from ultralcd.h to dogm_lcd_implementation.h
2015-03-28 16:20:33 -07:00
Scott Lahteine
4f399bf1fb Merge pull request #1721 from thinkyhead/fixup_1699
Patch generic delta config
2015-03-28 16:15:09 -07:00
Scott Lahteine
edb67ea165 Patch generic delta config
- Addressing issue mentioned at #1699
2015-03-28 14:13:25 -07:00
AnHardt
c481c3b180 Move variable blink from ultralcd.h to dogm_lcd_implementation.h
to avoid warnings about unused blink.

Concentrate definitions of variables in dogm_lcd_implementation.h to one place.

Make only local used variable currentfont static.
2015-03-28 13:14:38 +01:00
Chris Roadfeldt
059052889f Further Sanity Checks for Z_PROBE_AND_ENDSTOP. 2015-03-28 06:08:04 -05:00
Chris Roadfeldt
8b81f20c61 Filling in more places where Z_PROBE_PIN and Z_PROBE_AND_ENDSTOP need to
be.
Added Sanity Check for it.
Added hook so it's enabled.
2015-03-28 05:55:42 -05:00
Chris Roadfeldt
fd823449ad Added serial message for Z Probe trigger. 2015-03-28 05:42:38 -05:00
Chris Roadfeldt
92eb8109ab Fix declaration of old_z_probe_endstop. 2015-03-28 05:09:48 -05:00
Chris Roadfeldt
44b88b41a2 Added credit for code. 2015-03-28 05:01:04 -05:00
Chris Roadfeldt
2979b40a7a Fixed typo in Z Probe and Endstop section. 2015-03-28 04:41:03 -05:00
Chris Roadfeldt
9f3ff14008 Enabled separate Z Probe and Z Axis endstop use at same time.
Typo fixes in comments in existing code.
2015-03-28 04:31:51 -05:00
Scott Lahteine
f47fc879fe Merge pull request #1717 from thinkyhead/fixup_warnings
Fixup warnings
2015-03-27 22:59:49 -07:00
Scott Lahteine
29a713ea5e Merge branch 'Development' into fixup_warnings
Conflicts:
	Marlin/Marlin_main.cpp
2015-03-27 20:50:45 -07:00
Scott Lahteine
b14be7235e Merge pull request #1585 from galexander1/strtod_e_fix
Fix `code_value` (so `G1X1E2` isn't evaluated as `G1 X100 E2`)
2015-03-27 20:49:03 -07:00
Scott Lahteine
ba871e46bf Fix compiler warnings
- Patched up for most included configurations
2015-03-27 20:29:05 -07:00
Scott Lahteine
ffe0df4b36 Latest upstream commits 2015-03-27 18:30:56 -07:00
Scott Lahteine
bc2f249cc6 Merge pull request #1622 from AnHardt/tm-utf-minus-kanji
The big Language Pack
2015-03-27 18:24:19 -07:00
Scott Lahteine
abfcbd793f Merge pull request #1693 from chris-bo/rework_lcd_beeper
use only one implementation for beeper feedback
2015-03-27 17:03:38 -07:00
Scott Lahteine
72510b75d2 Merge pull request #1716 from thinkyhead/fixup_leveling
Fix Z_APPLY_STEP for dual Z
2015-03-27 17:02:54 -07:00
Scott Lahteine
55739a4efe Fix Z_APPLY_STEP 2015-03-27 17:02:11 -07:00
Scott Lahteine
1aec2f437c Merge pull request #1700 from thinkyhead/fixup_leveling
Fixup leveling and other issues
2015-03-27 16:37:47 -07:00
Scott Lahteine
df02b992b0 Fix redundant_temperatrure_raw setting 2015-03-27 16:37:22 -07:00
Scott Lahteine
fe29bdd72b Also fix temperature externs 2015-03-27 16:26:07 -07:00
Scott Lahteine
578f93bc26 Fixup temp arrays and leveling equation, prepare for merge 2015-03-27 16:20:23 -07:00
Scott Lahteine
7d472367e2 Merge pull request #1713 from epatel/Development
Parentheses need here otherwise sanitycheck.h does wrong thing on line 222
2015-03-27 16:14:55 -07:00
Scott Lahteine
d841028805 Merge pull request #1714 from thinkyhead/fixup_temperature
Give all temp arrays 4 indices
2015-03-27 16:11:57 -07:00
Scott Lahteine
ce485175eb Give all temp arrays 4 indices 2015-03-27 16:11:28 -07:00
Edward Patel
782464ea4d Parentheses need here otherwise sanitycheck.h does wrong thing on line 222 2015-03-27 20:22:59 +01:00
Scott Lahteine
460f73056b Fix ECHOPAIR ambiguity
- Also patch up some warnings
2015-03-27 00:46:39 -07:00
Scott Lahteine
19d418cd6a Fix up the code to eliminate warnings 2015-03-27 00:32:58 -07:00
Scott Lahteine
b2496533c6 Put " M" into pmem 2015-03-26 20:30:14 -07:00
Scott Lahteine
267d6bef15 Eliminate most warnings
- Fix a bug reading `code_value` for `M503 Sn`
- Hide and remove unused variables
2015-03-26 20:07:17 -07:00
Scott Lahteine
3fd7790a15 Merge branch 'Development' into fixup_leveling
Latest upstream commits
2015-03-26 19:56:58 -07:00
Scott Lahteine
b76a352d41 Fix the planeNormal calculation 2015-03-26 17:14:07 -07:00
Scott Lahteine
4385ac4f9d Merge pull request #1707 from thinkyhead/fixup_temperature
Always 4 temp sensors
2015-03-26 17:02:11 -07:00
Scott Lahteine
410f64782a Always 4 temp sensors 2015-03-26 16:22:21 -07:00
Scott Lahteine
0b32431551 Remove abs() from planeNormal.z 2015-03-26 16:20:23 -07:00
Scott Lahteine
53169d96e8 Set temp_meas_ready in set_current_temp_raw 2015-03-26 16:02:15 -07:00
Scott Lahteine
06eb7f5b3c Latest upstream commits 2015-03-26 15:30:51 -07:00
Scott Lahteine
04328d7537 Add zprobe_zoffset in set_bed_level_equation_*
- Also a small tweak to SanityCheck.h
2015-03-26 15:29:16 -07:00
Scott Lahteine
d2e73545ba Merge pull request #1705 from AnHardt/ddt
Avoid warnings in SanitiCheck.h
2015-03-26 15:16:37 -07:00
Scott Lahteine
81aec66d21 Merge pull request #1704 from AnHardt/firstAid1703
First aid for #1703
2015-03-26 15:12:40 -07:00
Scott Lahteine
78090275a9 Fix probe range editing
- Increase the probe offset range to -20…20
- Apply the range limits to the menu item
2015-03-26 13:52:48 -07:00
AnHardt
1ff6df8f9e Avoid warnings in SanitiCheck.h
/SanityCheck.h:107:53: warning: missing terminating ' character
...
2015-03-26 21:30:53 +01:00
AnHardt
ebe5b87c2c < like in the oher compareble loops
to avoid:
Marlin_main.cpp:1790: warning: array subscript is above array bounds.
2015-03-26 21:18:19 +01:00
AnHardt
20f909567a Merge https://github.com/MarlinFirmware/Marlin into tm-utf-minus-kanji
Conflicts:
	README.md
Solved
2015-03-26 10:05:00 +01:00
Christian Bohn
eab5fad539 code formatting 2015-03-26 09:00:34 +01:00
Scott Lahteine
abadeac08d Group zprobe_zoffset with bed leveling 2015-03-25 23:06:33 -07:00
Scott Lahteine
9e8427f253 Merge pull request #1698 from zeuseye/Development
Clean "fromsd" array if not SDSUPPORT
2015-03-25 22:21:57 -07:00
Scott Lahteine
32331faee4 Prettify Bed Level Correction Matrix
- Put + in front of positive values in the output
2015-03-25 22:13:59 -07:00
Scott Lahteine
46601b1c65 Merge pull request #1696 from epatel/mesh-docs
Instructions for Mesh Bed Leveling
2015-03-25 21:57:32 -07:00
Scott Lahteine
f5f4c2b366 Merge branch 'Development' into fixup_leveling
Latest upstream commits
2015-03-25 21:30:49 -07:00
Scott Lahteine
7667023817 Merge pull request #1694 from Wurstnase/fix_z_config
comment #define Z_DUAL_STEPPER_DRIVERS
2015-03-25 21:28:17 -07:00
Scott Lahteine
5eff15c409 Merge branch 'Development' into fixup_leveling
Latest upstream commits
2015-03-25 21:24:38 -07:00
Scott Lahteine
ad05a726c1 Merge pull request #1691 from AnHardt/PID_dt
Move definition of PIDdT back to temperature.h
2015-03-25 21:22:39 -07:00
Scott Lahteine
5261d35737 Fix custom m-code behavior
Don’t set CUSTOM_M_CODE_SET_Z_PROBE_OFFSET if there’s no Z probe
2015-03-25 21:20:50 -07:00
Scott Lahteine
fbf9b21e0c Merge plus fixup zprobe_zoffset
- Make `zprobe_zoffset` conditional
- Fix ConfigurationStore for `zprobe_zoffset`
2015-03-25 21:14:00 -07:00
Scott Lahteine
96b5da7198 Fix up bed leveling code
- Init `zprobe_zoffset`
- Remove `current_position[Z_AXIS] = zprobe_zoffset` lines from the
`set_bed_level_equation_*` functions
- Apply standards to `mesh_bed_leveling` files
- Document `MESH_BED_LEVELING`
2015-03-25 20:36:24 -07:00
Scott Lahteine
02b4f5f9cd Merge pull request #1689 from AnHardt/MAXand161
Fix MAX6675 again and introduce set_current_temp_raw()
2015-03-25 20:23:51 -07:00
AnHardt
f680e509c4 Enclosed error-messages for TEMP_SENSOR_1_AS_REDUNDANT in PSTR() 2015-03-25 23:26:06 +01:00
Victor Torre
d43d47da14 Clean "fromsd" array is not SDSUPPORT
if not have SDSUPPORT the fromsd array is not necessary
2015-03-25 22:05:18 +01:00
AnHardt
ac81b4084f Make variables and function static. 2015-03-25 21:37:15 +01:00
Edward Patel
92a7260fd0 typos 2015-03-25 21:34:55 +01:00
Edward Patel
4a78db29eb Added instructions for Mesh bed leveling 2015-03-25 21:28:05 +01:00
alexborro
55025558dc Implement Dry-Run mode in G29
It just probe all the bed without appliying the matrix.
Useful after a first G29 to check the topology.
2015-03-25 11:12:30 -03:00
wurstnase
a4ad9117dd comment #define Z_DUAL_STEPPER_DRIVERS 2015-03-25 13:46:29 +01:00
chris-bo
2dfd0e5ce7 Update Configuration.h
documentation how to disable buzzer feedback
2015-03-25 12:44:29 +01:00
Christian Bohn
4c3cbc0961 use only one implementation for beeper feedback 2015-03-25 12:23:50 +01:00
AnHardt
01cc97a3c3 Corected condition for PIDdT 2015-03-25 12:08:23 +01:00
AnHardt
94330705c7 Move definition of PIDdT back to temperature.h
make it unconditional
remove all definitions in the 'Configuration.h's
remove form 'Conditionals.h'
2015-03-25 11:51:41 +01:00
AnHardt
dd0067afa6 Fix MAX6675 again and introduce set_current_temp_raw()
to make the temperature-code work again with Arduino 1.0.6.

Sorry could not make an extra block on base level.
2015-03-25 11:08:24 +01:00
Scott Lahteine
80ae160c26 Merge pull request #1688 from AnHardt/ultra-menu-fix
Add the missed {} to END_MENU in ultralcd.cpp
2015-03-25 01:50:48 -07:00
AnHardt
8848b7e9ef Add the missed {} to END_MENU in ultralcd.cpp
what caused an extra update of encoderLine most of the time.
2015-03-25 09:48:21 +01:00
AnHardt
4beffbca69 Make SMALL_INFOFONT configurable.
Tweak the documentation
2015-03-24 23:40:04 +01:00
CONSULitAS
045ea42cc8 Merge remote-tracking branch 'upstream/Development' into Development 2015-03-24 22:52:02 +01:00
alexborro
c2ba5d0c09 Fix ZigZag and Topograph table
ZigZag: Inverted Behavior.. If T supplied, it does not zigzag.
Topograph table: The table was rotated 90º clockwise.
2015-03-24 15:50:31 -03:00
alexborro
0ce3576685 New Feature: Z_DUAL_ENDSTOPS
Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z
steppers - Let's call them Z stepper and Z2 stepper.
That way the machine is capable to align the bed during home, since both
Z steppers are homed.
There is also an implementation of M666 (software endstops adjustment)
to this feature.
After Z homing, this adjustment is applied to just one of the steppers
in order to align the bed.
One just need to home the Z axis and measure the distance difference
between both Z axis and apply the math: Z adjust = Z - Z2.
If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it
is.. think about it) and the Z adjust would be positive.
Play a little bit with small adjustments (0.5mm) and check the
behaviour.
The M119 (endstops report) will start reporting the Z2 Endstop as well.
2015-03-24 14:06:44 -03:00
AnHardt
c686069ccd Revert "Remove 6x9 font"
This reverts commit e6cb8ee188.

Conflicts:
	Marlin/dogm_lcd_implementation.h
Confilkt solved
Needs rework.
2015-03-24 17:13:05 +01:00
AnHardt
b00a531df8 Revert "Removed now unneded FONT_STATUSMENU"
This reverts commit 8c5bb38748.
2015-03-24 17:01:56 +01:00
AnHardt
9d589cbb2a Merge https://github.com/MarlinFirmware/Marlin into tm3-utf-minus-kanji
Conflicts:
	Marlin/example_configurations/delta/generic/Configuration.h
	Marlin/example_configurations/delta/kossel_mini/Configuration.h
	Marlin/language.h

Conflicts solved
2015-03-24 16:59:15 +01:00
Scott Lahteine
512a0056a9 Merge pull request #1658 from thinkyhead/planner_oh_planner
Cleanup of planner code
2015-03-23 22:21:27 -07:00
Scott Lahteine
8db4fd7177 Merge branch 'Development' into planner_oh_planner
Latest upstream commits
2015-03-23 22:08:50 -07:00
Scott Lahteine
c6df5f4d85 small text correction 2015-03-23 21:55:03 -07:00
Scott Lahteine
8dd94ccf58 Initial list from perusing the commit logs 2015-03-23 21:54:06 -07:00
Scott Lahteine
4afe50b920 Merge pull request #1651 from thinkyhead/config_testing
Configuration sanity-checking
2015-03-23 21:23:13 -07:00
Scott Lahteine
0d81abe1c9 Merge branch 'Development' into config_testing
Latest upstream commits
2015-03-23 21:13:04 -07:00
Scott Lahteine
01740fd9c6 Merge branch 'Development' into planner_oh_planner
Latest upstream commits
2015-03-23 21:12:36 -07:00
Scott Lahteine
e2576b1ac5 Merge pull request #1674 from thinkyhead/fix_temperature_minmax
Cleanup temperature code
2015-03-23 21:10:03 -07:00
Scott Lahteine
8b004d26c1 Merge pull request #1681 from thinkyhead/marlin_configurator
A logo for the Marlin wiki
2015-03-23 21:02:38 -07:00
Scott Lahteine
fc53e43de6 Don't test raw temp for MAX6675
- Remove test of raw temp for thermistor 0 when using MAX6675
- Longer `raw_temp_value` array for `TEMP_SENSOR_1_AS_REDUNDANT`
2015-03-23 20:55:48 -07:00
Scott Lahteine
03fa9fae9f Merge branch 'Development' into fix_temperature_minmax
Latest upstream commits
2015-03-23 20:42:48 -07:00
Scott Lahteine
b1a7f74ee4 A logo for the Marlin wiki 2015-03-23 18:25:31 -07:00
Scott Lahteine
2606da9e81 Merge pull request #1678 from Nutz95/Development
Report changes from previous PR (#1670) from old code base including :
2015-03-23 15:29:51 -07:00
Scott Lahteine
1fac388664 Revert measurement loop 2015-03-23 15:18:22 -07:00
CONSULitAS
703f3b38c4 Merge remote-tracking branch 'upstream/Development' into Development 2015-03-23 17:40:49 +01:00
nicolas-rambaud
37cde8a191 Report changes from previous PR from old code base including :
I've updated the minimum values from the LCD.
It has been a while that i want to at least fix this.
I have an inductive probe and often i need to set my zOffset to something lower than 0.5.
With the current implementation, the default LCD value is set to 0.5 for some reason.
On my case i need to be able to set it down to 0.0 as my inductive probe can be lower than 0.5.
Before with the LCD we couldn't change this value below 0.5. We had to flash the firmware every time which was painful.
Now we are able to change this value down to 0.0 if needed.
I've also changed the minimum value for Z min acceleration.
In the default configuration it's set to 25 but on the LCD the minimum was 100 which is not coherent.
I've changes the minimum to 10. On this axis, depending on the mechanics/motor drivers we might require very low acceleration, so i guess 10 is somehow realistic.
2015-03-23 12:29:12 +01:00
Scott Lahteine
b26a3ea02c Merge pull request #1662 from josla972/refactor_scara
Refactor SCARA calibration. Save some lines of code and possibly ROM.
2015-03-23 00:51:18 -07:00
Scott Lahteine
36474be8eb Merge pull request #1675 from Wurstnase/Development
fix bad insertion config again
2015-03-23 00:33:56 -07:00
wurstnase
e6f6c6e3a1 fix bad insertion config again 2015-03-23 08:32:48 +01:00
Scott Lahteine
6bdee87be3 Cleanup temperature code
- Get rid of unused temp states in the ISR, resulting in more frequent
temperature reading with fewer sensors
- Shrink code slightly in min/max testing
2015-03-23 00:27:29 -07:00
Scott Lahteine
34a41648ab Merge branch 'Development' into planner_oh_planner
Latest upstream commits
2015-03-22 23:40:29 -07:00
Scott Lahteine
4fbb80567e Get upstream commits 2015-03-22 23:07:22 -07:00
Scott Lahteine
f65f61fa72 Merge pull request #1672 from thinkyhead/fix_probeaction
Fix mangled probe_pt calls
2015-03-22 22:40:52 -07:00
Scott Lahteine
7717e1ce33 Fix bad insert in configuration 2015-03-22 21:48:46 -07:00
Scott Lahteine
146501215f Fix mangled probe_pt calls
- Address issue #1669
- Remove the TOPO_ORIGIN configuration setting
2015-03-22 21:45:20 -07:00
Scott Lahteine
e0a42d3f9a Merge pull request #1666 from maverikou/fix_1507
Fix 1507
2015-03-22 21:25:05 -07:00
maverikou
15345cc249 Corrected Z_PROBE_ALLEN_KEY behaviour. 2015-03-22 13:54:51 +02:00
maverikou
0f034dd97e Clean up Z_RAISE_AFTER_PROBING to work the same in all code paths except Z_PROBE_SLED. 2015-03-22 13:54:45 +02:00
maverikou
6c96f32069 Blind fix for #1507 2015-03-22 13:54:21 +02:00
Josef Larsson
379348487e Removed malplaced comment. 2015-03-22 12:21:31 +01:00
Scott Lahteine
8bd6e37b21 Merge pull request #1661 from thinkyhead/G92_no_offset
Don't add home offsets in G29
2015-03-21 16:49:06 -07:00
Scott Lahteine
88ed5268d2 Merge pull request #1663 from thinkyhead/fix_dual_z_1659
Fix compile error with `*_DUAL_STEPPER_DRIVERS`
2015-03-21 16:48:08 -07:00
Scott Lahteine
582cd780cd Fix compile error with *_DUAL_STEPPER_DRIVERS
- Patch up macros in stepper.cpp
2015-03-21 16:43:47 -07:00
Josef Larsson
9b3462f73f Refactor SCARA calibration. Save some lines of code and possibly ROM. 2015-03-22 00:37:24 +01:00
Scott Lahteine
691e753cc3 Don't add home offsets in G29
- Address #1262 by leaving values as set
- Rename `add_homing` to `home_offset`
2015-03-21 16:30:02 -07:00
Scott Lahteine
88e81a4804 Latest upstream commits, plus fixes
- Also add Manual Bed Leveling to the rest of the configs
2015-03-21 16:12:57 -07:00
Scott Lahteine
15eb5d35a2 Merge branch 'Development' into config_testing
Latest upstream commits
2015-03-21 15:42:45 -07:00
Scott Lahteine
19df90622b Include Conditionals.h file in update 2015-03-21 15:40:20 -07:00
Scott Lahteine
9b639b4135 Merge pull request #1619 from epatel/manual-bed-leveling+mesh-bed-level
Manual bed leveling + mesh bed leveling
2015-03-21 15:39:42 -07:00
Scott Lahteine
2c9bd15625 Move LCD items to Conditionals.h
- `Conditionals.h` is included twice, setting LCD values the first time
2015-03-21 15:24:57 -07:00
Scott Lahteine
a96bfee76a Merge pull request #1660 from thinkyhead/fix_temperature_minmax
Fix temperature min/max test
2015-03-21 15:04:42 -07:00
Scott Lahteine
63abeaff38 Merge branch 'Development' into config_testing
Latest upstream commits
2015-03-21 15:03:06 -07:00
Scott Lahteine
3703694e30 Fix temperature min/max test
- Base tests on all thermistors/thermocouples, not just heater 0
2015-03-21 14:23:43 -07:00
Edward Patel
3d0a060a7a Added G29 command 2015-03-21 14:50:47 +01:00
Edward Patel
c516747847 Merge branch 'Development' into manual-bed-leveling+mesh-bed-level 2015-03-21 14:49:52 +01:00
Scott Lahteine
b5970492e2 Merge pull request #1656 from AnHardt/menufix
Fix for menus failing to scroll
2015-03-20 21:09:26 -07:00
Scott Lahteine
af14c684b5 Minor optimizations to planner code
- Prefetch values used more than once
2015-03-20 20:57:06 -07:00
Scott Lahteine
13fbf42d95 Cleanup of planner code
- Use named axis indexes, `X_AXIS` etc.
- Replace `block.steps_A` with block.steps[A]`
- Replace `A_segment_time` with `segment_time[A]`
- Add `A_AXIS`, `B_AXIS` for `COREXY` axes
- Conditional compile based on `EXTRUDERS`
- Add BLOCK_MOD macro for planner block indexes
- Apply coding standards to `planner.h` and `planner.cpp`
- Small optimizations of planner code
- Update `stepper.cpp` for new `block` struct
- Replace `memcpy` with loops, let the compiler unroll them
- Make `movesplanned` into an inline function
2015-03-20 20:42:49 -07:00
AnHardt
64e3d33893 Fix shrinked menucode
by updating 'encoderPosition' in END_MENU() line 1.
2015-03-20 23:36:14 +01:00
Edward Patel
a7e89d4cfa Merge branch 'Development' into manual-bed-leveling+mesh-bed-level 2015-03-20 15:46:01 +01:00
AnHardt
08856d9615 Merge branch 'tm2-utf-minus-kanji' into tm-utf-minus-kanji
Conflicts:
	Marlin/ultralcd_implementation_hitachi_HD44780.h

Cleaned!
2015-03-20 14:19:30 +01:00
AnHardt
8c5bb38748 Removed now unneded FONT_STATUSMENU 2015-03-20 14:12:12 +01:00
Scott Lahteine
0d869703ca Merge pull request #1655 from thinkyhead/fix_count_direction_init
Fix count_direction initializer
2015-03-20 05:45:33 -07:00
Scott Lahteine
2176a22d42 Fix count_direction initializer
- Addressing #1625
2015-03-20 05:45:05 -07:00
AnHardt
e72cb3e45d Merge https://github.com/MarlinFirmware/Marlin into tm2-utf-minus-kanji
Conflicts:
	Marlin/dogm_lcd_implementation.h
	Marlin/ultralcd_implementation_hitachi_HD44780.h

Fix merge conflicts 2
2015-03-20 13:35:47 +01:00
Scott Lahteine
cb6942d4a7 Merge branch 'Development' into config_testing
Get upstream commits
2015-03-20 05:30:36 -07:00
AnHardt
6bfccaf99e Merge https://github.com/MarlinFirmware/Marlin into tm2-utf-minus-kanji
Conflicts:
	Marlin/dogm_lcd_implementation.h
	Marlin/ultralcd_implementation_hitachi_HD44780.h
Fixed conflicts 1
2015-03-20 13:08:18 +01:00
Scott Lahteine
e3f04c876a Merge pull request #1653 from thinkyhead/lcd_menu_hilite
Fix hiliting of edit items in LCD menus
2015-03-20 04:37:20 -07:00
Scott Lahteine
5644ad6809 Fix hiliting of edit items 2015-03-20 04:29:35 -07:00
Scott Lahteine
63d5d28085 Merge branch 'Development' into config_testing
Latest upstream changes
2015-03-20 04:15:18 -07:00
Scott Lahteine
526a755a66 Merge pull request #1652 from AnHardt/PIDdebug
PID debug
2015-03-20 04:14:08 -07:00
Scott Lahteine
a1c240b0a4 Delta supports some auto bed leveling options 2015-03-20 04:04:45 -07:00
Edward Patel
5112cf8422 Added comment for the EEPROM storage 2015-03-20 11:46:47 +01:00
Edward Patel
4619d80524 Merge branch 'Development' into manual-bed-leveling+mesh-bed-level 2015-03-20 11:45:06 +01:00
Scott Lahteine
199151a4ed Merge pull request #1650 from AnHardt/beautify
Beautivy statusscreen
2015-03-20 03:38:02 -07:00
Scott Lahteine
2424713a8f Merge pull request #1640 from AnHardt/warning6
codepos not used in gcode_M28()
2015-03-20 02:58:00 -07:00
Scott Lahteine
b6d381f863 Divide up Conditionals to get LCD items early 2015-03-20 02:50:28 -07:00
AnHardt
e85061d20d Added changes to the 'new' Configuration.h s 2015-03-20 10:36:29 +01:00
Scott Lahteine
33c7c6e11d Conditionals.h requires Arduino.h 2015-03-20 01:27:14 -07:00
Scott Lahteine
8ade04b78e Felix and Hephestos configs
- Not sure why these are showing as all new
2015-03-19 22:25:05 -07:00
Scott Lahteine
670006b919 Remove invariant code from Configurations
- Add `Conditionals.h` with calculated configuration values
- Add `SanityCheck.h` with checks for configuration errors
- Remove equivalent code from all configurations
- Move error checks from some sources to `SanityCheck.h` also
- Fix initialization of count_direction in stepper.cpp
2015-03-19 22:22:23 -07:00
Edward Patel
a61f679568 Merge branch 'Development' into manual-bed-leveling+mesh-bed-level 2015-03-20 02:28:35 +01:00
Edward Patel
c87faa69ed Shortened mesh_plan_buffer_line() 2015-03-20 02:18:49 +01:00
AnHardt
47c1ea72af Merge https://github.com/kieranc/Marlin into PIDdebug
Conflicts:
	Marlin/temperature.cpp

Cleaned merge conflict.

Codeposition had changed.
Variable pid_input had vanished.

Signed-off-by: AnHardt <github@kitelab.de>
2015-03-20 00:07:36 +01:00
AnHardt
f1d3d1524d Merge branch 'optimize_menu_code' of https://github.com/thinkyhead/Marlin into beautify
Conflicts:
	Marlin/dogm_lcd_implementation.h

solved merge conflict.
2015-03-19 22:51:22 +01:00
Scott Lahteine
0858fba192 Merge pull request #1620 from thinkyhead/optimize_menu_code
Reduce size of menu code
2015-03-19 14:35:26 -07:00
AnHardt
fa889cd6e1 Beautivy statusscreen
by shifting things some pixels around
2015-03-19 22:13:37 +01:00
Scott Lahteine
7279e4f82f Small code tweaks re lcd.print 2015-03-19 14:01:33 -07:00
Scott Lahteine
90ba61b9b8 Include indicator for new drawmenu_generic
In the new method we pass the character that should be used for
selected state, not the character to print always.
2015-03-19 13:49:06 -07:00
Scott Lahteine
15d29efad5 Pass sel to lcd_implementation_mark_as_selected
- Pass selected state directly to lcd_implementation_mark_as_selected
- Rename sel function parameter
- Include a minor fix for SdBaseFile.h
2015-03-19 13:40:36 -07:00
Scott Lahteine
a547dc2148 Merge branch 'Development' into optimize_menu_code
Get upstream changes
2015-03-19 13:31:37 -07:00
CONSULitAS
9c1f6e7ac7 Merge remote-tracking branch 'upstream/Development' into Development 2015-03-19 18:49:34 +01:00
alexborro
e650d4044e Fix "Stop Print" function in the LCD menu
When one hit "Stop Print" option in LCD menu, the command buffer was not
cleared. The printer keep moving until the buffer has been emptied.
Actually I could not clear the command buffer as well.. I don't know
why, it doesnt work as expected.
I need to implement a routine inside Stepper ISR to handle such
situation.
2015-03-19 14:16:18 -03:00
AnHardt
eff6a2bd2e Clean out a warning
in ultralcd_implementation_hitachi_HD44780.h lcd_print( about array index.
2015-03-19 12:58:43 +01:00
AnHardt
e917477fec Merge https://github.com/MarlinFirmware/Marlin into tm-utf-minus-kanji
Conflicts:
	Marlin/dogm_lcd_implementation.h
	Marlin/fonts/make_fonts.bat

Claerd conflicts with my own #1621. (His was easy. :-) )

corrected typo in fonts/README.fonts

Applied changes to the new delta-configurations
 and deletet there some extra whitespace at the line-endings.
2015-03-19 12:35:43 +01:00
AnHardt
ae01a6b5f2 Make use of codepos.
Saves one addition.
Needs one pointer on the stack.

Don't know if this is a go trade.
2015-03-19 09:45:16 +01:00
Scott Lahteine
a534ac197a Merge pull request #1621 from AnHardt/remove--6x9-font
Remove 6x9 font
2015-03-18 23:10:42 -07:00
Scott Lahteine
80e0ee10ca Merge pull request #1631 from AnHardt/iss1593
Decrease KILL_DELAY
2015-03-18 19:10:38 -07:00
Scott Lahteine
4ce79920e5 Merge pull request #1635 from AnHardt/warnings1
Negative times are unlikly
2015-03-18 19:10:12 -07:00
Scott Lahteine
76127b8a55 Merge pull request #1630 from Wurstnase/fix_g29
optional parameters must be named when ignoring order
2015-03-18 19:09:40 -07:00
Scott Lahteine
be3f2dc1d9 Merge pull request #1636 from AnHardt/warning2
lcd_control_retract_menu() is conditional.
2015-03-18 19:09:05 -07:00
Scott Lahteine
8d396584bf Merge pull request #1637 from AnHardt/warning3
lcd_autostart_sd() has two conditions.
2015-03-18 19:08:33 -07:00
Scott Lahteine
8664c6d465 Merge pull request #1638 from AnHardt/warning4
delta[3] not used when DELTA not defined.
2015-03-18 19:07:55 -07:00
Scott Lahteine
10711ccc6a Merge pull request #1639 from AnHardt/warning5
G4 could wait for an undefined time
2015-03-18 19:07:14 -07:00
Edward Patel
28c91deb5c EEPROM saving of z_values.
Tried to make it a little intelligent.
2015-03-18 21:07:07 +01:00
Edward Patel
240b5cfe04 Merge branch 'Development' into manual-bed-leveling+mesh-bed-level 2015-03-18 19:19:46 +01:00
alexborro
4521f6655b Restore "S" parameter of M204 for retrocompatibility. 2015-03-18 12:19:30 -03:00
alexborro
5ddb8d94e2 Update Documentation related to M204 2015-03-18 11:09:10 -03:00
AnHardt
f8c4d43886 delta[3] is used with SCARA
Shoot in the dark.
2015-03-18 12:14:49 +01:00
AnHardt
72a9fed4fb codepos not used in gcode_M28()
Got:
Marlin_main.cpp:2567: warning: unused variable 'codepos'

Needs revision.
Don't now how this should look like.
2015-03-18 11:41:14 +01:00
AnHardt
b94dd33641 G4 could wait for an undefined time
Got:
Marlin_main.cpp:1689: warning: 'codenum' may be used uninitialized in this function

And indeed codenum is undefined when no parameter is given.
2015-03-18 11:23:41 +01:00
AnHardt
e90985a4e8 delta[3] not used when DELTA not defined.
got:
Marlin_main.cpp:387: warning: 'delta' defined but not used

Compiles cleaner when definition is removed.
2015-03-18 11:11:49 +01:00
AnHardt
5099b86ad4 lcd_autostart_sd() has two conditions.
got:
ultralcd.cpp:408: warning: 'void lcd_autostart_sd()' defined but not used
2015-03-18 10:51:13 +01:00
AnHardt
5d81c779cc lcd_control_retract_menu() is conditional.
Got:
ultralcd.cpp:64: warning: 'void lcd_control_retract_menu()' declared 'static' but never defined
2015-03-18 10:39:59 +01:00
AnHardt
450b89e63c Negative times are unlikly
While bunting an other bug I stumbled across:
ultralcd.cpp:1250: warning: comparison between signed and unsigned
integer expressions
Changed to the type of lcd_next_update_millis.
2015-03-18 10:31:34 +01:00
AnHardt
d1658eebfc Decrease KILL_DELAY
Users hat to press kill-button for unexpexted lon times.
See #1593
2015-03-18 01:45:42 +01:00
Wurstnase
00adb2a6c1 optional parameters must be named when ignoring order 2015-03-18 01:02:29 +01:00
Edward Patel
0d43898a22 Remove of mesh_plan_buffer_line parameter reference (e) 2015-03-17 22:55:29 +01:00
Edward Patel
8067a985ce Merge branch 'Development' into manual-bed-leveling+mesh-bed-level
Fixed conflicts:
	Marlin/planner.h
2015-03-17 22:48:08 +01:00
alexborro
f5f99c4883 Merge pull request #1626 from Wurstnase/fix_backslash_macro
fix macro
2015-03-17 18:34:05 -03:00
wurstnase
05333f61b7 fix macro 2015-03-17 12:50:44 +01:00
AnHardt
1883e1bb60 Applied thinkyheads corrections from 2015-03-17 2015-03-17 11:23:44 +01:00
AnHardt
be79235ef2 Add new (cleaner) Marlin font
with sources in /fonts
2015-03-17 10:33:02 +01:00
Scott Lahteine
89fe77468d Merge pull request #1586 from maverikou/delta_auto_bed_level
Delta auto bed level (Updated PR)
2015-03-16 18:17:11 -07:00
CONSULitAS
2b1ddc0413 Merge remote-tracking branch 'upstream/Development' into Development 2015-03-16 22:12:17 +01:00
alexborro
cb676cdf39 Fix CoreXY homing bug introduced by PR #1606
The Check Endstop logic must be:

if (current_block->steps_x != current_block->steps_y || (TEST(out_bits,
X_AXIS) == TEST(out_bits, Y_AXIS)))
if (TEST(out_bits, X_HEAD))

not

if (TEST(out_bits, X_HEAD) && (current_block->steps_x !=
current_block->steps_y || (TEST(out_bits, X_AXIS) == TEST(out_bits,
Y_AXIS))))

Same applies for Y axis.
2015-03-16 16:31:25 -03:00
AnHardt
8a29dd4839 Cleaned typo in dogm_lcd_implementation.h 2015-03-16 20:18:48 +01:00
AnHardt
7e69f72db6 Moved font directory. Updated README.fonts 2015-03-16 17:27:27 +01:00
AnHardt
00b162a993 Merge remote-tracking branch 'origin/utf-kanji' into tm-utf-minus-kanji
Conflicts:
	Marlin/language.h
Conflict cleaned
2015-03-16 17:13:49 +01:00
AnHardt
e38dd5f030 Merge remote-tracking branch 'origin/utf' into utf-kanji 2015-03-16 17:00:54 +01:00
AnHardt
08e4651ece Corrected cyrillic font again
Thank you @Nprod.
2015-03-16 16:59:14 +01:00
Wurstnase
752c804677 remove offset, add minimum scan area 2015-03-16 15:13:16 +01:00
Wurstnase
14f0250853 allow negative values
and some more comments
2015-03-16 14:26:59 +01:00
AnHardt
e6cb8ee188 Remove 6x9 font
in dogm_lcd_implementation.h
by using standard font and
shifting down temperature displays by one pixel
Saves 2300 bytes.
2015-03-16 11:18:27 +01:00
maverikou
e93eb3e8d3 Update test 2015-03-16 09:16:00 +02:00
maverikou
b8ae3feb9e Update test 2015-03-16 09:03:15 +02:00
maverikou
3570447ded Fix Z_RAISE_AFTER_PROBING 2015-03-16 08:35:49 +02:00
maverikou
8a739b6fba Merge branch 'Development' into delta_auto_bed_level
Conflicts:
	Marlin/Marlin_main.cpp
2015-03-16 08:24:26 +02:00
Scott Lahteine
cbe4496123 Merge pull request #1616 from thinkyhead/topo_map_origin
Move TOPO_ORIGIN define to Configuration.h
2015-03-15 22:55:54 -07:00
Scott Lahteine
7629c4f05c Cleanup for menu optimization
- Compare pr_char to space
- Fewer calls to lcd_strlen
2015-03-15 22:54:54 -07:00
Scott Lahteine
3405f85a6a Reduce size of menu code
- Get rid of _selected functions, passing selected state instead
2015-03-15 22:02:33 -07:00
Edward Patel
e983a5ab92 Disable option. Enable for use/test. 2015-03-16 02:50:11 +01:00
Edward Patel
f34b9c83d1 Added comment about MESH_NUM axis points. 2015-03-16 01:48:46 +01:00
Scott Lahteine
a686c9878f Move TOPO_ORIGIN define to Configuration.h
- Addressing issue #1608
2015-03-15 15:49:36 -07:00
Edward Patel
8005d22c81 Added menu option for bed leveling. 2015-03-15 23:24:32 +01:00
Edward Patel
0e51e53813 WIP. Adding bed leveling code. 2015-03-15 23:24:32 +01:00
Scott Lahteine
d0d12962e0 Merge pull request #1615 from AnHardt/fix-1611
Fix #1611
2015-03-15 15:19:02 -07:00
Scott Lahteine
3f34d9d44e Merge pull request #1614 from AnHardt/fix-1612
Fix for #1612
2015-03-15 15:18:24 -07:00
AnHardt
f0dcea7e14 Fix #1611
Warning: suggest parentheses around comparison in operand of &

pretty much helped.
2015-03-15 22:52:50 +01:00
AnHardt
28b1c37dea Fix for #1612 2015-03-15 21:35:33 +01:00
CONSULitAS
a8c1bdabd2 Update: readme.md for K8200 example
* readme.md: updated typo and URLs
2015-03-15 17:25:31 +01:00
AnHardt
2f374f1465 Removed Kanji. 2015-03-15 16:44:37 +01:00
Scott Lahteine
5efc798642 Merge pull request #1546 from apollo-ng/pr-felix
Added support for Felix 2.0/3.0 printers
2015-03-15 07:52:22 -07:00
Scott Lahteine
b83e52e50f Merge pull request #1467 from thinkyhead/marlin_configurator
Configurator utility
2015-03-15 07:49:19 -07:00
Scott Lahteine
7bc77dc134 Merge pull request #1583 from galexander1/m404fix
M404 should not use 'N' address as parameter because 'N' is reserved
2015-03-15 07:47:30 -07:00
Scott Lahteine
3aadaa7677 Merge pull request #1609 from thinkyhead/fix_fan_pin_issue
Fix controllerFan() code
2015-03-15 07:33:34 -07:00
Scott Lahteine
b80ed51fcc Fix controllerFan() code
- Add support for 4th extruder
- Fix parentheses matching
- Apply coding standards
- Address issue mentioned at #1575
2015-03-15 06:55:31 -07:00
Scott Lahteine
4b50205f11 Merge branch 'Development' into marlin_configurator
Latest upstream changes
2015-03-15 06:37:32 -07:00
Scott Lahteine
bb4cb1b15a Merge pull request #1606 from thinkyhead/cleanup_stepper
Cleanup of stepper.cpp
2015-03-15 06:05:08 -07:00
Scott Lahteine
63f41f56f8 Merge pull request #1607 from chris-bo/Development
Update ultralcd_st7920_u8glib_rrd.h
2015-03-15 01:04:40 -07:00
Scott Lahteine
4eabd80025 Fix babystep for extruder_duplication 2015-03-14 18:31:25 -07:00
alexborro
d3259d0dba Merge pull request #1581 from msutas/Development
Filament Runout Sensor Feature
2015-03-14 18:35:20 -03:00
AnHardt
25c4f17e5d Corrected Cyrillic fonts. Round II. 2015-03-14 15:10:45 +01:00
chris-bo
b73ba26b23 Update ultralcd_st7920_u8glib_rrd.h 2015-03-14 14:31:00 +01:00
Scott Lahteine
901c3c5392 Merge pull request #1603 from thinkyhead/issue_1523_compiler_error
Simplify manage_heater
2015-03-14 05:20:18 -07:00
Scott Lahteine
c37f7d15c9 - Rename WRITE_E_STEP for consistency
- Add BIT and TEST macros
- Add _APPLY_ macros to stepper.cpp to help with consolidation
- Consolidate code in stepper.cpp using macros
- Apply standards in stepper.cpp
- Use >= 0 instead of > -1 as a better semantic
- Replace DUAL_Y_CARRIAGE with Y_DUAL_STEPPER_DRIVERS
2015-03-14 04:28:22 -07:00
AnHardt
44a205d9d9 Corrected Cyrillic fonts.
Cleaned typo in language_test.h Cyrillic part.
2015-03-14 12:27:47 +01:00
chrono
4d878b9bac Fixed path typos in README 2015-03-14 10:18:12 +00:00
chrono
12ec557a75 Added DEFAULT_TRAVEL_ACCELERATION 2015-03-14 10:14:13 +00:00
chrono
1d25d510bc Upstream Merge Fixes 2015-03-14 09:48:30 +00:00
chrono
a89d690b77 Merge remote-tracking branch 'upstream/Development' into pr-felix 2015-03-14 09:25:43 +00:00
Scott Lahteine
cb57fc727d Declare pid_output for PIDBEDTEMP 2015-03-13 20:19:51 -07:00
Scott Lahteine
3d6deb9bdf Simplify manage_heater
- Make separate get_pid_output(e) and get_pid_output_bed() function
- Reduce size of manage_heater function
- Hopefully work around linker errors
2015-03-13 19:49:41 -07:00
AnHardt
730497aaa1 Make use of ligatures in language_kana_utf8.h 2015-03-13 19:47:40 +01:00
AnHardt
3240d89f7d Logic cleanup in utf_mapper. 2015-03-13 19:45:10 +01:00
alexborro
2f3c77b751 Fix decimal places in G29 Bed Equation Coeficients 2015-03-13 14:39:41 -03:00
AnHardt
ace3c62a1c Argh! Did not hit save 2015-03-13 15:26:01 +01:00
AnHardt
bfb8a53156 Documentation reformating
The last for today - i hope.
2015-03-13 15:23:30 +01:00
AnHardt
1feb71895b And an other one 2015-03-13 15:16:55 +01:00
AnHardt
9518b1c873 And another update for the documentation. 2015-03-13 14:59:53 +01:00
AnHardt
d9b3232e94 Another update for the documentation. 2015-03-13 14:55:15 +01:00
AnHardt
09838dc948 reformat documentation 2015-03-13 14:46:15 +01:00
AnHardt
96f8d20f2f Change selection logic another time
Automatic selection was to unflexible.

Updated documentation

Updated language files to new logic and documentation.

Updated bdf2u8g.exe
2015-03-13 14:26:58 +01:00
Wurstnase
76da32b567 add hash-bang for python3 2015-03-13 07:44:20 +01:00
Wurstnase
2e7ba44633 some renaming for readability 2015-03-13 07:31:27 +01:00
Scott Lahteine
352aa3f4c5 Merge branch 'Development' into marlin_configurator
Latest upstream
2015-03-12 17:12:51 -07:00
Scott Lahteine
196db5720e Merge pull request #1598 from thinkyhead/temp_errors
Fix missing temp_error declarations
2015-03-11 22:18:49 -07:00
Scott Lahteine
e3ca9137b5 Fix missing temp_error declarations
- Fix for #1591 replacing #1595
2015-03-11 16:38:42 -07:00
Wurstnase
0620267ebb g29 auto-mode for the new G29 LRFB
short:
this script scans the first few lines from a gcode. If the line between 2 different z are greater than min_g1 this is our first layer. On this layer we search the min and max values of X and Y. With an offset we write that in a new file.
2015-03-11 23:53:28 +01:00
Wurstnase
3898ace246 Merge pull request #2 from MarlinFirmware/Development
actual
2015-03-11 23:47:41 +01:00
Scott Lahteine
08694339eb Merge branch 'Development' into marlin_configurator
Conflicts:
	Marlin/Configuration.h
2015-03-11 15:47:32 -07:00
Scott Lahteine
e4d77a6313 Merge pull request #1554 from 2PrintBeta/Development
Macro indirection for stepper drivers + Support for TMC26X and L6470 Stepper Drivers
2015-03-11 15:31:57 -07:00
Mehmet Sutas
b373826428 Merge pull request #2 from MarlinFirmware/Development
update
2015-03-12 00:07:39 +02:00
AnHardt
5bafb1fe1f Add user test to language_test.h and make it default.
Improve description in Configuration.h
2015-03-11 20:46:52 +01:00
alexborro
c0b6075f77 Fix max acceleration limits in planner
The max acceleration limiting was in wrong place.
2015-03-11 15:08:11 -03:00
Bo Herrmannsen
c7067edddf initial empty change log 2015-03-11 18:56:46 +01:00
alexborro
9157cbd8f3 Add Travel Acceleration and change the M204 options
Added option to set Travel Acceleration (non printing moves).
The M204 options was a non sense (S for printing moves and T for retract
moves).

It has been changed to:
P = Printing moves
R = Retract only (no X, Y, Z) moves
T = Travel (non
printing) moves

I will add this info o G-Code wiki in reprap.org. I also advise to put
this info in Marlin next version changelog.
2015-03-11 13:19:02 -03:00
alexborro
888cf161bd fix travel speed option for G29
I forgot to enclousure the variable with #ifdef
2015-03-11 10:03:32 -03:00
alexborro
af63b54562 Add travel speed option to G29 command line 2015-03-11 09:51:56 -03:00
AnHardt
817751d4b9 Added new languages, the Cyrillic display and a test language to find out your hardware. 2015-03-11 11:10:35 +01:00
AnHardt
c4b0087f7a Insert utf_mapper.h
Top -> down
- Decide what output function is to use.
- Precautions. If non of the DISPLAY_CHARSET_HD44780's is selected fall back to Japanese.
- When we are not on the dogms setup a mapping table depending on display type and mapper.
- If we are on dogm we use ONE To ONE mapping - except kanji.
- select and define one of the mapping functions.
2015-03-11 10:55:16 +01:00
AnHardt
b60761bcff Removed some messages that shouldn't be translated in the Japanese files.
And made falback to kana work.
2015-03-11 10:30:38 +01:00
Bo Herrmannsen
749e5b9b84 updated milestone link 2015-03-11 10:30:03 +01:00
AnHardt
97ae3c5c6a Corected some errors inrtoduced by a faild global replacement. 2015-03-11 10:26:36 +01:00
Bo Herrmannsen
33fe89f539 removed irc archive link
removed the link as the software i had did not work, nor does anyone hardly use irc chat but just hang out there
2015-03-11 10:24:56 +01:00
AnHardt
ae76b1e8a8 Changes in dogm_lcd_implementation.h in detail.
Top -> down
- We don't need the old Marlion_font package any more - we made new.
- But we need information about configured fonts and the mappers.
- We support Cyrillic now.
- LCD_CLASS is not used in this file. LiquidCrystalRus.h is deleted anyway.
- define some fonts
- BIG_EDIT_FONT works only together with western languages.
- Select a matching FONT for the MENUE depending on the defined language.
- Number the different font-types. Wanted to avoid to store complete font-structures when changing fonts back and forth.
- Marlin special symbols are now at the lower end - like in 'ultralcd_implementation_hitachi_HD44780.h'
- insert the new remembering setFont function.
- insert the new counting lcd_print functions.
- make use of the new setFont and lcd_print functions.
- On some places redefined one character long strings with chars to avoid overhead and reduce warnings.
2015-03-10 22:34:56 +01:00
alexborro
5bf42066fa Fix typo in configuration.h 2015-03-10 15:06:34 -03:00
alexborro
8a4b62d081 Set more regular setup in configuration.h 2015-03-10 14:41:21 -03:00
AnHardt
255ca68123 Changes in ultralcd_implementation_hitachi_HD44780.h in detail
Top -> down:
We don't need LiquidCrystalRus.cpp and LiquidCrystalRus.h any more. Functionality is now in utf_mapper.h
Comment on LCD_STR_BEDTEMP about behaviour in strings.
Change LCD_STR_ARROW_RIGHT from "\x7E" to ">" because "\x7E" is only ARROW_RIGHT on displays with DISPLAY_CHARSET_HD44780_JAPAN.
Introduce the counting UTF8 enabled lcd_print functions.
Replace the old lcd.print functions and make use of them.
A bit of reformatting around the changes.
2015-03-10 18:30:09 +01:00
alexborro
60ceca1bc1 Add speed configuration for home-bumping movement 2015-03-10 14:08:32 -03:00
AnHardt
6fc2ccd568 Make use of new remenbering fontswitch. 2015-03-10 18:04:03 +01:00
AnHardt
0f26f3abf2 Add a test_language.
Will show the compleet utf8 or ASCII charset
To se the second half of ASCII click on "01234..."
2015-03-10 17:59:28 +01:00
AnHardt
6d575b1bc7 Add some documentation. 2015-03-10 17:55:59 +01:00
AnHardt
901cf203fe Add legal stuff to marlin_kanji.h 2015-03-10 17:49:16 +01:00
AnHardt
2d5134b0ed Introduce - clean - prepae language files 2015-03-10 17:46:25 +01:00
domonoky
d813090d90 Merge remote-tracking branch 'remotes/upstream/Development' into Development
Conflicts:
	Marlin/Marlin_main.cpp
	Marlin/stepper.cpp
2015-03-10 10:46:37 +01:00
Scott Lahteine
c321c97f35 Merge pull request #1584 from galexander1/stringcleanup
fix a handful of cases where strtod() was cast to int, instead of just using strtol()
2015-03-10 01:48:30 -07:00
maverikou
53abc5e2f1 Merge branch 'Development' into delta_auto_bed_level 2015-03-09 22:28:57 +02:00
Mehmet Sutas
956fb2d278 Merge pull request #1 from MarlinFirmware/Development
update
2015-03-09 11:05:49 +02:00
Scott Lahteine
978dadf806 Base64 decode AJAX-fetched text properly 2015-03-08 21:54:17 -07:00
Scott Lahteine
0eae9c24bc Merge pull request #1582 from galexander1/deltaconftypo
fix typo in delta example config introduced in commit 697ee2d
2015-03-08 21:13:14 -07:00
Scott Lahteine
624f23f550 Merge pull request #1575 from Wurstnase/fix-controllerFan
Fix controller fan
2015-03-08 20:36:38 -07:00
maverikou
424c747fb3 Enable M401 and M402 for deltas with allen key z-probes. 2015-03-08 09:57:38 +02:00
maverikou
0d593ab7c1 Fix debug message 2015-03-08 09:41:31 +02:00
Greg Alexander
3e8c5678f5 fix bug where, i.e., "G1X1E1" would be interpretted as "G1 X10 E1",
because strtod() will read the E address value as if it was a base 10
exponent.
2015-03-07 21:14:34 -05:00
Greg Alexander
ed7874b4e0 M404 should not use 'N' address as parameter because 'N' is reserved for the line number 2015-03-07 17:35:06 -05:00
Greg Alexander
b9dfa5cad4 use code_value_long() instead of (int)code_value() 2015-03-07 17:33:15 -05:00
Greg Alexander
901b03d020 use strtol() instead of strtod() when an integer value is desired 2015-03-07 17:24:26 -05:00
Greg Alexander
4fba7b084f fix typo in delta example config introduced in
commit 697ee2dc50
2015-03-07 16:43:41 -05:00
Mehmet Sutas
cfc6a3a87a Filament Runout Sensor Feature
With this change a mechanical or optical switch may be used to check the
availability of the filament and when the filament runs out an M600
(filament change) command is issued. This is only done while printing
with an SD card.

This feature was requested several times (issue #679), but the requests
were not accepted since it was believed that this situation should be
handled at host side. However during an SD print the control is totally
on firmware and I think that during an SD print it should be handled by
the firmware.

The original code was posted at reprap forum
(http://forums.reprap.org/read.php?1,297350) by Lazymonk. I have only
corrected some bugs of the code and improved it by adding definitions to
the configuration.h in order to make it more standardized.
2015-03-07 22:43:15 +02:00
maverikou
e6862700af Add Z_RAISE_AFTER_PROBING to all config files 2015-03-07 20:55:30 +02:00
maverikou
39d255608d Test an extra delta configuration with auto bed leveling code paths 2015-03-07 20:53:23 +02:00
maverikou
7c24b97958 Ported over Johann Rocholl's improvements for delta printers:
- Nonlinear auto bed leveling code (includes G29, G30, Z_RAISE_AFTER_PROBING). Cleaned it up to be a delta-specific AUTO_BED_LEVELING_GRID code path.
- Allen key z-probe deployment and retraction code. Cleaned it up and added safety checks.
2015-03-07 20:36:21 +02:00
Wurstnase
a5342c942e Update Marlin_main.cpp 2015-03-07 16:47:53 +01:00
Scott Lahteine
0f3b7d5575 Update annotated configurations
- Also update base configs
2015-03-07 01:07:40 -08:00
Scott Lahteine
c5aa56bc4d Merge branch 'Development' into marlin_configurator
Latest upstream commits
2015-03-06 23:00:03 -08:00
Scott Lahteine
9dccd3a94f Merge pull request #1579 from thinkyhead/fix_abl_issues
More sanity-checking for ABL
2015-03-06 22:50:03 -08:00
Scott Lahteine
d085725c86 More sanity-checking for ABL
- Moved sanity-checks to Marlin_main.cpp
- Applied to other configuration files
- Fixed formatting of ABL output
- Passing verbose level to probe_pt
- Miscellaneous cleanup
- Put CONFIG_STEPPERS_TOSHIBA into Configuration.h
2015-03-06 22:14:34 -08:00
Scott Lahteine
8b6766b37b Merge branch 'Development' into marlin_configurator
Latest upstream changes
2015-03-06 16:32:57 -08:00
Scott Lahteine
ca4b36deda Merge pull request #1578 from thinkyhead/require_lcd_style
Make sure a ROM is selected for ULTRA_LCD
2015-03-06 15:38:24 -08:00
Scott Lahteine
9eed8c8cf0 Make sure a ROM is selected for ULTRA_LCD 2015-03-06 15:37:54 -08:00
AnHardt
7136268273 Added 'dogm_font_data_6x10_marlin_Kanji.h'
This is copied from http://www.thingiverse.com/thing:664397

// Japanese Original font
// Version 0.1 by ichibey
//
// 営利目的で利用する際は、かならず許可を得てください。非営利の場合は、CCライセンスに従い使用ください。
// http://creativecommons.org/licenses/by-nc/2.1/jp/legalcode

This font is very special. It uses a mixture of katakana an kanji symbols, uses multi character symbols and is only addressable by '\xxx' sequences.
2015-03-07 00:26:28 +01:00
AnHardt
16e173e167 Added 5 new font.h files to main directory.
The former place of 'dogm_font_data_6x9_marlin.h' was in 'dogm_font_data_m0arlin.h'.

Deleted 'dogm_font_data_marlin.h'.
2015-03-07 00:09:49 +01:00
Scott Lahteine
254970c92a Merge pull request #1570 from C-o-r-E/escape_fix
Fixes gCode handling of comments and escaped characters
2015-03-06 15:09:35 -08:00
Scott Lahteine
d3660d22ae Merge pull request #1577 from thinkyhead/fix_gcode_g29
Fix compile error in gcode_G29
2015-03-06 14:55:05 -08:00
Scott Lahteine
25dc79f124 Remove M48 credits also 2015-03-06 14:54:30 -08:00
Scott Lahteine
34e51f576f Fix compile error in gcode_G29
- A redo of #1576, which missed topo_flag
- Always set verbose_level
2015-03-06 14:52:05 -08:00
AnHardt
b14270b029 Added font tools 2015-03-06 23:48:55 +01:00
AnHardt
fe2bd237d5 Add font sources.
Fonts have been created with fony.exe (http://hukka.ncn.fi/?fony)

The HD44760_? fonts simulate the fonts of the character based displays.
The ISO10646 fonts provide the right size of the standard fonts.
Marlin_symbols contains only the the special symbols of the original marlin font.
2015-03-06 23:36:56 +01:00
Scott Lahteine
bbeb1117d4 Merge pull request #1572 from Wackerbarth/Issue1572
Minor typos in the README
2015-03-06 10:10:40 -08:00
Scott Lahteine
344a12bd10 Merge pull request #1571 from AnHardt/Undubble
Undubble MSG_MIN & MSG MAX
2015-03-06 10:08:19 -08:00
Scott Lahteine
1149c24b86 More grouping, cleanup, start on overrides 2015-03-06 08:48:53 -08:00
Wurstnase
62bd734612 fix controllerFan() for inverted enable pins
add ```^ !(n_ENABLE_ON)``` for each stepper
2015-03-06 12:01:17 +01:00
Richard Wackerbarth
fd9beb1672 Minor typos in the README 2015-03-05 22:03:21 -06:00
AnHardt
3024f6c706 Undubble MSG_MIN &MSG MAX 2015-03-06 00:25:44 +01:00
Corey C
ba27f90e36 Merge pull request #1 from foosel/C-o-r-E-escape_fix
In-line comments and escaping fixed by foosel
2015-03-05 17:50:41 -05:00
Gina Häußge
63b62d8d4e Fixed in-line comments and escaping
* "G1 X1 ; test" was not executing "G1 X1" due to never leaving comment mode.
  * "M117 Hello \;)" printed "Hello \" to the display due to not replacing serial_char properly.

Tested with the following commands:
    * M117 Hello ; test => displays "Hello" on display, ignores "test"
    * G1 X1 ; foo => moves 1mm in X, ignores "foo"
    * ; test => completely ignored, not even acknowledged
    * M117 Hello \;) => displays "Hello ;)" on display
    * M117 Hello \\;) => displays "Hello \" on display, ignores ")"
2015-03-05 23:30:34 +01:00
C-o-r-E
99fb1bc3e8 Attempt to resolve #1568 and add basic escape character support 2015-03-05 15:22:37 -05:00
Wurstnase
92ebb7f4c8 Merge pull request #1 from MarlinFirmware/Development
dev pull
2015-03-05 17:51:33 +01:00
Scott Lahteine
fad14ae7eb Merge branch 'Development' into marlin_configurator
Latest upstream changes
2015-03-05 05:32:31 -08:00
Scott Lahteine
273d00353f Merge pull request #1565 from thinkyhead/gcode_handler_functions
Gcode handlers to inline functions
2015-03-05 04:55:46 -08:00
Scott Lahteine
cdc38aa783 Move gcode handlers into inline functions 2015-03-05 04:27:24 -08:00
Scott Lahteine
94fd8c7555 Merge pull request #1556 from thinkyhead/enhanced_g29
Enhanced G29
2015-03-05 03:54:53 -08:00
Scott Lahteine
6d9e9a6bef Merge branch 'Development' into enhanced_g29
Latest upstream changes
2015-03-05 02:49:18 -08:00
Scott Lahteine
4db2179f5c Include 4th extruder support 2015-03-05 02:37:36 -08:00
Scott Lahteine
0e074d4050 Merge pull request #1561 from OhmEye/Development
Fix autoretract
2015-03-05 02:14:34 -08:00
OhmEye
f90a947e65 Fix autoretract
Autoretract was broken, looks like it was overlooked when the retracted flag was updated for multi extruders.
2015-03-04 20:28:08 -10:00
Scott Lahteine
2ef6b3d57a Fix wrong defines, broken syntax 2015-03-04 22:24:44 -08:00
OhmEye
f3f04e9fd6 Merge pull request #1 from MarlinFirmware/Development
Sync with upstream
2015-03-04 20:23:10 -10:00
Scott Lahteine
08b722b635 Merge pull request #1555 from C-o-r-E/solenoids
Add support for solenoid articulated extruders
2015-03-04 21:36:29 -08:00
Scott Lahteine
32744d41a9 Do sanity checking on LRFB values
- Setting boundaries based on configured limits, contrasting with G28
(which forgets these limits?)
2015-03-04 21:32:11 -08:00
chrono
0a7d85c20e Minor fixes 2015-03-04 12:35:32 +00:00
chrono
48e3a97a18 Removed extra encoder definitions from pins_FELIX2.h 2015-03-04 12:21:18 +00:00
Scott Lahteine
d052a3c6aa Merge pull request #1551 from thinkyhead/redundant_encrot
Cleanup rotary encoder encrot* defines
2015-03-04 03:22:24 -08:00
chrono
d8eeddfb93 Updated DUAL Extruder config, added README and enabled NEWPANEL by default 2015-03-04 09:59:58 +00:00
Wurstnase
81a6e59a82 Merge branch 'Development' of https://github.com/Wurstnase/Marlin into Development 2015-03-03 22:18:14 +01:00
chrono
b423b90c77 Added Configuration_adv.h to examples for LCD/SD Support 2015-03-03 19:09:25 +01:00
domonoky
075507fb9a missed one X_ENABLE_PIN 2015-03-03 11:09:56 +01:00
Scott Lahteine
dfb38874f8 Some suggested changes for #1555 2015-03-03 00:48:20 -08:00
chrono
32eef03b58 Unfelixed README again 2015-03-03 08:12:42 +01:00
Scott Lahteine
7f8ea7105f Arrange ProbeAction values bitwise 2015-03-02 20:14:37 -08:00
Scott Lahteine
7684721977 Enhanced G29
- Adapted “Enhanced G29” code referred to in #1499 and posted at
[3dprintboard.com](http://3dprintboard.com/showthread.php?3105-Auto_Bed_
Leveling-Enhanced-G29-command)
- Compatible with current G29 while adding some new arguments
  - `V` sets the verbose level for serial out
  - `T` (or `V` > 2) send a Topology report to serial out
  - `E` works the same way as before
  - `P` works as before (source used `n` or `U`/`u`)
  - `L`, `R`, `B`, `F` work as before
- Still needs sanity checking for `LRBF`
2015-03-02 20:00:17 -08:00
C-o-r-E
874d3d3fc5 Add support for solenoid articulated extruders 2015-03-02 20:07:12 -05:00
chrono
7540a81106 Minor fixes 2015-03-02 22:55:00 +01:00
domonoky
e363428c54 New attempt at copying the libraries. 2015-03-02 19:00:02 +01:00
domonoky
bcb57f13ea try to fix path to additional libraries. 2015-03-02 18:55:30 +01:00
domonoky
e3d92b9168 Try to fix the travis build, which is failing because conditional includes do not work in .ino files for the ino processor ? 2015-03-02 18:45:58 +01:00
chrono
c13d81ce15 Merge branch 'Development' into pr-felix 2015-03-02 17:21:39 +00:00
chrono
a375d648c7 Merge remote-tracking branch 'upstream/Development' into Development 2015-03-02 17:21:05 +00:00
domonoky
4a7aca2736 Merge remote-tracking branch 'remotes/upstream/Development' into Development 2015-03-02 17:52:12 +01:00
alexborro
715104e477 Fix Endstop check for CoreXY bots.
The X_Axis could not home to min while Y_Max endstop was trigged.
2015-03-02 13:36:58 -03:00
Scott Lahteine
e428e8da75 Merge pull request #1552 from thinkyhead/cleanup_cardreader
Cleanup of cardreader.*
2015-03-02 07:57:26 -08:00
Scott Lahteine
20e59dc61e Don't skip files starting with underscores 2015-03-02 07:56:11 -08:00
Scott Lahteine
f171656f8e Cleanup of cardreader.*
- Apply standards to cardreader.*
- Fix minor issues with cardreader.cpp
- Apply standards to some other stale regions
2015-03-02 07:06:01 -08:00
Scott Lahteine
f379edca78 Cleanup rotary encoder encrot* defines
The encrot values are used in only one place, and don’t vary, so remove
redundant references.
2015-03-02 06:42:48 -08:00
Scott Lahteine
c7cdb176c8 Merge branch 'Development' into marlin_configurator
Latest upstream changes
2015-03-02 06:13:10 -08:00
chrono
187d336665 Revert default conf and temperature.cpp 2015-03-02 13:56:37 +00:00
chrono
7f060d7caf Revert "Testing Fix for Arduino 1.6+ compiler issue #1523"
This reverts commit fb75a9272d.
2015-03-02 13:47:35 +00:00
Scott Lahteine
49f471a5fc Merge pull request #1541 from thinkyhead/fixup_temperature
Cleanup of temperature code
2015-03-02 05:38:10 -08:00
Scott Lahteine
f2710e11d1 Optimize initial loading, code cleanup 2015-03-02 05:23:36 -08:00
chrono
fb75a9272d Testing Fix for Arduino 1.6+ compiler issue #1523 2015-03-02 10:45:54 +00:00
chrono
558c6313f7 Merge branch 'pr-felix' into Marlix 2015-03-02 10:27:58 +00:00
chrono
08bc723a3c Enable PIDBED 2015-03-02 10:26:42 +00:00
chrono
e487bd642b Updated PR to streamline integration 2015-03-02 09:49:45 +00:00
Scott Lahteine
2eeb241b42 Find fields that group together
- Do field grouping
- Tweak configurations for better grouping
2015-03-02 01:45:53 -08:00
Scott Lahteine
9377089c43 Merge pull request #1548 from thinkyhead/issue_1547_bed_leveling
Fix undefined *_PROBE_BED_POSITION error
2015-03-01 20:01:38 -08:00
Scott Lahteine
e30bfedce4 Fix undefined *_PROBE_BED_POSITION error 2015-03-01 19:57:35 -08:00
chrono
875812d346 Updated package info 2015-03-01 11:15:17 +01:00
chrono
3eafea840d Minor fixes in Configuration.h 2015-03-01 11:04:02 +01:00
chrono
c7fb1b70f2 Initial Configuration.h for Felix 2.0/3.0 2015-03-01 09:54:36 +00:00
chrono
2e172f38bd Added support for Felix 2.0/3.0 printers 2015-03-01 09:16:55 +00:00
Scott Lahteine
f994729999 Parse and use dependent groups
- Parse #if, #ifdef, etc. for rules to enable fields
2015-02-28 22:40:20 -08:00
Scott Lahteine
b869476e99 Merge pull request #1545 from maverikou/panel_one_encoder
Panel One encoder pins
2015-02-28 05:32:56 -08:00
maverikou
9b50ec6512 Panel One encoder pins 2015-02-28 10:52:15 +02:00
Scott Lahteine
838a22de64 Fix switch value method, make app global 2015-02-27 21:08:09 -08:00
Scott Lahteine
8d5839151b Merge branch 'Development' into marlin_configurator
Latest upstream changes
2015-02-27 20:40:23 -08:00
domonoky
443e7edef4 - Add support for L6470 Drivers.
- Both TMC, L6470 and pin-driven drivers work.
- All can be mixed and matched as needed.
2015-02-27 12:43:23 +01:00
Scott Lahteine
1db02c2891 Merge branch 'Development' into fixup_temperature
Merge upstream changes
2015-02-26 17:25:28 -08:00
Scott Lahteine
a99470fbb0 Merge pull request #1527 from maverikou/panel_one
Added support for PanelOne from T3P3.
2015-02-26 16:01:13 -08:00
domonoky
5727cb3ed4 Cleanup TMC Stepper a bit. 2015-02-26 12:57:46 +01:00
Scott Lahteine
a5bbd402bf Merge pull request #1539 from AnHardt/dummysensor
Extend the idea of dummy temperature sensors.
2015-02-26 01:29:14 -08:00
Scott Lahteine
1a7b0d9a37 Redo HAS_* macros to fix define error 2015-02-26 01:14:59 -08:00
Scott Lahteine
864dddc878 Macros to the top, a few HAS_* macros 2015-02-26 00:33:30 -08:00
alexborro
227ab8c665 Merge pull request #1503 from MarcelMo/patch-2
Support for simple customisable AutoZProbing area
2015-02-25 13:22:42 -03:00
Scott Lahteine
fd1ea9d56f Move literal strings to language files 2015-02-24 23:03:08 -08:00
maverikou
8742b6bd56 Merge branch 'Development' into panel_one 2015-02-24 22:24:57 +02:00
Scott Lahteine
aa9c1f1bed Better name for ADC macro 2015-02-24 05:38:10 -08:00
Scott Lahteine
9c9726d469 Cleanup of temperature code
- Reduce calls to millis()
- General cleanup of manage_heaters
- General cleanup of pid autotune
- Formatting here & there
- Macros to clean up and shrink ISR code (reduced by ~364 lines)
2015-02-24 04:46:11 -08:00
AnHardt
c6d2ebe452 Extend the idea of dummy temperature sensors.
Added a second sensor and made them configurable.
2015-02-24 11:02:16 +01:00
Scott Lahteine
e6af82ba2f Merge pull request #1526 from thinkyhead/cleanup_ultralcd
Cleanup and fix ultralcd.cpp
2015-02-23 21:22:54 -08:00
Scott Lahteine
c9a3eb0c1a Spacing in calculate_volumetric_multiplier(s) 2015-02-23 20:35:18 -08:00
Scott Lahteine
2af559cca3 Shared function for menu_edit_* and menu_edit_callback_* 2015-02-23 20:31:28 -08:00
Scott Lahteine
7ec391e689 Merge branch 'Development' into marlin_configurator
Latest upstream changes
2015-02-23 20:21:40 -08:00
Scott Lahteine
df8c51528f Merge branch 'Development' into cleanup_ultralcd
Latest upstream changes
2015-02-23 20:13:08 -08:00
Scott Lahteine
517f411999 Spacing adjustment to menu_edit* macro 2015-02-23 20:11:52 -08:00
Scott Lahteine
4938ae5caf Add required backslash for macro expansion 2015-02-23 20:10:49 -08:00
Scott Lahteine
e182cdebf9 Add required backslash for macro expansion 2015-02-23 19:54:07 -08:00
Scott Lahteine
adbb839b16 Merge pull request #1535 from gege2b/Development
Corrected a typo in ArduinoAddons/Arduino_1.5.x/(...)/boards.txt
2015-02-23 19:51:44 -08:00
Scott Lahteine
fa4c36df68 Fix menu callback issue wrt LCD_CLICKED 2015-02-23 19:40:57 -08:00
Scott Lahteine
0cf0c20532 Optimize calculate_volumetric_multiplier 2015-02-23 18:10:35 -08:00
domonoky
38500165ea First attempt at adding TMC Driver support. May need some cleanup. 2015-02-23 17:45:29 +01:00
domonoky
b55995aae8 Introduce a layer of macro indirection to all stepper pins. This allows other stepper drivers to redefine them, so they can use SPI/I2C instead of direct pin manipulation. 2015-02-23 16:12:35 +01:00
Gege2B
b4e9395661 Corrected a typo in ArduinoAddons/Arduino_1.5.x/(...)/avr/boards.txt about Sanguino 2015-02-23 16:02:04 +01:00
kieranc
8ccdac9898 Enable PID debugging for heated bed 2015-02-23 09:42:01 +01:00
kieranc
29097b0ab2 Enable PID debugging for heated bed 2015-02-23 09:41:25 +01:00
kieranc
21bd4fd6db Enable PID debugging for heated bed 2015-02-23 09:40:53 +01:00
kieranc
fb56aad898 Enable PID debugging for heated bed 2015-02-23 09:40:29 +01:00
kieranc
08c543f8fb Enable PID debugging for heated bed 2015-02-23 09:40:06 +01:00
kieranc
c89413db1e Enable PID debugging for heated bed 2015-02-23 09:39:39 +01:00
kieranc
1c71e4751a Enable PID debugging for heated bed 2015-02-23 09:39:07 +01:00
maverikou
a9e15aa503 Updated example configurations 2015-02-22 20:15:05 +02:00
Scott Lahteine
3ba47ea277 Remove test/demo multi=line code menu items 2015-02-22 10:10:37 -08:00
Scott Lahteine
c1240f23dd Merge branch 'Development' into marlin_configurator
Latest upstream changes
2015-02-22 10:02:25 -08:00
alexborro
a57869ba49 Dummy Thermistor Table for testing purposes
Am I the only one who always need to change the thermistortable.h to add
a dummy table??
Ok, it is done. Just set the thermistor to 999 and it will always read
25C. Great for Testing or Development purposes.
2015-02-22 11:02:04 -03:00
Maverikou
2e166f5337 Added support for PanelOne from T3P3. 2015-02-22 09:14:43 +02:00
Scott Lahteine
40ef472a25 Merge in encoder multiplier 2015-02-21 20:18:49 -08:00
Scott Lahteine
c3c50528e6 Merge pull request #1521 from thinkyhead/fixup_encoder_code
Encoder multiplier - revised code
2015-02-21 19:44:53 -08:00
Scott Lahteine
1c13cd604b Formatting in babysteps defines 2015-02-21 18:45:10 -08:00
Scott Lahteine
3a26804d80 Adapt to latest PID code and fix typos 2015-02-21 18:41:04 -08:00
Scott Lahteine
422582da71 Prep formatting for upcoming PR 2015-02-21 18:24:16 -08:00
Scott Lahteine
27ac3e985d Add options to example_configurations 2015-02-21 18:17:37 -08:00
Scott Lahteine
0d6a7a2df0 Merge with latest upstream changes 2015-02-21 18:13:31 -08:00
Scott Lahteine
c7a97e18b7 Merge branch 'Development' into cleanup_ultralcd
Latest upstream changes
2015-02-21 18:04:08 -08:00
Scott Lahteine
6d5c13df74 Merge pull request #1520 from thinkyhead/fixup_temperature
Fix typos in checkExtruderAutoFans
2015-02-21 17:53:26 -08:00
Scott Lahteine
5b9e341222 Merge pull request #1516 from thinkyhead/fixup_ramps
Cleanup ramps boards
2015-02-21 17:51:57 -08:00
Scott Lahteine
57bc28b42c Cleanup and fix ultralcd.cpp
- Fix bug in lcd_control_temperature_menu
- Remove test menu-item left in from multi-line command feature
- Replace literals with translatable strings
- Reduce lcd_preheat code redundancy
- Reduce menu macro redundancy
- Clean up formatting
2015-02-21 17:38:56 -08:00
Scott Lahteine
4fcd4b444e Merge pull request #1519 from thinkyhead/fix_recent_issues
Fix implementation of PID menu items
2015-02-21 16:43:11 -08:00
Scott Lahteine
9c35ed149d Merge pull request #1508 from AnHardt/iss1492
Fix iss#1492
2015-02-21 16:26:37 -08:00
Scott Lahteine
430c4b6538 Replace missing backslash 2015-02-20 02:17:16 -08:00
Scott Lahteine
3aa5f98b64 Download all as ZIP, adjust layout on resize 2015-02-20 02:12:00 -08:00
Scott Lahteine
a8939eec28 Readability of MENU_MULTIPLIER_ITEM
Last commit before bed.
2015-02-20 02:08:41 -08:00
Scott Lahteine
09e09b308e Tweaky spacing adjustments 2015-02-20 01:22:56 -08:00
Scott Lahteine
e3fd3e8fa4 Fix typos in checkExtruderAutoFans 2015-02-20 00:08:59 -08:00
Scott Lahteine
c610471b0c Add PID_PARAMS_PER_EXTRUDER conditional 2015-02-20 00:00:19 -08:00
Scott Lahteine
2d6fa9ce80 Proper implementation of PID menu items
- Make this work per #1344
2015-02-19 23:54:06 -08:00
wgm4321
b8e79dce89 Fix compilation errors when encoder multiplier is disabled 2015-02-19 21:51:23 -05:00
wgm4321
65e1fc71be Add encoder rate multiplier 2015-02-19 21:42:57 -05:00
Scott Lahteine
c9465c33cf Merge branch 'thinkyhead-fixup_ramps_boards' into Development
Merge resolving conflicts
2015-02-19 17:36:49 -08:00
Scott Lahteine
623119619c Merge branch 'fixup_ramps_boards' of https://github.com/thinkyhead/Marlin into thinkyhead-fixup_ramps_boards
Merge commit
2015-02-19 17:36:00 -08:00
Scott Lahteine
859c8d3fef Azteeg X3 overrides too 2015-02-19 17:28:38 -08:00
Scott Lahteine
7891eacf21 Merge branch 'Development' into fixup_ramps_boards
- Also apply cleanup for #1514
2015-02-19 17:26:22 -08:00
Scott Lahteine
b12cd1f841 Merge pull request #1514 from 2PrintBeta/Development
Initial definitions for the Boards BAM&DICE + BAM&DICE Due
2015-02-19 17:17:34 -08:00
Scott Lahteine
1600506545 Merge remote-tracking branch 'upstream/Development' into marlin_configurator 2015-02-19 15:15:55 -08:00
Scott Lahteine
5d0c93ae10 Keep config boxes in view on wide screen 2015-02-19 03:41:41 -08:00
Scott Lahteine
335b7680c9 Tooltip code, widescreen layout, hide auto-expands
Slightly better layout for wide screens.
2015-02-19 03:11:16 -08:00
domonoky
15b73386b5 Add pin definitions for the Boards BAM&DICE + BAM&DICE Due 2015-02-19 11:53:31 +01:00
Scott Lahteine
08c236059e Merge pull request #1505 from thinkyhead/issue_1499
Bed leveling probe behavior issue?
2015-02-19 01:24:17 -08:00
Scott Lahteine
ab419795b3 Merge pull request #1511 from MagoKimbra/Reset_Alert_message_M600
Reset Alert message when finish M600 command
2015-02-19 01:19:56 -08:00
Scott Lahteine
f238c7428d Merge branch 'Development' into marlin_configurator
Latest upstream changes
2015-02-18 21:56:17 -08:00
Scott Lahteine
da275c72ab Cleanup Github reply.data.content before atob() 2015-02-18 21:45:38 -08:00
MagoKimbra
159196d1e9 Reset Alert message when finish M600 command 2015-02-18 21:33:38 +01:00
daid
266ff227cf Merge pull request #1510 from docdawning/Development
Trivial spelling correction
2015-02-17 20:59:32 +01:00
DocDawning
dfd4e74a5c Trivial spelling correction 2015-02-17 12:37:05 -07:00
AnHardt
6cdcd6c6d1 Fix iss#1492
Introduced lcd_strlen() and lcd_strlen_P().
Replaced the old functions where necessary.
Reworked language_ru.h.

Speeded up test for zero length string in cardreader.cpp
2015-02-16 13:53:58 +01:00
Scott Lahteine
c033904693 Updated config file section markers 2015-02-15 23:25:57 -08:00
Scott Lahteine
84a87a5b1c Fix up configs a little 2015-02-15 23:19:22 -08:00
Scott Lahteine
63a5ff7ab9 Merge pull request #1489 from tommil/Development
Updated Finnish language file
2015-02-15 23:02:11 -08:00
Scott Lahteine
efb0491d40 Merge branch 'Development' into issue_1499
Merging latest upstream changes
2015-02-15 22:59:07 -08:00
Scott Lahteine
8309b4f408 Merge branch 'Development' into marlin_configurator
Merging latest upstream changes
2015-02-15 22:58:04 -08:00
Scott Lahteine
961998cf91 Merge pull request #1496 from thinkyhead/issue_1493
Megatronics 3 servo pins
2015-02-15 22:00:14 -08:00
Scott Lahteine
59e92a2db4 Merge pull request #1506 from thinkyhead/issue_1504
Issue #1504 – K8200 Z_ENABLE_PIN
2015-02-15 21:59:30 -08:00
Scott Lahteine
b71322e793 Issue #1504 – K8200 Z_ENABLE_PIN
- K8200 uses a non-standard RAMPS with Z_ENABLE=63 ??
- Assuming from previous input that 3DRAG is the same.
2015-02-15 21:56:23 -08:00
Scott Lahteine
978d114c73 Bed leveling probe behavior issue?
The `float` keyword should not be on these vars because they conceal
the outer vars, preventing them from obtaining known values before
being passed in `set_bed_level_equation_3pts`. Possibly related to
`Z_RAISE_BETWEEN_PROBING` not functioning.
2015-02-15 20:51:27 -08:00
Scott Lahteine
7c6236761a Merge branch 'Development' into issue_1493
Merging latest upstream changes
2015-02-15 20:45:35 -08:00
Scott Lahteine
9875352dd8 Merge branch 'Development' into marlin_configurator
Merging latest upstream changes
2015-02-15 20:44:21 -08:00
MarcelMo
d28f5b9e82 Support for simple customisable AutoZProbing area
When probing PCB´s I had the problem that i needed auto-leveling for specific areas (it´s never the same size).
Not much code, but very useful.
Now I use simply G29 L5 R55 F5 B35 P3 to probe a 4x6cm PCB before milling.
I used int for values... might be wrong...
I hope this time I got the right development tree. (tried first with https://github.com/MarlinFirmware/Marlin/pull/1130/commits)
2015-02-15 15:58:29 +01:00
Tommi Lamberg
3e6ae25481 Merge branch 'Development' of https://github.com/tommil/Marlin into Development 2015-02-15 12:21:57 +02:00
Tommi Lamberg
513ff94b89 Merge remote-tracking branch 'upstream/Development' into Development 2015-02-15 12:21:45 +02:00
Scott Lahteine
83cb702e72 Config sections, multi-field values, toggles, etc
- Auto-detect “switchable” items where possible
- Handle switchable multi-value fields
- Add standard sections to config form
- Add section markers to configurations
- Add value options to configurations
- Remove and re-add fields for loaded configs
- Preserve sections across configs
- Preserve non-added fields
- Style added fields wider & newline by default
2015-02-14 23:44:01 -08:00
Tommi Lamberg
07a9165ca2 Merge remote-tracking branch 'upstream/Development' into Development 2015-02-13 21:09:52 +02:00
alexborro
afc737ca0c Fix CoreXY Homing Routine.
Fixed how stepper ISR figure it out when the head (extruder) is going to
Min or Max direction.
Added Homing to Max Endstops.
2015-02-13 14:38:05 -02:00
Scott Lahteine
ec53c6309a More fields, options in config, fix tooltips 2015-02-13 03:02:56 -08:00
Scott Lahteine
68184af57b Merge branch 'Development' into marlin_configurator
Latest upstream commits
2015-02-12 21:59:26 -08:00
Scott Lahteine
7866fa161f Merge pull request #1476 from Natealus/Development
Compiling errors with 4 Extruders defined and Viki 2 Implementation
2015-02-12 16:56:55 -08:00
Scott Lahteine
8cfdd3e8a4 Merge pull request #1423 from MoonCactus/Development
Multi-line G-code commands
2015-02-12 16:29:30 -08:00
Natealus
ea9e49b20d ARRAY_BY_EXTRUDERS 4th hotend PID parameters 2015-02-12 00:56:47 -07:00
Scott Lahteine
d0ad8a978c Megatronics 3 servo pins
- Naive implementation, assuming the data sheet pin numbers correspond
to Arduino pin numbers.
2015-02-11 23:46:27 -08:00
Scott Lahteine
e74138b2be More robust fetch code, download buttons
- Fetch code now handles github, local, or http: access
- Download button creates a time-stamped inline download
- More complete error messages
- Show warnings when approaching the hourly fetch quota (limit
reloading!)
- Added my test domain (where the _htaccess is deployed)
- `_htaccess` file added to set Access-Control-Allow-Origin “*”
- Marlin logo with css
- Limit selectable areas to avoid annoying selections
- Messages now persist until dismissed
- Default repo for files set to thinkyhead, ‘marlin_configurator’ branch
- Cosmetic changes
2015-02-11 04:59:07 -08:00
Tommi Lamberg
622a531d9c Fixed error in translation 2015-02-11 08:50:48 +02:00
Tommi Lamberg
290ab42d22 Updated Finnish translations 2015-02-11 08:37:07 +02:00
Jérémie FRANCOIS
22a7985445 reverted to upstream 2015-02-11 07:12:55 +01:00
Jérémie FRANCOIS
b3bda57ca2 reverted to upstream 2015-02-11 07:12:02 +01:00
Jérémie FRANCOIS
9d75a56b56 Merge remote-tracking branch 'upstream/Development' into Development
Conflicts:
	Marlin/Configuration.h
	Marlin/Marlin_main.cpp
2015-02-11 06:38:36 +01:00
Tommi Lamberg
0a59fee763 Merge remote-tracking branch 'upstream/Development' into Development 2015-02-11 06:53:43 +02:00
Scott Lahteine
d75cd69de4 Merge pull request #1488 from Wurstnase/Development
Bedleveling: X and Y must be Integers not Float!
2015-02-10 16:02:55 -08:00
Scott Lahteine
eb5889b3da Merge pull request #1479 from AnHardt/en_first
#include "language_en.h" before the national language in language.h
2015-02-10 15:33:45 -08:00
kieranc
b9ed873827 Enable PID debugging for heated bed 2015-02-10 14:13:06 +01:00
kieranc
0a19109476 Enable PID debugging for heated bed 2015-02-10 14:11:44 +01:00
Tommi Lamberg
a4f939cc27 Updated Finnish language file 2015-02-10 10:48:33 +02:00
Wurstnase
4546c92f5b X and Y must be Integers not Float!
https://github.com/Wurstnase/Marlin/blob/Development/Marlin/Configuration.h#L427
2015-02-10 09:00:48 +01:00
Scott Lahteine
32d4dd073f Merge pull request #1487 from AnHardt/iss1485
Fix for #1485
2015-02-09 21:41:07 -08:00
Scott Lahteine
f92b0dc6c7 Merge pull request #1486 from Souko/patch-1
Update ultralcd_st7920_u8glib_rrd.h
2015-02-09 21:32:54 -08:00
AnHardt
c246026bda Sorry. 2015-02-10 00:23:39 +01:00
AnHardt
07e488cfae Fix for #1485 2015-02-10 00:13:46 +01:00
Souko
e7ecf14d0c Update ultralcd_st7920_u8glib_rrd.h
Fixed delay-times during Init. REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER won't get initialized on some Boards because delay was to short.
2015-02-09 21:46:06 +01:00
Scott Lahteine
8be25389f2 Merge pull request #1477 from AnHardt/languagetoconfig
Make display language configurable in Configuration.h
2015-02-09 05:36:57 -08:00
Scott Lahteine
52c3cf6d34 Fix a logging error 2015-02-09 05:07:05 -08:00
Scott Lahteine
ba24a09f24 Use api.github to get Configurations
- Make api.github the default source for configurations
- Remove configurations from the configurator
- Continuation and enhancements
2015-02-09 04:34:57 -08:00
Natealus
f4b0a40abb Additional fixes to temperature.cpp and found another missing line
Looks like INVERT_E3_DIR was missing in the configuration.h also as I
did a test compile with 4 extruders and Azteeg X3 Pro defined. So I also
added those lines too. Additional formatting to make the comments line
up better in that section.
2015-02-08 15:43:58 -07:00
AnHardt
3aac2df057 Now the oter way around.
Include of language_en.h now behind national language.

All "#define MSG_STR_*" now surrounded by #ifndef and #endif.
2015-02-08 20:41:20 +01:00
AnHardt
488633bf44 #include "language_en.h" before the national language in language.h
+ May decrease the workload for feature developers. They may omit to
update all the language files but "language_en.h". When loading _en
first, all new features give some display, but the new in English.

- May throw some additional warnings about redefinition during compile.
2015-02-08 14:26:24 +01:00
AnHardt
8e92729141 Make display language configurable in Configuration.h 2015-02-08 13:45:22 +01:00
Natealus
38a500d05c Viki 2 Implementation
I've insert the define and pointer entries for the Viki 2 and miniViki
from Panucatt in all of the example configs and main config. With these
additions and with pins done in the old single pin.h style...I was able
to get the display working fine save for needing to turn Delta Segments
per Second down. But that's a common graphics lcd issue being looked
into right now.

I need assistance in understanding how the new divided pins files fit
together because my previous attempts at trying to get it to work
appropriately didn't seem successful. This originally came from trying
to find out how to swap the XYZ Min and Max Endstop pins in the Azteeg
X3 Pro. It only comes with one set of connectors and they're Min
Endstops. My previous experience didn't turn out well trying to tell the
firmware to home to the Min Endstops so the best solution I found was to
swap the pins in the firmware. If I'm missing a conflict with a setup
other than delta please let me know, but it makes sense in my setup.
2015-02-08 03:14:59 -07:00
Natealus
697ee2dc50 Compiling errors with 4 Extruders defined
Here were a few changes that I had to make/add lines for the 4th hotend.
A compiling problem in the Temperature.cpp and missing lines in
configuration.h and configuration_adv.h. I added these lines in all of
the example configs too.
2015-02-08 01:05:05 -07:00
Jérémie FRANCOIS
85e5aa4011 Generalized enqueue_commands_P, and moved them to Marlin_main as they should 2015-02-07 23:24:20 +01:00
Scott Lahteine
4228758f1d Clean up and improve tooltips, show the name 2015-02-07 11:58:19 -08:00
Scott Lahteine
0116320d2c Strip slashes off the front of tooltips 2015-02-07 11:04:10 -08:00
Scott Lahteine
69240d41b0 Offset the timing of the pulsing animation 2015-02-07 10:45:56 -08:00
Scott Lahteine
78b9428f4e Avoid capturing disabled items in comments 2015-02-07 10:34:16 -08:00
Scott Lahteine
5d159851e5 Fix positioning of tooltip 2015-02-07 09:03:00 -08:00
Scott Lahteine
c99f1de9f3 Fix tooltips blocking clicks 2015-02-07 07:39:10 -08:00
Scott Lahteine
1a548c1bc1 Find nearby comments and make them into tooltips 2015-02-07 06:20:04 -08:00
Scott Lahteine
c093ea36e6 Merge pull request #1472 from thinkyhead/issue_1471_fix
Fan speed and 4th extruder on graphical LCD
2015-02-07 03:03:04 -08:00
Scott Lahteine
90fa1345b0 Fix purge + refresh of define info 2015-02-07 03:02:26 -08:00
Scott Lahteine
aa67b38a44 Fan speed and 4th extruder on graphical LCD
- Display fan speed 0-1 as “—“ and 254-255 as “100%”.
- Display 4th extruder instead of the heated bed
2015-02-07 02:44:35 -08:00
Scott Lahteine
7850ae2f4f Merge branch 'Development' into marlin_configurator
Merge latest Development
2015-02-07 02:20:25 -08:00
Scott Lahteine
2647402095 Use info.repl in updateDefineFromField, fix regex 2015-02-07 02:04:44 -08:00
Scott Lahteine
12a3975341 Close section tag, add String.prototype.lineCount 2015-02-07 00:46:14 -08:00
Scott Lahteine
4bb72f9480 Highlight the edited line
- Add a span to the edited text line to provide a highlight
- Scroll and highlight for switch checkboxes also
- Clean up initialization
- More API documentation
- Smarter handling of asynchronous file loading during init
2015-02-06 23:46:16 -08:00
Scott Lahteine
37c43a7ab3 Scroll to reveal on switches as well 2015-02-06 18:09:14 -08:00
Scott Lahteine
9c0adae3cd Scroll to setting position in file when edited
- Animate scrolling to the edited item’s position
- Sanity check file drops and show warnings
- Fix form init / refresh on new configuration drop
- Document the API methods that get/set defines
2015-02-06 17:57:31 -08:00
Scott Lahteine
4d341bb758 Copy configs into subfolder
Browsers may not want to load files outside the folder, but they may be
okay with these relative references within the folder.
2015-02-06 14:58:47 -08:00
Scott Lahteine
1a3c7d91f1 Merge pull request #1470 from thinkyhead/fix_eeprom_typo
Fix bad typo in ConfigurationStore.cpp
2015-02-06 14:44:28 -08:00
Scott Lahteine
72856166a9 Fix bad typo in ConfigurationStore.cpp 2015-02-06 14:43:58 -08:00
Scott Lahteine
b51204cc1c Add fieldsets and make them into tabs 2015-02-05 20:28:39 -08:00
Scott Lahteine
56769ba4f8 Make comment/uncomment a little neater 2015-02-05 19:39:42 -08:00
Scott Lahteine
94bebf31ac Pre-collect info about options on field init
- When initializing fields use the configuration to determine the format
- Cache the line for each option for fastest string compare / replace
- Add logging levels for debugging
2015-02-05 19:30:11 -08:00
Scott Lahteine
32aaadc301 Include minimized jQuery 2.1.3 2015-02-05 11:50:42 -08:00
Scott Lahteine
53f6bbdfe0 Try a stepper for the serial port 2015-02-05 11:44:43 -08:00
Scott Lahteine
ac7a4358d6 Add a responsive file uploader
- Specify HTML5
- Allow drag and drop for loading configurations
2015-02-05 11:14:31 -08:00
Scott Lahteine
09a385d9b0 Add "use strict" to the top. 2015-02-05 08:22:51 -08:00
Scott Lahteine
b2627200ea Get thermistors from config, add temp sensors 2015-02-05 08:19:09 -08:00
Scott Lahteine
ef18bfdd3f An in-place browser-based configurator utility
- A web form with fields for configuration values
- Reads and parses standard config files
- Modifies configurations dynamically in-place
2015-02-05 07:05:29 -08:00
Scott Lahteine
3490a19103 Merge pull request #1466 from CONSULitAS/Development_K8200_de
K8200: Example Configuration.h fixed
2015-02-04 17:28:04 -08:00
CONSULitAS
cfbb94a2a8 K8200: Example Configuration.h fixed
Example Configuration.h: fixed strange white characters preventing
compilation in lines 1 and 3 - oops
2015-02-04 10:35:10 +01:00
Scott Lahteine
b65c5d8ec6 Merge pull request #1464 from AnHardt/iss1448-Menu
Unified menu selection - by hilighting - made first column avilable
2015-02-03 22:43:29 -08:00
Scott Lahteine
6250cc9a8d Merge pull request #1465 from CONSULitAS/Development_K8200_de
K8200: Example Configurations back in sync and readme update
2015-02-03 22:38:57 -08:00
CONSULitAS
0de5083aff K8200: Example Configurations readme.md updated
Example Configurations for K8200 readme.md updated
* readme.md: added description for german umlaut support on LCD
2015-02-04 00:24:51 +01:00
CONSULitAS
c421ffd520 K8200: Example Configuration_adv.h back in sync
Example Configuration_adv.h for K8200 back in sync
* Configuration_adv.h: rebased and added missing changes for 4th
extruder
2015-02-04 00:19:18 +01:00
CONSULitAS
0575dd10de K8200: Example Configuration.h back in sync
Example Configuration.h for K8200 back in sync
* Configuration.h: rebased and added missing changes
* Configuration.h: updated comments for K8200
2015-02-04 00:15:50 +01:00
AnHardt
f708884808 Introduced new function lcd_implementation_mark_as_selected()
New function now drops the prechar (select character) and makes the first
column usable for text.
Marking the line is now constantly made by highlighting (reverse).

Replaced selection code in:
lcd_implementation_drawmenu_generic()
_drawmenu_setting_edit_generic()
_drawmenu_sd()

with new function.
2015-02-03 23:35:33 +01:00
Scott Lahteine
b6ca50a2cc Merge pull request #1463 from thinkyhead/cleanup_recent_merge
Apply some cleanup for recent merge
2015-02-03 12:06:47 -08:00
Scott Lahteine
cc56f36870 Merge pull request #1461 from thinkyhead/issue_1453_redo
Apply fix for M600 filament change
2015-02-03 11:52:09 -08:00
Scott Lahteine
8663f4bbaf Apply some cleanup for recent merge
Combine 1/(rows+1) with u8g.getHeight() to get rowHeight and just use
that.
2015-02-03 11:48:49 -08:00
Scott Lahteine
fed931afda Merge pull request #1462 from AnHardt/iss1447-Edit
Fixes issue #1447 - Overlapping of long descriptions with values.
2015-02-03 11:36:04 -08:00
Scott Lahteine
0cb1029311 remove extra plan_buffer_line 2015-02-03 11:26:36 -08:00
AnHardt
9381bfe7f9 Fixes issue #1447 - Overlapping of long descriptions with values. 2015-02-03 20:15:16 +01:00
Scott Lahteine
b97a950f53 Apply fix for M600 filament change
- Patch from #1453 for delta movement plan
- Fix: Set X with code X instead of adding to X
2015-02-03 09:57:16 -08:00
Scott Lahteine
04ce708031 Merge pull request #1457 from AnHardt/bootsplash
Reworked bootsplash for DOGM displays another time - saved 1786 bytes
2015-02-03 09:19:54 -08:00
AnHardt
0e41882b5c Merge https://github.com/MarlinFirmware/Marlin into bootsplash 2015-02-03 18:05:38 +01:00
AnHardt
2abf1ad940 Distribute recent changes in Configuration.h to the examples. 2015-02-03 17:59:04 +01:00
Scott Lahteine
86c0583525 Merge pull request #1459 from AnHardt/lcd-width
Adjust LCD_WIDTH to make better use of DOGM LCDs 2
2015-02-03 08:29:03 -08:00
AnHardt
33f8580255 Merge branch 'lcd-width' into b- 2015-02-03 14:45:58 +01:00
AnHardt
0c24bb6cfc Adjust LCD_WIDTH to make better use of DOGM LCDs 2015-02-03 14:21:43 +01:00
AnHardt
b1dbd765c6 Centralise definition of fonts for DOGM displays
Prework for issue #1448 and #1447

Will merge in when pull request #1457 is in.
2015-02-03 13:10:09 +01:00
AnHardt
65642592ee Added dualline version. 2015-02-03 12:25:36 +01:00
AnHardt
f9cc1df00b Droped URL from bootsplash. 2015-02-03 11:14:27 +01:00
AnHardt
c20606b8d7 Replaced some literal constants with defines
Replaced calculation to centre bitmap with fixed values.
Saved 20 bytes.
2015-02-03 09:52:29 +01:00
AnHardt
3602474c25 Replace solitaire use of u8g_font_5x8 font and replace with u8g_font_6x10_marlin
and win another 1694 bytes.
2015-02-03 09:07:57 +01:00
AnHardt
f5fd94d62a Kick suspicious loop an win 72 bytes.
No visible impact.
2015-02-03 08:56:00 +01:00
Scott Lahteine
6cce924cd0 Merge pull request #1455 from thinkyhead/fix_hd44780_inversion
Fix HD44780 misspelled as HD44870
2015-02-02 22:53:24 -08:00
Scott Lahteine
b3973ed224 Fix HD44780 misspelled as HD44870 2015-02-02 22:33:58 -08:00
Scott Lahteine
d8b7f29fa2 Merge pull request #1452 from thinkyhead/fix_M200_bug
M200 cleanup, normalization of EXTRUDER loops
2015-02-02 21:58:15 -08:00
Scott Lahteine
6d81968db5 Merge pull request #1450 from docdawning/Development
Normalized section headers, added some headers, added help URLs for newb...
2015-02-02 21:17:06 -08:00
DocDawning
5bb3933b21 Fixed n00bsauce 2015-02-02 14:18:53 -07:00
DocDawning
a507431400 Merge branch 'Development' of https://github.com/docdawning/Marlin into Development 2015-02-02 14:13:03 -07:00
DocDawning
d109cd940b Normalized all configuration files to include my new section headers and the like. 2015-02-02 14:11:21 -07:00
DocDawning
055c4beaf9 Normalized section headers, added some headers, added help URLs for newbies 2015-02-02 14:11:09 -07:00
Scott Lahteine
9dc5de6166 Hide code that makes veteran geeks go "aha!" 2015-02-02 05:55:55 -08:00
Scott Lahteine
bd387068bb Apply loops for extruders elsewhere also 2015-02-02 05:27:27 -08:00
Scott Lahteine
4a146d584b Loop, since the pending feature can use an array 2015-02-02 05:16:17 -08:00
Scott Lahteine
bca884bf72 Realized it's not a bug, but cleanup code anyway 2015-02-02 04:41:31 -08:00
Scott Lahteine
137ba7b590 Merge pull request #1449 from AnHardt/LostInTranslation3
Solid improvements. Merging.
2015-02-01 18:37:20 -08:00
DocDawning
8e287c2762 Normalized section headers, added some headers, added help URLs for newbies 2015-02-01 17:06:38 -07:00
AnHardt
2dd43a82b1 Ups. #else added 2015-02-01 14:16:35 +01:00
AnHardt
26e55471f8 Update example configurations. 2015-02-01 13:46:32 +01:00
AnHardt
85385be132 Removed now automatic define of DISPLAY_CHARSET_DOGM + improved description. 2015-02-01 13:33:25 +01:00
AnHardt
0e40408ee5 Make exemplaric use of new display charsets in language_en.h and languag_de.h 2015-02-01 13:20:58 +01:00
AnHardt
8dce5a6644 Improve new charset featur.
Select DOGM-displays automaticly.
Give hint where to find charsets.
Add '²' and '³' characters.
2015-02-01 13:09:59 +01:00
Scott Lahteine
0cec0b73bc Merge pull request #1446 from thinkyhead/bq_hephestos_support
Add support for BQ Prusa i3 "Hephestos"
2015-02-01 03:43:44 -08:00
Scott Lahteine
c009c81e65 make marlin-main the default 2015-01-31 23:11:28 -08:00
Scott Lahteine
f4ebc02555 marlin url 2015-01-31 23:09:12 -08:00
Scott Lahteine
0af9a0bf57 url to firmware downloads 2015-01-31 22:19:45 -08:00
Scott Lahteine
5f8dd92905 toss in a fix for .ru 2015-01-31 21:58:38 -08:00
Scott Lahteine
3f3ad9b3ad typo 2015-01-31 21:42:53 -08:00
Scott Lahteine
07639053fb Add support for BQ Prusa i3 "Hephestos" 2015-01-31 21:38:30 -08:00
Scott Lahteine
4f4cd7a2c0 Merge pull request #1445 from blubbfish/patch-3
Avoid compiling error
2015-01-31 21:03:18 -08:00
Philip Schell
fb7c636ecf Avoid compiling error
Only a missing ","... now it will compile again
2015-02-01 01:33:04 +01:00
alexborro
787d6fb61a Update RUMBA pins file
Add FAN1_PIN and SERVO0_PIN
2015-01-31 18:03:28 -02:00
Scott Lahteine
5fd5105d44 Merge pull request #1439 from clefranc/Development
Fix nozzle in temperature menu
2015-01-30 19:05:45 -08:00
Scott Lahteine
b40dd814b0 Merge pull request #1434 from AnHardt/LostInTranslation2
Introduction of a system to feed displays with the correct charsets. Example in language_de.h
2015-01-30 18:35:02 -08:00
AnHardt
76bf93efcb Revert "get STR_THERMOMETER from ultralcd_implementation_hitachi_HD44780.h"
This reverts commit 4d5b0e2037.
2015-01-30 22:42:44 +01:00
AnHardt
4d5b0e2037 get STR_THERMOMETER from ultralcd_implementation_hitachi_HD44780.h 2015-01-30 22:20:10 +01:00
Christian Lefrançois
33408a4dfc Update ultralcd.cpp
Fix number of nozzle displayed in temperature menu.
2015-01-30 11:16:13 -05:00
AnHardt
6e6e3cf443 merged https://github.com/MarlinFirmware/Marlin.git 2015-01-30 11:05:29 +01:00
AnHardt
b3ca430a20 Inducted the defined placeholders in the translation table. 2015-01-30 10:35:14 +01:00
AnHardt
e045034c3f Included Configuration.h to read the defined charsets.
Defined the charsets plus a default.
2015-01-30 10:31:58 +01:00
AnHardt
27c638803e Defined three charsets. 2015-01-30 10:28:22 +01:00
Scott Lahteine
b033783e0f Merge pull request #1438 from thinkyhead/cleanup_recent_additions
Clean up some formatting
2015-01-29 19:10:49 -08:00
Scott Lahteine
073c59c50a Clean up some formatting
- Also partial cleanup of Marlin_main.cpp with a smidgen of Doxygen.
2015-01-29 18:52:21 -08:00
AnHardt
9a4d4b3a2f translated Deltamenu 2015-01-29 13:19:32 +01:00
AnHardt
8aa6487b4b MSG_ENDSTOP_ABORT = 'Endstop abort' > 'Endstop Abbr. Ein' 2015-01-29 13:12:55 +01:00
AnHardt
666ad7106b Translated redundand: define MSG_INIT_SDCARD and MSG_CNG_SDCARD 2015-01-29 13:09:12 +01:00
AnHardt
e5c45fbe8c Infoscreen messages end with a '.' if not to long.
MSG_NO_MOVE = 'Kein Zug.' > 'Motoren Eingesch.' hat mich grau Haare gekostet.
Die englisch Meldung will sagen - Du kannst jetz am Extruder arbeiten, die
Achsen sind bockiert, die Motoren sperren die Achsen weil sie unter Strom
stehen, weil sie eingeschaltet sind.
2015-01-29 13:02:21 +01:00
AnHardt
1e22137e27 MSG_STOP_PRINT = 'Druck stoppen' > 'SD-Druck Abbruch'
to work out that this can't be resumed.
2015-01-29 12:41:46 +01:00
AnHardt
05d2ebd118 MSG_WATCH > 'Beobachten' > 'Info' 2015-01-29 12:29:31 +01:00
AnHardt
06cba91c39 eye candy 2 2015-01-29 12:26:21 +01:00
AnHardt
9352c9547f MSG_SPEED = 'Geschw' > 'Geschw.' 2015-01-29 12:13:44 +01:00
AnHardt
0dfb0162f3 eye candy. 2015-01-29 12:07:01 +01:00
AnHardt
7222b27501 MSG_MOVE_AXIS = 'Achsen bewegen' > 'Bewegen'. Is Extruder an axis? 2015-01-29 12:02:58 +01:00
AnHardt
a6f808c9b1 remove unused #define MSG_RETRACT 2015-01-29 11:58:50 +01:00
AnHardt
152fa579f5 MSG_SWITCH_PS_OFF = 'Switch Power Off' -> 'Netzteil Aus' 2015-01-29 11:55:36 +01:00
AnHardt
7a32b742f3 MSG_SWITCH_PS_ON = 'Switch Power On' ->'Netzteil Ein' 2015-01-29 11:50:51 +01:00
AnHardt
4e176d2ce8 MSG_SET_ORIGIN = 'Setze Nullpunkt' ->'Setze Null hier' 2015-01-29 11:45:18 +01:00
AnHardt
1f8c8ad3ed MSG_SET_HOME_OFFSETS = 'Set home offsets' ->'Setze Home hier' 2015-01-29 11:39:35 +01:00
AnHardt
0e8836ce5e MSG_AUTO_HOME = 'Auto Nullpunkt' ->'Home' 2015-01-29 11:36:07 +01:00
AnHardt
56d3e6615d MSG_DISABLE_STEPPERS = 'Stepper abschalt.' -> 'Motoren Aus'# 2015-01-29 11:19:10 +01:00
Scott Lahteine
1258980832 Merge pull request #1429 from bq/Development
Add bq Witbox 3D printer
2015-01-29 01:14:18 -08:00
Victor Andueza
766762a4dc Change url link 2015-01-29 09:28:50 +01:00
Scott Lahteine
7df9ca051c Merge pull request #1428 from thinkyhead/issue_1388_eeprom
Make EEPROM storage consistent
2015-01-28 22:58:04 -08:00
Scott Lahteine
fe3810f073 yeah, what he said 2015-01-28 22:27:15 -08:00
Scott Lahteine
6137bbd484 use eeprom read correctly 2015-01-28 22:10:31 -08:00
Scott Lahteine
45805c2b76 Merge pull request #1432 from blubbfish/patch-1
Fixing wrong pin to heater extruder 2 <-> 3
2015-01-28 21:33:24 -08:00
Scott Lahteine
9bc9051405 Flag EEPROM write errors on serial output
- Also adds a language string for the error.
- Also adds SERIAL_EOL as an alias for SERIAL_ECHOLN(“”)
2015-01-28 21:19:51 -08:00
Scott Lahteine
ff99ca3040 Fix alignment of Restore following PIDTEMP
Should be reading 4 x 4 PID values instead of 4 x 3
2015-01-28 20:48:32 -08:00
Philip Schell
6c285930cb Fixing wrong pin to heater extruder 2 <-> 3
Extruder 2 and 3 was swapped
2015-01-28 23:57:22 +01:00
Victor Andueza
0d4ce27b79 Add pins_WITBOX file 2015-01-28 17:26:50 +01:00
Victor Andueza
13118cde33 Add bq Witbox 3D printer 2015-01-28 16:52:36 +01:00
Scott Lahteine
093fedfde8 Make EEPROM storage consistent
Update ConfigurationStore to always write dummy values for disabled
options, including FWRETRACT, DELTA, and SCARA. Update the EEPROM
version to “V15.” Also fixes a buffer overrun with axis_scaling in
Config_ResetDefault.
2015-01-28 01:08:48 -08:00
Scott Lahteine
34377ee512 Merge pull request #1427 from thinkyhead/fewer_preheat_strings
Remove language strings that only add a number
2015-01-27 22:10:08 -08:00
Scott Lahteine
7378a7fef4 Merge pull request #1408 from thinkyhead/cleanup_servo
Formatting cleanup of quiet sources
2015-01-27 22:09:04 -08:00
Scott Lahteine
5fbef6bed2 Merge pull request #1409 from thinkyhead/rename_lastnr
Rename lastnr to autostart_index and...
2015-01-27 22:07:23 -08:00
Scott Lahteine
53eea611b8 Fix MSG_NOZZLE 2015-01-27 22:00:32 -08:00
Scott Lahteine
d7211a5324 Changes for Portuguese too 2015-01-27 21:53:08 -08:00
Scott Lahteine
0a21727c0a Portuguese (pt) and Brazilian Portuguese (pt-br) 2015-01-27 21:45:21 -08:00
Scott Lahteine
c90f2e77d8 Remove language strings that only add a number
This won’t reduce the string storage in the end, but it makes the
language files smaller. Also removed remaining unused strings.
2015-01-27 21:36:58 -08:00
Scott Lahteine
34758088c5 Merge pull request #1416 from thinkyhead/cleanup_pins
Split up pins.h to make pins more manageable
2015-01-27 16:03:28 -08:00
Scott Lahteine
2ce4a102ee Add support for Megatronics 3 a la #1426 2015-01-27 15:54:46 -08:00
Scott Lahteine
eacd931fad Merge branch 'cleanup_pins' of https://github.com/thinkyhead/Marlin into cleanup_pins
Remote has diverged, so pull
2015-01-27 15:50:08 -08:00
Scott Lahteine
ae4b348d77 Make sure _Ex_PINS is defined
Also fix analogInputToDigitalPin so it uses proper C hex notation
2015-01-27 15:36:47 -08:00
Scott Lahteine
80be6f3f91 tweak tweak 2015-01-27 15:36:47 -08:00
Scott Lahteine
ebe78cb36f tweak 2015-01-27 15:36:47 -08:00
Scott Lahteine
82474fef8a Max endstop pins disabled by configuration
There’s no need to ask users to uncomment Max Endstop pins when they
have them. These will be set to -1 later if the endstop option is
disabled.
2015-01-27 15:33:21 -08:00
Scott Lahteine
8045e4d60d Add support for 4th extruder
#1405 includes some changes to pins.h for a 4th extruder. This commit
applies those changes. It also deals with a possible problem with
SENSITIVE_PINS.
2015-01-27 15:33:21 -08:00
Scott Lahteine
df4f3e7712 cleanup 2015-01-27 15:32:34 -08:00
Scott Lahteine
b6ecbd8cc4 cleanup 2015-01-27 15:32:34 -08:00
Scott Lahteine
4e573134de Cleanup heading 2015-01-27 15:32:34 -08:00
Scott Lahteine
574a5ab72a Split up pins to make it more manageable
Hopefully this is helpful to organization and future expansion….
2015-01-27 15:32:34 -08:00
Scott Lahteine
b697bb260e Make sure _Ex_PINS is defined
Also fix analogInputToDigitalPin so it uses proper C hex notation
2015-01-27 15:19:03 -08:00
Scott Lahteine
ab1ddcd89d Merge pull request #1425 from clefranc/Development
EEPROM data not aligned
2015-01-27 14:26:11 -08:00
clefranc
d55c62bf9f Update ConfigurationStore.cpp
Moved #endif to allow filament settings to print.
2015-01-27 13:28:37 -05:00
clefranc
e779641c73 Update ConfigurationStore.cpp
Added PIDTEMP dummy write to align EEPROM read/write operation.
2015-01-27 13:25:47 -05:00
Scott Lahteine
baac6e242d Merge pull request #1419 from AnHardt/bootsplash
repair Bootsplash
2015-01-27 00:30:29 -08:00
Scott Lahteine
a425111eb7 Merge pull request #1421 from blubbfish/patch-2
Fixing the language files for the 4th extruder
2015-01-27 00:04:23 -08:00
AnHardt
75cf302da3 example configurations changed to meet Configuration.h 2015-01-27 00:01:33 +01:00
Philip Schell
61fd45a0c2 Add 4th extruder 2015-01-26 21:22:00 +01:00
Philip Schell
2650be4921 Add 4th extruder 2015-01-26 21:21:31 +01:00
Philip Schell
a9763d894e Add 4th extruder 2015-01-26 21:20:56 +01:00
Philip Schell
4949088302 Add 4th extruder 2015-01-26 21:20:04 +01:00
Philip Schell
fc5204bd42 Add 4th extruder 2015-01-26 21:17:35 +01:00
Philip Schell
9834818ef7 Add 4th extruder 2015-01-26 21:16:23 +01:00
Philip Schell
8696963154 Add 4th extruder 2015-01-26 21:15:24 +01:00
Philip Schell
ee8a7419f4 Add 4th extruder 2015-01-26 21:14:18 +01:00
Philip Schell
e18403235d Add 4th extruder 2015-01-26 21:12:55 +01:00
Philip Schell
7baee555f4 Add 4th extruder 2015-01-26 21:11:49 +01:00
Philip Schell
cebc7daf2a Add 4th extruder 2015-01-26 21:10:42 +01:00
Philip Schell
ef4c7abb21 Update language_es.h
Add 4th extruder
2015-01-26 21:09:24 +01:00
Philip Schell
22e591518a Update language_de.h
Add 4th extruder
2015-01-26 21:08:13 +01:00
Philip Schell
a20c35bb38 Update language_ca.h
Add 4th extruder
2015-01-26 21:04:31 +01:00
Jérémie FRANCOIS
dd301be52d Added suport for multiline G-code commands in the LCD menus 2015-01-26 18:50:29 +01:00
AnHardt
aa48056c03 Made centering of bootlogo work and removed contraproductiv setScale2x2() in dogm_lcd_implementation.h 2015-01-26 17:26:22 +01:00
AnHardt
0d219b3e14 Make centering of STRING_SPLASH work 2015-01-26 16:00:10 +01:00
AnHardt
59315330dd Remove definition of VERSION_STRING and replace where usend with STRING_VERSION 2015-01-26 15:52:01 +01:00
AnHardt
8c792c7b22 Make STRING_VERSION and VERSION_STRING the same 2015-01-26 15:40:44 +01:00
Scott Lahteine
a231764523 tweak tweak 2015-01-26 05:18:43 -08:00
Scott Lahteine
acf4a12fc3 tweak 2015-01-26 05:17:08 -08:00
Scott Lahteine
74b40b039a Merge branch 'cleanup_pins' of https://github.com/thinkyhead/Marlin into cleanup_pins
Pull for divergence.
2015-01-26 05:09:33 -08:00
Scott Lahteine
812fafac80 Max endstop pins disabled by configuration
There’s no need to ask users to uncomment Max Endstop pins when they
have them. These will be set to -1 later if the endstop option is
disabled.
2015-01-26 05:08:41 -08:00
Scott Lahteine
a0a97c9c4c cleanup 2015-01-26 05:08:40 -08:00
Scott Lahteine
aa23e75eb8 Cleanup heading 2015-01-26 05:08:40 -08:00
Scott Lahteine
89282ebaa6 Split up pins to make it more manageable
Hopefully this is helpful to organization and future expansion….
2015-01-26 05:08:40 -08:00
Scott Lahteine
b87ec5da73 Max endstop pins disabled by configuration
There’s no need to ask users to uncomment Max Endstop pins when they
have them. These will be set to -1 later if the endstop option is
disabled.
2015-01-25 20:08:51 -08:00
Scott Lahteine
e5a7f34fa4 Add support for 4th extruder
#1405 includes some changes to pins.h for a 4th extruder. This commit
applies those changes. It also deals with a possible problem with
SENSITIVE_PINS.
2015-01-25 19:43:43 -08:00
Scott Lahteine
865ca0ef04 Merge pull request #1405 from MagoKimbra/4th-extruders
All the additions look proper. I can't think of any other extruder-count-related items that you might have missed. So, with some optimism, I will merge this for testing.
2015-01-25 19:30:51 -08:00
Scott Lahteine
b51a583f08 cleanup 2015-01-25 19:20:25 -08:00
Scott Lahteine
5347ac2766 cleanup 2015-01-25 18:50:09 -08:00
Scott Lahteine
b684f7e92b Cleanup heading 2015-01-25 18:42:16 -08:00
Scott Lahteine
86f1d1cfc3 Split up pins to make it more manageable
Hopefully this is helpful to organization and future expansion….
2015-01-25 18:40:00 -08:00
MagoKimbra
3021f7f743 Fix PID_dT
Add PID_dT in temeprature.cpp
2015-01-25 17:56:14 +01:00
Scott Lahteine
415d95a298 Merge pull request #1401 from thinkyhead/issue_1379_printrboard_lcd
Proposed fix to #1379. Printrboard I2C LCD support
2015-01-24 16:38:09 -08:00
Scott Lahteine
a7b02975b7 No TEMP1 or TEMP2 pins for TEENSYLU || PRINTRBOARD
Pins 2 and 3 are probably general-use pins, since the filament sensor
uses pin 2.
2015-01-24 05:10:48 -08:00
Scott Lahteine
3ec0f7cfc0 Merge branch 'issue_1379_printrboard_lcd' of https://github.com/thinkyhead/Marlin into issue_1379_printrboard_lcd
Diverged from origin
2015-01-24 05:01:26 -08:00
Scott Lahteine
6723388f7f Proposed fix to #1379. Printrboard I2C LCD support 2015-01-24 05:01:02 -08:00
Scott Lahteine
09eff0c4db Merge branch 'rename_lastnr' of https://github.com/thinkyhead/Marlin into rename_lastnr
Diverged from origin
2015-01-24 04:58:11 -08:00
Scott Lahteine
03c9cb60e8 Rename lastnr to autostart_index and...
Replace instances of the number 13 with FILENAME_LENGTH where
appropriate.
2015-01-24 04:57:44 -08:00
MagoKimbra
ef5959a705 Fix Temperature
Githun insert this line when i merge with actual Branch development...
2015-01-24 13:49:29 +01:00
MagoKimbra
3d4ee6c868 Merge branch '4th-extruders' of https://github.com/MagoKimbra/Marlin into 4th-extruders
Conflicts:
	Marlin/temperature.cpp
2015-01-24 13:41:15 +01:00
MagoKimbra
986e723eeb Add 4th extruder 2015-01-24 13:37:58 +01:00
Scott Lahteine
9552e59306 Merge pull request #1402 from thinkyhead/issue_1227_max6675_spi
Borrow from Ultimaker to fix MAX6675 SPI conflict
2015-01-24 04:06:42 -08:00
Scott Lahteine
49765fc75d Merge branch 'issue_1227_max6675_spi' of https://github.com/thinkyhead/Marlin into issue_1227_max6675_spi
Branches diverged
2015-01-24 03:50:04 -08:00
Scott Lahteine
f16bdd2ff2 Borrow from Ultimaker to fix MAX6675 SPI conflict
Changes to temperature.cpp from Ultimaker fork, intended to address
#1226 and #1227
2015-01-24 03:49:15 -08:00
Scott Lahteine
1ed3913333 Rename lastnr to autostart_index and...
Replace instances of the number 13 with FILENAME_LENGTH where
appropriate.
2015-01-23 22:55:13 -08:00
Scott Lahteine
06c3b37933 Formatting cleanup of quiet sources
Formatting for code-folding plus minor style changes to less active
code.
2015-01-23 22:26:52 -08:00
Scott Lahteine
23fcd1ecb2 Merge pull request #1407 from thinkyhead/cleanup_marlinserial
Formatting cleanup of quiet sources
2015-01-23 21:33:43 -08:00
Scott Lahteine
fd78902194 Formatting cleanup of quiet sources 2015-01-23 21:11:50 -08:00
Scott Lahteine
5c1814383a Merge pull request #1390 from floyd871/Development
Show Custom M_Code for Z-Probe Offset when entering M503
2015-01-23 20:08:23 -08:00
MagoKimbra
0ebf896070 Add 4th extruder 2015-01-23 23:13:06 +01:00
Michael Neumann
a9d7ab9530 Update ConfigurationStore.cpp
Done
2015-01-23 21:05:27 +01:00
Scott Lahteine
a244bcb953 Merge pull request #1403 from thinkyhead/issue_1356
Fix Issue #1356 – remove EXTRUDER1_Z_OFFSET
2015-01-23 10:51:39 -08:00
Scott Lahteine
3a9a3e5ed8 Fix Issue #1356 – remove EXTRUDER1_Z_OFFSET
This define is not used.
2015-01-23 10:51:06 -08:00
Scott Lahteine
e770489f27 Borrow from Ultimaker to fix MAX6675 SPI conflict
Changes to temperature.cpp from Ultimaker fork, intended to address
#1226 and #1227
2015-01-23 10:37:39 -08:00
Scott Lahteine
54d5b52a2e Merge pull request #1399 from beanz/use-bed-defines-not-extruder-ones
Code wont compile with extruder but without bed runaway protection defined.
2015-01-23 08:36:25 -08:00
Mark Hindess
0ce252ba7a This ifdef is for bed code so should use bed constants for testing.
Without this fix, the code wont compile with extruder but without bed
runaway protection defined.
2015-01-23 16:30:13 +00:00
Scott Lahteine
0218ad45a1 Proposed fix to #1379. Printrboard I2C LCD support 2015-01-23 07:42:26 -08:00
Scott Lahteine
9040446780 Merge pull request #1395 from AnHardt/iss1394
removed function step_wait() from stepper.cpp
2015-01-23 06:58:10 -08:00
Scott Lahteine
25f79c5010 Merge pull request #1391 from CONSULitAS/Development-newBoard_K8200
Add: Board for Vellemann K8200 (derived from 3Drag)
2015-01-23 06:08:38 -08:00
Scott Lahteine
9ce75ab7de Merge pull request #1386 from roglio/Development
Fixing a build error for melzi and gfx display
2015-01-23 06:00:24 -08:00
Scott Lahteine
99e6ce901b Merge pull request #1393 from thinkyhead/issue_1385_timing
Add proper delay in stepper.cpp
2015-01-23 03:33:39 -08:00
Scott Lahteine
15a00a5a7c Add 1µs delay in other appropriate spots 2015-01-23 03:24:45 -08:00
AnHardt
23cb899c5a removed function step_wait() from stepper.cpp
removed function step_wait() from stepper.cpp because its used nowhere.
2015-01-21 16:30:45 +01:00
Scott Lahteine
d9d4a78e0f Add proper delay in stepper.cpp
Issue #1385 describes a delay that the compiler is optimizing out and
this solution.
2015-01-21 01:51:29 -08:00
CONSULitAS
d1322dafc9 Add: Example Configuration for Vellemann K8200 - based on new BOARD_K8200 #1391
# Add: Example Configuration for Vellemann K8200 - based on new
BOARD_K8200 #1391

* K8200: new folder in example_configurations for Vellemann K8200 (3Drag
clone - should work with 3Drag http://reprap.org/wiki/3drag, too. Please
report)
* K8200/Configuration.h/Configuration_adv.h: updated manually with
parameters form genuine Vellemann Firmware "firmware_k8200_marlinv2"
based on the recent development branch

I tested the changes on my K8200 with 20x4-LCD and Arduino 1.0.5 for
Windows (SD library added to IDE manually) - everything works well
2015-01-20 23:13:44 +01:00
CONSULitAS
3b50a5e2e6 Add: Board for Vellemann K8200 (derived from 3Drag)
## Add: Board for Vellemann K8200 (derived from 3Drag)

* Boards.h: updated comment for board 3Drag - K8200 removed
* Boards.h: added `BOARD_K8200` with ID 78

* language.h.: machine name and firmware URL for new board

* pins.h: added `K8200` to any `#if` with `3Drag` and corresponding
comments
2015-01-20 20:46:20 +01:00
Michael Neumann
2d454da3af Update ConfigurationStore.cpp
Show Custom M Code when entering M503
2015-01-20 16:21:44 +01:00
Scott Lahteine
4f35de991a Merge pull request #1383 from CONSULitAS/Development
Update Boards.h for Vellemann K8200 - comment only
2015-01-19 15:59:38 -08:00
Scott Lahteine
91f7cc2e6d Merge pull request #1380 from chertykov/Development
Remove hardcoded programmer option (-cwiring).
2015-01-19 15:43:14 -08:00
roglio
22571ca13d Revert "Configuration for Aurora Z605"
This reverts commit 935ee968a7.
2015-01-19 15:02:11 +01:00
roglio
935ee968a7 Configuration for Aurora Z605
Still not fine tuned but working.
2015-01-19 11:18:52 +01:00
roglio
ccdbeda526 Fixing a build error for melzi and gfx display
When a melzi board and a full gfx are both selected, the build fails
blaming for some missing defines.

This is a fix for the issue: now my configuration works.
2015-01-19 10:43:26 +01:00
CONSULitAS
e13f159343 Update Boards.h for Vellemann K8200 - comment only
## Update Boards.h for Vellemann K8200 - comment only

* Boards.h: updated comment for board 3Drag - K8200 uses same board
2015-01-19 00:53:17 +01:00
CONSULitAS
51c7f2fd5a Revert "## Add: Example Configuration for Vellemann K8200"
This reverts commit 5333590ac2.
2015-01-19 00:37:57 +01:00
CONSULitAS
5333590ac2 ## Add: Example Configuration for Vellemann K8200
* K8200: new folder in example_configurations for Vellemann K8200 (3Drag
clone - should work with 3Drag too, please report)

* K8200/language.h: updated machine name and URL for K8200

* K8200/Configuration.h/Configuration_adv.h: updated manually with
parameters
form genuine Vellemann Firmware "firmware_k8200_marlinv2" based on the
recent development branch

* K8200/files by Vellemann: added folder with original files from
Vellemann homepage, since there is no GitHub fork you could link to by
them

I tested the changes on my K8200 with 20x4-LCD and Arduino 1.0.5 for
Windows - everything works well
2015-01-19 00:28:55 +01:00
Denis Chertykov
ba3ac40b9d Remove hardcoded programmer option (-cwiring). Use variable AVRDUDE_PROGRAMMER.
Change default value of AVRDUDE_PROGRAMMER to 'wiring'.
2015-01-18 20:18:43 +03:00
daid
993bcd370f Merge pull request #1373 from MarlinFirmware/revert-1350-Development
Revert "Reduce PROGMEM warnings"
2015-01-16 16:48:41 +01:00
daid
53f971095d Revert "Reduce PROGMEM warnings" 2015-01-16 16:48:22 +01:00
Bo Herrmannsen
5c7e38478b Merge pull request #1369 from PxT/patch-1
Update printrboard pin assignments
2015-01-16 15:35:42 +01:00
PxT
67b597ad46 Update printrboard pin assignments
Backported from Printrbot branch, allows the fan to work correctly.
2015-01-15 19:48:40 -08:00
Bo Herrmannsen
88fe6777bf Update README.md 2015-01-16 04:29:12 +01:00
galexander1
1a2f796dc7 Merge pull request #1368 from MarlinFirmware/revert-1357-SDlib
Revert "Move Sd library out into library"
2015-01-15 18:52:44 -05:00
galexander1
d4880a9e60 Revert "Move Sd library out into library" 2015-01-15 18:52:10 -05:00
Bo Herrmannsen
ccdb086fc8 Merge pull request #1363 from PxT/patch-1
Fixes #1361
2015-01-15 10:57:44 +01:00
Bo Herrmannsen
5151db5c2f Merge pull request #1349 from msutas/patch-2
Improvement - G29 Option for Not Retracting Servo
2015-01-15 10:56:31 +01:00
Bo Herrmannsen
1746b2582b Merge pull request #1332 from Sniffle/Development
Rambo FAN_PIN documentation and servo support
2015-01-15 10:56:17 +01:00
Bo Herrmannsen
4b51b5a46d Merge pull request #1357 from odewdney/SDlib
Move Sd library out into library
2015-01-15 10:56:07 +01:00
Bo Herrmannsen
f2cb4a3655 Merge pull request #1353 from thawkins/Development
fix avrdude upload in makefile
2015-01-15 10:55:33 +01:00
Bo Herrmannsen
2d398393bd Merge pull request #1359 from PxT/patch-2
Update GCodes.md
2015-01-15 10:54:44 +01:00
PxT
9fd4292923 Fixes #1361 2015-01-13 10:59:50 -08:00
PxT
d4c8cfe1f2 Update GCodes.md
Removed remaining angle brackets which are not displayed properly in Github-flavored Markdown.
2015-01-13 09:23:13 -08:00
odewdney
cf50c0eff8 Arduino.h case sensitive include 2015-01-13 14:30:28 +00:00
odewdney
abdb974d7f Changed dir sep from windows to unix 2015-01-13 14:22:57 +00:00
odewdney
db3b4d0c98 Add library to build 2015-01-13 14:19:20 +00:00
odewdney
f84ff4ba7d Move SD Fat library out of main src 2015-01-13 13:31:55 +00:00
Bo Herrmannsen
ab074dac17 Merge pull request #1344 from grob6000/independent_pid
Independent PID parameters for each extruder
2015-01-13 12:10:37 +01:00
Bo Herrmannsen
d4a665694a Merge pull request #1350 from odewdney/Development
Reduce PROGMEM warnings
2015-01-13 11:26:50 +01:00
Bo Herrmannsen
b6623a0d49 Merge pull request #1351 from PxT/patch-1
Update GCodes.md
2015-01-13 11:26:24 +01:00
odewdney
9d9c859ac1 First move of SdFat library 2015-01-13 08:04:32 +00:00
Tim Hawkins
5045d17a39 fix avrdude upload in makefile 2015-01-13 13:01:43 +08:00
PxT
848475a5b0 Update GCodes.md
Sort Gcodes numerically, other minor formatting changes
2015-01-12 13:28:31 -08:00
msutas
3a5a6f42fb Corrected the ABL grid option
G29 E was not retracting the probe on the last probe point when used with ABL grid. Corrected.
2015-01-12 11:07:46 +02:00
odewdney
cd55a93a13 re-add blank line 2015-01-11 19:22:35 +00:00
odewdney
23bfe30036 moved include themister to temperature.c 2015-01-11 18:18:32 +00:00
odewdney
538859669d Removing compiler warnings for progmem 2015-01-11 18:14:21 +00:00
Bo Herrmannsen
46843bd927 adding back notes on servo power 2015-01-11 14:18:38 +01:00
Bo Herrmannsen
d9cd8e9e69 starting to add back note on ramps servo power 2015-01-11 14:16:33 +01:00
grob6000
bf2c923db5 Make multiple PID parameters a config option
* Adds config parameter `PID_PARAMS_PER_EXTRUDER` - allows single PID
parameters to be used where this would be preferable (e.g. dual
identical extruders)
* When disabled, will use `float Kp, Ki, Kd, Kc;` as before.
Preprocessor macros used to switch between.
* ultralcd.cpp defines extra menus for extra parameters only where
required
* M301 reports `e:xx` only if independent pid parameters enabled
* EEPROM structure still leaves space for 3 extruders worth, when undef
will save single parameter to all extruder positions, but only read the
first
* Switching off saves approx 330 B with no LCD enabled, 2634B with LCD
(RRD) enabled: this is significant.
* LCD modifications should be tested.
2015-01-11 13:50:17 +11:00
grob6000
0877aa0fe0 Merge remote-tracking branch 'upstream/Development' into independent_pid 2015-01-11 11:32:58 +11:00
msutas
e0beb98fd3 Improvement - G29 Option for Not Retracting Servo
This change introduces an improvement to G29 command on Marlin.

Auto bed leveling operation's reliability is based on the repeatability of the Z-probe switch and the servo. This change introduces an option to G29 command. When the G29 command is sent with an "e" option, during auto bed levelling the servo is not retracted between probes which decreases the bias on auto bed levelling resulting from servo.

G29 command does the auto bed probing as it is.

G29 E command engages the servo on first probing point, probes all points and retracts the servo after probing the last point.

Please comment your opinions, test on your printer and check the code on a programmer's perspective. (I am not a good programmer.)
2015-01-10 17:25:39 +02:00
Bo Herrmannsen
1d4af46496 Merge pull request #1348 from stv0g/LogoLCD
Adding new Marlin to splash screen
2015-01-10 16:08:03 +01:00
grob6000
7d32c7f36d Multiple PID parameter edit for ultralcd
* Depending on extruder count, will add menu items for ultralcd to edit
individual PID parameters for each extruder
* Added menu items to each language_xx.h
* Builds OK, but recommend testing with typical LCD
2015-01-11 01:14:02 +11:00
Steffen Vogel
69dc411ae0 Merge branch 'Development' of github.com:MarlinFirmware/Marlin into LogoLCD
Conflicts:
	Marlin/dogm_lcd_implementation.h
2015-01-10 14:57:11 +01:00
Steffen Vogel
d74394369b Merge pull request #1343 from thinkyhead/dogm_progress_bar
DOGLCD and LCD_PROGRESS_BAR to coexist
2015-01-10 11:37:15 +01:00
grob6000
3e2af67ce3 Fix R-H compatibility
* R-H reads incorrect M301 line from EEPROM output if more than one is
present. Reverted to original output format, using only E0 value.
2015-01-10 16:44:28 +11:00
grob6000
37c7e8300f Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 16:35:12 +11:00
Scott Lahteine
326b925557 DOGLCD and LCD_PROGRESS_BAR to coexist
Small changes (and formatting to confuse the diff’er) which first
allows DOGLCD and LCD_PROGRESS_BAR to be enabled in tandem, then a
#warning (rather than error) that the extra progress bar / message
options don’t apply to graphical displays at this time. This leaves
open perhaps combining the progress bar and message area in some future
(or forked custom) graphical LCD display arrangement (at which time the
relevant variables may be moved into ultralcd.cpp with externs in
ultralcd.h). I also added a conditional error that the progress bar and
the filament display may not work well together.
2015-01-09 18:16:56 -08:00
Steffen Vogel
6e8e9bb41e added link to IRC web chat, archive and mailing list 2015-01-09 22:28:47 +01:00
Bo Herrmannsen
5b4daf2669 removed hangout... only one asked for it 2015-01-09 22:08:36 +01:00
Erik van der Zalm
1aade4a8e2 Merge branch 'Development' of https://github.com/MarlinFirmware/Marlin into Development 2015-01-09 21:33:29 +01:00
Erik van der Zalm
8a2e84e3f1 Possible fix for FWRETRACT with 0 zlift. 2015-01-09 21:33:02 +01:00
Steffen Vogel
905aab3b85 added missing #endif 2015-01-09 20:23:38 +01:00
Steffen Vogel
b9cf1465a7 updated LCD bouts with new strings and bitmaps
new version is pretty generic and should work in most scenarios
2015-01-09 18:49:59 +01:00
Steffen Vogel
c7632be5cc added high and low resolutions version of splash screen logo (saving code size) 2015-01-09 18:49:24 +01:00
Steffen Vogel
8f0dba7cbf adding string for bouts splash string to config 2015-01-09 18:48:30 +01:00
Steffen Vogel
eafa98e6f4 added two black/white versions of the Marlin Logo for the LCD
splashscreen
2015-01-09 17:52:23 +01:00
Bo Herrmannsen
d94109e886 updated logo post and ver info 2015-01-09 15:51:15 +01:00
Bo Herrmannsen
cd33b5b062 changed logo and ver info
logo is now 110 pixels wide and starts 9 pixels in from top left corner and also 9 pixels down from same corner... this will give a 9 pixel border all way round

ver info is placed centered and there is a 9 pixel from bottom of display to ver info
2015-01-09 15:44:47 +01:00
Bo Herrmannsen
9b6c1cfda6 removed unneeded lines in welcome msg 2015-01-09 15:20:41 +01:00
Bo Herrmannsen
ffa09f86f4 moved ver info 5 spaces to the right 2015-01-09 13:31:23 +01:00
Alex Borro
2bbb68be8a Fix calculation of BAL grid fitting into the bed
The previous calc was wrong. Between N points there are only N-1 gaps,
not N.

So changing AUTO_BED_LEVELING_GRID_POINTS to
(AUTO_BED_LEVELING_GRID_POINTS-1)
2015-01-09 10:17:33 -02:00
Bo Herrmannsen
590caafa2d changed ver info 2015-01-09 13:17:08 +01:00
Bo Herrmannsen
3bb9b31515 changed boot logo a bit to test if fat wall goes away 2015-01-09 12:51:21 +01:00
Bo Herrmannsen
47881574ed Merge pull request #1336 from stv0g/Documentation
Documentation restructuring
2015-01-08 20:35:45 +01:00
Steffen Vogel
26337a56cc Merge branch 'Documentation' of github.com:stv0g/Marlin into Documentation 2015-01-08 20:02:56 +01:00
Steffen Vogel
eaa462279e Merge branch 'Development' of github.com:MarlinFirmware/Marlin into Documentation
Conflicts:
	README.md
2015-01-08 20:02:40 +01:00
Steffen Vogel
6712179502 updated milestone link 2015-01-08 19:57:09 +01:00
Steffen Vogel
6dc9e87b68 added missing bracket 2015-01-08 19:55:33 +01:00
Steffen Vogel
38669a56cb updated credits 2015-01-08 19:54:46 +01:00
Steffen Vogel
49b759b804 added credits 2015-01-08 19:48:56 +01:00
Steffen Vogel
6388be0731 reformatting 2015-01-08 19:38:52 +01:00
Steffen Vogel
c98d87935a reformatting 2015-01-08 19:37:36 +01:00
Steffen Vogel
11a42c3215 fixed formatting issue 2015-01-08 19:26:23 +01:00
Steffen Vogel
d19ef56199 started hardware list 2015-01-08 19:21:57 +01:00
Steffen Vogel
bc91167363 moved licence to Documentation (its linked from the frontpage) to get a cleaner top level dir 2015-01-08 18:59:40 +01:00
Steffen Vogel
fd68d0074b added missing gcodes description 2015-01-08 18:59:40 +01:00
Steffen Vogel
cf88d61c20 added links to reprap.org and the license 2015-01-08 18:59:40 +01:00
Steffen Vogel
4a1f34c522 added logo to README 2015-01-08 18:58:57 +01:00
Steffen Vogel
e351eec169 added logo for GitHub Readme 2015-01-08 18:58:08 +01:00
Steffen Vogel
6f137bbe3e updated compilation/configuring instructions 2015-01-08 18:58:08 +01:00
Steffen Vogel
5db6ffc03e fixed line endings 2015-01-08 18:58:08 +01:00
Steffen Vogel
abea094f90 fixed hyperlinks 2015-01-08 18:57:33 +01:00
Steffen Vogel
04eafe3d04 splitted huge README.md in several sections and moved them to the
Documentation directory
2015-01-08 18:55:32 +01:00
Erik van der Zalm
a06700a14b Revert "issue 968 for dev branch" 2015-01-08 18:54:06 +01:00
andrewsil1
489b4fd3a5 Fix grammar/typos in new Configuration.h option
(For the SLOW_PWM_HEATERS option)
2015-01-08 18:54:06 +01:00
Bo Herrmannsen
fdf9dbb6fe added link to google hangout 2015-01-08 18:54:06 +01:00
Steffen Vogel
da192c521f Merge pull request #1333 from andrewsil1/development
Fix grammar/typos in new Configuration.h option
2015-01-08 00:34:01 +01:00
Erik van der Zalm
0f5cccca4f Merge pull request #1334 from MarlinFirmware/revert-1311-Development
Revert "issue 968 for dev branch"
2015-01-07 23:41:10 +01:00
Erik van der Zalm
3a30d45c2e Revert "issue 968 for dev branch" 2015-01-07 23:40:17 +01:00
andrewsil1
269ec9f87f Fix grammar/typos in new Configuration.h option
(For the SLOW_PWM_HEATERS option)
2015-01-07 12:41:09 -08:00
Bo Herrmannsen
3d2b471c1a added link to google hangout 2015-01-07 21:05:28 +01:00
Todd Swindoll
506353892e Rambo Pin documentation and servo support
Updated pins reference and servo support.

cross referenced between Rambo 1.1, 1.2, and 1.3
2015-01-07 11:02:05 -06:00
Steffen Vogel
72912851b8 Merge pull request #1331 from stv0g/Development
moved/renamed documentation stuff to top-level directory
2015-01-07 15:50:24 +01:00
Steffen Vogel
8d7bfd03d8 moved/renamed documentation stuff to top-level directory 2015-01-07 15:33:50 +01:00
Bo Herrmannsen
3c9e6b7b62 added link for pic to hex converter 2015-01-07 14:28:51 +01:00
Bo Herrmannsen
0e760274bd changed reprap logo to marlin logo 2015-01-07 14:27:51 +01:00
Bo Herrmannsen
b291a422e9 added square png version of logo
406*406 pixels
2015-01-07 13:00:37 +01:00
Bo Herrmannsen
8813978766 Merge pull request #1330 from avluis/feature-request
Update Marlin Firmware URL
2015-01-07 12:48:21 +01:00
Luis E Alvarado
7ae548cf34 Update Marlin Firmware URL 2015-01-07 05:26:47 -06:00
Erik van der Zalm
8f9067faa6 Added marlin logos. (Designed by Ahmet Cem TURAN) 2015-01-07 12:21:16 +01:00
Bo Herrmannsen
addf52fd4a Merge pull request #1328 from DinoMesina/development
Some corrections and new features
2015-01-06 23:52:32 +01:00
Bo Herrmannsen
e9ddd21aef Update README.md 2015-01-06 22:22:35 +01:00
DinoMesina
2d7d43b64c Merge pull request #1 from DinoMesina/master
Master
2015-01-06 21:59:51 +01:00
Dino Del Favero
5cfe13f240 Correct some mistakes 2015-01-06 21:55:08 +01:00
Bo Herrmannsen
9852252bca Update README.md 2015-01-06 21:52:57 +01:00
Bo Herrmannsen
1c33310363 Update README.md 2015-01-06 21:41:06 +01:00
Bo Herrmannsen
380c9abf16 removed note on Ramps
ramps do have power for the servos, the power comes from the power connector, not sure why this note was even made
2015-01-06 21:15:46 +01:00
Bo Herrmannsen
501fe97c00 changed some stuff near IDE 2015-01-06 21:12:21 +01:00
Wurstnase
5de8cce7bf Merge pull request #2 from MarlinFirmware/development
Dev-Pull
2015-01-06 21:07:47 +01:00
Dino Del Favero
c7e2d73039 Merge branch 'development'
ok
2015-01-06 20:18:03 +01:00
Alex Borro
422a958a34 Fix CoreXY speed calculation
For cartesian bots, the X_AXIS is the real X movement and same for
Y_AXIS.
But for corexy bots, that is not true. The "X_AXIS" and "Y_AXIS" motors
(that should be named to A_AXIS
and B_AXIS) cannot be used for X and Y length, because A=X+Y and B=X-Y.
So we need to create other 2 "AXIS", named X_HEAD and Y_HEAD, meaning
the real displacement of the Head.
Having the real displacement of the head, we can calculate the total
movement length and apply the desired speed.
2015-01-06 16:39:48 -02:00
Dino Del Favero
038fccd7a1 I have added some code in the "temperature.cpp" for have the possibility of control the time of the states with the heater drived by relays, with this feature now it is possible use PID function in conjunction with relay to control the temperature. I have made some tests and the temperature stay always in the range of +-1°C from the setted temp.
There is the possibility of turn on this features adding "#define SLOW_PWM_HEATERS" in Configuration.h
2015-01-06 18:32:17 +01:00
DinoMesina
6730335657 Update Configuration.h 2015-01-06 18:06:02 +01:00
Bo Herrmannsen
1a57644b0c Update README.md 2015-01-06 17:12:17 +01:00
Bo Herrmannsen
80afded132 Update README.md 2015-01-06 17:10:05 +01:00
Bo Herrmannsen
028fe129a5 Update README.md 2015-01-06 17:09:19 +01:00
Bo Herrmannsen
d7a2dd676e Update README.md 2015-01-06 15:45:51 +01:00
Bo Herrmannsen
b3f2b30347 Update README.md 2015-01-06 15:44:26 +01:00
Bo Herrmannsen
4ffecdbf7d Merge pull request #1313 from wgm4321/Development
Re-enable filament menu with recalc fix when enabling/disabling mm3
2015-01-06 13:47:49 +01:00
Bo Herrmannsen
2dfdf4b55c Merge pull request #1320 from stv0g/Development
replaced ASCII GPL v3 license by markdown version
2015-01-06 12:30:54 +01:00
Bo Herrmannsen
358759cb52 Update README.md 2015-01-06 12:02:42 +01:00
Bo Herrmannsen
93c8b2a40b added irc channel 2015-01-06 11:59:11 +01:00
Steffen Vogel
672f764b4d replaced ASCII GPL v3 license by markdown version
moved new COPYING file to top-level directory to make it more visible and remove clutter from Marlin subduer
2015-01-06 11:49:05 +01:00
Bo Herrmannsen
5a5b95edbf Merge pull request #1319 from stv0g/Development
Cleanup and refactoring of termistor LUT generator (fixes bug #1305)
2015-01-06 11:25:07 +01:00
Steffen Vogel
f25e793cff rename stepper lookup table scipt to be consistent with termistor lookup table script 2015-01-06 10:30:20 +01:00
Steffen Vogel
df17a6a1b4 fix #1305 by proposed workaround (thanks gaby64) 2015-01-06 10:29:26 +01:00
Steffen Vogel
f7e65935fb make use of power operator 2015-01-06 10:28:43 +01:00
Steffen Vogel
4e02aff9b5 automatically determine min/max temp for terminator 2015-01-06 10:28:19 +01:00
Steffen Vogel
81363bc441 more cleanups 2015-01-06 10:27:40 +01:00
Steffen Vogel
95f4a55820 refactored termistor table calculation to be in line with wikipedia's article about Steinhart-Hart coefficients 2015-01-06 08:24:59 +01:00
Steffen Vogel
21205cc3d8 more cleanups in the termistorTable generation script 2015-01-06 08:23:51 +01:00
Steffen Vogel
fb0996b5db improved output aligment and precision 2015-01-06 08:20:52 +01:00
Steffen Vogel
538231edfd cosmetic whitespace cleanup and comments added/updated 2015-01-06 08:20:20 +01:00
wgm4321
067b509479 Re-enable filament menu with recalc fix when enabling/disabling mm3 2015-01-05 22:29:29 -05:00
wgm4321
a19f2f8ae7 Disable volumetric menu item due to missing recalc of of multipliers when enabled/disabled 2015-01-04 22:15:16 -05:00
wgm4321
f24dda9700 Revert "Make sure volumetric multipliers are recalc'ed during menu enable/disable of mm3"
This reverts commit dd7e4ee97f.
2015-01-04 22:08:41 -05:00
wgm4321
ec4681ab6b Revert "Add "Detailed Z Probe" menu item with ABL is defined."
This reverts commit 2b9722f387.
2015-01-04 21:53:37 -05:00
wgm4321
dd7e4ee97f Make sure volumetric multipliers are recalc'ed during menu enable/disable of mm3 2015-01-04 21:44:55 -05:00
wgm4321
2b9722f387 Add "Detailed Z Probe" menu item with ABL is defined. 2015-01-04 21:42:16 -05:00
Bo Herrmannsen
00e4bc9f54 Merge pull request #1311 from i-make-robots/Development
issue 968 for dev branch
2015-01-04 21:29:29 +01:00
Dan Royer
9472bbe51d issue 968 for dev branch
try, try again.

If 'OK' is garbled on sending PC won't receive it.  Both machines will
wait on each other forever.  This resends OK if nothing is heard from PC
for a while to avoid this bad case.
2015-01-04 12:17:46 -08:00
alexborro
d2b6e62996 Merge pull request #1309 from philfifi/fix_temp_runaway
temp runaway: proper cast to prevent any overflow.
2015-01-04 12:55:58 -02:00
Philippe L
30248214c7 temp runaway: proper cast to prevent any overflow. 2015-01-04 14:23:31 +01:00
Bo Herrmannsen
c5f138ea07 Merge pull request #1291 from alhirzel/Development
Define analogInputToDigitalPin only if needed
2015-01-04 12:53:41 +01:00
Bo Herrmannsen
efca4afab2 Merge pull request #1304 from monkeydave/Travis-CI
Added further tests to Travis CI config
2015-01-04 12:52:38 +01:00
odewdney
652895d656 try different proproc for CI failure 2015-01-04 11:15:23 +00:00
Bo Herrmannsen
3d9f4ac757 Merge pull request #1303 from wgm4321/Development
Fix for cant compile when REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER ...
2015-01-04 01:29:26 +01:00
monkeydave
9d57c376db Commented out configs that are failing with no easy fixes for the moment 2015-01-03 22:46:15 +00:00
wgm4321
04fb34c7ff Add English defines for filament menu to non-English to prevent compile errors until translated 2015-01-03 17:28:05 -05:00
wgm4321
f8aa5ff771 Fix for cant compile when REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER defined 2015-01-03 17:10:13 -05:00
odewdney
39fae9e3a3 Fix progmem warning
Borrow code from https://github.com/arduino/Arduino/issues/1793
2015-01-03 21:30:16 +00:00
monkeydave
07b85f8b92 Added compile checks for lots of defines in Configuration.h 2015-01-03 19:29:04 +00:00
monkeydave
be81dfa3de Updated .travis.yml so others forks will also compile 2015-01-03 16:50:05 +00:00
Bo Herrmannsen
b5c6f11e41 Merge pull request #1297 from monkeydave/Readd-Travis-CI
Readd .travis.yml
2015-01-03 14:22:07 +01:00
Bo Herrmannsen
206b7f4e92 Update .gitignore 2015-01-03 13:52:52 +01:00
Bo Herrmannsen
9d9a2d75ef Merge pull request #1295 from monkeydave/Re-add_gitignore
Added .gitignore back into repo
2015-01-03 13:51:31 +01:00
monkeydave
21cc188272 Updated .travis.yml for ErikZalm branch pull request 2015-01-03 12:09:12 +00:00
monkeydave
86cc22d639 Readd .travis.yml, change build enviroment to use ino instead of gcc 2015-01-03 11:43:40 +00:00
monkeydave
3f9707aa33 Added .gitignore back into repo 2015-01-03 10:56:10 +00:00
Alexander Hirzel
f36fd3ddec Merge branch 'Development' of https://github.com/ErikZalm/Marlin into Development 2015-01-02 12:39:39 -05:00
alexborro
912ed155c5 Merge pull request #1292 from thinkyhead/docs_and_scripts
Move scripts and documentation to subfolders
2015-01-02 14:56:39 -02:00
Scott Lahteine
b5e50cdd4e Move scripts and documentation to subfolders 2015-01-02 08:53:09 -08:00
Alexander Hirzel
eed451e034 rework analogInputToDigitalPin definition 2015-01-02 11:14:20 -05:00
Alexander Hirzel
f3209bba34 Merge branch 'Development' of https://github.com/alhirzel/Marlin into Development 2015-01-02 11:13:38 -05:00
Lane Roberts
1f520a5a8c Due to the fix for #1248, X and Y probe offsets must not be floats.
The compiler does not support comparing float values: "error: floating constant in preprocessor expression"
The loss in X/Y precision shouldn't matter for Z probes, as most microswitches or inductive sensors are larger than 1mm square anyway.
2015-01-02 11:12:16 -05:00
wgm4321
b32be2dc64 Fix syntax error caused by previous changes. 2015-01-02 11:12:16 -05:00
wgm4321
edac64e7d2 Add Filament menu and add Filament/Retract settings to config store. 2015-01-02 11:12:15 -05:00
Alexander Hirzel
ecda6cdc0a Fix typo, PID_BED_POWER -> MAX_BED_POWER 2015-01-02 11:12:15 -05:00
David Forrest
f3e503e725 temperature.cpp: Fix typo of PID_MAX to MAX_BED_POWER for the bed. 2015-01-02 11:12:15 -05:00
David Forrest
1d5d853c9a temperature.cpp: Fix typo of MAX_BED_PID to MAX_BED_POWER. 2015-01-02 11:12:15 -05:00
Bo Herrmannsen
63da6900b0 Merge pull request #1282 from vandarin/Development
Due to the fix for #1248, X and Y probe offsets must not be floats.
2015-01-02 15:35:40 +01:00
Bo Herrmannsen
a18b625534 Merge pull request #1261 from wgm4321/Development
Add Filament menu and add Filament/Retract settings to config store.
2015-01-02 15:35:29 +01:00
alexborro
975810fb4a Merge pull request #1286 from alhirzel/Development
Fix typo, PID_BED_POWER -> MAX_BED_POWER
2015-01-02 09:48:20 -02:00
Alexander Hirzel
ae12ad0d6c Fix typo, PID_BED_POWER -> MAX_BED_POWER 2015-01-02 01:38:03 -05:00
alexborro
80b17ab573 Merge pull request #1285 from drf5n/PID_CI_v2
temperature.cpp: Fix typo of MAX_BED_PID to MAX_BED_POWER.
2015-01-01 22:56:21 -02:00
David Forrest
625860f086 temperature.cpp: Fix typo of PID_MAX to MAX_BED_POWER for the bed. 2015-01-01 19:24:42 -05:00
David Forrest
6583bb781d temperature.cpp: Fix typo of MAX_BED_PID to MAX_BED_POWER. 2015-01-01 19:11:42 -05:00
Lane Roberts
2701dd8a17 Due to the fix for #1248, X and Y probe offsets must not be floats.
The compiler does not support comparing float values: "error: floating constant in preprocessor expression"
The loss in X/Y precision shouldn't matter for Z probes, as most microswitches or inductive sensors are larger than 1mm square anyway.
2014-12-31 12:34:59 -06:00
Bo Herrmannsen
217186d7bc Merge pull request #1281 from Grogyan/patch-2
MAX6675 Slave Select pin
2014-12-31 11:58:43 +01:00
Grogyan
6b82415c81 Update pins.h
Somehow the pin definitions for the MAX6675 Slave Select/Chip Select got changed back to the hardware SPI SS/CS.  
Pin 49 cannot be used as that is used by the SD card socket to detect if an SD card is present.
Pin 53 is the Hardware SPI SS, which is dedicated, nicely, to the SD card SS and therefore cannot be used as the MAX6675 SS
Pin 66 is in Aux2 port adjacent to the Hardware SPI interface port on RAMPS 1.4, and is currently not used for anything.
2014-12-31 13:04:16 +13:00
Bo Herrmannsen
692a01b1c7 Merge pull request #1277 from thinkyhead/fix_regressions
Fix regressions affecting compilation
2014-12-30 16:49:08 +01:00
Bo Herrmannsen
878b5557a1 Merge pull request #1276 from thinkyhead/lcd_z_reformat
Format Z like XY on LCD
2014-12-30 16:48:29 +01:00
Scott Lahteine
2ec2bf1564 Fix regressions affecting compilation
This fixes two regressions, caused by #1167 and #1191 .
2014-12-30 07:36:18 -08:00
Scott Lahteine
6c591a97a1 Merge branch 'lcd_z_reformat' of https://github.com/thinkyhead/Marlin into lcd_z_reformat 2014-12-30 07:26:58 -08:00
Scott Lahteine
e7db8ee9e5 ftostr32np > ftostr32sp
sp=space-padded, similar to: ns=no-sign
2014-12-30 07:26:25 -08:00
Scott Lahteine
10e1b6ef8b Least stack-usage self-contained ftostr32np()
This is the optimal code for a self-contained formatter, although the
original code is crafty in being smaller and simpler, and can be
evaluated as using the original output as a scratch pad for state,
making the final formatter more straightforward. While this code is
longer, all code-paths are minimal.
2014-12-30 07:26:25 -08:00
Scott Lahteine
d1f21d1189 As it should be 2014-12-30 07:26:25 -08:00
Scott Lahteine
449dad71f2 Least stack-usage self-contained ftostr32np()
This is the optimal code for a self-contained formatter, although the
original code is crafty in being smaller and simpler, and can be
evaluated as using the original output as a scratch pad for state,
making the final formatter more straightforward. While this code is
longer, all code-paths are minimal.
2014-12-30 07:26:24 -08:00
Scott Lahteine
a2109cb492 Patch to make Z look more like X and Y on UltraLCD 2014-12-30 07:26:24 -08:00
Bernhard Kubicek
3d1da45f3e Update Marlin.h 2014-12-30 08:30:37 +01:00
bkubicek
d02daec08f fixed compilation 2014-12-30 08:04:06 +01:00
alexborro
0268c03a75 Merge pull request #1271 from RobotCaleb/DeltaCalMenu
Move delta calibration menu to sample delta configuration.
2014-12-29 23:10:20 -02:00
Caleb Anderson
991a74b75b Move delta calibration menu to sample delta configuration.
Turn off by default.
2014-12-29 18:03:56 -07:00
Bo Herrmannsen
2bf6d804c4 Merge pull request #1269 from Wurstnase/Development
Logic error correction
2014-12-29 23:20:05 +01:00
Wurstnase
9453bb13c2 Logic error correction 2014-12-29 23:17:42 +01:00
Bo Herrmannsen
67fd8f0727 Merge pull request #1267 from RobotCaleb/LanguageFix
Language Fix - Using the new language implementation wasn't behaving as expected.
2014-12-29 19:49:11 +01:00
Caleb Anderson
2309c9f43a Merge branch 'LanguageFix' of github.com:RobotCaleb/Marlin-Kossel_Clear into LanguageFix
Conflicts:
	Marlin/language.h
2014-12-29 10:48:56 -07:00
Caleb Anderson
236db44669 Fix spacing 2014-12-29 10:44:55 -07:00
Caleb Anderson
e6774fb7d2 Using the new language implementation wasn't behaving as expected.
No matter what LANGUAGE_CHOICE was set to it would always take the en branch.
I revamped it a bit to use a macro to create the language include file name. This required a slight tweak to the RU declaration since it's special-cased in a couple places in code.

This is an attempt to pull my changes from #1222 over.
2014-12-29 10:43:19 -07:00
Bo Herrmannsen
f4ce235589 Merge pull request #1266 from RobotCaleb/DeltaCalMenu
Delta manual calibration menu
2014-12-29 18:42:40 +01:00
Caleb Anderson
cb047e9070 Actual menu change. Moved menu logic to not be shown unless not currently printing. (untested but straight-forward, printer in a bad state currently) 2014-12-29 10:19:25 -07:00
Caleb Anderson
5b336a4cdb Delta calibration menu based on http://minow.blogspot.com/index.html#4918805519571907051
To test/enable, uncomment the #define DELTA_CALIBRATION_MENU in Configuration.h
2014-12-29 10:13:00 -07:00
Bernhard Kubicek
10ad9f1062 Addes servo0 pin ultimaker 2014-12-29 17:27:14 +01:00
Bernhard Kubicek
f24c5d82e3 Update Marlin_main.cpp
fixed minor typo
2014-12-29 17:17:30 +01:00
Bernhard Kubicek
053b541de8 Merge pull request #1265 from Wurstnase/Development
Expand manage_inactivity #1264
2014-12-29 17:14:35 +01:00
Wurstnase
8a6f098cc6 Expand manage_inactivity #1264
void manage_inactivity(bool ignore_stepper_queue=false)

standard is false so it is not necessary to change additional code. this
change should be better, hopefully nophead like this :)
2014-12-29 17:07:22 +01:00
Bernhard Kubicek
78167ce439 Merge pull request #1264 from Wurstnase/Development
change filament issue
2014-12-29 16:48:18 +01:00
Wurstnase
d1995aec7a Rename ignore_blocks_queued
more speaking name
2014-12-29 16:47:08 +01:00
Wurstnase
4122de9d17 change filament issue
make a more general solution
2014-12-29 16:31:00 +01:00
wgm4321
d60efc3b5d Fix syntax error caused by previous changes. 2014-12-28 20:47:59 -05:00
wgm4321
cb12161191 Add Filament menu and add Filament/Retract settings to config store. 2014-12-28 20:43:14 -05:00
Bo Herrmannsen
c1df713e4d Merge pull request #1258 from fmalpartida/Development
Merge branch 'SAV-MkI_merge' into Development
2014-12-28 19:56:32 +01:00
fmalpartida
ec33df0554 Merge branch 'SAV-MkI_merge' into Development
Tested for SAV MKI and SAV 3D LCD on lewihe.
2014-12-28 19:54:06 +01:00
Bo Herrmannsen
a5ed3e96f2 Update README.md 2014-12-28 18:26:16 +01:00
Bo Herrmannsen
60959f196f Delete .gitignore 2014-12-28 18:25:33 +01:00
Bo Herrmannsen
95429a4108 Delete .travis.yml 2014-12-28 18:25:27 +01:00
Bo Herrmannsen
a0959366af Update README.md 2014-12-28 17:59:18 +01:00
Bo Herrmannsen
b2000b7055 Merge pull request #1255 from mattsch/503_fwretract_dev_branch
503 fwretract dev branch
2014-12-28 17:52:18 +01:00
Matthew Schick
0468f81950 Update for pull request #837 2014-12-28 11:22:44 -05:00
Matthew Schick
6e42c9e305 Add fwretract settings to M503 output 2014-12-28 11:22:44 -05:00
Bo Herrmannsen
0504c02153 Update README.md 2014-12-28 16:34:38 +01:00
alexborro
3afe66bb0c Fix issues #1248, #1240
- Fixed issue when BAL area probing is shorter than it should be for
grid probing
- Warning when BAL activated with Delta Kinematics
- Fix XY_TRAVEL_SPEED when homing Z axis
2014-12-28 13:27:39 -02:00
Bo Herrmannsen
73b7b08f2c Merge pull request #1253 from lobermann/Development_AutoLevelOffset
Consider negative Z Offsets when auto bed leveling is active
2014-12-28 12:52:16 +01:00
Lukas Obermann
9eb6df17a7 Consider negative Z Offsets when auto bed leveling is active 2014-12-28 12:46:35 +01:00
Bo Herrmannsen
c9f60183a9 Merge pull request #1233 from NarimaanV/Development
Fixed BABYSTEPPING feature
2014-12-28 10:13:21 +01:00
Bo Herrmannsen
0d957872a0 Merge pull request #1234 from gregrebholz/issue_1069
Fixes #1069.  Added "auto fan" checks to PID_autotune.
2014-12-28 10:12:08 +01:00
Bo Herrmannsen
9c07d28bd6 Merge pull request #1249 from drf5n/PID_CI_v2
temperature.cpp: Add Conditional Integration to prevent excessive integral windup
2014-12-28 10:09:25 +01:00
Bo Herrmannsen
23e768dffa Merge pull request #1250 from chertykov/Development
Move initialization of errormagic[] and echomagic[] to Marlin_main.cpp
2014-12-28 10:09:08 +01:00
Bo Herrmannsen
f7ffd53bac Merge pull request #1251 from thinkyhead/progress_bar
LCD Progress Bar
2014-12-28 10:08:49 +01:00
Scott Lahteine
2f467e2797 LCD Progress Bar 2014-12-27 22:26:14 -08:00
Denis Chertykov
050ca9ca13 Move initialization of errormagic[] and echomagic[] to Marlin_main.cpp 2014-12-28 09:09:42 +03:00
David Forrest
cf52c48d19 Configuration.m: Set PID_INTEGRAL_DRIVE_MAX from PID_MAX from BANG_MAX.
Current defaults are all 255.  If it makes sense to reduce them, they should come down together, and
be in a  PID_INTEGRAL_DRIVE_MAX <= PID_MAX <- BANG_MAX relationship.
2014-12-27 15:26:09 -05:00
David Forrest
984177c40c temperature.cpp:Add PID Conditional integration on heated bed. 2014-12-27 15:26:09 -05:00
David Forrest
c9b8435749 heater.c: Limit PID I term with conditional integration. 2014-12-27 15:26:09 -05:00
Bo Herrmannsen
f00a202246 Update README.md 2014-12-27 11:33:25 +01:00
Bo Herrmannsen
6efc4f3abf Merge pull request #1239 from ErikZalm/Marlin_v1
getting even with v1
2014-12-26 14:32:15 +01:00
Bo Herrmannsen
45336bb6c0 Update README.md 2014-12-26 11:29:29 +01:00
Bo Herrmannsen
5f555140be Update README.md 2014-12-24 13:18:29 +01:00
Greg Rebholz
7ecb7cbd46 Added "auto fan" checks to PID_autotune 2014-12-23 23:50:00 -05:00
NarimaanV
7667949aca Fixed BABYSTEPPING feature
Moved PSTR() macro to correct place which was causing the " initializer fails to determine size of '__c' " when attempting to compile with BABYSTEPPING enabled.
2014-12-23 12:49:54 -05:00
Bo Herrmannsen
529c937943 Merge pull request #1230 from thinkyhead/readme_tweak
Clarification and markdown for boelle notes
2014-12-23 13:18:32 +01:00
Scott Lahteine
7250ec4337 Some clarification and markdown for boelle notes 2014-12-23 04:05:47 -08:00
Bo Herrmannsen
f05225a271 Update README.md 2014-12-23 11:37:08 +01:00
Scott Lahteine
d080027ff4 ftostr32np > ftostr32sp
sp=space-padded, similar to: ns=no-sign
2014-12-22 17:11:35 -08:00
Scott Lahteine
bdf2c94bff Least stack-usage self-contained ftostr32np()
This is the optimal code for a self-contained formatter, although the
original code is crafty in being smaller and simpler, and can be
evaluated as using the original output as a scratch pad for state,
making the final formatter more straightforward. While this code is
longer, all code-paths are minimal.
2014-12-22 17:07:37 -08:00
Scott Lahteine
e83ecec809 As it should be 2014-12-22 17:04:22 -08:00
Scott Lahteine
f80a602783 Least stack-usage self-contained ftostr32np()
This is the optimal code for a self-contained formatter, although the
original code is crafty in being smaller and simpler, and can be
evaluated as using the original output as a scratch pad for state,
making the final formatter more straightforward. While this code is
longer, all code-paths are minimal.
2014-12-22 17:04:00 -08:00
Scott Lahteine
f390b3f314 Patch to make Z look more like X and Y on UltraLCD 2014-12-22 17:03:59 -08:00
Caleb Anderson
d254651146 Fix spacing 2014-12-21 19:57:41 -07:00
Caleb Anderson
7db943b147 Language change implementation revamped. Didn't work as intended with Arduino IDE. 2014-12-21 14:45:34 -07:00
Bo Herrmannsen
fe8d8beb7a Merge pull request #1216 from ErikZalm/Marlin-v1-stable
Merge pull request #1213 from ErikZalm/Marlin_v1
2014-12-21 15:11:40 +01:00
Bo Herrmannsen
5f36ed2c4c Merge pull request #1215 from ErikZalm/Marlin-v1-bug-fixing
Merge pull request #1214 from ErikZalm/Marlin_v1
2014-12-21 15:11:21 +01:00
Bo Herrmannsen
af7fbcc026 Merge pull request #1213 from ErikZalm/Marlin_v1
added note about stale branches
2014-12-21 15:10:03 +01:00
Bo Herrmannsen
203df3533d Merge pull request #1214 from ErikZalm/Marlin_v1
added note about stale branches
2014-12-21 15:09:51 +01:00
Bo Herrmannsen
b792b74036 added note about stale branches 2014-12-21 15:05:41 +01:00
Bo Herrmannsen
dc64175d77 Update README.md 2014-12-21 13:42:11 +01:00
alexborro
a8d8ef7534 Merge pull request #1208 from ErikZalm/revert-1199-Marlin_v1
Revert "Change Auto_Bed_Leveling to Auto_Bed_Compensation"
2014-12-21 10:08:26 -02:00
alexborro
d74aabf259 Revert "Change Auto_Bed_Leveling to Auto_Bed_Compensation" 2014-12-21 10:06:05 -02:00
Bo Herrmannsen
60628864ca Merge pull request #1167 from thinkyhead/sd_freemem
Use SdFatUtil::FreeRam() for freeMemory() if there
2014-12-20 18:31:21 +01:00
Bo Herrmannsen
889d7ba218 Merge pull request #1177 from martin-pr/probing_z_speed
Split do_blocking_move() to XY and Z sections
2014-12-20 18:30:35 +01:00
Bo Herrmannsen
5e7bd2dc87 Merge pull request #1200 from chertykov/Marlin_v1
Fix syntax errors in #ifdef
2014-12-20 18:29:39 +01:00
Bo Herrmannsen
1e865e5df7 Merge pull request #1199 from ei8htohms/Marlin_v1
Change Auto_Bed_Leveling to Auto_Bed_Compensation
2014-12-20 18:29:28 +01:00
Denis Chertykov
b086394178 Fix syntax errors in #ifdef. 2014-12-20 19:33:43 +03:00
John Davis
39d28a9bbf Update qr_solve.h
Changed level to compensation
2014-12-19 17:53:55 -05:00
John Davis
6325968a39 Update qr_solve.cpp
Changed leveling to compensation
2014-12-19 17:52:13 -05:00
John Davis
e99f24ff2f Update planner.h
Changed level and leveling to compensation.
2014-12-19 17:51:14 -05:00
John Davis
ac204028e7 Update planner.cpp
Changed level and leveling to compensation
2014-12-19 17:49:22 -05:00
John Davis
4315c2547a Update Marlin_main.cpp
Changed level and leveling to compensation (except with "verbose_level" and "lcd_reset_alert_level").
2014-12-19 17:41:29 -05:00
John Davis
f21c65918f Update Servo.h
Changed AUTO_BED_LEVELING to AUTO_BED_COMPENSATION
2014-12-19 17:20:09 -05:00
John Davis
58c4473bea Update Servo.cpp
Changed AUTO_BED_LEVELING to AUTO_BED_COMPENSATION
2014-12-19 17:18:55 -05:00
John Davis
825c46024d Update vector_3.cpp
Changed AUTO_BED_LEVEL to AUTO_BED_COMPENSATION
2014-12-19 17:16:31 -05:00
John Davis
cfe80e1def Update vector_3.h 2014-12-19 17:14:35 -05:00
John Davis
7464d3c96a Update ConfigurationStore.cpp
Changed AUTO_BED_LEVEL to AUTO_BED_COMPENSATION
2014-12-19 17:08:43 -05:00
John Davis
81568c3c6d Update Configuration.h
Changed Auto Bed Level to Auto Bed Compensation
2014-12-19 17:06:56 -05:00
John Davis
4ebeb14026 Update README.md
Changed "Bed Auto Level" (and variants) to "Auto Bed Compensation".
2014-12-19 17:01:49 -05:00
Bo Herrmannsen
03e489aaad Merge pull request #1197 from foosel/fix/issue_1147
Fixes commands not being acknowledged in the same order they are received in
2014-12-19 14:39:05 +01:00
Gina Häußge
acc0e75279 Fixes commands not being acknowledged in the same order they are received
in

G0 to G3 were previously acknowledged in the get_command method, causing
them to be possibly acknowledged before commands coming after them that
were acknowledged in process_commands.

This patch fixes this, moving the acknowledgement of G0 to G3 to the
process_commands method as well. These commands are therefore no
longer acknowledged when the enter the cmd_buffer but instead only
acknowledged when the enter the plan_buffer.

Guaranteeing that commands are acknowledged in the same order in which
they were received by the firmware allows host software to be able to
track the life cycle of commands and such a better management of the
firmware's serial buffers as well as better internal command processing
and response parsing without having to depend on throwing an epic
amount of regular expressions against each line received back from the
firmware.

Fixes ErikZalm/Marlin#1147
2014-12-19 14:20:36 +01:00
daid
a5c059dcf5 Merge branch 'revert-1154-sd_sorting' into Marlin_v1 2014-12-18 23:14:15 +01:00
daid
17de96ace7 Merge branch 'Marlin_v1' into revert-1154-sd_sorting
Conflicts:
	Marlin/cardreader.cpp
	Marlin/cardreader.h
2014-12-18 23:13:50 +01:00
Bo Herrmannsen
7458bfe297 Merge pull request #1195 from thinkyhead/board_defines
Defines for electronics boards
2014-12-18 23:06:47 +01:00
Scott Lahteine
6880e93b75 Happy configs 2014-12-18 14:02:47 -08:00
Scott Lahteine
61d8e40712 Merge branch 'board_defines' of https://github.com/thinkyhead/Marlin into board_defines 2014-12-18 13:59:39 -08:00
Scott Lahteine
3b1f186c0c Clean up configs 2014-12-18 13:59:31 -08:00
Scott Lahteine
f83d0f2a68 Defines for electronics boards
Added boards.h which contains defines for all the board numbers, plus
some shorthand macros for less typing.
2014-12-18 13:59:31 -08:00
Bo Herrmannsen
bd25e7393b Merge pull request #1192 from thinkyhead/split_language
Split up languages.h. Use ISO language codes.
2014-12-18 22:26:55 +01:00
Scott Lahteine
d201fe74c6 Clean up configs 2014-12-18 12:07:26 -08:00
Scott Lahteine
0e23105e1e Defines for electronics boards
Added boards.h which contains defines for all the board numbers, plus
some shorthand macros for less typing.
2014-12-18 12:02:36 -08:00
Bo Herrmannsen
72da53c613 Merge pull request #1194 from boelle/Marlin_v1
Added example configs for printers from http://tvrrug.org.uk/
2014-12-18 20:41:48 +01:00
Bo Herrmannsen
174f8d3631 Added example configs for printers from http://tvrrug.org.uk/ 2014-12-18 20:34:24 +01:00
Scott Lahteine
e970461adb Clean up, move unused to the bottom, add headings 2014-12-18 10:33:00 -08:00
Scott Lahteine
0c06e97e98 Split up languages.h, use ISO codes
Breaking up languages.h makes it easier to translate. Using language
codes makes it easier to select a language and sets the naming standard.
2014-12-18 09:31:19 -08:00
Bo Herrmannsen
a9c334e8bc Merge pull request #1191 from thinkyhead/code_shrink
Shrink and Optimize
2014-12-18 17:23:11 +01:00
Bo Herrmannsen
842da54e68 Merge pull request #1187 from thinkyhead/fix_constants
A few constants where they belong
2014-12-18 17:21:46 +01:00
Scott Lahteine
07c6b5ab71 Using axis constants 2014-12-18 08:13:08 -08:00
Scott Lahteine
1857e611d3 Other small tweaks 2014-12-18 07:49:16 -08:00
Scott Lahteine
63e1665fa9 Reduce ultralcd.cpp redundancies 2014-12-18 07:30:05 -08:00
Scott Lahteine
e69313fc2b Reduce dogm lcd code 2014-12-18 07:03:40 -08:00
Bo Herrmannsen
bd22405412 Merge pull request #1190 from thinkyhead/sd_sorting
Wrap call to flush_presort
2014-12-18 12:50:55 +01:00
Scott Lahteine
49791949af Wrap call to flush_presort 2014-12-18 03:47:12 -08:00
Bo Herrmannsen
140ce06692 Merge pull request #1188 from thinkyhead/lcd_longname
LCD Long Filename
2014-12-18 09:59:18 +01:00
Scott Lahteine
28c3ad291a Merge branch 'sd_freemem' of https://github.com/thinkyhead/Marlin into sd_freemem 2014-12-17 23:27:21 -08:00
Scott Lahteine
0450e83fa5 Use SdFatUtil::FreeRam() for freeMemory() if there 2014-12-17 23:26:52 -08:00
Scott Lahteine
f21cce0b28 Rebase to Marlin_v1 2014-12-17 23:07:36 -08:00
Scott Lahteine
39b47ef5b0 Merge branch 'fix_constants' of https://github.com/thinkyhead/Marlin into fix_constants
Conflicts:
	Marlin/cardreader.h
2014-12-17 23:02:23 -08:00
Scott Lahteine
e4b98011cf And one more... 2014-12-17 23:01:24 -08:00
Scott Lahteine
60598b4cdd A few constants where they belong 2014-12-17 23:01:24 -08:00
Scott Lahteine
f074706d2e And one more... 2014-12-17 20:29:34 -08:00
Scott Lahteine
b726511a3b A few constants where they belong 2014-12-17 20:22:33 -08:00
Bo Herrmannsen
4d61287807 Merge pull request #1186 from boelle/Marlin_v1
adding hardware files for OMC
2014-12-17 23:28:30 +01:00
Bo Herrmannsen
b17b8583af adding hardware files for OMC
for ide 1.0.6
2014-12-17 23:01:30 +01:00
Bo Herrmannsen
280504e2e0 Merge pull request #908 from alromh87/Marlin_v1
Support for Gen3 Monolithic electronics
2014-12-17 22:28:07 +01:00
Bo Herrmannsen
341c7d080d Merge pull request #996 from cbane/arduino-1.5
Add Arduino add-ons for Arduino 1.5
2014-12-17 21:46:18 +01:00
Bo Herrmannsen
31ca3de72f Merge pull request #819 from neildarlow/Marlin_v1
Activate LiquidTWI2 device detection and space-pad LCD status line.
2014-12-17 21:42:53 +01:00
Bo Herrmannsen
e83cfc0a62 Merge pull request #1163 from thinkyhead/lcd_abort_message
LCD "Abort" Message
2014-12-17 21:30:19 +01:00
Bo Herrmannsen
3ac8bd8de7 Merge pull request #1013 from mattrobbo10/Marlin_v1
Proposing adding gen7-dist from gen7 electronics repo - marlin now compiles for gen7
2014-12-17 21:21:18 +01:00
Bo Herrmannsen
0b310ab6c5 Merge pull request #1153 from xinfab/negative_values_in_menu
Negative values in menu
2014-12-17 20:58:01 +01:00
Bo Herrmannsen
91d740e128 Merge pull request #1141 from filipmu/Filament-Sensor
Display filament sensor data on a 20x4 LCD or Graphical LCD
2014-12-17 20:38:30 +01:00
Bo Herrmannsen
00f279376f Merge pull request #1173 from boelle/Marlin_v1
Adding Melzi board
2014-12-17 20:21:05 +01:00
alexborro
ab355a90d3 Revert "SD Sort and Buffer" 2014-12-17 14:50:59 -02:00
alexborro
4297bcc89f Merge pull request #1154 from thinkyhead/sd_sorting
SD Sort and Buffer
2014-12-16 10:17:13 -02:00
Scott Lahteine
d088b5f30f Remove debug echo 2014-12-13 06:33:12 -08:00
Scott Lahteine
1fad8e6a81 Proper long file name var 2014-12-13 06:17:00 -08:00
Scott Lahteine
467f0ea6b7 Merge branch 'sd_sorting' of https://github.com/thinkyhead/Marlin into sd_sorting 2014-12-13 06:13:18 -08:00
Scott Lahteine
29e854c535 Disable SDCARD_SORT_ALPHA by default
For legacy boards it’s better if this option is disabled.
2014-12-13 06:12:34 -08:00
Scott Lahteine
6599adc184 Polish up a little... 2014-12-13 06:12:34 -08:00
Scott Lahteine
a12eec33e2 Completed SORT_USES_MORE_RAM implementation
For the MORE_RAM option we need to buffer both the short and long
names, even though long names are sometimes redundant. Worst case, all
the names are max length. We can save some RAM by not storing these. We
could save more RAM by only storing the visible part of the long name.
2014-12-13 06:12:34 -08:00
Scott Lahteine
c9486ebb85 Improvements, more SORT_USES_MORE_RAM
With this option, always keeps the dir in RAM, doubling as a cache for
getfilename. A board with only 8K of SRAM is cutting it very close.
2014-12-13 06:12:33 -08:00
Scott Lahteine
b6ffea612a Expand on More RAM concept, address minor bugs 2014-12-13 06:10:44 -08:00
Scott Lahteine
8196b36ad9 SD Card Alpha Sorting
First iteration of alphabetical sorting for SD cards, both
slow+efficient and fast+rammy. Option for folders to sort first, last,
or not at all.
2014-12-13 06:07:52 -08:00
Scott Lahteine
cf749dbeda Completed SORT_USES_MORE_RAM implementation
For the MORE_RAM option we need to buffer both the short and long
names, even though long names are sometimes redundant. Worst case, all
the names are max length. We can save some RAM by not storing these. We
could save more RAM by only storing the visible part of the long name.
2014-12-13 06:03:39 -08:00
Scott Lahteine
ae081d0fe0 Improvements, more SORT_USES_MORE_RAM
With this option, always keeps the dir in RAM, doubling as a cache for
getfilename. A board with only 8K of SRAM is cutting it very close.
2014-12-13 06:03:39 -08:00
Scott Lahteine
785143a013 Expand on More RAM concept, address minor bugs 2014-12-13 06:03:39 -08:00
Scott Lahteine
0cbbba08bd SD Card Alpha Sorting
First iteration of alphabetical sorting for SD cards, both
slow+efficient and fast+rammy. Option for folders to sort first, last,
or not at all.
2014-12-13 06:03:39 -08:00
Scott Lahteine
af0549bfd2 Merge branch 'sd_freemem' of https://github.com/thinkyhead/Marlin into sd_freemem 2014-12-13 06:03:15 -08:00
Scott Lahteine
ae1a698263 Use SdFatUtil::FreeRam() for freeMemory() if there 2014-12-13 06:03:10 -08:00
Scott Lahteine
600b4f0590 Merge branch 'lcd_abort_message' of https://github.com/thinkyhead/Marlin into lcd_abort_message 2014-12-13 06:01:56 -08:00
Scott Lahteine
3ebfd29312 Print a message when printing is aborted
Messages in gcode files like “M117 Printing…” were not being cleared on
Stop Print.
2014-12-13 06:01:46 -08:00
Martin Prazak
2ef0669b19 Split do_blocking_move() to XY and Z sections to make sure that the Z homing feedrate is not exceeded 2014-12-07 15:31:46 +00:00
Scott Lahteine
485ca10bc3 Disable SDCARD_SORT_ALPHA by default
For legacy boards it’s better if this option is disabled.
2014-12-06 04:16:45 -08:00
Scott Lahteine
599530902d Polish up a little... 2014-12-06 03:40:39 -08:00
Bo Herrmannsen
1ba7c31395 Adding Melzi board
these are the files needed to support the Melzi board
2014-12-04 23:45:51 +01:00
Neil Darlow
64139f5e5a Merge https://github.com/ErikZalm/Marlin into Marlin_v1 2014-12-04 21:09:03 +00:00
galexander1
2f9ed1777d Merge pull request #1168 from boelle/Marlin_v1
Adding Support for Toshiba Stepper Drivers
2014-12-03 09:32:23 -05:00
Bo Herrmannsen
edfcf3b527 Toshiba Stepper Driver support
Tosh stepper drivers need to be driven slower, so the stepper code
was interleaved to separate the pin HIGH from the pin LOW. This adds
enough instructions to make it work, without needing nops.
2014-12-03 15:01:52 +01:00
Bo Herrmannsen
c429a4b3ec Toshiba Stepper Driver support
Tosh stepper drivers need to be driven slower, so the stepper code
was interleaved to separate the pin HIGH from the pin LOW. This adds
enough instructions to make it work, without needing nops.
2014-12-03 14:37:16 +01:00
Scott Lahteine
e5a334b83a Use SdFatUtil::FreeRam() for freeMemory() if there 2014-12-03 05:19:42 -08:00
Scott Lahteine
f05928d886 Merge branch 'sd_sorting' of https://github.com/thinkyhead/Marlin into sd_sorting 2014-11-30 21:38:26 -08:00
Scott Lahteine
b4e287fe8e Completed SORT_USES_MORE_RAM implementation
For the MORE_RAM option we need to buffer both the short and long
names, even though long names are sometimes redundant. Worst case, all
the names are max length. We can save some RAM by not storing these. We
could save more RAM by only storing the visible part of the long name.
2014-11-30 21:37:10 -08:00
Scott Lahteine
de725bd408 # This is a combination of 4 commits.
# The first commit's message is:
SD Card Alpha Sorting

First iteration of alphabetical sorting for SD cards, both
slow+efficient and fast+rammy. Option for folders to sort first, last,
or not at all.

# This is the 2nd commit message:

Expand on More RAM concept, address minor bugs

# This is the 3rd commit message:

Improvements, more SORT_USES_MORE_RAM

With this option, always keeps the dir in RAM, doubling as a cache for
getfilename. A board with only 8K of SRAM is cutting it very close.

# This is the 4th commit message:

Completed SORT_USES_MORE_RAM implementation

For the MORE_RAM option we need to buffer both the short and long
names, even though long names are sometimes redundant. Worst case, all
the names are max length. We can save some RAM by not storing these. We
could save more RAM by only storing the visible part of the long name.
2014-11-30 21:25:30 -08:00
Scott Lahteine
061c1fcd93 Merge branch 'lcd_abort_message' of https://github.com/thinkyhead/Marlin into lcd_abort_message 2014-11-30 19:58:10 -08:00
Scott Lahteine
181e487f13 Print a message when printing is aborted
Messages in gcode files like “M117 Printing…” were not being cleared on
Stop Print.
2014-11-30 19:57:52 -08:00
Scott Lahteine
ff38d7c293 Print a message when printing is aborted
Messages in gcode files like “M117 Printing…” were not being cleared on
Stop Print.
2014-11-30 19:56:06 -08:00
nothinman
1977b4490f Merge pull request #1159 from thinkyhead/lcd_wait_better
M0/M1 Message Fix
2014-11-28 16:44:29 +00:00
Scott Lahteine
7562183efc Skip over spaces first 2014-11-28 08:09:28 -08:00
nothinman
5a8b3a84ae Merge pull request #1155 from thinkyhead/lcd_wait_better
M0-M1 Enhancements
2014-11-28 11:01:24 +00:00
nothinman
1b7c065055 Merge pull request #1158 from elgambitero/patch-2
Updated a bit of spanish language
2014-11-28 10:57:50 +00:00
elgambitero
433ac29d31 Updated a bit of spanish language 2014-11-27 22:02:49 +01:00
Scott Lahteine
2427d0b683 Merge branch 'sd_sorting' of https://github.com/thinkyhead/Marlin into sd_sorting 2014-11-26 21:09:09 -08:00
Scott Lahteine
8ebefe6d35 Completed SORT_USES_MORE_RAM implementation
For the MORE_RAM option we need to buffer both the short and long
names, even though long names are sometimes redundant. Worst case, all
the names are max length. We can save some RAM by not storing these. We
could save more RAM by only storing the visible part of the long name.
2014-11-26 21:08:56 -08:00
Scott Lahteine
725ba8d01e Improvements, more SORT_USES_MORE_RAM
With this option, always keeps the dir in RAM, doubling as a cache for
getfilename. A board with only 8K of SRAM is cutting it very close.
2014-11-26 21:08:56 -08:00
Scott Lahteine
2b54eeb897 Expand on More RAM concept, address minor bugs 2014-11-26 21:08:56 -08:00
Scott Lahteine
14187dae6c SD Card Alpha Sorting
First iteration of alphabetical sorting for SD cards, both
slow+efficient and fast+rammy. Option for folders to sort first, last,
or not at all.
2014-11-26 21:08:56 -08:00
Scott Lahteine
662fe8288b kill DEADJOE 2014-11-26 21:07:48 -08:00
Scott Lahteine
aad336eb81 Merge branch 'lcd_wait_better' of https://github.com/thinkyhead/Marlin into lcd_wait_better 2014-11-26 21:06:13 -08:00
Scott Lahteine
5874852501 get latest Marlin_v1 changes 2014-11-26 21:05:11 -08:00
Scott Lahteine
12b51d6060 Ignore S and P if no value >0 is included. 2014-11-26 21:05:11 -08:00
Scott Lahteine
d12b24758a Clear LCD to welcome_msg if not printing
The welcome message is more appropriate than “resuming print” if
nothing is printing.
2014-11-26 21:05:11 -08:00
Scott Lahteine
3f54c9ba33 Relocate click ignore code into info screen 2014-11-26 21:05:10 -08:00
Scott Lahteine
92e21d3ee2 M0-M1 Enhancements
Allow M0 and M1 to include a message string. Ignore clicks on “Wait for
user” so that the Info Screen stays up.
2014-11-26 21:05:10 -08:00
Scott Lahteine
5714f64927 get latest Marlin_v1 changes 2014-11-26 21:00:02 -08:00
Scott Lahteine
d407a43ac1 Ignore S and P if no value >0 is included. 2014-11-26 09:21:37 -08:00
Scott Lahteine
eaa788e076 Completed SORT_USES_MORE_RAM implementation
For the MORE_RAM option we need to buffer both the short and long
names, even though long names are sometimes redundant. Worst case, all
the names are max length. We can save some RAM by not storing these. We
could save more RAM by only storing the visible part of the long name.
2014-11-26 08:51:31 -08:00
Scott Lahteine
6901445592 Improvements, more SORT_USES_MORE_RAM
With this option, always keeps the dir in RAM, doubling as a cache for
getfilename. A board with only 8K of SRAM is cutting it very close.
2014-11-26 07:17:47 -08:00
Lionello Lunesu
0d35b1d0b8 Allow negative values in menus 2014-11-25 18:34:02 +08:00
Scott Lahteine
87fc00c182 Expand on More RAM concept, address minor bugs 2014-11-24 20:26:27 -08:00
Scott Lahteine
7681711e7e Clear LCD to welcome_msg if not printing
The welcome message is more appropriate than “resuming print” if
nothing is printing.
2014-11-24 18:50:11 -08:00
Scott Lahteine
aa4160ba62 Relocate click ignore code into info screen 2014-11-24 17:12:08 -08:00
Scott Lahteine
cd769781a1 M0-M1 Enhancements
Allow M0 and M1 to include a message string. Ignore clicks on “Wait for
user” so that the Info Screen stays up.
2014-11-24 16:56:37 -08:00
Scott Lahteine
f40cff59f3 SD Card Alpha Sorting
First iteration of alphabetical sorting for SD cards, both
slow+efficient and fast+rammy. Option for folders to sort first, last,
or not at all.
2014-11-24 14:03:20 -08:00
galexander1
90eb266139 Merge pull request #1148 from krasin/travis
Add Travis CI config to build Marlin firmware.
2014-11-16 08:57:31 -05:00
Ivan Krasin
d078c7c29f Add Travis CI config to build Marlin firmware. 2014-11-16 01:46:24 -05:00
galexander1
3dc9e478ad Merge pull request #1143 from Silly105/Marlin_v1
Changed graphic LCD info screen to match the set # of extruders
2014-11-12 17:41:36 -05:00
Jonas
0d97dec434 Adaption of LCD info screen
Here comes a compile-time operation to match the extruder symbols on the
info screen to the set number of extruders in configuration.h.
When only one extruder is selected, the "1" on the symbol will not be
displayed.
2014-11-12 17:10:48 +01:00
Filip Mulier
1651ccc0cc Added Filament Sensor to the README
Added some background on the filament sensor to explain it better.
2014-11-10 22:05:20 -06:00
Filip Mulier
3b1ab84536 Display Filament Sensor data on graphic LCD
Added support to show the filament width on the status line of the
graphic LCD.  The status will show for 5 sec and then switch over to
data.  Status can be seen by clicking the button.
2014-11-10 21:46:37 -06:00
Filip Mulier
d84934d8c5 Display Filament Sensor data on 20x4 LCD
Changes to support displaying the real-time filament width and the
volume factor on a 20x4 LCD.  The data is displayed on the 4th line.
First the status message is displayed for 5 seconds, and then the
filament data is displayed.  The status message can be seen by
re-selecting the info screen in the menu.
2014-11-10 21:43:58 -06:00
Bernhard Kubicek
4ffdbcbd4e Merge pull request #1138 from filipmu/Marlin_v1
Comment out the FILAMENT_SENSOR define by default in config.
2014-11-09 20:38:30 +01:00
Filip Mulier
5c8107bcdd Commented out FILAMENT_SENSOR #define
Commented out the FILAMENT_SENSOR define so that it is not enabled by
default.  Code does not work on all hardware variants.
2014-11-09 13:26:02 -06:00
filipmu
df7c80335a Merge pull request #3 from filipmu/Marlin_v1
Sync up from my Marlin_v1 to Filament-sensor
2014-11-09 07:07:26 -06:00
filipmu
b014fd1ad2 Merge pull request #2 from ErikZalm/Marlin_v1
Sync up to Marlin
2014-11-09 07:01:57 -06:00
galexander1
443b648863 Merge pull request #1133 from monkeydave/update_delta_config
Updated example configurations for Delta printers
2014-11-03 08:14:54 -05:00
David
377dfb182f Updated example configurations for Delta printers 2014-11-02 21:04:54 +00:00
Neil Darlow
b81021f475 Merge https://github.com/ErikZalm/Marlin into Marlin_v1 2014-10-21 12:06:56 +01:00
Erik van der Zalm
724197454c Merge pull request #1104 from ch100/Marlin_v1
Fixed typo.
2014-10-11 23:10:00 +02:00
Erik van der Zalm
058e446531 Merge pull request #1037 from filipmu/Filament-Sensor
Support for a filament diameter sensor
2014-10-11 22:56:01 +02:00
Christian Inci
110c5dcf23 Fixed typo.
Signed-off-by: Christian Inci <chris.pcguy.inci@gmail.com>
2014-10-11 00:25:36 +02:00
galexander1
256c25a843 Merge pull request #1101 from MattStultz/patch-1
Fix "add_homeing" to "add_homing" to match changes
2014-10-07 08:20:53 -04:00
Matt Stultz
ca30aee903 Fix "add_homeing" to "add_homing" to match changes 2014-10-07 00:16:27 -04:00
Erik van der Zalm
0733825fb1 Merge pull request #1099 from Fourmi/Marlin_v1
Update line 627 ,wrong number on thermistortables
2014-10-06 14:36:00 +02:00
Fourmi
af3e4d7510 Update line 627 ,wrong number on thermistortables
Wrong number on line 627 > i change number "12" by the correct number "13"
Soory
2014-10-06 14:21:44 +02:00
Erik van der Zalm
aaaf8fe8dd Merge pull request #1068 from darkjavi/Marlin_v1
Added profile for RAMPS with 2 extruders and 1 fan, no heated bed
2014-10-06 13:41:38 +02:00
Erik van der Zalm
b360306881 Merge pull request #1073 from WingTangWong/wing-fix-float-delta
Wing fix float delta
2014-10-06 13:41:01 +02:00
Erik van der Zalm
ce85515428 Merge pull request #1082 from Fourmi/Marlin_v1
Add thermistor table
2014-10-06 13:39:36 +02:00
Erik van der Zalm
764921bdbf Merge pull request #1091 from Aldert/patch-1
Update motion_control.cpp
2014-10-06 13:37:19 +02:00
Erik van der Zalm
c40c7b589b Merge pull request #1095 from thinkyhead/codeclean
Simple code cleanup. Rename "homeing" to homing.
2014-10-06 13:36:48 +02:00
Erik van der Zalm
0f2e0525df Merge pull request #1096 from thinkyhead/set-home
Proposed feature: Set Home Offsets
2014-10-06 13:36:11 +02:00
Erik van der Zalm
5ae02a361b Merge pull request #1097 from thinkyhead/round-up-xyz
Adjust the Z display to hide float rounding errors
2014-10-06 13:35:00 +02:00
Erik van der Zalm
83037542aa Merge pull request #1098 from mattsch/optional_hotend_lcd
Make hotend optional when compiling with lcd support
2014-10-06 13:34:37 +02:00
Matthew Schick
fb34265d75 Make hotend optional when compiling with lcd support
Signed-off-by: Matthew Schick <matthew.schick@gmail.com>
2014-10-06 00:19:07 -04:00
Scott Lahteine
6e343ef2f0 Adjust the Z display to hide float rounding errors 2014-10-05 18:34:54 -07:00
Scott Lahteine
2f6c57eadc Proposed feature: Set Home Offsets
Add an item to the LCD menu that applies the current axis position to
the “add_homeing” offset.
2014-10-05 13:35:45 -07:00
Scott Lahteine
f989bd5435 Simple code cleanup. Rename "homeing" to homing. 2014-10-05 13:20:53 -07:00
Neil Darlow
6c5a460e65 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-10-05 12:54:54 +01:00
Aldert
d1e4237e1d Update motion_control.cpp
G03 Full circle did not work (G02 is working correct)
2014-10-04 09:24:09 +02:00
Fourmi
a664763e6f Update thermistortables.h
Add another thermistor table (13),it's a cartridge thermistor up to +300°C,use with Hotend "Simple ONE" & "All In ONE"

Thx
2014-09-27 09:05:10 +02:00
Fourmi
b5dc228a7a Update configuration.h
Add another comment for thermistor 13 ,use with Hotend "Simple ONE & All In ONE"
2014-09-27 09:02:58 +02:00
Fourmi
3cbb2f56c6 Update configuration.h
Add another comment on configuration.h for the value of thermistor.
I make a pull request on thermistortables.h with my thermistor (12),but y see there is a comment on configuration with number 12 but it's not present on thermistortables.h ?

Thx
2014-09-26 22:01:06 +02:00
Fourmi
c35736a140 Update thermistortables.h
Add another thermistor table,use with hotend "Simple ONE" & "All in ONE"
2014-09-26 21:49:07 +02:00
galexander1
cb4a6dd2dc Merge pull request #1065 from oliasmage/Marlin_v1
Corrected retract() call for use of auto probe without sled enabled.
2014-09-19 15:12:09 -04:00
galexander1
5b66810580 Merge pull request #1078 from brackendawson/Marlin_v1
Fix build for non-sled bed auto levelling
2014-09-19 15:05:34 -04:00
Bracken Dawson
01e9b536cb Fix build for non-sled bed auto levelling
This function should only be used with sled, not all bed auto
levelling.
2014-09-19 19:42:32 +01:00
Wing Tang Wong
58eabd21fb Added ifndef 2014-09-16 14:31:58 -07:00
Wing Tang Wong
88d12a762a Added #ifndef DELTA wrapper to float delta 2014-09-16 14:29:44 -07:00
alexborro
bf0ecedf60 Merge pull request #1051 from fsantini/EZ_fix935
Fix issue 935: error in matrix calculation
2014-09-14 21:49:15 -03:00
filipmu
9bc7aec349 Update README.md
Added the new m-codes to this document.
2014-09-06 21:55:47 -05:00
Javi
40ba644bb4 Added profile for RAMPS with 2 extruders and 1 fan.
modified:   Marlin/Configuration.h
	modified:   Marlin/pins.h
2014-09-06 02:53:36 +02:00
Charles Bell
3b8216bdd1 Corrected #endif and ifdef for Z_PROBE_SLED code. 2014-09-04 16:40:22 -04:00
Charles Bell
37799f70ba Corrected retract() call for use of auto probe without sled enabled. 2014-09-04 14:36:39 -04:00
Neil Darlow
1632e5e38a Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-09-04 12:21:35 +01:00
Filip Mulier
fe3a09bbcf Correct analog sampling time for additional A to D sample
Adjusted the  #define PID_dT to reflect 10 A to D sample steps, vs
original 8.
2014-09-01 06:26:19 -05:00
Bernhard Kubicek
1d62309d2a Merge pull request #1053 from foosel/fix/translated_serial_protocol
thanks...
2014-08-30 10:38:09 +02:00
Gina Häußge
1e9dc85148 Do not use translations for the serial console messages
The serial protocol has to stay machine readable, without having
to cope with a ton of different human language variants. So
just leave it at the original english version.

Should fix ErikZalm/Marlin#1052
2014-08-29 18:02:59 +02:00
fsantini
cf325ba240 Fix issue 935: error in matrix calculation 2014-08-28 21:10:50 +02:00
Erik van der Zalm
018b68a5c4 Merge pull request #976 from cocktailyogi/SCARA_by_Yogi
Implemented SCARA-Maths
2014-08-28 16:32:52 +02:00
Erik van der Zalm
dde61d8886 Merge pull request #977 from OskarLinde/Marlin_v1
Fix lcd itostr3() to handle negative numbers
2014-08-28 16:31:53 +02:00
Erik van der Zalm
0fbfb1bf82 Merge pull request #991 from bonm014/patch-1
Leapfrog controller board support
2014-08-28 16:27:52 +02:00
Erik van der Zalm
8340ca6e05 Merge pull request #992 from Grogyan/patch-1
temperature.cpp fixes for SD card and MAX6675
2014-08-28 16:27:14 +02:00
Erik van der Zalm
9887555192 Merge pull request #998 from darconeous/pull-requests/fwretract
FWRETRACT fixes
2014-08-28 16:24:51 +02:00
Erik van der Zalm
105571ec68 Merge pull request #1005 from midopple/Marlin_v1
With option DISABLE_INACTIVE_EXTRUDER the extruder is disable to early
2014-08-28 16:24:14 +02:00
Erik van der Zalm
68dd5e635e Merge pull request #1024 from oliasmage/Marlin_v1
Adding Z Probe via sled mounted endstop
2014-08-28 16:15:54 +02:00
Erik van der Zalm
25069ed4e9 Merge pull request #1031 from Roxy-3DPrintBoard/Z_PROBE_REPEATABILITY-with-correct-Defaults
Z probe repeatability with correct defaults
2014-08-28 16:14:10 +02:00
Erik van der Zalm
8b52eff2c1 Merge pull request #1034 from DerFlob/Marlin_v1
Fix reseting CHDK pin to LOW
2014-08-28 16:08:51 +02:00
Filip Mulier
75b3a68b65 Revert "Change pinMode to SET_INPUT or SET_OUTPUT"
This reverts commit 1d0fe035f3.
2014-08-16 13:26:48 -05:00
Filip Mulier
e3c88a5120 Filament sensor changes to config file
Update the config file for improvements and clarifying what diameter to
use in the slicer software.
2014-08-16 07:08:09 -05:00
Filip Mulier
62db9848d3 Improvements and bug fixes in sensor delay buffer for filament sensor code
Improvement to avoid reinitializing delay buffer with every print. Fixed
issues in buffer indexing and memory out of bounds due to floating point
imprecision.  Simplified the code by avoiding conversion to standard
diameter and 1cu mm extrusion, which caused complications in determining
mm extruded.
2014-08-16 06:50:13 -05:00
Florian Baumann
5908fd5cec Fix reseting CHDK pin to LOW
chdkActive was set to false regardless of (millis() - chdkHigh) being bigger than the CHDK_DELAY or not. So if (millis() - chdkHigh) wasn't bigger than the delay the first time, the CHDK would never be set back to LOW.

Also, don't return from the function, as there might be other stuff to do, after the CHDK check.
2014-08-11 14:12:32 +02:00
Roxy-3DPrintBoard
0adbc79571 Fix Default Configuration so Auto Bed Leveling is off
This snapshot has the Auto Bed Leveling turned off because most Marlin
users do not have that feature.
2014-08-10 10:18:54 -05:00
Roxy-3DPrintBoard
0091865583 Z_PROBE_REPEATABILITY test
Z_PROBE_REPEATABILITY test for Auto Bed Leveling.
Implemented as M48 with extra user specified options.
Full support at
http://3dprintboard.com/showthread.php?2802-Auto_Bed_Leveling-Z-Probe-Repeatability-code
2014-08-09 15:37:23 -05:00
Filip Mulier
85649a4549 Real-time filament diameter measurement and control
This feature allows the printer to read the filament diameter
automatically and adjust the printer in real time.  Added code to read
an analog voltage that represents a filament diameter measurement.  This
measurement is delayed in a ring buffer to compensate for sensors that
are a distance away from the extruder.  The measurement is used to
adjust the volumetric_multiplier for the extruder.  Some additional g
codes (M404, M405, M406, M407) are used to set parameters and turn
on/off the control. g code M221 is updated.  Pins for RAMPS1.4, RAMBO,
and Printrboard are identified for analog input.  The configuration file
is updated with relevant user parameters.
2014-08-06 19:30:57 -05:00
Filip Mulier
1d0fe035f3 Change pinMode to SET_INPUT or SET_OUTPUT
Original code is using WRITE from fastio, but original used pinMode to
set pin direction and did not use the fastio SET_INPUT or SET_OUTPUT.
This caused an issue with the rotary encoder interface to  boards based
on teensyduino, since for teensyduino pin numbers for fastio and the
usual Arduino IO are different.
2014-08-04 21:44:04 -05:00
Charles Bell
e7707aedbc Commented out new #defines in Configuration.h. 2014-08-04 10:18:25 -04:00
Charles Bell
0a8dc0e96b Added documentation to the README.md for the sled Z probe option. CAB 2014-08-04 10:07:43 -04:00
Charles Bell
d2fcb3ee56 CAB: Added code for Z-probe with Z endstop mounted on a sled. 2014-08-01 11:29:59 -04:00
Neil Darlow
3cd7dbcc45 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-07-30 13:01:52 +01:00
daid
c13a831ea1 Merge pull request #1017 from foosel/fix/checksum_truncation_bug
Fix for a wrong checksum truncation for certain commands
2014-07-24 19:41:34 +02:00
Gina Häußge
2d22902d08 Fix for a wrong checksum truncation for certain commands
Positioning of string terminator to truncate checksum from the commands
M23, M28, M30, M32, M928 and M117 was off by one, causing the last
letter of the actual command to be truncated instead of just the
checksum.

In case of the SD commands this caused checksummed commands targeting
existing files to fail since the last letter of the filename was
truncated.

In case of M117 this caused the last given letter not to be displayed.

This patch fixes the off-by-one error and sets the null terminator
on the exact position of the * starting the checksum instead of the
character before that.
2014-07-24 12:04:02 +02:00
cocktailyogi
ad3b770c1a updated examples 2014-07-20 13:55:13 +02:00
cocktailyogi
2f4a20257c imported last Marlin changes 2014-07-20 13:49:26 +02:00
cocktailyogi
1bd0dd04e3 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1 2014-07-20 13:23:32 +02:00
daid
aacff0d361 Merge pull request #948 from Dim3nsioneer/Marlin_v1
Implementation of FW extruder change retract
2014-07-18 16:10:15 +02:00
Pablo Clemente
8bf3139bc8 Changed the declaration of the variable to Marlin_main.cpp to fix issue on commit #965 2014-07-18 15:28:02 +02:00
alexborro
50b4e86f75 Add "Thermal Runaway Protection" feature
This is a feature to protect your printer from burn up in flames if it
has a thermistor coming off place (this happened to a friend of mine
recently and motivated me writing this feature).

The issue: If a thermistor come off, it will read a lower temperature
than actual. The system will turn the heater on forever, burning up the
filament and anything
else around.

After the temperature reaches the target for the first time, this
feature will start measuring for how long the current temperature stays
below the target minus _HYSTERESIS (set_temperature -
THERMAL_RUNAWAY_PROTECTION_HYSTERESIS).

If it stays longer than _PERIOD, it means the thermistor temperature
cannot catch up with the target, so something *may be* wrong. Then, to
be on the safe side, the system will he halt.

Bear in mind the count down will just start AFTER the first time the
thermistor temperature is over the target, so you will have no problem
if your extruder heater takes 2 minutes to hit the target on heating.
2014-07-18 15:28:01 +02:00
Pablo Clemente
2096188ac3 Changed the type of variable to bool, the name to "cancel_heatup", flags implementation and added this fix to M190 gcode too. 2014-07-18 15:27:59 +02:00
Pablo Clemente
f9f54019ab Inverted state logic for forced_heating_stop variable 2014-07-18 15:27:58 +02:00
Pablo Clemente
c51a6f94e0 Fixed stop print LCD function on M104 2014-07-18 15:27:57 +02:00
mattrobbo10
89abf07faa Added gen7-dist - marlin now compiles for gen7 2014-07-18 18:04:27 +10:00
midopple
17aa67e4ea If the option DISABLE_INACTIVE_EXTRUDER ist active the extruder switch to early to inactive because there are some moves in the buffer. So the planner wait 32 moves to disable the unused extruder. 2014-07-13 21:52:32 +02:00
midopple
c7273d521f Merge pull request #2 from ErikZalm/Marlin_v1
Update my github
2014-07-13 21:38:26 +02:00
Robert Quattlebaum
1fd9a7d476 Fix for FWRETRACT on DELTA printers.
Fixes #817
2014-07-09 09:24:26 -07:00
Neil Darlow
3f2c771d90 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-07-07 18:17:15 +01:00
Grogyan
bcd039aa81 Update pins.h 2014-07-05 17:55:03 +12:00
Grogyan
82606354dd Update temperature.cpp
Enables both SD card and MAX6675 to talk with each other
Fixes also issue #750
2014-07-05 17:17:17 +12:00
Courtney Bane
253cf0f427 Add Arduino additions for Arduino 1.5.x. 2014-07-03 18:51:52 -05:00
bonm014
32a6451ad8 Add leapfrog and dual Y/Z
I have added the pin set for the leapfrog and the support of dual Y and Z
2014-07-03 21:15:03 +02:00
bonm014
b5417be109 Update Configuration.h
Leapfrog added to the board list
2014-07-03 21:03:22 +02:00
bonm014
f244045245 Update pins.h
Leapfrog board added to the pin list
2014-07-03 21:01:41 +02:00
alexborro
ce517df702 Merge pull request #989 from bq/cancel_heatup
Changed the declaration of the variable "cancel_heatup" to Marlin_main.cpp to fix issue on commit #965
2014-07-01 13:21:53 -03:00
Pablo Clemente
2242a84218 Changed the declaration of the variable to Marlin_main.cpp to fix issue on commit #965 2014-07-01 16:45:03 +02:00
Neil Darlow
6e3406d228 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-07-01 10:27:39 +01:00
alexborro
43c298a7a9 Add "Thermal Runaway Protection" feature
This is a feature to protect your printer from burn up in flames if it
has a thermistor coming off place (this happened to a friend of mine
recently and motivated me writing this feature).

The issue: If a thermistor come off, it will read a lower temperature
than actual. The system will turn the heater on forever, burning up the
filament and anything
else around.

After the temperature reaches the target for the first time, this
feature will start measuring for how long the current temperature stays
below the target minus _HYSTERESIS (set_temperature -
THERMAL_RUNAWAY_PROTECTION_HYSTERESIS).

If it stays longer than _PERIOD, it means the thermistor temperature
cannot catch up with the target, so something *may be* wrong. Then, to
be on the safe side, the system will he halt.

Bear in mind the count down will just start AFTER the first time the
thermistor temperature is over the target, so you will have no problem
if your extruder heater takes 2 minutes to hit the target on heating.
2014-06-30 15:22:49 -03:00
daid
4c823224b0 Merge pull request #965 from bq/forced_heating_stop
Fixed stop print LCD function on M104
2014-06-30 18:50:26 +02:00
Pablo Clemente
d86c3cf43c Changed the type of variable to bool, the name to "cancel_heatup", flags implementation and added this fix to M190 gcode too. 2014-06-30 15:12:13 +02:00
cocktailyogi
f0cab611db optimised some math-code 2014-06-24 18:43:36 +02:00
Oskar Linde
269a068032 Fix lcd itostr3() to handle negative numbers 2014-06-24 14:31:15 +02:00
cocktailyogi
fae7d08698 fixed wrong compiler-option 2014-06-23 18:16:42 +02:00
cocktailyogi
512f2a3136 restore Branch from Backup
sorry for that
2014-06-23 17:09:57 +02:00
Pablo Clemente
cd3220d055 Inverted state logic for forced_heating_stop variable 2014-06-13 08:39:58 +02:00
Pablo Clemente
86b4b805d2 Fixed stop print LCD function on M104 2014-06-12 18:43:16 +02:00
nothinman
1875ab3bd7 Merge pull request #955 from gregington/pico-thermistor
Added thermistor table for the 500C thermistor shipped with the Pico hotend
2014-06-08 17:27:21 +01:00
Greg Tan
6e6e4e2143 Added thermistor table for the 500C thermistor shipped with the Pico hot end. 2014-06-08 09:35:04 +08:00
Neil Darlow
9d11b70436 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-06-07 20:48:25 +01:00
nothinman
ea9bffdc48 Merge pull request #949 from foosel/fix/M30_clearToSend_bug
M30 response is missing linefeed, "ok" therefore not on own line
2014-06-02 18:02:36 +01:00
Gina Häußge
0de826160e M30 response is missing linefeed, "ok" therefore not on own line
This leads to the command not being acknowledged properly
by the firmware, leading to consecutive issues in host software
waiting for an acknowledgement.
2014-06-02 17:11:32 +02:00
Dim3nsioneer
3c927901a4 Implementation of FW extruder change retract
FW retraction is extended onto swap retraction invoked by 'G10 S1'.
Bookkeeping of the retract state of all extruders allows for having one
extruder fw standard retracted while another extruder is swap retracted.
An LCD menu item for the swap retract and recover length was added.
2014-06-02 17:02:10 +02:00
nothinman
c8d0ca9337 Merge pull request #947 from Dim3nsioneer/Marlin_v1
Add feature 'switch unused feeder(s) off'
2014-06-02 14:10:25 +01:00
Dim3nsioneer
8a32c5395b renaming the disable inactive extruder feature 2014-06-02 14:07:02 +02:00
Dim3nsioneer
29e7639933 Add switch unused feeder(s) off
Having the non-active feeder motors powered on all the time is not
necessary. A feature to deactivate the unused feeder motors has been
implemented. The feature is enabled on default but can be switched off
in the configuration.
2014-06-02 08:13:09 +02:00
nothinman
5a18324030 Merge pull request #946 from Jnesselr/jnesselr/plannerdoc
Fixed a comment in the planner
2014-06-02 01:33:23 +01:00
Justin Nesselrotte
07c0eeee99 Fixed a comment in the planner 2014-06-01 19:04:41 -05:00
nothinman
b7aac49995 Merge pull request #941 from drf5n/teensypp2
Configuration.h, pins.h: Add MOTHERBOARD 84 for Teensy++2.0
2014-05-30 12:29:25 +01:00
David Forrest
09b84faa00 Configuration.h, pins.h: Add MOTHERBOARD 84 for Teensy++2.0 2014-05-29 17:19:16 -04:00
neildarlow
efb6d61413 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-05-24 13:08:58 +01:00
nothinman
38192cb5f3 Add M112 description to Marlin_main 2014-05-20 15:20:19 +01:00
nothinman
aed5ec008a Merge pull request #851 from DanNixon/estop
Implemented M112
2014-05-19 17:55:34 +01:00
Erik van der Zalm
cfb98ef682 More coverity fixes 2014-05-15 22:09:50 +02:00
nothinman
88b494678f Merge pull request #919 from zaubara/Marlin_v1
Fixes typo for lcd backlighting on I2C PCF8575
2014-05-15 15:51:14 +01:00
zaubara
92e14298b0 Fixes typo for lcd backlighting on I2C PCF8575
When using LCD_I2C_TYPE_PCF8575T (like Sainsmart I2C), the backlight
won't come on; the incorrect ifdef blocks the evocation of the backlight
functions.
2014-05-15 01:37:23 +02:00
Erik van der Zalm
9db9842aea Fixed error found by the free coverity tool (https://scan.coverity.com/)
===================================================
Hi,

Please find the latest report on new defect(s) introduced to ErikZalm/Marlin found with Coverity Scan.

Defect(s) Reported-by: Coverity Scan
Showing 15 of 15 defect(s)

** CID 59629:  Unchecked return value  (CHECKED_RETURN)
/Marlin_main.cpp: 2154 in process_commands()()

** CID 59630:  Operands don't affect result  (CONSTANT_EXPRESSION_RESULT)
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Tone.cpp: 319 in tone(unsigned char, unsigned int, unsigned long)()

** CID 59631:  Missing break in switch  (MISSING_BREAK)
/Marlin_main.cpp: 1187 in process_commands()()

** CID 59632:  Missing break in switch  (MISSING_BREAK)
/Marlin_main.cpp: 1193 in process_commands()()

** CID 59633:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 914 in disable_heater()()

** CID 59634:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 913 in disable_heater()()

** CID 59635:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 626 in analog2temp(int, unsigned char)()

** CID 59636:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 620 in analog2temp(int, unsigned char)()

** CID 59637:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 202 in PID_autotune(float, int, int)()

** CID 59638:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 214 in PID_autotune(float, int, int)()

** CID 59639:  Out-of-bounds write  (OVERRUN)
/Marlin_main.cpp: 2278 in process_commands()()

** CID 59640:  Out-of-bounds read  (OVERRUN)
/Marlin_main.cpp: 1802 in process_commands()()

** CID 59641:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 51 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()

** CID 59642:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 45 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()

** CID 59643:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 32 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()

________________________________________________________________________________________________________
*** CID 59629:  Unchecked return value  (CHECKED_RETURN)
/Marlin_main.cpp: 2154 in process_commands()()
2148                 }
2149               #endif
2150             }
2151           }
2152           break;
2153         case 85: // M85
   CID 59629:  Unchecked return value  (CHECKED_RETURN)
   Calling "code_seen" without checking return value (as is done elsewhere 66 out of 67 times).
2154           code_seen('S');
2155           max_inactive_time = code_value() * 1000;
2156           break;
2157         case 92: // M92
2158           for(int8_t i=0; i < NUM_AXIS; i++)
2159           {

________________________________________________________________________________________________________
*** CID 59630:  Operands don't affect result  (CONSTANT_EXPRESSION_RESULT)
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Tone.cpp: 319 in tone(unsigned char, unsigned int, unsigned long)()
313         else
314         {
315           // two choices for the 16 bit timers: ck/1 or ck/64
316           ocr = F_CPU / frequency / 2 - 1;
317
318           prescalarbits = 0b001;
   CID 59630:  Operands don't affect result  (CONSTANT_EXPRESSION_RESULT)
   "ocr > 65535U" is always false regardless of the values of its operands. This occurs as the logical operand of if.
319           if (ocr > 0xffff)
320           {
321             ocr = F_CPU / frequency / 2 / 64 - 1;
322             prescalarbits = 0b011;
323           }
324

________________________________________________________________________________________________________
*** CID 59631:  Missing break in switch  (MISSING_BREAK)
/Marlin_main.cpp: 1187 in process_commands()()
1181         case 2: // G2  - CW ARC
1182           if(Stopped == false) {
1183             get_arc_coordinates();
1184             prepare_arc_move(true);
1185             return;
1186           }
   CID 59631:  Missing break in switch  (MISSING_BREAK)
   The above case falls through to this one.
1187         case 3: // G3  - CCW ARC
1188           if(Stopped == false) {
1189             get_arc_coordinates();
1190             prepare_arc_move(false);
1191             return;
1192           }

________________________________________________________________________________________________________
*** CID 59632:  Missing break in switch  (MISSING_BREAK)
/Marlin_main.cpp: 1193 in process_commands()()
1187         case 3: // G3  - CCW ARC
1188           if(Stopped == false) {
1189             get_arc_coordinates();
1190             prepare_arc_move(false);
1191             return;
1192           }
   CID 59632:  Missing break in switch  (MISSING_BREAK)
   The above case falls through to this one.
1193         case 4: // G4 dwell
1194           LCD_MESSAGEPGM(MSG_DWELL);
1195           codenum = 0;
1196           if(code_seen('P')) codenum = code_value(); // milliseconds to wait
1197           if(code_seen('S')) codenum = code_value() * 1000; // seconds to wait
1198

________________________________________________________________________________________________________
*** CID 59633:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 914 in disable_heater()()
908          WRITE(HEATER_0_PIN,LOW);
909        #endif
910       #endif
911
912       #if defined(TEMP_1_PIN) && TEMP_1_PIN > -1
913         target_temperature[1]=0;
   CID 59633:  Out-of-bounds write  (OVERRUN)
   Overrunning array "soft_pwm" of 1 bytes at byte offset 1 using index "1".
914         soft_pwm[1]=0;
915         #if defined(HEATER_1_PIN) && HEATER_1_PIN > -1
916           WRITE(HEATER_1_PIN,LOW);
917         #endif
918       #endif
919

________________________________________________________________________________________________________
*** CID 59634:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 913 in disable_heater()()
907        #if defined(HEATER_0_PIN) && HEATER_0_PIN > -1
908          WRITE(HEATER_0_PIN,LOW);
909        #endif
910       #endif
911
912       #if defined(TEMP_1_PIN) && TEMP_1_PIN > -1
   CID 59634:  Out-of-bounds write  (OVERRUN)
   Overrunning array "target_temperature" of 1 2-byte elements at element index 1 (byte offset 2) using index "1".
913         target_temperature[1]=0;
914         soft_pwm[1]=0;
915         #if defined(HEATER_1_PIN) && HEATER_1_PIN > -1
916           WRITE(HEATER_1_PIN,LOW);
917         #endif
918       #endif

________________________________________________________________________________________________________
*** CID 59635:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 626 in analog2temp(int, unsigned char)()
620       if(heater_ttbl_map[e] != NULL)
621       {
622         float celsius = 0;
623         uint8_t i;
624         short (*tt)[][2] = (short (*)[][2])(heater_ttbl_map[e]);
625
   CID 59635:  Out-of-bounds read  (OVERRUN)
   Overrunning array "heater_ttbllen_map" of 1 bytes at byte offset 1 using index "e" (which evaluates to 1).
626         for (i=1; i<heater_ttbllen_map[e]; i++)
627         {
628           if (PGM_RD_W((*tt)[i][0]) > raw)
629           {
630             celsius = PGM_RD_W((*tt)[i-1][1]) +
631               (raw - PGM_RD_W((*tt)[i-1][0])) *

________________________________________________________________________________________________________
*** CID 59636:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 620 in analog2temp(int, unsigned char)()
614         if (e == 0)
615         {
616           return 0.25 * raw;
617         }
618       #endif
619
   CID 59636:  Out-of-bounds read  (OVERRUN)
   Overrunning array "heater_ttbl_map" of 1 2-byte elements at element index 1 (byte offset 2) using index "e" (which evaluates to 1).
620       if(heater_ttbl_map[e] != NULL)
621       {
622         float celsius = 0;
623         uint8_t i;
624         short (*tt)[][2] = (short (*)[][2])(heater_ttbl_map[e]);
625

________________________________________________________________________________________________________
*** CID 59637:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 202 in PID_autotune(float, int, int)()
196       {
197          soft_pwm_bed = (MAX_BED_POWER)/2;
198          bias = d = (MAX_BED_POWER)/2;
199        }
200        else
201        {
   CID 59637:  Out-of-bounds write  (OVERRUN)
   Overrunning array "soft_pwm" of 1 bytes at byte offset 1 using index "extruder" (which evaluates to 1).
202          soft_pwm[extruder] = (PID_MAX)/2;
203          bias = d = (PID_MAX)/2;
204       }
205
206
207

________________________________________________________________________________________________________
*** CID 59638:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 214 in PID_autotune(float, int, int)()
208
209      for(;;) {
210
211         if(temp_meas_ready == true) { // temp sample ready
212           updateTemperaturesFromRawValues();
213
   CID 59638:  Out-of-bounds read  (OVERRUN)
   Overrunning array "current_temperature" of 1 4-byte elements at element index 1 (byte offset 4) using index "extruder" (which evaluates to 1).
214           input = (extruder<0)?current_temperature_bed:current_temperature[extruder];
215
216           max=max(max,input);
217           min=min(min,input);
218           if(heating == true && input > temp) {
219             if(millis() - t2 > 5000) {

________________________________________________________________________________________________________
*** CID 59639:  Out-of-bounds write  (OVERRUN)
/Marlin_main.cpp: 2278 in process_commands()()
2272               tmp_extruder = code_value();
2273               if(tmp_extruder >= EXTRUDERS) {
2274                 SERIAL_ECHO_START;
2275                 SERIAL_ECHO(MSG_M200_INVALID_EXTRUDER);
2276               }
2277             }
   CID 59639:  Out-of-bounds write  (OVERRUN)
   Overrunning array "volumetric_multiplier" of 1 4-byte elements at element index 1 (byte offset 4) using index "tmp_extruder" (which evaluates to 1).
2278             volumetric_multiplier[tmp_extruder] = 1 / area;
2279           }
2280           break;
2281         case 201: // M201
2282           for(int8_t i=0; i < NUM_AXIS; i++)
2283           {

________________________________________________________________________________________________________
*** CID 59640:  Out-of-bounds read  (OVERRUN)
/Marlin_main.cpp: 1802 in process_commands()()
1796             int pin_status = code_value();
1797             int pin_number = LED_PIN;
1798             if (code_seen('P') && pin_status >= 0 && pin_status <= 255)
1799               pin_number = code_value();
1800             for(int8_t i = 0; i < (int8_t)sizeof(sensitive_pins); i++)
1801             {
   CID 59640:  Out-of-bounds read  (OVERRUN)
   Overrunning array "sensitive_pins" of 28 2-byte elements at element index 55 (byte offset 110) using index "i" (which evaluates to 55).
1802               if (sensitive_pins[i] == pin_number)
1803               {
1804                 pin_number = -1;
1805                 break;
1806               }
1807             }

________________________________________________________________________________________________________
*** CID 59641:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 51 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
45     }
46
47     LiquidCrystal::LiquidCrystal(uint8_t rs,  uint8_t enable,
48     			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
49     {
50       init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0);
   CID 59641:  Uninitialized scalar field  (UNINIT_CTOR)
   Non-static class member "_initialized" is not initialized in this constructor nor in any functions that it calls.
51     }
52
53     void LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
54     			 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
55     			 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
56     {

________________________________________________________________________________________________________
*** CID 59642:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 45 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
39     }
40
41     LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
42     			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
43     {
44       init(1, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0);
   CID 59642:  Uninitialized scalar field  (UNINIT_CTOR)
   Non-static class member "_initialized" is not initialized in this constructor nor in any functions that it calls.
45     }
46
47     LiquidCrystal::LiquidCrystal(uint8_t rs,  uint8_t enable,
48     			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
49     {
50       init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0);

________________________________________________________________________________________________________
*** CID 59643:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 32 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
26
27     LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
28     			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
29     			     uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
30     {
31       init(0, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7);
   CID 59643:  Uninitialized scalar field  (UNINIT_CTOR)
   Non-static class member "_initialized" is not initialized in this constructor nor in any functions that it calls.
32     }
33
34     LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable,
35     			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
36     			     uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
37     {

________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, http://scan.coverity.com/projects/2224?tab=overview
2014-05-14 21:59:48 +02:00
Neil Darlow
e541323741 Merge https://github.com/ErikZalm/Marlin into Marlin_v1 2014-05-09 15:02:50 +01:00
Alejandro Romero
1c9a70cee9 Support for Gen3 Monolithic electronics
Techzone Monotronics support, ignoring the tip manager and using fan connector as on Sprinter FW
TODO: Add support for tipmanager
2014-05-06 19:24:20 -05:00
daid
2acd3792fc Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2014-05-01 12:03:47 +02:00
daid
8b4c4aa5c3 Add feature to check&retry CRC read errors on SD. 2014-05-01 12:03:41 +02:00
nothinman
ce76843dc3 Merge pull request #897 from Makible/5DPrint_D8_Board_Support
5DPrint D8 Controller Board Support
2014-04-28 22:11:28 +01:00
Cameron Lai
ad5c8cbba9 Add safety limit for hot bed power in example configuration 2014-04-25 17:04:24 +08:00
Cameron Lai
6460709d92 Fix bug in PID Autotune report 2014-04-25 16:05:05 +08:00
Cameron Lai
105bebb466 Fix for pin mapping for SDSS pin and Fan pin, so Arduino library can be used 2014-04-25 12:57:47 +08:00
Cameron Lai
97ead2eccb Fix for microstepping pin mapping, not using Teensy pin mapping, but Arduino's default pin mapping so Arduino library can be used 2014-04-25 12:57:11 +08:00
Cameron Lai
d85411f13a Revert "Fix for stepper microstepping"
This reverts commit eea3ba5588.
2014-04-25 12:41:56 +08:00
Cameron Lai
7c7f2d094e Revert "Fix for reading microstepping resolution"
This reverts commit 2715f6ddbf.
2014-04-25 12:41:48 +08:00
Cameron Lai
e2d703377a Enable EEPROM by default for 5DPrint D8 Controller Board in example configuration 2014-04-24 19:15:35 +08:00
Cameron Lai
2715f6ddbf Fix for reading microstepping resolution 2014-04-24 17:48:33 +08:00
Cameron Lai
39e9b133f3 Add example configuration for Makibox printer, which uses the 5DPrint D8 Driver Board 2014-04-24 17:06:07 +08:00
Cameron Lai
da6b536182 Add 5DPrint D8 Driver Board info and temperature table for Makibox hot bed 2014-04-24 16:49:42 +08:00
Cameron Lai
3a8e36f19e Add Digipot config for 5DPrint D8 Driver Board 2014-04-24 12:56:46 +08:00
Cameron Lai
eea3ba5588 Fix for stepper microstepping 2014-04-24 12:56:06 +08:00
Cameron Lai
1cbcbb0971 Add makibox machine information 2014-04-24 12:55:21 +08:00
Cameron Lai
2fa514e88a Add port for 5DPrint D8 Driver board 2014-04-24 12:55:00 +08:00
nothinman
b9126ab497 Merge pull request #894 from MyMakibox/Marlin_v1
Update Marlin_main.cpp
2014-04-23 16:23:56 +01:00
nothinman
a33f099547 Merge pull request #893 from MyMakibox/patch-1
Update Configuration_adv.h
2014-04-23 16:23:40 +01:00
MyMakibox
21ec6b88c3 Update Marlin_main.cpp
Added description of autotemp flags to M109
2014-04-23 17:33:26 +08:00
MyMakibox
e4dc80d3d3 Update Configuration_adv.h
Corrected error in AUTOTEMP instructions
2014-04-23 17:30:07 +08:00
Neil Darlow
6adbdf42e0 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-04-21 15:10:57 +01:00
nothinman
5107018414 Merge pull request #888 from whosawhatsis/quick_home
Speed up QUICK_HOME feedrate for diagonal move
2014-04-20 03:13:36 +01:00
whosawhatsis
27d544ac25 Speed up QUICK_HOME feedrate for diagonal move
Speed up the diagonal move while still keeping each individual axis at
or below its homing feedrate.
2014-04-19 17:29:20 -07:00
nothinman
013793bbe9 Merge pull request #878 from koldoartola/Marlin_v1
Added new language (Basque-Euskera)
2014-04-13 22:37:39 +01:00
nothinman
a23a5395f9 Merge pull request #877 from Nutz95/Marlin_v1
pull Request to Add beta 3950 1% thermistor table into marlin firmware
2014-04-13 22:33:58 +01:00
koldo artola
e5b70237c7 Added new language (Basque-Euskera)
Added:
* new language (Basque-Euskera)
* some minor corrections for Spanish
* added 2 new constants for every language (required for a minor change
I am preparing to ultralcd.cpp)
2014-04-13 22:19:38 +02:00
Nutz95
ed6f4a71c5 fix wrong temptable index 2014-04-13 18:00:55 +02:00
Nutz95
3161740df9 This table is made for thermistor 3950 (can be found on ebay for cheap)
it's caracteristics are :

R25℃ ;100KΩ±1%

B Value(R25/50℃):3990K 1%
Dissipation Factor(mW/℃):1.1~1.6 In still Air
Thermal Time Constant(S):10~17 In Still Air
Operating temperature range:  (-50~+260°C)
Dimension:  1.8mm Dia X4.1mm
Lead Length  :30mm

This table was found on the following blogs:
http://cae2100.wordpress.com/2014/03/08/beta3950-thermistor-table-for-marlin/

and

http://microfabricator.com/articles/view/id/531ad7e59aad9d3131000000/beta-3950-thermistor-table-for-marlin
2014-04-13 17:03:20 +02:00
nothinman
086ff1644f Merge pull request #852 from pixatintes/patch-1
Update language.h
2014-04-13 00:46:17 +01:00
nothinman
3ffc9651b1 Merge pull request #845 from DerSchultze/Sanguinololu-servo
Added servo pin assignments to Sanguinololu
2014-04-13 00:37:28 +01:00
nothinman
357b87b498 Merge pull request #826 from paciotti/patch-1
Configuration_adv.h
2014-04-13 00:22:25 +01:00
neildarlow
95ad6ec9a1 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-04-12 22:20:45 +01:00
nothinman
2fa51f8920 Merge pull request #804 from MissionSt/adjustable-z-probe-offset
Adjustable Z probe offset via custom M-code
2014-04-07 11:42:45 +01:00
Gabe Rosenhouse
27a7cf9fcf use existing strings 2014-04-07 05:01:48 -05:00
Gabe Rosenhouse
d3f305332a Allowable range now includes default value 2014-04-06 19:45:56 -05:00
Gabe Rosenhouse
b0aeac117f Adjustable Z probe offset, via custom M-code 2014-04-06 19:45:56 -05:00
Neil Darlow
73b380d8d2 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-04-06 19:15:29 +01:00
nothinman
fe4930212c Merge pull request #871 from whosawhatsis/fwretract
Update Readme descriptions for M200, M207 and M208
2014-04-04 20:59:21 +01:00
whosawhatsis
dca9790f42 Update Readme descriptions for M200, M207 and M208 2014-04-04 10:13:44 -07:00
nothinman
c23376f2e7 Merge pull request #837 from whosawhatsis/fwretract
FWRETRACT in mm/s
2014-04-04 11:47:58 +01:00
nothinman
dfb98101e4 Change CONTROLLERFAN_PIN for board 35 to -1, as it would conflict with board's 33 extruder pin, causing burnout (it's the same board, just different number of fans/extruders, therefore should be pin-compatible) 2014-04-03 18:05:48 +01:00
nothinman
f1501317ca Merge pull request #860 from drf5n/therm3950
thermistortables.h: Add comments that table 60 uses beta=3950.
2014-04-02 18:29:57 +01:00
nothinman
9a5d23d96f Merge pull request #866 from sakunamary/Marlin_v1
fix bug for dual extruders not working
2014-04-02 18:27:42 +01:00
nothinman
303ee67896 Merge pull request #864 from whosawhatsis/M200
fix bug in M200 with multiple extruders
2014-04-02 18:26:15 +01:00
Tim
8759508319 fix bug for dual extruders not working
some guy find that marlin not working good for dual extruders delta .
when type T0 or T1 to active extruder and  E0 or E1  move causing XYZ
motion . so i locales the bugs and fix it , I have dry run the fix.
2014-04-01 09:26:19 +08:00
whosawhatsis
a65564eef6 fix bug in M200 with multiple extruders 2014-03-30 11:42:22 -07:00
whosawhatsis
aeaf9b9312 fix bug in M200 with multiple extruders 2014-03-30 11:41:57 -07:00
Neil Darlow
89f78b0b80 Allow use of either SD Card slot when LCD Panel is configured.
Preference is for Controller SD slot before LCD Panel slot when both are occupied.
2014-03-27 17:02:17 +00:00
David Forrest
b0093a1513 thermistortables.h: Add comments that table 60 uses beta=3950. 2014-03-26 23:41:10 -04:00
pixatintes
a3530d1141 Update language.h
Updated to latest version.
2014-03-23 18:06:48 +01:00
pixatintes
990e770e15 Update language.h
Added catalan language
2014-03-23 10:30:08 +01:00
Dan Nixon
f643f4d674 Test and refactor 2014-03-21 20:42:00 +00:00
neildarlow
bbe8fbe13d Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-03-21 18:27:14 +00:00
nothinman
51c6bd6b72 Merge pull request #846 from Dim3nsioneer/Marlin_v1
Extended Preheat options
2014-03-19 13:47:20 +00:00
Dim3nsioneer
c8cdd1fc6f Bugfixes for language option 6 (russian) 2014-03-19 14:27:38 +01:00
Dim3nsioneer
7395dafc1e semantic changes in language.h 2014-03-19 12:30:50 +01:00
Dim3nsioneer
fad2a60ce6 Corrections for preheat extension in language.h 2014-03-19 12:23:35 +01:00
Ralf Schultz
eecda434fb Sanguinololu servo pins set default disabled 2014-03-18 08:25:20 +01:00
Dim3nsioneer
944ced87c5 Extended Preheat options
Preheat LCD menus base on code by D-Base
2014-03-17 18:37:46 +01:00
Ralf Schultz
06709ad60e Added servo pin assignments to Sanguinololu 2014-03-17 15:45:13 +01:00
ErikZalm
084134d3c7 Merge pull request #841 from Dim3nsioneer/Marlin_v1
Set flow rate (extrude-mutliplier) for each extruder individually
2014-03-15 20:21:48 +01:00
Dim3nsioneer
3906f27c46 Individual extruder flow rate
Extension of M221, Tune menu
2014-03-15 18:09:46 +01:00
Dim3nsioneer
8613a74443 Merge pull request #1 from ErikZalm/Marlin_v1
Update on 140315
2014-03-15 17:49:30 +01:00
Dan Nixon
a38c90ee84 Added estop handling 2014-03-15 15:56:15 +00:00
ErikZalm
a00cec8b71 Merge pull request #833 from mattsch/optional_feedrate_multiplier
Add support for disabling encoder control for feedrate multiplier
2014-03-15 15:41:45 +01:00
ErikZalm
1f895844ac Merge pull request #829 from blddk/Marlin_v1
Added CHDK support
2014-03-15 15:34:04 +01:00
neildarlow
af8be9013b Merge branch 'lcd_detected' of https://github.com/whosawhatsis/Marlin into Marlin_v1 2014-03-15 07:24:47 +00:00
whosawhatsis
0ddee3c7db Prevent SD card insertion from causing a hang when using LiquidTWI2 device detection 2014-03-14 18:46:25 -07:00
Dan Nixon
272072fa20 Added M112 2014-03-14 23:19:43 +00:00
whosawhatsis
aab61e63c3 FWRETRACT in mm/s
Firmware retraction now stores the retract and recover speeds in mm/s
instead of mm/min. This makes it match the units of the maximum
feedrate, and fixes problems with modifying the value via LCD control
panel. From gcode, the values are still taken in mm/min to match the
units of G1 and similar, and they are converted to mm/s before they are
stored.

I also lowered the default retract feedrate to make it less likely to
cause problems for geared extruders when the user hasn’t bothered to
set a reasonable maximum feedrate, though users should be setting both
of these values to suit their hardware.
2014-03-14 15:17:28 -07:00
Matthew Schick
6cd85e6008 Add support for disabling encoder control for feedrate multiplier
Signed-off-by: Matthew Schick <matthew.schick@gmail.com>
2014-03-12 18:13:50 -04:00
blddk
09af1b90b8 Added CHDK support
Added CHDK support to take pictures instead of doing an IR command, see more about how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
2014-03-10 21:57:08 +01:00
blddk
765b2da3d4 Added CHDK support
Added so M240 can be used to trigger CHDK instead of sending an IR signal, see more about CHDK here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
2014-03-10 21:52:33 +01:00
paciotti
881e348eed Update Configuration_adv.h
Increase Z_HOME_RETRACT_MM to 2mm default to avoid end stop not switching during retract.
2014-03-08 22:35:05 +01:00
neildarlow
5a332df47e Merge https://github.com/ErikZalm/Marlin into Marlin_v1 2014-03-06 20:56:44 +00:00
nothinman
040357fd1b Merge pull request #822 from tommil/Marlin_v1
Fixed Finnish translation
2014-03-05 16:34:47 +00:00
Tommi Lamberg
15d1b8d719 Fixed finnish translation
- Fixed Few finnish transalations
- Removed duplicate contrast define
2014-03-05 14:02:52 +02:00
neildarlow
7325d7102e Activate LiquidTWI2 device detection and space-pad LCD status line. 2014-03-03 21:01:27 +00:00
ErikZalm
7f76a0e064 Merge pull request #813 from drf5n/PID_DEBUG
temperature.cpp: Fix PID_DEBUG compile error.
2014-02-26 17:31:48 +01:00
ErikZalm
4f3eb6bec8 Merge pull request #811 from anfroholic/patch-1
Update README.md with Autotemp typo fix
2014-02-26 17:30:49 +01:00
Erik van der Zalm
fcd8524b6e Only increase EEPROM version for DELTA printers. 2014-02-26 17:29:27 +01:00
ErikZalm
8c98690e1d Merge pull request #786 from wolfmanjm/add/M665-set-delta-configuration
Add M665 to dynamically set delta configuration
2014-02-26 17:26:19 +01:00
Jim Morris
8ea5665ee2 Merge remote-tracking branch 'origin/Marlin_v1' into add/M665-set-delta-configuration
Conflicts:
	Marlin/Marlin_main.cpp
2014-02-26 00:19:28 -08:00
David Forrest
8c4377dd63 temperature.cpp: Fix PID_DEBUG compile error. 2014-02-26 00:44:22 -05:00
anfroholic
661e378ce9 Update README.md 2014-02-25 17:46:23 -06:00
ErikZalm
fde8c2c310 Merge pull request #807 from Cylindric3D/typofixes_upstream5
Various typo fixes #5 - only in comments, no code changes.
2014-02-25 18:49:41 +01:00
ErikZalm
1aa10a5f18 Merge pull request #806 from Cylindric3D/typofixes_upstream
Various typo fixes #4 - only in comments, no code changes.
2014-02-25 18:48:52 +01:00
Cylindric
fdce91192e Various typo fixes - only in comments, no code changes. 2014-02-25 10:01:15 +00:00
Cylindric
d819c55395 Various typo fixes - only in comments, no code changes. 2014-02-25 09:52:58 +00:00
ErikZalm
fd4542f33a Merge pull request #805 from whosawhatsis/M200
autretract fix
2014-02-24 22:35:08 +01:00
ErikZalm
e8291ed728 Merge pull request #802 from Makers-Tool-Works/Marlin_v1
Clarify which PID values to enter
2014-02-24 22:31:13 +01:00
ErikZalm
465b654d24 Merge pull request #797 from Cylindric3D/update_menu_plan
Update menu plan
2014-02-24 22:30:19 +01:00
ErikZalm
88506a80c3 Merge pull request #789 from smiler/Marlin_v1
Fixed typo.
2014-02-24 22:26:31 +01:00
ErikZalm
b514d3c87f Merge pull request #781 from Cylindric3D/typofixes_upstream
Various typo fixes #3 - only in comments, no code changes.
2014-02-24 22:25:38 +01:00
whosawhatsis
77df0d689a autretract fix
I made these changes previously, but I can’t find the commit now. This
reapplies the changes to get auto retract working again.

Conflicts:
	Marlin/Configuration_adv.h
	Marlin/Marlin_main.cpp
2014-02-24 13:24:38 -08:00
ErikZalm
cc5f1d475c Merge pull request #772 from ellensp/Marlin_v1
Updated gen3+ board pins names to current convention
2014-02-24 22:22:15 +01:00
Cylindric
91759dede6 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into typofixes_upstream 2014-02-24 17:29:37 +00:00
Cylindric
557217fc05 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into update_menu_plan 2014-02-24 17:29:24 +00:00
RoyOnWheels
aee63afccd Clarify which PID values to enter
Users can be confused as to which values to enter after a PID tune. Updating the message to help clarity it.
New message: "PID Autotune finished! Put the last Kp, Ki and Kd constants from above into Configuration.h"

Old message: "PID Autotune finished! Put the Kp, Ki and Kd constants into Configuration.h"
2014-02-23 14:36:50 -08:00
alexborro
d3fcc28e64 Merge pull request #796 from MissionSt/any-pt-abl
Auto bed leveling at arbitrary points
2014-02-22 13:18:57 -03:00
Gabe Rosenhouse
99f6326544 Remove unnecessary dependency on time.h from qr_solve.cpp
Fixed compiler errors on Ubuntu using arduino-core
2014-02-20 16:43:37 -08:00
Cylindric
ea669cb504 Fix some extra and some missing tabs, to make the file consistent. 2014-02-20 14:28:29 +00:00
Cylindric
b46a1b6360 Update the menu plan document with the current menu as per ultralcd.cpp. 2014-02-20 14:20:27 +00:00
Cylindric
3cc7626d1f Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into update_menu_plan 2014-02-20 14:12:10 +00:00
Gabe Rosenhouse
174b8d99d5 Simplify 3-point probing using new code only 2014-02-19 21:48:05 -08:00
Gabe Rosenhouse
3b718b816c better documentation 2014-02-19 14:04:37 -08:00
Gabe Rosenhouse
34fd59c370 ABL at any points 2014-02-19 13:18:21 -08:00
Cylindric
541155ea87 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into typofixes_upstream 2014-02-19 15:52:18 +00:00
alexborro
9fa328e5c8 Merge pull request #793 from MissionSt/use_axis_enums
Use constants instead of numeric literals
2014-02-19 10:15:57 -03:00
alexborro
73f0ee9345 Merge pull request #794 from MissionSt/g29_requires_home
Prevent G29 without first homing in X and Y
2014-02-19 10:14:34 -03:00
Gabe Rosenhouse
f308a8af91 update comment 2014-02-19 01:06:24 -08:00
Gabe Rosenhouse
357e31270a Prevent G29 without first homing in X and Y
If position is unknown, then G29 can be dangerous.
2014-02-19 00:51:43 -08:00
Gabe Rosenhouse
d2d7d186b5 Use descriptive constants, more 2014-02-19 00:10:17 -08:00
Gabe Rosenhouse
2ccdf4f36d Use descriptive constants instead of numeric literals 2014-02-19 00:02:59 -08:00
Christian Axelsson
c00383f286 Fixed typo. 2014-02-18 18:50:12 +01:00
Cylindric
60f72a78a9 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into typofixes_upstream 2014-02-18 17:31:58 +00:00
nothinman
abba7a0003 Merge pull request #782 from marcovannoord/Marlin_v1
Added dutch to language.h
2014-02-18 16:19:50 +00:00
Cylindric
b868d668fa Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into typofixes_upstream 2014-02-18 12:11:01 +00:00
Marco
8212d8d543 Revert "Fixed small typo that would prevent compiling"
This reverts commit 51ae4881ab.
2014-02-18 10:40:25 +01:00
daid
46bae30573 Merge pull request #776 from whosawhatsis/fwretract
Fwretract fixes, cleanup
2014-02-18 10:39:28 +01:00
Marco
51ae4881ab Fixed small typo that would prevent compiling 2014-02-18 09:47:36 +01:00
Marco
498d76fd79 Fixed some messages where the text shown on the screen was more than 17 characters 2014-02-18 09:40:10 +01:00
Jim Morris
af9395ac2e Add M605 to dynamically set delta configuration
Save above configs in eeprom
fix docs in createTemperatureLookupMarlin.py
add missing azteegX3pro digipot settings in delta example config
2014-02-17 20:50:59 -08:00
nothinman
fd42f0d226 Merge pull request #783 from MissionSt/fix/syntax-error
Fix compile error
2014-02-17 20:59:43 +00:00
nothinman
96217bf36a Merge pull request #777 from PxT/M114
Add whitespace to M114 output
2014-02-17 18:07:47 +00:00
Marco
cf5c3b6610 Added dutch to language.h 2014-02-17 17:00:50 +01:00
Gabe Rosenhouse
d1c64b9dc4 Fix syntax error introduced in 477b6fa1d 2014-02-17 07:56:19 -08:00
Cylindric
5d50819791 Various typo fixes - only in comments, no code changes. 2014-02-17 13:04:44 +00:00
nothinman
3f455889d0 Merge pull request #769 from Cylindric3D/typofixes_1
Various typo fixes - only in comments, no code changes.
2014-02-17 11:30:01 +00:00
nothinman
4ddedb3b27 Merge pull request #780 from Cylindric3D/typofixes_2
Various typo fixes #2 - only in comments, no code changes.
2014-02-17 11:29:18 +00:00
nothinman
d4ba23bc28 Merge pull request #770 from josefpavlik/Marlin_v1
Marlin v1
2014-02-17 11:27:05 +00:00
nothinman
bbb424bd2f Merge pull request #779 from MissionSt/makefile-fix-abl
Makefile fixes
2014-02-17 11:22:34 +00:00
Cylindric
8f0cee2a14 Various typo fixes - only in comments, no code changes. 2014-02-17 10:58:36 +00:00
Cylindric
08263ae66e Merge branch 'Marlin_v1' into typofixes_1 2014-02-17 10:28:20 +00:00
nothinman
3b193d1b5f Merge pull request #775 from MissionSt/lang-fix/bed
Use language.h for "bed"
2014-02-17 10:26:23 +00:00
Gabe Rosenhouse
5bd09d26e2 Makefile works with auto bed leveling 2014-02-16 23:23:29 -08:00
Gabe Rosenhouse
b45beeffd6 typo fix in Makefile 2014-02-16 23:23:29 -08:00
Paul Telford
306588925d Add whitespace to M114 output 2014-02-16 21:01:19 -08:00
whosawhatsis
c43838bb1e disable auto retract by default
This should make it safe to enable FWRETRACT by default, with
autoretract (which should now be fixed) only enabled by M209. FWRETRACT
should probably now default to enabled (to make G10/G11 and M207-209
available, without changing functionality when they are not used), but
I’ll save that for another pull request/discussion.
2014-02-16 19:04:54 -08:00
whosawhatsis
99f0e44864 Move FWRETRACT defaults to configuration_adv.h 2014-02-16 19:00:28 -08:00
whosawhatsis
66e3869138 Fix autoretract
This takes the (now working) G10/G11 code and moves it to a function,
which is called by G10 and G11, and also called by G1 if autoretract is
enabled and a retract/recover move is detected.
2014-02-16 18:59:04 -08:00
whosawhatsis
2f2459c0db Fix G10/G11 Z-lift 2014-02-16 18:15:34 -08:00
Gabe Rosenhouse
8c5675c290 Use language.h instead of English literals for "bed" 2014-02-16 17:16:00 -08:00
nothinman
a466c8ef68 Merge pull request #774 from MissionSt/cleanup/probe_pt
Refactor of z probing for auto bed leveling
2014-02-17 01:08:58 +00:00
Gabe Rosenhouse
0f7393a13e Refactor 'accurate' auto bed leveling to use probe_pt() 2014-02-16 10:44:15 -08:00
Gabe Rosenhouse
c4fbb44d6d Refactor 3-point auto bed leveling to use probe_pt() 2014-02-16 10:44:08 -08:00
Gabe Rosenhouse
ad2c6488c7 Add probe_pt(), useful for auto bed leveling 2014-02-16 10:38:29 -08:00
Peter
c9c83a4560 Updated gen3+ board pins names to current convention 2014-02-16 00:47:06 +13:00
Mark Hanford
ab0d3c4fb3 Various typo fixes - only in comments, no code changes. 2014-02-14 11:48:24 +00:00
Josef Pavlik
477b6fa1df move engaged from lcd console refreshes power off timeout 2014-02-14 12:37:21 +01:00
Josef Pavlik
831fc2a952 Pt100 and Pt1000 temperature sensors handling 2014-02-14 12:26:27 +01:00
nothinman
7dcd350941 A few changes to Russian, changed LCD strings to be <=17 characters. 2014-02-13 11:58:14 +00:00
daid
c31bb2b7ad Only show the ZProbe offset when auto-bed-leveling is enabled. 2014-02-13 11:48:55 +01:00
daid
46f5bea19f Add configurable beep for UltiPanel. 2014-02-13 11:17:33 +01:00
daid
d16a770855 Ultimainboard 2.x does not has a PS_ON pin. 2014-02-13 10:57:03 +01:00
daid
71bb3a8133 Add comments for Ultimainboard 2.0 configuration. 2014-02-13 10:53:46 +01:00
daid
9b7d87e885 Remove duplicate contrast define. 2014-02-13 10:50:17 +01:00
daid
816f0a678a Merge pull request #768 from whosawhatsis/Marlin_v1
multiple FWretract fixes
2014-02-13 09:14:57 +01:00
whosawhatsis
6e43398509 G10/G11 bugfixes
Previous version was broken by using G92 E0 between retract and recover.
2014-02-12 13:03:00 -08:00
whosawhatsis
d6c5c503d4 correct feedrate units in comments for M207/M208 2014-02-12 13:02:47 -08:00
nothinman
15d6116188 Merge pull request #689 from cajun-rat/tidy
Use C++ initialization list
2014-02-12 16:38:11 +00:00
Martin Lukasik
0b9ecf3824 Language cleanup, part 1. 2014-02-12 13:21:26 +00:00
whosawhatsis
b5ba5c1465 Merge branch 'Marlin_v1' of https://github.com/whosawhatsis/Marlin into Marlin_v1 2014-02-11 19:06:03 -08:00
whosawhatsis
78e7654601 Keep FWRETRACT values in terms of millimeters when using M200
for volumetric E units
2014-02-11 19:05:35 -08:00
whosawhatsis
3f6d44d40b Keep FWRETRACT values in terms of millimeters when using M200 for volumetric E units 2014-02-11 18:50:11 -08:00
Cylindric
363dc2f0e8 Merge branch 'Marlin_v1' into update_menu_plan 2014-02-12 00:51:16 +00:00
nothinman
5f797ca29f Updated Polish, changed default firmware URL to Marlin. 2014-02-11 22:38:01 +00:00
nothinman
1a6d21bb60 Merge pull request #761 from Cylindric3D/localisation
Move strings in ultralcd.cpp into language.h.
2014-02-11 15:39:18 +00:00
Mark Hanford
0778f5f028 Add missing entries to the new Aragonian language. 2014-02-11 14:40:53 +00:00
Mark Hanford
54bab3e0d0 Merge branch 'Marlin_v1' into localisation
Conflicts:
	Marlin/language.h
2014-02-11 14:35:28 +00:00
nothinman
b18b40feff Merge pull request #760 from danielmartinez/aragonese_trans
Aragonese translation
2014-02-11 14:28:03 +00:00
Mark Hanford
bdd0211aeb Move strings in ultralcd.cpp into language.h. 2014-02-11 13:54:43 +00:00
Daniel Martinez
c8e5a82d49 keep English as default lang. 2014-02-09 18:24:24 +01:00
Daniel Martinez
f64592e362 Add Aragonese translation 2014-02-09 18:19:37 +01:00
ErikZalm
ac74f45dc0 Merge pull request #752 from MatixYo/patch-3
Update language.h
2014-02-09 17:52:26 +01:00
ErikZalm
8ebcc9dc3a Merge pull request #748 from wolfmanjm/add/azteegx3pro
Add/azteegx3pro
2014-02-09 17:50:15 +01:00
nothinman
19530c9945 Revert "Merge pull request #756 from danielmartinez/aragones"
This reverts commit 6f76066ab3, reversing
changes made to e1ae7952eb.
2014-02-09 16:21:00 +00:00
nothinman
6f76066ab3 Merge pull request #756 from danielmartinez/aragones
Add Aragonese translation
2014-02-09 13:42:36 +00:00
Daniel Martinez
8b67f6f3e8 Add Aragonese translation 2014-02-09 12:54:05 +01:00
MatixYo
36086d3ca4 Update language.h
Updated Polish translations.
2014-02-07 19:15:51 +01:00
Cylindric
1781031f2d Update LCD Menu Tree with current options, based on ultralcd.cpp and language.h. 2014-02-07 01:52:44 +00:00
Jim Morris
d485988bec fix typo 2014-02-05 14:39:45 -08:00
Jim Morris
8a1fd25363 Default is to not define digipot_i2c 2014-02-05 14:28:23 -08:00
Jim Morris
5097c57d3a Added pins for Azteeg X3 Pro under motherboard 68 2014-02-05 14:25:42 -08:00
Jim Morris
b819fc53ca Add Azteeg X3 Pro as motherboard 68
Add digipot i2c control for MCP4451
Allow M907 to set i2c digipot currents in amps
Fix Makefile to allow Azteeg motherboards
Fix Makefile to allow Wire libraries only
Add beeper pin for Azteeg X3 Pro
2014-02-05 01:47:12 -08:00
ErikZalm
e1ae7952eb Merge pull request #743 from Opticalworm/Marlin_v1
Improved support for panelolu2 encoder and buzzer
2014-02-03 12:33:10 -08:00
ErikZalm
1cc9212c05 Merge pull request #744 from drf5n/watts
Heater wattage reporting for M105 using EXTRUDER_WATTS and BED_WATTS
2014-02-03 12:30:40 -08:00
David Forrest
a5f53f0cf3 Heater wattage reporting for M105 using EXTRUDER_WATTS and BED_WATTS 2014-02-03 14:50:28 -05:00
Ronald
c2b3e88787 Changed 1284p fuse setting for Arduino_1.x.x
- Remove the two version of 16mHz. Crystal and resonator use the same
fuse setting. Also, Arduino IDE only showed the first one 16Mhz as a
board option.

- Added 20Mhz board option.

Symptoms for incorrect fuse setting:
- X axis move in one direction
- limit switches fail to trigger
- unable to reprogram the device via bootloader
- stops working when the reset switch is pressed.
- device fails to bootup when power by a slow raise power supply.

Solution:
- Disabled the jtag
- set the correct clock selection bit
- set the correct bootloader memory size
- enable brown-out setting
- enable clock power up delay
2014-02-03 15:35:23 +00:00
Ronald
8d162e5bd7 Improved support for panelolu2 encoder and buzzer
I added #define for LCD_FEEDBACK_FREQUENCY_HZ and
LCD_FEEDBACK_FREQUENCY_DURATION_MS  which is used to alter the default
buzzer sound.

When selecting Panelolu2 in configuration.h:
- it automatically sets the correct ENCODER_PULSES_PER_STEP and
ENCODER_STEPS_PER_MENU_ITEM.
- if LCD_USE_I2C_BUZZER is defined it will also set the default
LCD_FEEDBACK_FREQUENCY_HZ and LCD_FEEDBACK_FREQUENCY_DURATION_MS

When selecting the sanguinololu 1284p the following is true:
- its now enables  LARGE_FLASH
- It enables the gcode M300 when the panelolu2 LCD_USE_I2C_BUZZER is
defined
2014-02-03 07:45:03 +00:00
ErikZalm
430dcb65a7 Merge pull request #740 from whosawhatsis/M200
Change diameter code to 'D'
2014-02-02 12:22:01 -08:00
ErikZalm
3ec0d110bd Merge pull request #741 from Opticalworm/Marlin_v1
Changed 1284p fuse setting for 8, 16 and 20 Mhz
2014-02-02 12:17:22 -08:00
Ronald
f303129fb6 Changed 1284p fuse setting for 8, 16 and 20 Mhz
Symtopns:

- X axis move in one direction
- limit switches fail to trigger
- unable to reprogram the device via bootloader
- stops working when the reset switch is pressed.
- device fails to bootup when power by a slow raise power supply.

Solution:
- Disabled the jtag
- set the correct clock selection bit
- set the correct bootloader memory size
- enable brown-out setting
- enable clock power up delay
2014-02-02 13:13:15 +00:00
whosawhatsis
b2c11ba980 Change diameter code to 'D'
For some reason that I can’t figure out, the decimal is dropped when
using ’S’ for the code.

Also some minor code improvements to M200.
2014-02-01 18:49:25 -08:00
ErikZalm
a864d9d4ab Merge pull request #738 from whosawhatsis/Marlin_v1
Group hardware files for Arduino 1.x.x into hardware folder
2014-02-01 13:03:00 -08:00
whosawhatsis
28aca76c4d Group hardware files for Arduino 1.x.x into hardware folder 2014-02-01 12:22:37 -08:00
ErikZalm
61059385a3 Merge pull request #737 from whosawhatsis/M200
M200 implementation
2014-02-01 10:37:49 -08:00
whosawhatsis
856edfcc0d Fixed math
This is why I wanted to sleep on the code I wrote while falling asleep
rather than immediately submitting a pull request.
2014-01-31 08:43:11 -08:00
ErikZalm
0d81ae77bc Merge pull request #727 from drf5n/oversampling
temperature.cpp: Actually use OVERSAMPLENR in the oversampling calculation.
2014-01-31 07:09:10 -08:00
ErikZalm
84df13f7d1 Merge pull request #721 from drf5n/lcdOnly
Enable basic ULTRA_LCD screen w/o encoders and menus.
2014-01-31 07:07:12 -08:00
ErikZalm
4c7e9502ad Merge pull request #718 from drf5n/temptableRes
createTemperatureLookupMarlin.py: Add resolution comments and format for...
2014-01-31 07:06:02 -08:00
ErikZalm
652a0f6b5a Merge pull request #717 from drf5n/tpins2
fastio.h: Add AT90USBxx_TEENSYPP_ASSIGNMENTS for teensyduino/Lincomatic/...
2014-01-31 07:05:20 -08:00
ErikZalm
96a0cdc541 Merge pull request #716 from drf5n/maketeensy
Makefile: Update for Arduino 1.0.5 and Teensyduino dependent boards (HAR...
2014-01-31 07:04:29 -08:00
whosawhatsis
d24df7af2c M200 implementation 2014-01-31 00:54:19 -08:00
David Forrest
f0b8d5ba3d createTemperatureLookupMarlin.py: Change comment to refer to actual program name. 2014-01-29 23:34:22 -05:00
David Forrest
50f44d9249 createTemperatureLookupMarlin.py: Truncate to short after application of OVERSAMPLENR for improved resolution. 2014-01-29 23:24:07 -05:00
David Forrest
f5b5dd8038 createTemperatureLookupMarlin.py: Add output of Steinhart-Hart coefficients. 2014-01-29 22:59:47 -05:00
David Forrest
76cf07c3f7 Configuration.h: Use OVERSAMPLENR in dT_PID definition. 2014-01-21 23:25:51 -05:00
David Forrest
476c7193d8 temperature.cpp: Use OVERSAMPLENR in oversampling calculation. 2014-01-21 16:49:03 -05:00
nothinman
adbf226de1 Merge pull request #726 from DanLipsitt/patch-1
Format README.md with subsections
2014-01-21 12:46:47 -08:00
Dan Lipsitt
5bf73b86ff Format README.md with subsections
Having actual section headers instead of just bold text makes those parts of the document individually linkable.
2014-01-20 18:04:06 -08:00
ErikZalm
9b2576e5de Merge pull request #725 from whosawhatsis/Marlin_v1
Fix bugs in Extruder Runout Prevention, including DAMAGING HEAD CRASH
2014-01-19 23:44:36 -08:00
whosawhatsis
f08bb8bb6a Previous commit borked. 2014-01-19 22:06:45 -08:00
whosawhatsis
b1f8f492c6 Remove previous_millis_cmd update from extruder runout prevention code
This seems to defeat the purpose of previous_millis_cmd, preventing the
time elapsed from previous_millis_cmd from ever reaching
max_inactive_time or stepper_inactive_time while the heat was on.
2014-01-19 19:22:08 -08:00
whosawhatsis
8a5eaa3c9b Fix crash after home bug
Fixes a bug in the Extruder Runout Prevention feature that caused the
extruder to move back to “current_position” after a move if it was
activated while the move was in progress. For long home moves (which
are longer than the dimensions of the machine’s working area), this
would cause the machine to crash into the far end of its travel after
homing. This usually occurred on the Z axis, which could result in
damage to the machine if you don’t hit the reset button in time.
2014-01-19 19:11:51 -08:00
David Forrest
61a7256d42 Enable basic ULTRA_LCD screen w/o encoders and menus. 2014-01-17 17:00:47 -05:00
alexborro
c724c762a2 Merge pull request #720 from sourceperl/Marlin_v1
Update ConfigurationStore.cpp
2014-01-17 07:15:35 -08:00
l.lefebvre
fdac8f6cec Update ConfigurationStore.cpp
Unable to compile if ENABLE_AUTO_BED_LEVELING is not set (not set by default).
2014-01-17 16:09:58 +01:00
Alex Borro
05932e4458 Add Z Probe Offset to EEPROM and Ultra LCD 2014-01-16 18:13:46 -02:00
David Forrest
7216583b8b createTemperatureLookupMarlin.py: Add resolution comments and format for Marlin. 2014-01-16 12:40:15 -05:00
David Forrest
e8e0697e48 fastio.h: Add AT90USBxx_TEENSYPP_ASSIGNMENTS for teensyduino/Lincomatic/Printrboard compatibility. 2014-01-16 11:23:29 -05:00
David Forrest
75f39fadfc Makefile: Update for Arduino 1.0.5 and Teensyduino dependent boards (HARDWARE_MOTHERBOARD=={8,81,82,83,84}) 2014-01-16 10:58:35 -05:00
daid
df194f75e1 Added PT100 support for Ultiboard2 2014-01-06 11:20:03 +01:00
daid
380144c20f Add Ultiboard2 electronics. With PWM current settings. For the few people that have this new board as experiment in their UM-Original. 2014-01-06 11:05:02 +01:00
alexborro
89a304fd98 Merge pull request #673 from fsantini/ErikZalm
Improvements to the auto bed leveling feature
2013-12-23 03:46:31 -08:00
fsantini
6ae7f7870d Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into ErikZalm
Conflicts:
	Marlin/Configuration.h
	Marlin/Marlin_main.cpp
2013-12-23 12:20:32 +01:00
Phil Wise
17d6d965dc Use C++ initialization list
This is the recommended approach for object initialization. The change
doesn't affect binary size (although in theory it could make it smaller).
2013-12-19 21:21:46 +00:00
ErikZalm
8f195844dd Merge pull request #687 from jrbenito/update_delta_config_examples
Correct missing parameter from last upmerge
2013-12-19 00:15:16 -08:00
Joseivaldo Benito Junior
ce8b9c4fc5 Correct missing parameter from last upmerge
Signed-off-by: Joseivaldo Benito Junior <jrbenito@benito.qsl.br>
2013-12-19 00:50:44 -02:00
ErikZalm
000b710c5f Merge pull request #684 from jrbenito/update_delta_config_examples
Update Delta example files
2013-12-18 00:01:24 -08:00
Joseivaldo Benito Junior
8e48e24c7f Update Delta example files
Signed-off-by: Joseivaldo Benito Junior <jrbenito@benito.qsl.br>
2013-12-18 00:04:36 -02:00
ErikZalm
46d2443c7d Merge pull request #676 from IVI053/Marlin_v1
Minor improvements for encoder configuration, LCD entry for PSU controll and thermistor pins on RAMPS
2013-12-17 02:28:28 -08:00
-
eed053dffb Revert "Made numbering of heat bed thermistor more logical as D8 is bed, D9 is Extruder 2 and D10 is Extruder 1, so T0 should be E1, T1 E1 and T2 bed to be sequential as MOSFET-Outputs"
This reverts commit b7eadb9f37.
2013-12-16 12:22:06 +01:00
ErikZalm
3e568efe67 Merge pull request #657 from hcker2000/patch-1
Added new board
2013-12-16 02:53:49 -08:00
Erik van der Zalm
8349fc89a4 Fixed planner bug 2013-12-16 11:40:23 +01:00
Francesco Santini
da2a6f9a31 Accurate bed leveling: x loop inside y and zigzag motion 2013-12-13 10:31:19 +01:00
ErikZalm
532289e851 Merge pull request #677 from RicardoGA/patch-1
Z and Y dual stepper drivers error
2013-12-11 12:52:39 -08:00
RicardoGA
d29615dc0c Z and Y dual stepper drivers error
if you try to enable Z_DUAL_STEPPER_DRIVERS the error "You cannot have dual drivers for both Y and Z" shows even if you don't have defined Y_DUAL_STEPPER_DRIVERS and don't let you compile the firmware

to solve this problem i change this line:

#ifdef Z_DUAL_STEPPER_DRIVERS && Y_DUAL_STEPPER_DRIVERS

to:

#if defined (Z_DUAL_STEPPER_DRIVERS) && defined (Y_DUAL_STEPPER_DRIVERS)

now the error only show if you define both Z_DUAL_STEPPER_DRIVERS and Y_DUAL_STEPPER_DRIVERS
2013-12-11 14:37:43 -06:00
fsantini
5bde7fcb28 Minor code and comment polishing 2013-12-11 21:27:43 +01:00
-
20faff5935 Incorporate PS_DEFAULT_OFF for starting state on LCD menu entry 2013-12-08 21:35:57 +01:00
-
e5d3044801 Added posibility to set ENCODER_STEPS_PER_MENU_ITEM in Configuration.h like ENCODER_PULSES_PER_STEP as it depends on it for usability 2013-12-08 21:34:56 +01:00
-
b7eadb9f37 Made numbering of heat bed thermistor more logical as D8 is bed, D9 is Extruder 2 and D10 is Extruder 1, so T0 should be E1, T1 E1 and T2 bed to be sequential as MOSFET-Outputs 2013-12-08 21:30:42 +01:00
ErikZalm
e016a720f4 Merge pull request #675 from forrestg/master
Added support for Cheaptronic v1 electronic
2013-12-07 05:56:24 -08:00
Michal Dyntar
e8786bf110 Added support for Cheaptronic v1 electronic 2013-12-07 13:29:47 +01:00
fsantini
cc2925b705 Implemented a least squares fit of the bed equation for auto bed leveling.
The code for the LSQ solver (qr_solve) is copyrighted by John Burkardt and released under LGPL here:
http://people.sc.fsu.edu/~%20jburkardt/c_src/qr_solve/qr_solve.html
(see qr_solve.cpp for further copyright information)
2013-12-06 21:46:25 +01:00
fsantini
b64661070e Fixed the plane vector equation to a simpler one (only dependent on the normal)
Removed the calculation of the inverse matrix since the rotation matrix is orthogonal, therefore inverted == transposed.
Much simpler and mathematically robust.
2013-12-06 21:32:21 +01:00
Alex Borro
5c44f6c434 Bed Heater monitoring in Controller Fan
In some cases the Bed Heater FET heats up more then stepper drivers, so
this change add the bed monitoring to the controller fan. As soon as the
bed heater is turned on, the controller fan will run as well.
2013-11-27 23:23:06 -02:00
Alex Borro
b33375d438 Z Axis Safe Homing when using Z Probe
Recommended for those who are using the Z Probe for Z Homing (as
Z-Endstop)

This feature has two changes:

1) Allow user to choose where the Z Probe will touch the bed when homing
all axis together (G28) by setting below defines:

Z_SAFE_HOMING_X_POINT
Z_SAFE_HOMING_Y_POINT

2) Prevents the user to perform Z Axis Homing when the Z Probe is
outsite bed.
2013-11-27 22:37:35 -02:00
Alex Borro
35905ea4f9 Allow heaters to stay full On when PWM=127
In previous version, even with PWM = 127, the system turns the FET off
and then on in the next cycle. This bevavior may increase the FET heat
dissipation.
It was fixed keeping the FET always On when PWM=127.
2013-11-27 18:13:38 -02:00
hcker2000
ad588e8990 Added new board for those of us with sanguinololu boards with ceramic resonators 2013-11-18 15:49:36 -05:00
Erik van der Zalm
a94e588765 Changed slow buttons behavior. 2013-11-17 17:41:30 +01:00
Erik van der Zalm
69af392554 Added HEATERS_PARALLEL (Request from reifsnyderb)
This allows a hot end with two heaters and a FET for each heater. This is useful if the FET is not capable of heating two heaters.
2013-11-17 13:29:02 +01:00
Erik van der Zalm
48a185d004 Fixed compile errors from bad commits. 2013-11-10 16:36:37 +01:00
ErikZalm
24d1f480b6 Merge pull request #647 from shaggythesheep/newfeature-M226
Implement M226 - GCode Initiated Pause
2013-11-10 07:27:01 -08:00
ErikZalm
95b41413e6 Merge pull request #641 from hugokernel/master
M80 - ATX Power On related modification
2013-11-10 07:26:35 -08:00
ErikZalm
59b96e323e Merge pull request #640 from fmalpartida/SAV-MkI
Added support for BT on AT90USB devices, corrected LCD bug, added new board and LCD
2013-11-10 07:26:08 -08:00
ErikZalm
2433ee6fc8 Merge pull request #637 from justuswilhelm/Marlin_v1
Fix servo control for Melzi v2.0
2013-11-10 07:22:12 -08:00
ErikZalm
3455a2bac2 Merge pull request #636 from PrintToPeer/Marlin_v1
Add UUID support to M115 responses.
2013-11-10 07:21:46 -08:00
ErikZalm
ec1cf6e7f8 Merge pull request #635 from dbenamy/Marlin_v1
Add (correct) missing pin definitions for Y2
2013-11-10 07:20:49 -08:00
Richard Miles
dc887ef99b Implement M226 - GCode Initiated Pause
Implemented M226 as described here:
http://reprap.org/wiki/G-code#M226:_Gcode_Initiated_Pause

Waits for pin to be become either HIGH, LOW or the inverse of what it
was before. Allows printing to pause until user interaction
2013-11-09 15:11:58 +00:00
Charles R
c244eb860c If you have a switch on suicide pin, this is useful if you want to
start another print with suicide feature after a print without
suicide...
2013-11-04 12:04:04 +01:00
fmalpartida
7b556d2e96 Added BT support on AT90USB devices
Added AT90USB device BT connectivity support using second UART.
2013-11-03 19:57:06 +01:00
Kaz Walker
a5e8575829 Add UUID support to M115 responses. 2013-11-01 14:51:50 -06:00
Daniel Benamy
cab84e0e5b Add (correct) missing pin definitions for Y2
I tested this and it works.
2013-10-30 22:44:20 -04:00
fmalpartida
5b3f60ea2e Corrected LCD only error
If only an LCD is defined and no menu or keyboard defined, there is a
compilation error.

Added conditional compilation.
2013-10-30 21:52:46 +01:00
Justus Perlwitz
62d0b79023 Fix servo control for Melzi 2013-10-30 20:59:58 +01:00
ErikZalm
c184f808f7 Merge pull request #632 from dbenamy/Marlin_v1
Made instructions more clear.
2013-10-30 10:47:11 -07:00
Daniel Benamy
c886f5cb13 Made instructions more clear.
Not sure what happened to my last commit so this includes that one + reordering the steps.
2013-10-30 13:26:49 -04:00
fmalpartida
b5a964fcc5 Initial SAV MkI (RepRap CloneWars board) integration.
Included support for BT dongle on AT90USB boards.
Added LCD Shift Register LCD control
Included support for RepRap Clone Wars project board (SAV MKI).
2013-10-30 11:45:32 +01:00
ErikZalm
4382068f92 Merge pull request #630 from dumle29/Marlin_v1
PS_ON configurable boot state
2013-10-29 10:57:12 -07:00
dumle29
f941203172 PS_ON configurable boot state
Allows the user to select wheter or not the PSU should be turned on or
kept in standby when marlin boots
2013-10-29 18:44:56 +01:00
Bernhard Kubicek
47854ff5ce Merge pull request #629 from whosawhatsis/Marlin_v1
Make G11 not horribly broken
2013-10-24 20:48:16 -07:00
whosawhatsis
c79e3967b3 Make G11 not horribly broken 2013-10-24 18:58:42 -07:00
alexborro
5b8b939a1f Add comments about RAMPS 5V rail for servos. 2013-10-22 10:38:33 -02:00
bkubicek
d69822ed51 Fix '#'
since it can occure in comments.
2013-10-22 10:34:51 +02:00
bkubicek
2fb2a0a119 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2013-10-22 10:08:21 +02:00
bkubicek
39d88bcccb preparation for hibernation
If a print is stopped, it would be nice in the future to write a file with the printer state, the filename of the print, and the position within the print.
this file could be read, to continue a previously stopped print.
not finished yet.
2013-10-22 10:04:08 +02:00
bkubicek
ab965376ff Sub-file calls.
by overloading M32 it is now possible to execute gcode files from other gcode files, with a fixed recursion level.
This can be used e.g. for having a real start.g and end.g somewhere on the sd card, which are then called from the normal print file.
Another usecase would be to have macro-files for nozzle-change and layerchange.
I have not tested the speedwise performance. The testing was done with pronterface.

syntax:
normal call from sd card will open the new file and continue executing there.
M32 !/path/filename#
this however will call the new file and return to the caller file.
M32 P !/path/filename#
with the optional "S<position>" the  file starting position can be set.
this is for continuing prints from a previous location.
2013-10-22 10:02:18 +02:00
bkubicek
b2cc27e5ea Added a magic character for sd buffering.
if a '#' is read now the buffer will be emptied before reading ahead.
This is so one can execute files from within gcode files, without messing the buffer with preread characters from the caller file.
# can not occure in sd files imho, because it should only occure within checksums in ther serial communication.
Yes, thats a lame argument. If you have a better idea please tell me. It has to be a character that one can type
on a keyboard manually.
2013-10-22 09:54:13 +02:00
Erik van der Zalm
8a08cca0f2 Added temperature status less.
Hopefully fixed viky button handling without braking other boards
2013-10-20 12:12:35 +02:00
Erik van der Zalm
667d278f54 Revert "Fix for Viki display"
This reverts commit 314fd13c39.
2013-10-20 10:16:46 +02:00
Erik van der Zalm
bf27e79e74 Small BlinkM fix 2013-10-20 10:06:02 +02:00
Erik van der Zalm
87e28c0599 Added ifdefs to blinkm 2013-10-20 09:55:15 +02:00
Erik van der Zalm
24c6b2ab35 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2013-10-20 09:51:58 +02:00
ErikZalm
6a803ba9c5 Merge pull request #590 from timkoster/Marlin_v1
Added BlinkM support over i2c
2013-10-20 00:51:35 -07:00
Erik van der Zalm
457d8a0acb Fixed merge conflicts 2013-10-20 09:50:27 +02:00
Alex Borro
6f85a8c7aa Bed auto Leveling change: Raise Z before homing
- Added "Z_RAISE_BEFORE_HOMING" for raising Z the defined distance
before homing. This is useful to avoid Z-Probe collision when hotend is
near bed.

- Fixed the issue of Z not going bellow Z_PROBE_OFFSET when
"min_software_endstops" is true.
Now the Z_PROBE_OFFSET is not set in Z_MIN_POS, it is added after
homing.
2013-10-12 17:28:11 -03:00
Alex Borro
dd3086d3f2 Show Temperature ADC values
If "SHOW_TEMP_ADC_VALUES" is defined in Configuration_adv.h, the M105
command will present, after tradicional temperatures, the ADC value read
from temp sensors. This is great for adjusting thermistor tables with
thermocouple.

From Pronterface you can see the ADC value and compare with a
thermocouple reading.. then you just need to create your own thermistor
table.

Since this merge doesnt change the original information, it doesnt mess
with PC software parsing (tested under Pronterface and Repetier-Host).
2013-10-12 10:41:23 -03:00
bkubicek
7fad13a1e2 Reverse SD card file name order.
This is _not_ automatically the cronological, since deleting a file will free
the filesystem descriptor for it, which then will be used by the next file copied on it.
Since this makes the auto0.g file very inaccessible, I put the option back, to have it in the prepare menu.

this should satisfy https://github.com/ErikZalm/Marlin/pull/373

as a reminder, auto0.g will be executed every time after a boot with sd card present and file present.
thereafter, if there is a file auto1.g this will be done. Thats IMHO the best place to put settings, and prepare heating.
I also execute again after each (now again via the prepare menu) before starting a new print/ after a failed one.
It for me 100% replaces any start.gcode form the slicers.
2013-10-12 13:24:55 +02:00
alexborro
73c82e7ad8 Clarifying M280 command in Bed Auto Leveling section. 2013-10-08 10:15:09 -03:00
bkubicek
b832f5b9f6 added delta tower babystepping. Its untested, but hopefully florian horsch will be able to try.
also, removed some trouble for compilation with corexy.
I think that babystepping is only possible in z for a delta tower.
not sure if it would be usefull to step individual motors on a delta, i don't own one
2013-10-07 09:14:04 +02:00
bkubicek
c38b0855c8 I think that filament change is ready for the masses. I have tested very often with my ultimaker.
I strongly vote for it being a single gcode, because otherwise the triggering from the menu is terrible.
2013-10-06 21:20:26 +02:00
bkubicek
d147a057ac Add the socalled "Babystepping" feature.
It is a realtime control over the head position via the LCD menu system that works _while_ printing.
Using it, one can e.g. tune the z-position in realtime, while printing the first layer.
Also, lost steps can be manually added/removed, but thats not the prime feature.
Stuff is placed into the Tune->Babystep *

It is not possible to have realtime control via gcode sending due to the buffering, so I did not include a gcode yet. However, it could be added, but it movements will not be realtime then.

Historically, a very similar thing was implemented for the "Kaamermaker" project, while Joris was babysitting his offspring, hence the name.

say goodby to fuddling around with the z-axis.
2013-10-06 21:14:51 +02:00
Erik van der Zalm
bca353cc12 Fixed duplicate define in fastio.h 2013-10-03 19:24:53 +02:00
Alex Borro
253dfc4bc1 Bed Auto Leveling feature
Check the Readme for instruction how to enable and configure the feature
2013-09-29 13:20:06 -03:00
ErikZalm
1bda6bf862 Merge pull request #609 from phq1910/patch-1
Update Configuration.h
2013-09-26 11:47:58 -07:00
ErikZalm
c80aac1518 Merge pull request #610 from phq1910/patch-2
Update pins.h
2013-09-26 11:47:47 -07:00
Erik van der Zalm
314fd13c39 Fix for Viki display 2013-09-26 20:32:19 +02:00
phq1910
4f7c6dfe35 Update pins.h
Include Pins cpu Sethi 3D
2013-09-26 11:40:54 -03:00
phq1910
57173739a1 Update Configuration.h
Include CPU Sethi 3D
2013-09-26 11:29:44 -03:00
Erik van der Zalm
0dca49a7c0 Added Azteeg X3 board. 2013-09-24 17:31:16 +02:00
Erik van der Zalm
d8c2c810b4 Added info to the delta configuration files in the configuration.h file 2013-09-23 23:29:46 +02:00
Erik van der Zalm
9bc88f8bab Placed optional ENCODER_PULSES_PER_STEP in the configuration.h file 2013-09-23 23:25:11 +02:00
Erik van der Zalm
3ca1ca6869 Fixed missing ENCODER_PULSES_PER_STEP 2013-09-23 23:18:35 +02:00
Tim Koster
97b0da0c2e Removed #ifndef BLINKM 2013-09-22 10:43:27 +03:00
Tim Koster
61db046b32 Added #ifdef BLINKM around new code. Also refined BlinkM.h. 2013-09-20 10:57:42 +03:00
Richard Miles
77df2ab0e7 Make Y_DUAL_STEPPER_DRIVERS disabled by default 2013-09-17 21:49:44 +01:00
Richard Miles
ed1ab42186 Added Y_DUAL_STEPPER_DRIVERS
Enables two stepper drivers to be used for the Y axis (useful for
Shapeoko style machines)
Each Y driver can be stepped in either the same way or in opposite
directions, accounting for different hardware setups (leadscrew vs. belt
driven)
2013-09-17 19:19:20 +01:00
Richard Miles
f4a59e4ce5 Revert "Added Y_DUAL_STEPPER_DRIVERS"
This reverts commit 7ee275b620.
2013-09-17 19:05:49 +01:00
Richard Miles
7ee275b620 Added Y_DUAL_STEPPER_DRIVERS
Enables two stepper drivers to be used for the Y axis (useful for
Shapeoko style machines)
Each Y driver can be stepped either the same way or in opposite
directions, accounting for different hardware setups (leadscrew vs. belt
driven)
2013-09-17 19:02:00 +01:00
ErikZalm
6a1e980c6d Merge pull request #600 from xoan/Encoder_Pulses_Per_Step
add ENCODER_PULSES_PER_STEP
2013-09-14 04:56:45 -07:00
ErikZalm
20076a8bd3 Merge pull request #598 from GDV0/Marlin_v1
FIx compilation error when enabling SERVO_ENDSTOPS (#591)
2013-09-14 04:54:19 -07:00
Erik van der Zalm
3626b5ad8b Removed Delta from the default config file.
Changed EEPROM CHITCHAT behavior. M503 is always enabled.
2013-09-14 13:50:09 +02:00
Xoan Sampaiño
bf7007d02f add ENCODER_PULSES_PER_STEP 2013-09-13 04:12:51 +02:00
GDV0
f17506c504 FIx compilation error when enabling SERVO_ENDSTOPS (#591) 2013-09-11 23:09:37 +02:00
ErikZalm
59e36f1d27 Merge pull request #595 from nothinman/Marlin_v1
Fan fix for Panelolu2+Sanguinololu.
2013-09-11 00:39:17 -07:00
Martin Lukasik
acd8619809 Fan fix for Panelolu2+Sanguinololu. 2013-09-10 22:10:58 +01:00
ErikZalm
7c35be7fd8 Merge pull request #594 from gr5/Marlin_v1
Fixed bug that makes ulticontroller knob backwards introduced Feb 28 201...
2013-09-10 07:56:55 -07:00
George Roberts
595580556c Fixed bug that makes ulticontroller knob backwards introduced Feb 28 2013 by Robert.
Bug introduced in version 6beb42cdf6.
Robert did a good job of simplifying but messed up this chunk of code.

Looking at working version: 839bef6d5d
it seems there is no case where encrot3 should be defined as 2
because if ULTICONTROLLER is defined then NEWPANEL is also defined.
2013-09-10 09:56:19 -04:00
Tim Koster
88dfeefca3 Define BlinkM default disabled 2013-09-10 12:32:21 +03:00
Tim Koster
5350faf2a2 Merge https://github.com/timkoster/MarlinBlinkM into Marlin_v1 2013-09-10 12:27:26 +03:00
Tim Koster
7016cc9511 Added BlinkM support over i2c 2013-09-10 12:18:29 +03:00
ErikZalm
d78db12abd Merge pull request #589 from wolfmanjm/upgrade
Fix the example delta configuration by adding DELTA_DIAGONAL_ROD_2
2013-09-09 07:09:19 -07:00
Tim Koster
3b315b3da0 Added BlinkM support over i2c 2013-09-06 22:25:39 +03:00
Jim Morris
f26f26b7bd Fix the example delta configuration as someone forgot to do it. 2013-09-05 16:36:55 -07:00
Erik van der Zalm
a447e76fdf Update read me. Added comment about products that have a patent. 2013-08-30 14:39:19 +02:00
ErikZalm
f8d173bd0b Merge pull request #582 from hercek/upstream
add command M666 for adjusting delta printer endstop position
2013-08-28 01:49:44 -07:00
Peter Hercek
9aa2229077 add command M666 for adjusting delta printer endstop position 2013-08-28 01:15:20 +02:00
ErikZalm
aa6c58ad37 Merge pull request #575 from buildrob101/DualXCarriageMerge
Add duplication and auto-park mode for dual x-carriage support.
2013-08-07 13:10:54 -07:00
Robert F-C
221286c10a Add .gitignore change to ignore .bak files (produced by WinMerge and other editors) 2013-08-08 00:16:38 +10:00
Robert F-C
9547fb9dfb Add duplication and auto-park mode for dual x-carriage support. 2013-08-08 00:10:26 +10:00
ErikZalm
62aab66299 Merge pull request #572 from ultimachine/rambo_LCD
RAMBo LCD Support, Additional Pins, and Arduino add ons
2013-08-05 10:04:47 -07:00
Steve Kelly
d7b1a8ba33 add rambo arduino addons 2013-08-03 12:42:34 -05:00
Steve Kelly
53614e5144 add pins for rambo lcd 2013-08-03 11:45:53 -05:00
Steve Kelly
b42d24e31e add additional pins to avr2560 for rambo lcd 2013-08-03 11:37:12 -05:00
ErikZalm
07f029c2d5 Merge pull request #563 from njprossi/Marlin_v1
Improvment for delta, Honeywell thermistor table and move from panel
2013-08-03 08:05:26 -07:00
Nicolas Rossi
b0c8120fcc Added feedrate setting in exemple config for manual moves from panel 2013-08-03 13:09:53 +02:00
Nicolas Rossi
a54fe2d73c Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin.git into Marlin_v1
Conflicts:
	Marlin/Marlin_main.cpp
2013-08-03 13:05:56 +02:00
ErikZalm
7ea63d08df Merge pull request #565 from iXce/avrdudeconfpath
Detect OS in Makefile to use the correct avrdude.conf path
2013-08-02 13:16:07 -07:00
ErikZalm
4187b637a5 Merge pull request #570 from hg42/separate-INVERTING-macros-for-MIN-and-MAX-endstops
separate INVERTING for MIN and MAX endstops (6 #defines instead of 3)
2013-08-02 13:15:30 -07:00
ErikZalm
07e7de3600 Merge pull request #569 from hg42/convert-PROTOCOL-macros-from-statements-to-expressions
convert PROTOCOL macros from statements to (multiple, comma separated) expressions
2013-08-02 13:13:29 -07:00
Guillaume Seguin
c0c4c97db6 Detect OS in Makefile to use the correct avrdude.conf path 2013-08-01 19:20:27 +02:00
hg42@gmx.net
2ca983568d separate INVERTING for MIN and MAX endstops (6 #defines instead of 3) 2013-08-01 15:06:39 +02:00
hg42@gmx.net
3700f688f5 convert PROTOCOL macros from statements to (multiple, comma separated) expressions 2013-08-01 14:56:39 +02:00
daid
a504c88346 Fix a bug where the PID controllers D action kicks in hard as soon as the PID controller starts. 2013-08-01 14:12:30 +02:00
ErikZalm
c6cb93d38c Merge pull request #556 from ellensp/Marlin_v1
renamed ArduinoAddons/Arduino_1.x.x/sanguino to Sanguino. Now make works...
2013-07-31 13:34:40 -07:00
Nicolas Rossi
394ed08f88 Added feedrate setting for manual moves from panel 2013-07-30 14:33:30 +02:00
Nicolas Rossi
9bf1cf1b22 Pre-calculate diagonal rod length squared 2013-07-30 14:09:21 +02:00
Nicolas Rossi
4623e78ce0 Added Honeywell thermistor 135-104LAF-J01 2013-07-30 14:02:18 +02:00
Brendan-csel
d7f384f680 Skip SD menu refresh if nothing has changed 2013-07-30 14:02:15 +02:00
Brendan-csel
abc8320a68 Save LCD_CLICKED before it is cleared
The SD card menu was refreshing so slowly that the button interrupt was clearing LCD_CLICKED before the menu items could check it.
2013-07-30 14:02:13 +02:00
Guillaume Seguin
f4c3135c6d Add Panelolu2 pins for RAMPS1.3 2013-07-30 14:02:11 +02:00
Guillaume Seguin
aae42c68f9 Update French translation in language.h 2013-07-30 14:02:08 +02:00
Guillaume Seguin
4d435c38a6 Add support of LiquidTWI2-based panels to Makefile
Use LIQUID_TWI2=1 as make argument to enable this support
2013-07-30 14:02:06 +02:00
Guillaume Seguin
6c42a3a339 Woops, fix logic 2013-07-30 14:02:04 +02:00
Guillaume Seguin
376d8af2c8 Report temperatures for all extruders 2013-07-30 14:02:01 +02:00
ErikZalm
434b6a05c1 Merge pull request #552 from iXce/Marlin_v1
Report temperatures for all extruders in reply to M105
2013-07-29 10:39:21 -07:00
ErikZalm
bdc2621119 Merge pull request #561 from Brendan-csel/Marlin_v1
Fix for Viki LCD issues printing from SD card
2013-07-29 10:38:17 -07:00
ErikZalm
6965bd4e15 Merge pull request #560 from njprossi/Marlin_v1
Fixed move from panel for delta bot #557
2013-07-29 10:37:40 -07:00
ErikZalm
a55b33e613 Merge pull request #559 from iXce/panelolupinsramps13
Add Panelolu2 pins for RAMPS1.3
2013-07-29 10:37:03 -07:00
ErikZalm
8b34351537 Merge pull request #558 from iXce/frenchupdate
Update French translation in language.h
2013-07-29 10:36:43 -07:00
ErikZalm
735e556724 Merge pull request #555 from iXce/liquidtwi2_makefile
Add support of LiquidTWI2-based panels to Makefile
2013-07-29 10:33:54 -07:00
Brendan-csel
d80aecda0a Skip SD menu refresh if nothing has changed 2013-07-29 21:00:29 +12:00
Brendan-csel
be2dea1dc6 Save LCD_CLICKED before it is cleared
The SD card menu was refreshing so slowly that the button interrupt was clearing LCD_CLICKED before the menu items could check it.
2013-07-29 20:58:09 +12:00
Nicolas Rossi
55c287a69e Fixed move from panel for delta bot #557 2013-07-28 22:54:37 +02:00
Guillaume Seguin
1902d339b0 Add Panelolu2 pins for RAMPS1.3 2013-07-28 19:19:57 +02:00
Guillaume Seguin
eb23a68e92 Update French translation in language.h 2013-07-28 18:50:47 +02:00
midopple
7ced55b97c Merge pull request #1 from ErikZalm/Marlin_v1
merge
2013-07-27 08:06:44 -07:00
ellensp
e019197b32 renamed ArduinoAddons/Arduino_1.x.x/sanguino to Sanguino. Now make works for Arduino > 1.0 on linux 2013-07-27 00:13:49 +12:00
ErikZalm
1561c6df51 Merge pull request #547 from wolfmanjm/delta-configuration
Setup Default configuration for Deltas if DELTA is defined
2013-07-24 03:11:36 -07:00
Guillaume Seguin
374bc99fa3 Add support of LiquidTWI2-based panels to Makefile
Use LIQUID_TWI2=1 as make argument to enable this support
2013-07-24 12:09:53 +02:00
Jim Morris
ab624eac2a revert COnfiguratiuon to the same as head 2013-07-24 02:57:46 -07:00
Jim Morris
52f79ffeca add an example default configuration for delta style bots 2013-07-24 02:55:52 -07:00
Jim Morris
b9d7ccf1cd Merge remote-tracking branch 'upstream/Marlin_v1' into delta-configuration
Conflicts:
	Marlin/Marlin_main.cpp
2013-07-24 02:49:25 -07:00
ErikZalm
c323fced9a Merge pull request #554 from iXce/cxa_atexit
Fix Makefile-based build when avr-gcc has been compiled with --enable-cxa_atexit
2013-07-24 02:49:08 -07:00
Guillaume Seguin
d4d1540727 Use -fno-use-cxa-atexit to override gcc --enable-cxa_atexit 2013-07-24 11:19:38 +02:00
Guillaume Seguin
01ed99143c Woops, fix logic 2013-07-23 23:34:42 +02:00
ErikZalm
e578f988d3 Merge pull request #553 from iXce/req413
Update #413 for merging, fix languages.h
2013-07-23 14:19:30 -07:00
Guillaume Seguin
76841450c8 Only display poweron/poweroff if PS_ON_PIN > -1 2013-07-23 22:28:30 +02:00
Guillaume Seguin
44f327d738 Uniformly reindent language.h 2013-07-23 22:13:40 +02:00
Guillaume Seguin
326d2db025 Update language.h so that all languages compile
Some strings still need translation, but at least everything compiles.
2013-07-23 22:11:54 +02:00
Guillaume Seguin
2cb716f513 Run Marlin/language.h through dos2unix 2013-07-23 21:49:37 +02:00
Guillaume Seguin
34da3a0a3f Merge github.com:ErikZalm/Marlin into Marlin_v1
Conflicts:
	Marlin/language.h
2013-07-23 21:46:41 +02:00
Guillaume Seguin
18199ff960 Merge github.com:ErikZalm/Marlin into Marlin_v1 2013-07-23 21:33:52 +02:00
ErikZalm
a105e10075 Merge pull request #550 from buildrob101/MinimalDualXCarriage
Fixed compile error when QUICK_HOME is defined.
2013-07-22 06:08:44 -07:00
Robert F-C
fb5334f428 Fixed compile error when QUICK_HOME is defined.
As well a couple of minor changes to handling of extruder offset for
dual x-carriage mode.
2013-07-22 22:46:14 +10:00
ErikZalm
c5bf8298d3 Merge pull request #549 from buildrob101/MinimalDualXCarriage
Disable DUAL_X_CARRIAGE by default
2013-07-20 09:43:47 -07:00
Robert F-C
c3568398b5 Disable DUAL_X_CARRIAGE by default 2013-07-20 23:50:30 +10:00
ErikZalm
96a773fa48 Merge pull request #548 from buildrob101/MinimalDualXCarriage
Dual x-carriage support
2013-07-20 02:59:32 -07:00
Robert F-C
39cd3dbdbe Remove dual x-carriage functionality that could/should be implemented in slicer
Also added a couple of missed merge lines in homeaxis() from previous
commit.
2013-07-20 13:07:50 +10:00
Jim Morris
fb20ceabce enable soft endstops for delta
disable delta by default
2013-07-17 16:21:51 -07:00
Jim Morris
d01ee7e7b5 fix zjerk being the same for delta as xy jerk
add more delta defaults
on delta make second home even slower
2013-07-17 16:14:07 -07:00
Robert F-C
d7390e13d9 Support dual x-carriage printers
Dual x-carriage designs offer some substantial improvements for dual
extruder printing.
2013-07-17 22:44:45 +10:00
Jim Morris
f3aa2a48e7 update max pos 2013-07-17 01:29:51 -07:00
Jim Morris
460751503e Added default configurations for deltas when DELTA is defined 2013-07-17 01:17:27 -07:00
ErikZalm
5ab872de1f Merge pull request #545 from MStohn/fix-bad-lcd-commit-from-makr3d
fixed bad lcd commit from makr3d
2013-07-15 08:57:43 -07:00
Maik Stohn
9da94c247a fixed bad lcd commit from makr3d
#elsif does not exist #elif is correct
2013-07-15 17:34:21 +02:00
Erik van der Zalm
59004023fd Fixed typo 2013-07-15 17:22:56 +02:00
Erik van der Zalm
461dad6e05 Added : M32 - Select file and start SD print (Can be used when printing from SD card)
Untested
2013-07-14 22:39:59 +02:00
Erik van der Zalm
c4a2077951 M109 and M190 now wait when cooling down if R is used instead of S.
M109 S180 waits only when heating.
M109 R180 also waits when cooling.
2013-07-14 21:10:24 +02:00
ErikZalm
8a2a3ef91d Merge pull request #531 from iXce/Marlin_v1_lcd
Only clamp panel movements if software endstops are enabled
2013-07-14 06:50:23 -07:00
Erik van der Zalm
6397b3339c restored configuration.h defaults 2013-07-14 15:49:03 +02:00
Erik van der Zalm
cdaaad3df1 Merge branch 'Marlin_v1' of https://github.com/makr3d/Marlin into makr3d-Marlin_v1 2013-07-14 15:45:49 +02:00
Erik van der Zalm
e3bdefd873 fixed missing #endif 2013-07-14 15:42:53 +02:00
Erik van der Zalm
a5be0c52c6 no message 2013-07-14 15:35:54 +02:00
ErikZalm
e73611f5fa Merge pull request #535 from GabinoLopez/patch-1
Update language.h
2013-07-14 02:24:31 -07:00
Michael Mayer
e509cdbeb0 added contrast control function for gLCDs 2013-07-14 15:28:26 +07:00
Michael Mayer
99b7e926e7 added MaKr3d Melzi board 2013-07-14 15:17:55 +07:00
Gabino Lopez
68be33b1fc Update language.h
I update the spanish Messages, now this compile for spanish language.
2013-07-04 10:23:00 +02:00
daid
acb3271c9a Merge pull request #534 from xifle/Marlin_v1
Fixes compiler warning for feedrate deadzone
2013-07-01 23:41:51 -07:00
xifle
61fe430d4f Should fix compiler warning for feedrate deadzone 2013-07-01 11:10:02 +02:00
daid
d77f5ee722 Merge pull request #532 from codexmas/ServoEndstops
Fix for ugly code compilation errors in SERVO_ENDSTOP checks
2013-06-28 08:04:55 -07:00
Gord Christmas
fde17d5720 Fix for ugly code compilation errors in SERVO_ENDSTOP checks 2013-06-28 08:02:04 -07:00
Guillaume Seguin
aa65c20d1f Only clamp panel movements if software endstops are enabled 2013-06-28 14:18:00 +02:00
Erik van der Zalm
ecf3ab5de4 Added thermistor 60 to configuration.h 2013-06-27 23:25:51 +02:00
Nicolas Rossi
2daa85918e Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin.git into Marlin_v1
Conflicts:
	Marlin/Configuration.h
	Marlin/Marlin_main.cpp
	Marlin/language.h
	Marlin/pins.h
	Marlin/ultralcd.cpp
2013-06-20 23:59:56 +02:00
Erik van der Zalm
2015989f84 Added DISABLE_MIN_ENDSTOPS 2013-06-18 19:20:26 +02:00
ErikZalm
1c86adc760 Merge pull request #526 from ch100/Marlin_v1
Fix Pin Description Typo
2013-06-17 05:53:57 -07:00
Christian Inci
648d45cfb2 Fix Pin Description Typo
Reverse 'Bed' and 'Fan' at the RAMPS 33 Description.

Signed-off-by: Christian Inci <chris.pcguy.inci@gmail.com>
2013-06-16 23:35:33 +02:00
ErikZalm
171719f18c Merge pull request #525 from lajos/ultralcd_pid
ultralcd.cpp compile errors when !defined(PIDTEMP)
2013-06-16 00:02:54 -07:00
lajos
b519af4f05 fixed another !defined(PIDTEMP) compile in ultralcd.cpp 2013-06-15 20:49:18 -04:00
lajos
7d03c52511 fixed compile error in ultralcd.cpp when PIDTEMP undefined 2013-06-15 18:09:52 -04:00
ErikZalm
312b4aa7c2 Merge pull request #521 from lajos/azteeg_x1
added Azteeg X1 motherboard
2013-06-15 14:08:45 -07:00
lajos
02dee80fa5 added Azteeg X1 motherboard 2013-06-15 16:58:17 -04:00
ErikZalm
73569d891f Merge pull request #520 from henrikbrixandersen/Makefile-fixes
Makefile fixes
2013-06-15 02:35:51 -07:00
Henrik Brix Andersen
47dc70e3ec Fix location of avrdude.conf 2013-06-15 09:50:25 +02:00
Henrik Brix Andersen
1d258903bb Allow command line compilation when using BEEPER. 2013-06-15 09:36:55 +02:00
Erik van der Zalm
e34c9981ab Delta disabled by default 2013-06-11 22:33:58 +02:00
Erik van der Zalm
26a441fc7d More 3Drag controller patches. 2013-06-10 18:26:15 +02:00
Erik van der Zalm
ac975ed8c2 Merge branch 'deltabot' into Marlin_v1 2013-06-10 18:20:29 +02:00
ErikZalm
58d12aad73 Merge pull request #511 from wolfmanjm/ezdelta
fix homing for deltas
2013-06-09 23:45:03 -07:00
Jim Morris
caa848f943 fix homing for deltas 2013-06-09 21:10:00 -07:00
Erik van der Zalm
7ad12be763 Merge branch 'Marlin_v1' of https://github.com/codexmas/Marlin into codexmas-Marlin_v1
Conflicts:
	Marlin/Configuration.h
	README.md
2013-06-09 23:10:41 +02:00
Erik van der Zalm
408169aef4 Merge branch 'Marlin_v1' of https://github.com/BorisLandoni/Marlin into BorisLandoni-Marlin_v1
Conflicts:
	Marlin/Configuration.h
	Marlin/language.h
	Marlin/pins.h
2013-06-09 22:57:40 +02:00
Erik van der Zalm
bd96d22bfb Merge branch 'Marlin_v1' into thinkyhead
Conflicts:
	Marlin/Configuration.h
	Marlin/Configuration_adv.h
	Marlin/Marlin.h
	Marlin/Marlin_main.cpp
	Marlin/Servo.cpp
	Marlin/language.h
	Marlin/pins.h
	Marlin/planner.cpp
	Marlin/ultralcd_implementation_hitachi_HD44780.h
	README.md
2013-06-09 22:26:47 +02:00
Erik van der Zalm
73f21cd5d6 Spanish updated so far. 2013-06-09 21:40:35 +02:00
Erik van der Zalm
6f4a6e531c Merge branch 'deltabot' into Marlin_v1 2013-06-09 13:55:18 +02:00
Erik van der Zalm
01edf22a10 Fix home_all_axis to make QUICK_HOME work with Repetier-Host which sends G28 X0 Y0 Z0 instead of G28. Thanks to Matt Schoenholz for reporting this issue. 2013-06-09 13:54:19 +02:00
Erik van der Zalm
ff6fa09ecf Moved corexy implementation from stepper to planner
(Thanks iquizzle)
2013-06-09 13:10:06 +02:00
Erik van der Zalm
c8dcc7c208 Allow increasing the software PWM frequency. 2013-06-09 12:52:49 +02:00
Erik van der Zalm
8b0d82e9db Removed "awaiting translation" for french 2013-06-09 12:24:06 +02:00
Erik van der Zalm
1e05d192ab Make the beep tone less offensive 2013-06-09 12:21:16 +02:00
Erik van der Zalm
373f3ecab3 Merge branch 'deltabot' of https://github.com/jcrocholl/Marlin into deltabot
Conflicts:
	Marlin/Configuration.h
	Marlin/Marlin_main.cpp
	Marlin/pins.h
2013-06-09 00:51:58 +02:00
ErikZalm
e36d31a3b7 Merge pull request #467 from kiyoshigawa/Marlin_v1
Support for Elefu RA Board
2013-06-08 10:01:53 -07:00
kiyoshigawa
f295712008 Trying to fix weird diff on ultralcd_implementation_hitachi_HD44780.h 2013-06-08 09:27:56 -06:00
kiyoshigawa
5c70c785f5 Fixed small error in lcd define statements. 2013-06-08 09:17:41 -06:00
kiyoshigawa
69b02031ca Fixed small error in lcd define statements. 2013-06-08 09:09:11 -06:00
kiyoshigawa
2ca6c5fbd7 Fixed small error in lcd define statements. 2013-06-08 09:00:34 -06:00
kiyoshigawa
6a81291c57 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1
This should fix issues with pull request 467, I hope.

Conflicts:
	Marlin/Configuration.h
	Marlin/Marlin.pde
	Marlin/ultralcd_implementation_hitachi_HD44780.h
2013-06-08 08:48:18 -06:00
BorisLandoni
15b1b896e8 Update pins.h 2013-06-08 14:45:11 +02:00
BorisLandoni
c1cb5977ee Update Configuration.h 2013-06-08 14:37:39 +02:00
BorisLandoni
8a5bd8a808 Update Configuration.h 2013-06-08 14:37:17 +02:00
ErikZalm
3dea417c25 Merge pull request #506 from codexmas/ServoEndstops
Servo Enstops working!
2013-06-08 04:41:27 -07:00
BorisLandoni
c1d7cf939e Update language.h 2013-06-07 17:38:17 +02:00
BorisLandoni
4c7d1436e9 Update pins.h 2013-06-07 18:37:44 +03:00
BorisLandoni
6588933c04 Update Configuration.h 2013-06-07 18:36:16 +03:00
Scott Lahteine
5dabc95409 Apply all changes from latest Marlin_V1
Diffed and merged, preserving my updates
2013-06-06 15:49:25 -07:00
Gord Christmas
a733537ddd Missed some variable declarations
Integrated fixes from henrikbrixandersen pull request #504
2013-06-06 09:18:03 -07:00
Gord Christmas
f4f30c9d64 Added servo actuated enstop coding to allow G28 command to engage and retract a servo to specified angles. 2013-06-06 07:36:52 -07:00
Erik van der Zalm
79374f0b93 Merge branch 'reisnyderb' of https://github.com/ErikZalm/Marlin into Marlin_v1 2013-06-05 17:44:48 +02:00
ErikZalm
1520de0093 Merge pull request #505 from MStohn/much-faster-glcd-st7920
faster GLCD (ST7920 SW-SPI) implementation / fixes
2013-06-05 08:40:59 -07:00
Maik Stohn
da05b3ba94 faster GLCD (ST7920 SW-SPI) implementation / fixes
- fixed long menu entries (>14 or >18 chars) caused overrun in dogm lcd
implementation
- fixed pin set problem when in interrupt
- much faster ST7920 SW-SPI implementation
- increased ST7920 framebuffer size for more speed
2013-06-05 16:27:44 +02:00
kiyoshigawa
4b19c8552e Fixing changed Configuration.h settings to be default values per ErikZalm Request. 2013-06-04 12:01:55 -06:00
Erik van der Zalm
971ec35135 Expanded M302 to allow setting the temp 2013-06-02 17:36:23 +02:00
Erik van der Zalm
4de419e26e Updated README.md 2013-06-02 16:26:42 +02:00
Erik van der Zalm
a0729f0c3a no message 2013-06-02 15:42:59 +02:00
Erik van der Zalm
5090c56651 More redundant temp sensor changes. (After testing and debugging by reifsnderb) 2013-05-29 19:29:30 +02:00
Guillaume Seguin
16b9239a26 Report temperatures for all extruders 2013-05-29 18:06:12 +02:00
ErikZalm
a964b3cf3d Merge pull request #495 from Gatulibu/Marlin_v1
Added support for Megatronics v2.0 and Minitronics v1.0
2013-05-28 07:51:49 -07:00
ErikZalm
34fb4831a2 Merge pull request #496 from MStohn/fix-16x2-lcd
Fix: Long menu entries (>14 or >18 chars) caused overrun in hitachi display implementation
2013-05-28 07:50:52 -07:00
Maik Stohn
e8572c5239 Fix: Long menu entries (>14 or >18 chars) caused overrun in hitachi display implementation 2013-05-28 15:53:07 +02:00
Maik Stohn
7ee70c2248 Fix: removed wrong ; at end of define 2013-05-28 15:50:48 +02:00
Gatulibu
b78fa6bb70 Added support for Megatronics v2.0 and Minitronics v1.0
merged from code downloaded from reprapworld.com
2013-05-28 14:03:31 +02:00
Erik van der Zalm
9be61cdc02 Added redundant temp sensor 2013-05-26 17:57:49 +02:00
Erik van der Zalm
7231a20dba Put #ifdef around servo pins in pins.h. This allows the pins to be used for M42. 2013-05-24 21:05:11 +02:00
ErikZalm
7296de34cb Merge pull request #491 from stoneburner/patch-1
Fixed typo in Comment
2013-05-22 06:10:25 -07:00
Alexander Kasimir
e2ff536b03 Fixed typo in Comment 2013-05-22 16:02:03 +03:00
ErikZalm
df776f36a4 Merge pull request #490 from buildrob101/Marlin_v1
Revert previous change pin check change
2013-05-22 05:37:25 -07:00
Robert F-C
40eb07bad4 Revert and extend previous change pin check change
Reviert previous change of #if BLAH_PIN > 0 to #if defined(BLAH_PIN) &&
BLAH_PIN > -1. Unfortunately some times pin 0 is used. For my sins I've
gone through and replaced all unsafe checks of #if BLAH_PIN > -1 with
the safe version.
2013-05-22 21:33:23 +10:00
ErikZalm
440cf2bc10 Merge pull request #488 from MStohn/fix-typo
fixed typo / added "const" to defines for newer gcc compatibility
2013-05-21 09:36:14 -07:00
Maik Stohn
bd33cf4a9f fixed typo / added "const" to defines for newer gcc compatibility 2013-05-21 17:58:34 +02:00
ErikZalm
567291e734 Merge pull request #485 from Banjer/Panelolu2_Melzi
Add Panelolu2 support for Melzi
2013-05-21 08:46:27 -07:00
ErikZalm
68f9f2521e Merge pull request #487 from MStohn/fix-bad-lcd-commit-from-buildrob
fix broken LCD commit #dfa549f268 from buildrob - GLCD/DOGM implementati...
2013-05-21 08:17:21 -07:00
Maik Stohn
8d80cbbf4c fix broken LCD commit #dfa549f268 from buildrob - GLCD/DOGM implementation was ignored 2013-05-21 16:53:38 +02:00
ErikZalm
273502a172 Merge pull request #486 from xifle/Marlin_v1
LCD: Added Deadzone at 100% Feedrate
2013-05-20 08:09:51 -07:00
xifle
98d0d48191 fixed merge 2013-05-20 14:52:35 +02:00
xifle
bbe67fca5a soft tab correction 2013-05-20 14:50:39 +02:00
xifle
9eeb711c96 Merged from Upstream Master 2013-05-20 14:45:37 +02:00
Bas Spaans
424101110c Add Panelolu2 support for Melzi 2013-05-19 12:09:34 +02:00
ErikZalm
b2eeebd9c3 Merge pull request #409 from buildrob202/Marlin_v1
Implement automatic cold-end/extruder motor fan control based on nozzle temperature
2013-05-19 02:10:33 -07:00
Robert F-C
0d4a9444c4 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1 2013-05-19 08:50:58 +10:00
Erik van der Zalm
86cce025f4 Added #ifdef NUM_SERVOS to servo.cpp 2013-05-18 23:12:28 +02:00
ErikZalm
1a18a487f9 Merge pull request #407 from buildrob101/Marlin_v1
Combine and converge other I2C LCD branches (PANELOLU2, VIKI & PCF8575)
2013-05-18 11:28:32 -07:00
xifle
03141a5ef4 LCD: Added Deadzone at 100% Feedrate
This adds a deadzone at 100% Feedrate when changing it at the status
screen/main menu. Prevents from unwanted feedrate-changing when
navigating back to the main menu and makes it easier to return to 100%.
2013-05-18 19:53:46 +02:00
Gord Christmas
28ada096e2 Adding servo documentation 2013-05-18 06:01:58 -07:00
Robert F-C
4121311b9d Change to LCD status indicators
The I2C LCD status indicators now indicate when the hotends or bed are
turned on at all (rather than just when they are in their heating phase)
2013-05-18 22:30:42 +10:00
Robert F-C
dfa549f268 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1 2013-05-18 21:59:39 +10:00
ErikZalm
64360164ad Merge pull request #482 from codexmas/Marlin_v1
servosupport
2013-05-16 10:19:00 -07:00
ErikZalm
86405cdd11 Merge pull request #479 from MStohn/thermocouple
BUGFIXES for temperature.cpp / add RUMBA thermocouple support
2013-05-16 10:06:59 -07:00
Erik van der Zalm
6c45c3f4e7 BariCUDA changes 2013-05-16 19:01:12 +02:00
Gord Christmas
96624f0f31 Forgot to include reference to Servo in makefile 2013-05-16 08:25:20 -07:00
Gord Christmas
dc59f07d24 First attempt at refactoring of original servo code. Only adding servo support as a start to keep things simple. 2013-05-16 07:03:01 -07:00
Gord Christmas
b668cb0516 Adding in clean copies of Servo library from Arduino 1.0.4 2013-05-16 06:47:42 -07:00
MaikStohn
95dff34b73 fixed wrong compare for min temp check of heater 1 and heater 2 2013-05-16 01:17:38 +02:00
MaikStohn
4cc6f9f6de fixed wrong pin initialization when using temperature 2 pin input 2013-05-16 01:17:08 +02:00
MaikStohn
61a48cc662 Add support for RUMBA thermocouple add on 2013-05-16 01:16:33 +02:00
MaikStohn
9cc15876be Add support for RUMBA thermocouple add on 2013-05-16 01:16:08 +02:00
ErikZalm
c9cf2174dd Merge pull request #474 from xifle/Marlin_v1
Fixed "Cooldown" Selection not reseting bed temp
2013-05-14 14:58:53 -07:00
Erik van der Zalm
bd2cd4903e Added #ifdef BARICUDA around the BariCUDA changes 2013-05-14 23:56:32 +02:00
Jordan Miller
37f3199df3 fixed problems in planner with solenoids for BariCUDA when set to 0 2013-05-14 23:35:01 +02:00
Jordan Miller
fbd899a37d Support for BariCUDA Paste Extruder derived from MakerBot Frostruder. Using Ultimachine RAMBo board. M126/M127 and M128/M129. 2013-05-14 23:34:45 +02:00
xifle
29bb8d7d4f Fixed "Cooldown" Selection not reseting bed temp
- enquecommand with multiple lines "\n" doesn't work -> M140 S0 didn't
get processed. So I wrote a new func for the cooldown which uses
setTargetHotend. In addition this does return to status page after
selection.
    - Added setWatch() to preheat-functions (Temperatur sanity check
would never have worked when preheating from the lcd panel)
2013-05-14 16:56:19 +02:00
Robert F-C
015d0594b0 Optimize menu selection for Viki rotary encoder.
The Viki LCD rotary encoder uses a different number of steps per
rotation. This fixes the seeming "missed" steps when selecting a menu.
2013-05-12 07:51:28 +10:00
ErikZalm
90664d20a4 Merge pull request #472 from gregor2005/Marlin_v1
added support for the reprapworld keypad
2013-05-10 13:26:17 -07:00
gregor
2739c26c4f changes:
- changed the variables from keypad to reprapworld_keypad
- added a missing ifdef check
2013-05-10 22:20:02 +02:00
gregor
6fb9573157 added support for the reprapworld keypad 2013-05-10 21:57:17 +02:00
Tim Anderson
594193c908 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1 2013-05-06 23:29:38 -06:00
Tim Anderson
1fa61c297e Turning off Control Panel by Default and Updating the link to the LiquidCrystal_I2C library to avoid confusion. 2013-05-06 23:23:54 -06:00
kiyoshigawa
b27a59f41e Added support for Elefu RA Board and Elefu Control Panel 2013-05-06 08:44:38 -06:00
ErikZalm
2c0fa34c9e Merge pull request #466 from midopple/Marlin_v1
BUG Fix in Commands M907,M350 and M351
2013-05-05 14:24:48 -07:00
midopple
a65a26d6b4 If CORE_XY is in use X and Y Axis had to be activated at the same time 2013-05-05 19:23:59 +02:00
midopple
db2f157a22 Replace the <= to < in the Command M907, M350 and M351.
The for loop for Axis count over the Array.
Add a break after M907
2013-05-05 19:19:55 +02:00
Scott Lahteine
a5cd582665 Support for 10 level deep SD folder hierarchy 2013-05-04 04:18:02 -07:00
daid
e3bc420daa Merge pull request #464 from arnoudja/Marlin_v1
Solved minor bug in controllerFan()
2013-05-03 12:38:23 -07:00
Arnoud
fc4ab05157 Solved minor bug in controllerFan()
Extruder 2 was checked where extruder 1 should be checked.
2013-05-03 21:32:34 +02:00
Scott Lahteine
0ef54f2f85 Make M303 silent when "S0" is sent
If S is left out perhaps it should be silent, but check the spec for
this M code.
2013-05-02 09:55:15 -07:00
Scott Lahteine
a200521eab Added CUSTOM_MENDEL_NAME option to Configuration.h and language.h
Also cosmetic comment changes and spelling corrections in printed
messages
2013-05-02 09:22:58 -07:00
daid
727aa2a051 Merge pull request #459 from martinxyz/fix-rounding-error
fix DEFAULT_AXIS_STEPS_PER_UNIT minor Z rounding error
2013-05-02 08:34:03 -07:00
Martin Renold
1a397825f9 fix DEFAULT_AXIS_STEPS_PER_UNIT minor Z rounding error 2013-05-01 08:30:24 +02:00
Robert F-C
289c02eda4 Remove unnecessary pin initialization in stepper.cpp
(duplicates initialization in Marlin_main.cpp)
2013-04-30 01:11:23 +10:00
Robert F-C
d5ad7a0814 Rework change to incorporate CONTROLLERFAN
Also refactor extruder auto fan logic to simplify further and now only
check every 2.5 seconds
2013-04-30 01:08:29 +10:00
Robert F-C
c3cdaceab3 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1 2013-04-29 22:13:55 +10:00
Robert F-C
1c127217df Make DOGLCD merge neater. 2013-04-29 22:03:37 +10:00
Robert F-C
7f57f28ccc Add lcd_buzz function to ultralcd.h so that non-LCD code can make use of lcd's buzzer.
Argument order of lcd_buzz was set to mirror that on tone(). Change
default M300 frequency to something audible.
2013-04-29 21:50:52 +10:00
Robert F-C
788d62bcc4 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1
Conflicts:
	Marlin/Marlin.pde
	Marlin/ultralcd.cpp
	Marlin/ultralcd_implementation_hitachi_HD44780.h
2013-04-29 21:13:46 +10:00
ErikZalm
4f96ad5621 Merge pull request #456 from Stefanowicz/Marlin_v1
Add (as an option) slower SD transfer mode
2013-04-24 02:01:52 -07:00
Lukasz Stefanowicz
d71f1e9bf6 Add (as an option) slower SD transfer mode 2013-04-24 10:50:57 +02:00
ErikZalm
db5bb8546d Merge pull request #452 from MStohn/Marlin_v1
128x64 RepRapDiscount Full Graphic Smart Controller support
2013-04-23 09:43:37 -07:00
daid
4b2ece159b Merge pull request #453 from brackendawson/Marlin_v1
Make Gen7 1.4+ heater temp sensort pins match silkscreen.
2013-04-16 10:12:25 -07:00
Bracken Dawson
d5ee2a5a62 Make Gen7 1.4 heater pins match silkscreen 2013-04-16 17:37:38 +01:00
MaikStohn
7ac6d7f78e FIX: Speedup - no explicit display clear needed in u8glib 2013-04-16 14:22:24 +02:00
MaikStohn
13596e8722 Added RepRapDiscount FULL GRAPHIC Smart Controller 2013-04-16 14:21:39 +02:00
MaikStohn
3a6abe1d6e Removed STB custom font hack from u8glib library and moved to marlin project 2013-04-16 13:54:39 +02:00
MaikStohn
16afbf9bfa FIX: adopted latest changes from hitachi implementation 2013-04-16 13:51:48 +02:00
MaikStohn
c83863d5d6 add U8glib library to Arduino1.x includes 2013-04-16 12:44:54 +02:00
daid303
34bca48b98 Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2013-04-15 15:11:38 +02:00
daid303
ac52dcc174 Updated the card menu and watch messages to make it more informative. 2013-04-15 15:11:22 +02:00
daid
84920e9c58 Merge pull request #449 from Stefanowicz/Marlin_v1
Fix: Build error when EEPROM_SETTINGS is defined and PIDTEMP is undefined
2013-04-12 13:45:15 -07:00
Stefanowicz
31bb3fb297 Fix: Build error when EEPROM_SETTINGS is defined and PIDTEMP is undefined 2013-04-12 18:04:32 +02:00
daid303
c80a78bb70 Lower the default max E feedrate a bit. With the stepper fix this is much to high. 2013-04-12 13:54:38 +02:00
Simon Oliver
5d5909fc25 Fix failure to compile with heated bed: remove call to non-existant scaleBedPID(). 2013-04-12 13:32:47 +02:00
Simon Oliver
93f0463b21 Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).

Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.

Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.

Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.

Conflicts:
	Marlin/language.h
2013-04-12 13:31:30 +02:00
ErikZalm
1f74ef4157 Merge pull request #441 from bkpsu/Marlin_v1
Fixed cardreader.h to resolve issue #440 (Pull Request  #425 missing file)
2013-04-01 01:06:10 -07:00
Bart K
4fa2260a59 Fixed cardreader.h to resolve issue #440 (Pull Request #425 missing file) 2013-03-31 19:59:16 -04:00
Erik van der Zalm
038d405254 Corrected #endif in language.h 2013-03-31 20:28:29 +02:00
ErikZalm
2438b34df9 Merge pull request #439 from STB3/Marlin-language.h-repair
Removed GIT fragments from language.h
2013-03-30 15:44:26 -07:00
Dirk Eichel
443aaa30bf Removed GIT fragments
Seems that there was something wrong while merging
2013-03-30 23:26:42 +01:00
ErikZalm
7f622467fc Merge pull request #425 from kefir-/m928_logging
M928 logging
2013-03-30 08:50:34 -07:00
ErikZalm
86867928ac Merge pull request #434 from DDRBoxman/Marlin_v1
Add support for M300: Play beep sound
2013-03-30 08:49:54 -07:00
ErikZalm
9a38cad6f0 Merge pull request #430 from STB3/GLCD_128x64_dots
Final task of the 128x64dots GLCD implementation
2013-03-30 08:49:14 -07:00
ErikZalm
7a5c474d91 Update Configuration.h 2013-03-28 21:27:50 +01:00
Dirk Eichel
4e448b700a Merged fetched files from Marlin_v1 branch
Pull requests: #414 #433 #432 #428
2013-03-26 21:43:04 +01:00
Dirk Eichel
fa58be3cb8 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1 2013-03-26 21:37:05 +01:00
ErikZalm
9f2862ce48 Merge pull request #414 from whosawhatsis/Marlin_v1
regenerated thermistor table 7
2013-03-25 13:14:49 -07:00
ErikZalm
9fb8bd5685 Merge pull request #433 from whosawhatsis/bang-mode
Separate PID_MAX from BANG_MAX
2013-03-25 13:11:34 -07:00
ErikZalm
aa816ee81c Merge pull request #432 from blddk/Marlin_v1
HTML removed, Rumba added
2013-03-25 13:06:25 -07:00
Colin Edwards
0d075378d5 Add LARGE_FLASH define and enable it for some of the beefier boards
The LARGE_FLASH flag allows superfluous features to be excluded
on boards with less memory
2013-03-25 10:42:27 -05:00
Colin Edwards
9a1c90471f Ignore unused beeper pins 2013-03-25 10:28:15 -05:00
Colin Edwards
1a0f889803 Add support for M300: Play beep sound 2013-03-24 23:35:05 -05:00
Robert F-C
9322c408c6 Updated for LiquidTWI2 library version 1.2.3
The new version of the library means that PANELOLU no longer needs to be
defined in LiquidTWI.h (the library file can be used as is) and the new
version of the library also enables the buzzer on the Panucatt VIKI
panel.
2013-03-24 18:19:58 +11:00
whosawhatsis
fd5b7e0cec Separate PID_MAX from BANG_MAX
This allows PID_FUNCTIONAL_RANGE to use a maximum duty cycle higher
than PID_MAX. This is useful for powerful heaters to heat quickly in
bang-bang mode, but use a lower duty cycle that is easier to stabilize
in PID mode.
2013-03-22 18:16:26 -07:00
blddk
e5a853a3d0 Added automated extruder fan function 2013-03-22 18:49:05 +01:00
blddk
72419f69a9 Added rumba 2013-03-22 18:41:54 +01:00
blddk
91bea43332 Added rumba pinout 2013-03-22 18:29:47 +01:00
blddk
d2b00fe486 Removed html and added rumba
Found some unwanted html at the bottom of the file which caused it to not be able to compile.
Also added rumba as machine.
2013-03-22 18:28:16 +01:00
Dirk Eichel
6c66cae694 GLCD init screen cosmetics 2013-03-19 21:25:11 +01:00
Dirk Eichel
f3e0e5184d Add include selector between char. LCD and GLCD 2013-03-19 20:59:21 +01:00
Dirk Eichel
5d3862f9d1 Modified u8glib logo on welcome screen 2013-03-19 20:32:23 +01:00
Dirk Eichel
0b320f75e9 Removed debug code, add some comments 2013-03-19 20:29:25 +01:00
Dirk Eichel
5f1cd70122 Add code to lcd_update() for GLCD
This code selects between the routines for the GLCD or the char.
display.
2013-03-19 20:19:16 +01:00
Dirk Eichel
a49c09a776 Add variable for animated fan, add float conversion w/o sign
A new variable was introduced to allow fan animation on the GLCD.
Add additional float to string conversion routine without sign
character. This is used for the coordinates visualisation on the GLCD.
2013-03-19 20:13:23 +01:00
Dirk Eichel
26d8863111 Add library selection between GLCD and char. LCD 2013-03-19 20:03:47 +01:00
Dirk Eichel
4a141a694f Marlin code for GLCD display
This contains the menues, status screen etc...
2013-03-19 19:59:56 +01:00
Dirk Eichel
83c790a020 Add bitmap graphics for GLCD
1. Marlin welcome screen
2. Status screen symbols 3 Extruders, heated bed, animated fan logo 1
3. Status screen symbols 3 Extruders, heated bed, animated fan logo 2
2013-03-19 19:57:35 +01:00
Dirk Eichel
c28e71a1bf Reduced u8glib SPI speed to fosc/8
Makes the lib compatible with most LCDs
2013-03-19 19:50:08 +01:00
Dirk Eichel
ee8feb9dee Add Marlin (reprap) specific fonts 6x10, 6x9
Font size 6x10 with feedrate symbol & Font size 6x9.
2013-03-19 19:45:57 +01:00
Dirk Eichel
c8e2f44087 Add u8glib library supporting dot matrix displays
https://code.google.com/p/u8glib/
Universal Graphics Library for 8 Bit Embedded Systems
2013-03-19 19:41:23 +01:00
Dirk Eichel
7417423691 Merge remote-tracking branch 'origin/Marlin_language_file_fix' into GLCD_128x64_dots 2013-03-19 19:38:44 +01:00
ErikZalm
590225be25 Merge pull request #428 from ryanturner/Marlin_v1
Adding Maker's Tool Works heated bed thermistor
2013-03-19 11:32:47 -07:00
Dirk Eichel
a0e41c0970 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1 2013-03-19 19:16:00 +01:00
Dirk Eichel
233df9cca0 Add missing LF at the end of the file 2013-03-19 19:12:33 +01:00
Dirk Eichel
bb0de75a92 Removed umwanted HTML code ath the end of the file
Sorry for that. This does not lead to compile errors. I removed the
unwanted code to make it clean.
2013-03-19 06:46:05 +01:00
Ryan Turner
7c47e7162d Adding Maker's Tool Works heated bed thermistor 2013-03-18 22:53:37 -05:00
daid
af78d0cbfa Merge pull request #1 from illuminarti/Fix_E_Speed
Fix step rate bug (especially for retraction)
2013-03-18 23:36:11 +01:00
Dirk Eichel
9a78f321a4 Add pins for Motherboard variant 64
These definition contain also the definition for the graphics LCD.
2013-03-18 23:36:11 +01:00
Dirk Eichel
5de25ccd20 Add Motherboard variant 64 - STB V1.1
Definition for the graphic LCD are already in it, they will not harm the
configuration as they are only defined constants
2013-03-18 23:36:10 +01:00
daid
d6ce63c49c Merge pull request #411 from STB3/Marlin_w_STB_Board_support
Add STB board support to Marlin (next step towards graphic LCD implementation)
2013-03-18 07:57:39 -07:00
Ketil Froyn
f036be7c4e Clean up tab/whitespace from last commit 2013-03-16 23:11:58 +01:00
Ketil Froyn
07e11c7cf5 Add command M928 to enable logging to file of received gcode commands 2013-03-16 23:02:57 +01:00
daid
92782f9252 Merge pull request #1 from illuminarti/Fix_E_Speed
Fix step rate bug (especially for retraction)
2013-03-15 09:07:34 +01:00
whosawhatsis
6a61a3c0b4 missing comma in last commit 2013-03-08 16:15:49 -08:00
whosawhatsis
f0aee4101a regenerated thermistor table 7
Generated with createTemperatureLookup.py. The old table crapped out at
270C, which was a problem for polycarbonate.
2013-03-08 13:41:49 -08:00
Nicolas Rossi
aba67e2449 No bed config for RAMPS
The motherboard 35 is a config without bed with this pins setting :
D8 Extruder
D9 Fan
D10 Controller Fan
2013-03-05 15:51:24 +01:00
Nicolas Rossi
6504e96165 Turn off power supply off-load
Disable the high current output and wait a little before to turn off,
because the interrupting capacity of the PSU is unknown.
Could be a function if needed by other.
2013-03-05 15:03:48 +01:00
Nicolas Rossi
86bf911139 Toggle menu for PSU from LCD pannel
From the prepare menu, accessible when is not printing, you have the
possibility to turn off the PSU when is on et vice versa.
From the host, you can turn off or turn on the PSU then the menu is
updated accordingly.
From the LCD message, the printer status is reported ready or off
respectively when the PSU is on or off.
2013-03-05 14:52:51 +01:00
Robert F-C
7bad72359c Support encoder click on PANELOLU2 being read through I2C
This change also handles the case where the pause/stop/restart button on
the VIKI is not used. Make LCD I2C buzz sound the same as the normal
buzz (300ms is too long for quick feedback).
2013-03-03 18:47:50 +11:00
Robert F-C
1daf2f3256 Number of extruders is not an advanced configuration - it is a basic property. 2013-03-02 16:14:19 +11:00
Robert F-C
f1263d3f88 Further reduce code by using precompiler logic 2013-03-02 16:12:11 +11:00
Dirk Eichel
140e095c6e Add pins for Motherboard variant 64
These definition contain also the definition for the graphics LCD.
2013-03-01 17:47:32 +01:00
Dirk Eichel
b2c1c64fb1 Add Motherboard variant 64 - STB V1.1
Definition for the graphic LCD are already in it, they will not harm the
configuration as they are only defined constants
2013-03-01 17:39:54 +01:00
Dirk Eichel
ceb5ee38af Replaced corrupted language.h file on local PC with current from ErikZalm/Marlin 2013-03-01 17:27:57 +01:00
Dirk Eichel
8efd4cfd73 fixed merge conflict 2013-03-01 16:27:35 +01:00
daid
b3ebb71704 Merge pull request #408 from STB3/Marlin_with_ATmega1284p_Sanguino_on_023_support
Marlin with ATmega1284p sanguino support under Arduino 023
2013-03-01 06:08:18 -08:00
Robert F-C
372e12f83f Implement automatic extruder/cold-end fan control based on temperature
This change allows fan outputs to automatically turn on/off when the
associated nozzle temperature of an extruder is above/below a threshold
temperature.
Multiple extruders can be assigned to the same pin in which case the fan
will turn on when any selected extruder is above the threshold.
It also makes the M42 command compatible with the M106/M107 command.
The majority of the logic in this change will be evaluated by the
compiler at build time (i.e, low code space requirements).
2013-03-01 21:57:23 +11:00
Robert F-C
6beb42cdf6 Attempt to address Bernhard's comments
Refactor configuration to try to make items clearer (what defines a
panel vs what is user changeable).
2013-03-01 01:17:07 +11:00
Dirk Eichel
f991bf23b2 Add bootloader files for ATmega1284/Sanguino
Added the optiboot bootloader, uses only 512kB of FLASH
Includes .hex file is for 20MHz µC Clock and serial speed of 57k6
2013-02-27 22:34:36 +01:00
Dirk Eichel
5bfba7720e Switched to Sanguino 0023r4
This is the actual Sanguino release for Arduino 023.
It has full ATmega1284p support.

Reference:
https://code.google.com/p/sanguino/downloads/detail?name=Sanguino-0023r4.zip&can=2&q=
2013-02-27 22:29:46 +01:00
Dirk Eichel
a069d30a4b Add additional Sanguino bard versions to boards.txt
ATmega644P 16MHz, ATmega1284p 8, 16, 20MHz
2013-02-27 22:17:42 +01:00
Robert F-C
839bef6d5d Fix Configuration.h file to not define LCDs be default.
Also fix compile time check in Marlin.pde
2013-02-28 02:32:20 +11:00
Robert F-C
1292d735ba Converge all I2C LCD branches (PANELOLU2, VIKI & PCF8575)
This includes refactoring the buttons code to remove a large amount of
non-pin dependent duplication from pins.h.
2013-02-28 02:04:51 +11:00
daid303
4eb81a69e6 Only compile the new extruder offset code if you have multiple extruders. 2013-02-27 12:32:07 +01:00
daid
3e9cd334a4 Merge pull request #383 from dob71/jeff
Hotend offset handling for multi-extruder machines
2013-02-27 03:10:18 -08:00
MendelMax
67710df9f3 Made i2c mode wok with the hardware I am able to test (ywrobot / sainsmart i2c LCD 2004)
Removed incorrect LiquidCrystal_I2C Library
2013-02-26 22:22:12 +00:00
Bob Clough
b6209c86dd Added import of Wire Library to make I2C LCD support compilable 2013-02-25 15:15:23 +00:00
Bob Clough
2b567d1df5 Added I2C port expander support to HD44780 2013-02-25 14:22:14 +00:00
Bob Clough
06272f463d Added Config variables for activating I2C LCDs and setting type and address 2013-02-25 14:14:46 +00:00
Bob Clough
83e33bdd26 Added LiquidCrystal_I2C library to ArduinoAddons 2013-02-25 14:01:48 +00:00
daid303
de3dec7215 Also show the tune menu when USB printing. 2013-02-20 00:54:44 +01:00
Denis Bakin
73d41c10b9 Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into jeff
Conflicts:
	Marlin/language.h
	Marlin/thermistortables.h
2013-02-18 12:10:52 -05:00
daid
63da4dc59a Merge pull request #398 from DanieleSdei/Marlin_v1
Marlin v1, alignment of the Italian language
2013-02-16 15:41:43 -08:00
daid
7eb9811958 Merge pull request #397 from codenamepawel/patch-1
Update Marlin/language.h
2013-02-16 15:41:07 -08:00
Daniele Sdei
82e28851bd Italian language: SD-Card change and SD-Card init 2013-02-16 12:17:29 +01:00
Daniele Sdei
aed5965ad8 Italian language: remove space and some fix 2013-02-16 12:14:50 +01:00
codenamepawel
d360846dd4 Update Marlin/language.h
Update Polish language 	#define MSG_RESUMING "Wznawiam drukowanie"
2013-02-16 03:42:53 +01:00
daid303
2f60e324dc Fixed #394 2013-02-14 14:04:26 +01:00
daid
5e2abfcdcd Merge pull request #391 from STB3/Marlin_with_SD-Card_Change_Menu
Add SD-Card change and SD-Card init. for electronics equipped with LCD Display
2013-02-13 08:56:00 -08:00
daid
fa5c45f515 Merge pull request #392 from mfeherpataky/Marlin_v1
Update Marlin/ultralcd_implementation_hitachi_HD44780.h
2013-02-13 08:54:58 -08:00
Dirk Eichel
a0d4e8e78e Add Messages for SD Card init. & change 2013-02-13 10:05:18 +01:00
mfeherpataky
bbf0cc1379 Update Marlin/ultralcd_implementation_hitachi_HD44780.h
Fix to a bug that I just introduced - sorry. Forgot about offset of string length.
2013-02-12 20:06:51 +01:00
Dirk Eichel
c8f1fbd9d8 Add SD-Card change and SD-Card init.
Add SD-Card change and SD-Card init. for reprap electronics without
SD-Chard change detect pin.
2013-02-12 17:35:46 +01:00
daid
be91fb9b47 Merge pull request #389 from mfeherpataky/Marlin_v1
Update Marlin/ultralcd_implementation_hitachi_HD44780.h
2013-02-12 07:56:15 -08:00
mfeherpataky
71ddb8dc60 Update Marlin/ultralcd_implementation_hitachi_HD44780.h
Use all available characters in narrow LCDs < 20 characters.
2013-02-12 00:03:40 +01:00
mfeherpataky
d2c547c407 Update Marlin/ultralcd_implementation_hitachi_HD44780.h
Fix to a minor bug with hardcoded LCD_WIDTH that draws edited values outside of the 16 characters width LCDs.
2013-02-11 23:25:24 +01:00
Denis B
70871715e4 Added support for extruder offset handling
The extruder offset can be specified in the configuration
file or adjusted on the fly using the "M218 T# X# Y#" command.
The EEPROM support is not yet merged in.
The "T#" command can take option "F#" that specifies the feedrate
at which the printing head should be re-positioned. If not
specified the re-positioning move is not preformed immediately,
but the coordinates are adjusted for the printer to properly
position the head when the next movement happens.
2013-02-04 23:05:45 -05:00
Denis B
49b2ddc8c1 Cleaned up non-standard characters 2013-02-04 01:41:40 -05:00
Bernhard Kubicek
f8876a7958 Merge pull request #376 from kintel/skip_longfilenames
Also skip .files and _files with long filenames. I think its better than before. If somebody dislikes it, or wants additional configuration, it can be done in a future step. Thanks, Marius, and nice to have you helping!
2013-02-03 03:05:31 -08:00
daid
18fcc367d2 Merge pull request #371 from Banjer/Melzi_LED_PIN
Chenged LED_PIN for Melzi boards, added comment about broken versions of...
2013-02-02 03:23:43 -08:00
daid
6b78edf7c5 Merge pull request #374 from kintel/quickstop
compile fix: quickStop() needs stepper.h
2013-02-01 13:54:12 -08:00
Bas Spaans
19ce90fe02 Added comment about M42 usage (clean) 2013-01-31 18:20:23 +01:00
Bas Spaans
00fed0a703 Revert "Extended comment explaining M42 usage"
This reverts commit 01541ee64c.
2013-01-31 18:11:13 +01:00
Marius Kintel
e06d820909 Also skip .files and _files with long filenames 2013-01-31 12:07:42 -05:00
Bas Spaans
01541ee64c Extended comment explaining M42 usage 2013-01-31 18:00:25 +01:00
Marius Kintel
f24f02e212 compile fix: quickStop() needs stepper.h 2013-01-31 10:43:03 -05:00
Bas Spaans
12c41423ad Fixed typo in comment 2013-01-30 22:54:04 +01:00
Bas Spaans
0995eaa492 Chenged LED_PIN for Melzi boards, added comment about broken versions of the Sanguino libraries 2013-01-30 22:25:01 +01:00
Bernhard
1d06b10962 Added a feature to have filament change by gcode or display trigger.
[default off for now]
syntax: M600  X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]

if enabled, after a M600, the printer will retract by E, lift by Z, move to XY, retract even more filament.
Oh, and it will display "remove filament" and beep like crazy.

You are then supposed to insert a new filament (other color, e.g.) and click the display to continue.
After having the nozzle cleaned manually, aided by the disabled e-steppers.
After clicking, the printer will then go back the whole shebang, and continue printing with a fancy new color.
2013-01-27 13:21:34 +01:00
daid303
408b349a84 Fixed #368. Commented out the wrong pin definition, but explained why it is there. 2013-01-21 15:46:17 +01:00
daid
236bb2c110 Merge pull request #365 from DanieleSdei/Marlin_v1
Marlin v1, italian MSG_RESUMING and RepRapPro thermistor tables.
2013-01-14 08:29:55 -08:00
Daniele Sdei
9ecb267b63 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1 2013-01-14 15:47:40 +01:00
Daniele Sdei
3cf59f6f9a add RepRapPro Huxley thermistor tables 2013-01-14 15:36:08 +01:00
daid
c1730e2b08 Merge pull request #363 from yuroller/sanguino_panelolu
Panelolu pin assignment for sanguinololu
2013-01-10 07:19:37 -08:00
Yuri Valentini
86358dd6cd Panelolu pin assignment for sanguinololu from http://reprap.org/wiki/Panelolu 2013-01-10 12:23:20 +01:00
daid303
0f3f5d083d Minor cleanup of the new FAN_KICKSTART code. #334 2013-01-10 11:08:45 +01:00
daid
6ec56fa923 Merge pull request #334 from KevinOConnor/FanKick
Add feature to briefly run the cooling fan at full speed when it first starts.
2013-01-09 02:47:59 -08:00
daid
965baf2683 Merge pull request #362 from daid/Marlin_v1
Finnish language
2013-01-09 02:42:09 -08:00
daid
4fde836d83 Merge pull request #8 from randomev/Marlin_v1
+ Finnish translation
2013-01-09 02:39:43 -08:00
Kevin O'Connor
3d91bd486c Add "kick fan" feature - briefly run fan at full speed on start.
Add a feature to run the cooling fan at full speed for a small period
(default 100ms) when first starting the fan.  Some fans wont reliably
start spinning at low power, and many fans have issue with the PWM at
low power.  However, once the fan starts spinning it can reliably be
set to a wide range of PWM values.
2013-01-08 18:50:15 -05:00
Kevin O'Connor
3f2f94ef28 Be consistent in setting of the fan PWM.
Always set the FAN PWM value in check_axes_activity() and always use
the value of the active move if a move is active.
2013-01-08 18:49:18 -05:00
Henry Palonen
7f30039d2a + Finnish translation 2013-01-08 19:21:34 +02:00
daid303
14e1d495ef Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2013-01-08 17:10:30 +01:00
daid303
bbe7d3d0fe Fixed #312 2013-01-08 17:09:57 +01:00
daid
7ce509b9a7 Merge pull request #361 from yuroller/MakefileSanguino
Makefile sanguino
2013-01-08 06:22:27 -08:00
Yuri Valentini
9c34c4f05b fixes for ramps compilation using installed arduino ide 2013-01-08 12:54:31 +01:00
daid303
442ade15a6 Move Gen6 stuff into a proper location. 2013-01-08 12:31:28 +01:00
daid
5fd4582cc8 Merge pull request #242 from Drakelive/Marlin_v1
Fixes issues # 216 and # 135 for Gen6 and Gen6 Deluxe board
2013-01-08 03:29:20 -08:00
daid303
8b88e3b386 Fixed #345, Fixed #267. 2013-01-08 12:14:55 +01:00
daid
27843388c6 Merge pull request #360 from njprossi/Marlin_v1
Power signal control definitions for other power supplies
2013-01-08 02:58:02 -08:00
daid303
bfa5bb86e4 Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2013-01-08 11:54:13 +01:00
daid303
921273baa0 Added optional feature to stop printing when an endstop is hit. Made the Z display on the LCD in 3.2 format instead of 3.1. Added LCD message when and endstop is hit. 2013-01-08 11:53:18 +01:00
Yuri Valentini
7d20ec706e Added libraries from Arduino 1.0.3 for sanguino build 2013-01-07 17:26:50 +01:00
Nicolas Rossi
437eb3bafc Initialize PS_ON at startup 2013-01-07 14:57:51 +01:00
Nicolas Rossi
f3c1fc70a9 Power signal control definitions for ATX and others 2013-01-07 14:33:30 +01:00
Yuri Valentini
dad7691df9 makefile for sanguino standalone compilation 2013-01-07 11:08:10 +01:00
Erik vd Zalm
6752cb2d9c PID now per extruder. Fixed typo 2013-01-06 14:26:23 +01:00
Erik vd Zalm
0ac452e252 Disable is now multi extruder compatible. M84 got a T option. 2013-01-06 13:37:01 +01:00
daid
3a1cd30ce1 Merge pull request #358 from yuroller/sanguino_spi
Definitions for Sanguino SPI
2013-01-04 11:53:10 -08:00
Yuri Valentini
69582042d7 Definitions for Sanguino SPI 2013-01-04 18:32:08 +01:00
Johann Rocholl
9e7b5056a0 {X,Y,Z}_{MIN,MAX}_POS are actually in Gcode coordinates. 2012-12-28 16:20:10 -08:00
Daniele Sdei
5f82f03ff3 Add italian MSG_RESUMING. 2012-12-28 11:44:35 +01:00
daid303
5e3873c8db Add german MSG_RESUMING. 2012-12-25 20:53:11 +01:00
daid303
01aac2a142 Small changes on the LCD panel, let the speed control work better, line up the parameter edit the same as the menu, remove some unused defines, and remove the Z from the 10mm move menu. 2012-12-21 16:14:47 +01:00
daid303
b69cb9fbd9 Change the end of SD cart print message from minutes/seconds to hours/minutes. 2012-12-19 12:26:40 +01:00
daid
30254e3388 Merge pull request #350 from jcrocholl/Marlin_v1
Automatically set *_MIN_PIN and *_MAX_PIN according to *_HOME_DIR.
2012-12-17 02:16:31 -08:00
daid303
38ee395ac7 Replace the 1ms delay for 2 nops to get a 100ns delay. #259 2012-12-17 11:12:11 +01:00
daid303
5df5e4c4a2 Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-12-17 11:09:18 +01:00
daid303
a95dcd74e7 Fix some of the duplicated PSTRs, saving 500bytes of flash with LCD on. 2012-12-17 11:09:09 +01:00
daid
ab318beaaf Merge pull request #348 from oni303/Marlin_v1
fixed  (#328) pwm generation at pin D12 and D13
2012-12-17 02:08:28 -08:00
Johann Rocholl
8caf5d252d Remove bogus blank line. 2012-12-16 12:50:20 -08:00
Johann Rocholl
1c2ecddae4 Fix typo (# missing before define). 2012-12-16 12:33:44 -08:00
Johann Rocholl
6dfb8a2187 Fix home_all_axis to make QUICK_HOME work with Repetier-Host which sends G28 X0 Y0 Z0 instead of G28. Thanks to Matt Schoenholz for reporting this issue. 2012-12-16 12:30:33 -08:00
Johann Rocholl
3b2e5027e5 Merged updates from Marlin_v1. 2012-12-16 12:19:24 -08:00
Johann Rocholl
b39f5d614a For boards with only one endstop per axis, automatically set *_MIN_PIN and *_MAX_PIN according to *_HOME_DIR. 2012-12-16 12:09:53 -08:00
oni303
ab09fa4bbf fixed pwm generation at pin D12 and D13 when one of them is used as FAN_PIN on Sanguino, added soft pwm entry for FAN_PIN in temperature.cpp 2012-12-16 01:36:57 +01:00
daid
83ea7dc5b9 Merge pull request #342 from setar/Marlin_v1
Fix the russian translation.
2012-12-14 05:04:41 -08:00
Sergey Taranenko
5697451c72 fix lcd class 2012-12-14 15:39:47 +04:00
Sergey Taranenko
58e806f3fa Fix the russial translation. 2012-12-14 15:39:26 +04:00
Sergey Taranenko
50a5ce1dc4 deduplicate messages 2012-12-14 15:37:05 +04:00
daid303
6123a00e64 Fix the german translation. 2012-12-14 11:11:02 +01:00
daid303
7c21716886 Fixed #341 2012-12-14 10:53:11 +01:00
daid303
ae1bc83350 Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-12-13 13:25:22 +01:00
daid303
596a7e1904 Fix compiling for Arduin < 1.0.0 2012-12-13 13:24:55 +01:00
Daid
b264317fa0 Reverted the patch by KevinOConnor, as it crashes some versions of avr-gcc and caused linking issues. 2012-12-13 12:19:12 +01:00
Daid
673577a31b Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-12-13 11:41:34 +01:00
Daid
23022f1a82 Updates to Makefile to compile for Teensy. 2012-12-13 11:41:27 +01:00
daid
96e9db8919 Merge pull request #339 from KevinOConnor/CompilerFlags
Add additional optimization flags to Makefile
2012-12-13 01:30:17 -08:00
daid303
08356361ac Fixing a problem with heated beds not working without PID and BED_LIMIT_SWITCHING 2012-12-13 10:25:29 +01:00
daid303
047d037f8c #ifdef fix for #326 2012-12-13 09:04:41 +01:00
Kevin O'Connor
0908458381 Use gcc "-fwhole-program" optimization.
Use "whole program" and "link time optimization" features of gcc.  The
whole-program optimization enables the compiler to evaluate the entire
firmware for optimization instead of just one code file at a time.
This leads to better overall optimizations.
2012-12-12 23:22:35 -05:00
Kevin O'Connor
16fbb455ef Use linker "--relax" option.
The "relax" option enables the linker to convert certain "call"
instructions to the smaller "rcall" instruction.  This reduces the
size of the resulting binary.
2012-12-12 23:22:31 -05:00
daid303
f30b46b2a8 One more fix for #338, I really should get a heated bed to test with. 2012-12-12 23:06:17 +01:00
daid303
65c3f1ffcd Most likely fixing #338 2012-12-12 21:56:17 +01:00
daid303
7577717b59 Fixed #336 2012-12-12 13:08:26 +01:00
daid303
1a8f54cea1 The big LCD code update. This splits the display and menu implementation. Paving the way for future different displays. It also makes it easier to modify the menu structures while keeping everything consistant. Note that this most likely breaks the translations, which need to be updated. 2012-12-12 11:47:03 +01:00
daid303
6731c094ee Fix compiling with just an 16x2 LCD and no buttons. 2012-12-12 11:32:33 +01:00
daid303
b99a928a80 Fix the M117 (display message on LCD) when used over USB with checksums. 2012-12-12 09:35:32 +01:00
daid303
55ba90ac19 Add PID functional range setting. With high powered heaters the current functional range of 10 degrees causes high overshoots as the PID needs to kick in before the temperature hits 10 degrees below target. 2012-12-12 09:08:37 +01:00
daid303
5ff5cee8ce Fix the sensitive pin definitions, there where analogue numbers in the digital pin list. Also made M42 without a P function on the LED_PIN (which was otherwise a useless pin definition) 2012-12-11 14:53:53 +01:00
daid303
8b58edc70e Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-12-11 13:38:34 +01:00
daid
d0319d45af Merge pull request #335 from jcrocholl/Marlin_v1
Fix endstop pins for Printrboard
2012-12-11 02:59:58 -08:00
Johann Rocholl
ca409e5531 Fix X/Y/Z_MIN_PIN for Printrboard. 2012-12-11 01:59:48 -08:00
Johann Rocholl
1f45cb0a51 Fix typo in MANUAL_HOME_POSITION (plural S missing) and improve comments. 2012-12-11 01:54:40 -08:00
Johann Rocholl
931a0052ea Fix typo in MANUAL_HOME_POSITION (plural S missing) and reduce BLOCK_BUFFER_SIZE because 64 wasn't working for some reason. 2012-12-11 01:22:04 -08:00
daid303
46ec4b648c Added some missing Mxxx comments to M commands. Fixed the unsetting of the timer dividers for the fast PWM fan. 2012-12-11 10:21:44 +01:00
Daid
724f5aa36b Update on makefile for moved Arduino addons. 2012-12-10 12:06:30 +01:00
daid303
6d9dfa96c3 Move the Arduino related stuff out of the Marlin tree, as they are not directly related to Marlin functionality but addons for the Arduino IDE. Also split up the addons for pre 1.0.0 Arduino and post 1.0.0 Arduino. 2012-12-10 12:02:29 +01:00
daid303
3fb07d9b8d Add MINTEMP/MAXTEMP error to LCD, and fix temperature bug with more then 1 extruder. 2012-12-10 10:48:46 +01:00
Johann Rocholl
8e2519e88b Add realtime delta geometry in Marlin_main.cpp. 2012-12-10 01:04:12 -08:00
Johann Rocholl
cec7283b21 Enable QUICK_HOME for deltabot. 2012-12-10 00:43:47 -08:00
Johann Rocholl
2292441f0c Use X/Y/Z_MAX_PIN instead of X/Y/Z_MIN_PIN for top endstops on deltabot. 2012-12-10 00:43:14 -08:00
Johann Rocholl
c430906d3b Deltabot settings and configuration adjustments. 2012-12-10 00:10:56 -08:00
daid303
82c8724b33 Fix compile with PID_DEBUG 2012-12-09 23:50:12 +01:00
daid303
9b160972a1 Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-12-09 23:46:42 +01:00
daid303
e036750bdf Use the disable macros on initialization. Which fixes a bug when there is no pin defined for stepper enabled (motherboard 4) 2012-12-09 23:46:25 +01:00
Daid
fcd9de72ef Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-12-09 23:31:07 +01:00
Daid
32d4373e0f Add printrboard and brainwave to Makefile. 2012-12-09 23:30:55 +01:00
daid
b3ddbcee2a Merge pull request #329 from jcrocholl/Marlin_v1
Add Printrboard and Brainwave to pins.h and fastio.h
2012-12-09 14:29:26 -08:00
Daid
29435dfb4b Proper avr for Sanguino in Makefile. 2012-12-09 23:02:03 +01:00
daid303
52158dffcc Big temperature code update. No longer converts back and forwards between temperature and raw sample value. Reducing complexity, removing code. Also named some variables better. While keeping the safety intact and functionality the same. 2012-12-09 23:00:06 +01:00
Daid
ca7acbe6d9 Allow specification of which arduino hardware subvariant in Makefile. 2012-12-09 19:19:57 +01:00
Johann Rocholl
33247733e0 Teensylu and Printrboard use different analog pins for thermistors. 2012-12-09 02:19:13 -08:00
Johann Rocholl
621c24a10f AT90USB is only defined after pins.h is included. 2012-12-09 01:40:33 -08:00
Johann Rocholl
6cba11f087 Stop redefining MOTHERBOARD and #define AT90USB instead. Also put #ifndef AT90USB around the HardwareSerial_h trick, so now Printrboard / Brainwave support compiles on Arduino 1.0.2 as well. 2012-12-09 01:32:09 -08:00
Johann Rocholl
4d351b4846 Improved formatting and comments for consistency. 2012-12-08 20:15:53 -08:00
Johann Rocholl
a30007caa4 If fastio.h is not messed up then Teensylu and Printrboard are actually using the same pins. 2012-12-08 19:46:42 -08:00
Johann Rocholl
6aa87a7b67 Use the same fastio.h definition for AT90USB1286/7 and AT90USB646/7. 2012-12-08 15:16:38 -08:00
Johann Rocholl
b1c38d4c82 Avoid compiler warnings (redefined MOTHERBOARD) in Arduino 1.0 and greater. 2012-12-08 11:34:18 -08:00
Johann Rocholl
42e21bb06e Add support for Printrboard (from https://github.com/lincomatic/Marlin) and Brainwave (from https://github.com/metrix/Sprinter). 2012-12-08 10:49:01 -08:00
Johann Rocholl
ce4b5bbeaa Add AT90USB646 support from Sprinter to fastio.h. 2012-12-08 10:45:58 -08:00
Daid
f413aa33b3 Small makefile change, posibility to add defines on the commandline, and fix compiling with watchdog enabled when using the Makefile. 2012-12-08 11:49:53 +01:00
daid303
587154c01b Fix the WATCHPERIOD implementation. It did not work correctly in a multi extruder setup, it did not work after 32 seconds after startup (int16 used as millies timestamp). And it did not work if you gave an M104 or M109 when the target was already around the target setpoint. So on average, it did not work at all. The new implementation should be robust in detecting a failure to heat up. 2012-12-06 10:36:07 +01:00
daid303
1f27870d41 Fix compiling the watchdog error message when the manual reset watchdog is used. 2012-12-06 10:27:50 +01:00
daid303
c5d4225804 Mistake there, not sure why I did that. My bad. 2012-12-05 20:23:13 +01:00
daid303
529748894c Minor changes in the temperature code for some cleanup. 2012-12-05 19:54:01 +01:00
daid303
4e26ecc940 The Partial release message (which does not really tell you anything) overwrites the final print time on the LCD, which is a real shame. So I removed the message. 2012-12-05 19:32:26 +01:00
daid303
c421774422 The Partial release message (which does not really tell you anything) overwrites the final print time on the LCD, which is a real shame. So I removed the message. 2012-12-05 19:32:02 +01:00
daid303
16078e47d4 Fixed #325 2012-12-04 16:27:21 +01:00
daid303
6a9bee27cc Changed the naming of some LCD functions, so the names match better what the function does. Also moved around some prototypes for general cleanup. 2012-12-03 12:52:00 +01:00
daid303
94ea26ff46 Some minor changes on code style. And a bugfix where the counters for positioning in the stepper where wrong depending on compiler settings. (Caused strange values to reported back with M114 and endstop triggers). Also fixed compiling with FWRETRACT enabled. 2012-12-03 12:13:20 +01:00
daid303
6c51fe5039 Fix the bug where the SD percentage calculation is wrong when the file is larger then 42MB 2012-12-03 11:35:36 +01:00
daid
34b2de4cd8 Merge pull request #320 from brupje/patch-1
Fix for keypad
2012-12-01 01:02:32 -08:00
brupje
57429cb9fe Fix for keypad 2012-11-29 21:42:19 +01:00
daid303
97fa2a9c30 Few simple fixes that save RAM, as static strings are stored in RAM by default. 2012-11-28 10:30:34 +01:00
Daid
c94ca24adc Fixed #317 2012-11-24 17:32:30 +01:00
Daid
99e9554edd Some fixes in the Makefile to support Arduino 1.0.0 or higher and added the Rambo. Still needs some more work for the different arduino hardware variants. 2012-11-24 11:46:31 +01:00
Erik vd Zalm
dbbf050005 More rambo fixes 2012-11-21 20:53:56 +01:00
Erik vd Zalm
f934d0ef5b Merge remote-tracking branch 'tonokip/Marlin_v1' into Marlin_v1
Conflicts:
	Marlin/Configuration.h
2012-11-21 20:36:30 +01:00
Erik vd Zalm
e48dfcc2b3 Tmp copy before merge 2012-11-21 20:29:31 +01:00
Erik vd Zalm
b98fb17fe9 Small FREQUENCY_LIMIT changes 2012-11-21 20:17:44 +01:00
daid
bce67ec2c9 Merge pull request #312 from gege2b/Marlin_v1
Added french translation
2012-11-18 13:43:07 -08:00
Gege
9b1d2483a0 I hope last changes to french translation 2012-11-18 22:34:56 +01:00
Gege
b1adc567da Correction to french translation (non-ASCII chars only) 2012-11-18 20:00:41 +01:00
Gege
0807d82af0 Correction to french translation (plain text only) 2012-11-18 19:39:56 +01:00
Erik vd Zalm
5cd7a90b32 Added new temperature lookup table creation tool. This one uses stein hart-hart equations.
You need 3 temperature resistance:combinations. This gives a better result then using beta.
2012-11-16 23:51:05 +01:00
gege2b
bb119739b0 Added french translation 2012-11-16 18:38:50 +01:00
daid
df8dd5ac21 Merge pull request #306 from nothinman/Marlin_v1
Added automatic build numbering.
2012-11-14 01:59:33 -08:00
daid
b7c8e5bbcf Merge pull request #308 from MStohn/Marlin_v1
FIX: Allow marlin internal 0°C represenation
2012-11-13 05:53:58 -08:00
MaikStohn
2b7b1e52b1 allow marlin internal 0°C represenation 2012-11-13 14:37:08 +01:00
Martin Lukasik
2f771b3979 Added automatic build numbering. 2012-11-12 21:06:59 +00:00
daid
9bebe9b631 Merge pull request #302 from nothinman/Marlin_v1
Added Polish translation. Cosmetic changes to English.
2012-11-12 12:13:30 -08:00
daid303
a2032afa3a Fixed #303 2012-11-12 21:04:07 +01:00
Martin Lukasik
6a55ca8370 Added Polish translation. Cosmetic changes to English. 2012-11-12 15:54:07 +00:00
daid303
8f20562f49 Fix some of the crowded code style. And fixed the conditional. #300 2012-11-12 15:49:40 +01:00
daid303
43018a48c4 Fix for a few -Wextra warnings. 2012-11-12 15:35:28 +01:00
daid303
72586eb30a Solved few warnings. 2012-11-12 09:29:12 +01:00
daid303
7a02ba361c Header multiple include protection should match the filename, not just _ARDUINO_H, which is almost bound to go wrong some day. 2012-11-12 09:24:28 +01:00
daid303
f4a89ec776 SDCARDINSERTED is always defined, and thus we do not need the #ifdefs. 2012-11-12 09:16:27 +01:00
daid303
57834776ad Made the 2nd speed lookup table condition more explicit. 2012-11-11 12:02:48 +01:00
Daid
caa2b25b40 Fix Gen7 compile if you have avr-libc version 1.7.1 or higher. See http://code.google.com/p/arduino/issues/detail?id=604 2012-11-11 11:17:54 +01:00
daid303
a27fef8750 Store the pre-heat constants outside of the ULTIPANEL define, so we can use them when storing EEPROM in a build without the ULTIPANEL. 2012-11-11 11:06:58 +01:00
daid303
789be03b4f Update on makefile, should make it easier to compile for different boards without changing the makefile. (Still missing Arduino 1.x.x support). 2012-11-11 11:05:52 +01:00
daid303
40ce057a3e Fixing issue #297 2012-11-10 14:37:01 +01:00
daid303
625ac81acc Yes, makes sense, lets NOT use the value directly from the configuration define but modify it before setting it. This will not confuse people (including me) at all! 2012-11-09 22:36:31 +01:00
daid303
ffc69537aa Update on some comments, make the MOTHERBOARD list complete again. 2012-11-09 09:10:51 +01:00
daid303
71efcfc648 Most likely fixing issue #295. 2012-11-08 21:08:05 +01:00
daid303
04be9d6001 God damn. Sorry, my mistake, forgot to add this file. 2012-11-07 23:16:43 +01:00
daid303
c17da4b707 Add ConfigurationStore to the Makefile. 2012-11-07 22:43:01 +01:00
daid
ccd9fd0dc3 Merge pull request #292 from jothan/lcdfix
Lcd fixes
2012-11-07 13:10:59 -08:00
Jonathan Bastien-Filiatrault
46b9988e26 Search and replace failure. 2012-11-07 16:09:30 -05:00
Jonathan Bastien-Filiatrault
0f73afb0b0 Avoid defining overriding definitions for the RepRapDiscount Smart
Controller. Remove common definitions. Harmonize declaration order.
2012-11-07 16:04:28 -05:00
Jonathan Bastien-Filiatrault
36b452c7ac Remove abbrs. 2012-11-07 15:42:18 -05:00
daid
a394ac9f95 Merge pull request #294 from YanFM/patch-1
Update Marlin/language.h
2012-11-07 06:21:28 -08:00
YanFM
332344bd43 Update Marlin/language.h
Included Portuguese language
2012-11-07 09:43:13 -02:00
daid303
e6c1cadea0 Set the watchdog to a 4 second timeout, as with 1 second it can timeout during SD card init. 2012-11-07 12:32:17 +01:00
daid
faea7d72b8 Merge pull request #290 from buildrob/Marlin_v1
Clean up special serial port cases
2012-11-07 02:00:26 -08:00
daid303
12a4d60e18 Fix the EEPROM storage, no longer inline it at multiple locations, and remove the template. 2012-11-07 10:02:45 +01:00
Robert F-C
08337e01f7 Added change to feature list. 2012-11-07 17:28:46 +11:00
Jonathan Bastien-Filiatrault
9606f4d04f Include Marlin_main.cpp in source files. 2012-11-06 20:32:48 -05:00
Jonathan Bastien-Filiatrault
3cbaad9288 RepRapDiscount Smart Controller pin definitions. 2012-11-06 20:32:13 -05:00
Robert F-C
99692dc99e Clean up special serial port cases
Assume SERIAL_PORT 0 if not defined. Collapse un-numbered register
special case. Clarify comments.
2012-11-07 09:00:21 +11:00
daid303
5a998558a9 Update suggested by Robert F-C. #289 2012-11-06 21:04:29 +01:00
daid303
f6ff0ab767 signed/unsigned fixes. 2012-11-06 15:33:49 +01:00
daid303
5d471e0f34 Also reset the PID values to defaults. Fixes #281 2012-11-06 15:21:00 +01:00
daid303
d3ebc34958 Hopefully also support chips with a single UART in MarlinSerial now. 2012-11-06 14:43:36 +01:00
daid303
b6ff45254e Better explain the watchdog "problem" and rename the config define so it explains that the feature belongs to the watchdog. 2012-11-06 13:33:00 +01:00
daid303
7e348fcb5f By mistake enabled the watchdog by default. This should be off by default. 2012-11-06 13:20:08 +01:00
daid303
06b58a9c4f First cleanup. Moved all code to cpp files, so there are no dependencies on pde files. And no more odd requirement to cat files together. (Still need to fix the Makefile). Also cleaned up some defines and made defines upper case as by C coding conventions. 2012-11-06 12:06:41 +01:00
daid
539f3b3fe4 Merge pull request #284 from brackendawson/Marlin_v1
Use the right pins for Gen7 1.4
2012-11-06 01:06:24 -08:00
daid
2f20df3f55 Merge pull request #289 from buildrob/Marlin_v1
Marlin v1 configurable serial port
2012-11-06 01:00:50 -08:00
Robert F-C
65c9a0728f Set default serial port back to 0. 2012-11-05 22:15:07 +11:00
Robert F-C
ab9d183024 Make serial port configurable.
This change makes the choice of serial port configurable so that
wireless capability can be easily added by connecting Bluetooth modules
(such as BlueSmirf or JY-MCU) to the expansion port pins.
2012-11-05 21:34:27 +11:00
Bracken Dawson
f5631a89e8 Add dummy Emergancy Pin to Gen7 1.4
Change required after pulling from ErikZalm.
2012-10-26 22:28:37 +01:00
Bracken Dawson
a4f9e1ebf2 Merge git://github.com/ErikZalm/Marlin into Marlin_v1 2012-10-26 22:20:35 +01:00
Bracken Dawson
2873d67b17 Put bogus temp override back in Gen7 up to 1.3
Took out the ifdef when I split 1.4 out and forgot to permanently
define it for <=1.3.
2012-10-26 22:17:26 +01:00
ErikZalm
a7e40b2903 Merge pull request #276 from setar/Marlin_v1
Fix num of digits on LCD for E and Z axis.
2012-10-23 09:48:55 -07:00
ErikZalm
23b0f8ed4b Merge pull request #279 from MaikStohn/Marlin_v1
Fixed wrong code (will not even compile when EXTRUDERS>2)
2012-10-23 09:48:02 -07:00
MaikStohn
6ed02c86be Fixed wrong code (will not even compile when EXTRUDERS>2) 2012-10-23 18:08:43 +02:00
Sergey Taranenko
2a67363e27 Fix ‘prog_uchar’ definition in LiquidCrystalRus.cpp 2012-10-22 11:05:17 +04:00
Sergey Taranenko
205304ddee Merge git://github.com/ErikZalm/Marlin into Marlin_v1 2012-10-22 10:59:27 +04:00
Erik vd Zalm
58bca87c72 fix LCD temp bed artifacts on power up ' B022/0.) -> B022/000 ' 2012-10-21 14:40:06 +02:00
Erik vd Zalm
febeb43197 Revert "fix LCD temp bed artifacts on power up ' B022/0.) -> B022/000 '"
This reverts commit cb02c2f9d8.
2012-10-21 14:36:31 +02:00
Sergey Taranenko
8178dec4c3 Fix num of digits on LCD for E and Z axis.
The number of steps per mm often contains 4 digits before the decimal point and does not require precision greater than 0.1
2012-10-18 17:45:40 +04:00
ErikZalm
70f57a6844 Merge pull request #273 from setar/Marlin_v1
fix LCD temp bed artifacts on power up ' B022/0.) -> B022/000 '
2012-10-17 04:10:18 -07:00
ErikZalm
ff14199e58 Merge pull request #270 from jothan/Marlin_v1
Create an explicit rule for building applet/Marlin.cpp.
2012-10-17 04:09:36 -07:00
ErikZalm
bfdf0932c1 Merge pull request #274 from DanieleSdei/Marlin_v1
Italian language support
2012-10-17 04:09:13 -07:00
Daniele Sdei
695938ba3f Italian language support 2012-10-17 12:48:26 +02:00
Sergey Taranenko
cb02c2f9d8 fix LCD temp bed artifacts on power up ' B022/0.) -> B022/000 ' 2012-10-17 10:49:05 +04:00
Jonathan Bastien-Filiatrault
e4a5e333ef Generalize. 2012-10-15 21:34:33 -04:00
Jonathan Bastien-Filiatrault
e10d3136c8 Create an explicit rule for building applet/Marlin.cpp.
It would seem that the pattern matches do not work when the source
file is created when make is running. The result of this is that it is
necessary to run "make" twice to build the firmware.

This adds an explicit rule without a pattern match for building
applet/Marlin.cpp it corrects the make behaviour at the cost of adding
a little redundancy in the Makefile.
2012-10-15 21:16:25 -04:00
ErikZalm
9f089756b7 Merge pull request #265 from setar/Marlin_v1
Added Russian translation
2012-10-14 14:11:58 -07:00
ErikZalm
654387297f Merge pull request #268 from brupje/Marlin_v1
Marlin v1
2012-10-14 08:55:01 -07:00
brupje
326423719f Add support for Megatronics 2012-10-14 14:05:57 +03:00
brupje
d07b6e93d5 Add support for Megatronics 2012-10-14 14:05:12 +03:00
Sergey Taranenko
efcc28d347 Fix check for include LiquidCrystalRus.h 2012-10-13 00:29:34 +04:00
Sergey Taranenko
cfc193cdac Enables support the Cyrillic alphabet for LCD 2012-10-12 19:06:43 +04:00
Sergey Taranenko
24bcc9647d Added Russian translation 2012-10-12 18:33:05 +04:00
ErikZalm
bc27d809fb Merge pull request #262 from markfinn/bedpid-clean3
Remove unwanted artifacts in merge of bed-pid tree
2012-10-09 13:18:58 -07:00
Mark Finn
bf7e453d02 Unwanted artifacts from unclean merge of bed-pid tree 2012-10-09 14:47:35 -05:00
ErikZalm
36a746d7d5 Merge pull request #244 from markfinn/pidbed
PID for heated bed
2012-10-08 11:15:16 -07:00
tonokip
ca811156a0 Merge pull request #1 from johnnyr/patch-1
fix max endstop pins
2012-10-01 23:55:08 -07:00
ErikZalm
50daf27e5a Merge pull request #255 from elgambitero/Marlin_v1
Spanish language updated
2012-09-26 10:29:03 -07:00
elgambitero
df09e2adce Spanish updated 2012-09-26 19:14:07 +02:00
elgambitero
ddf6603d81 Spanish language updated. Bug fixes on dialogs. 2012-09-26 19:11:45 +02:00
elgambitero
4bf8b1aeee fesfas 2012-09-26 19:05:31 +02:00
drakelive
be1e099f1b Union whit Erick version 2012-09-25 19:17:15 +02:00
elgambitero
7afd202b89 New dialogs translated to spanish. Bug fixes.
Dialogs from M119 translated, and "Set Preheat" dialogs adapted to the
screen size.
2012-09-25 19:16:57 +02:00
elgambitero
ebc4601185 Some new dialogs translated to Spanish 2012-09-25 19:08:44 +02:00
drakelive
c8ea9b0e58 Merge branch 'Marlin_v1' of https://github.com/Drakelive/Marlin 2012-09-25 18:51:20 +02:00
drakelive
ca7ca4572e primo commit 2012-09-25 18:46:38 +02:00
ErikZalm
c0aad4c28a Merge pull request #254 from ZetaPhoenix/Marlin_v1_bugfix
Changes to M119 response for easier visual comparison
2012-09-25 00:10:38 -07:00
johnnyr
8016f058bc fix max endstop pins 2012-09-19 13:15:17 -05:00
Mark Finn
d197f8504b clean up and changes from testing 2012-09-17 19:18:50 -05:00
Mark Finn
eb06a886c4 missed 2012-09-17 14:23:49 -05:00
Mark Finn
04631d2250 cleanup for pull 2012-09-17 14:17:24 -05:00
Mark Finn
0a5ad3ab85 move comment to correct place 2012-09-17 08:42:35 -05:00
ZetaPhoenix
8ac5b29e02 Changes to M119 response for easier visual comparison
Changed to report on individual lines with "TRIGGERED" or "open" instead of "H" or "L" on one line as H&L could be confused with logic levels High and Low which may be wrong if using inverted logic.  Added strings to language.h.

Fixed typo "deu" in English language that was fixed in #134 but got added back in via 9f7f7354f5
2012-09-16 14:51:24 -07:00
ErikZalm
0a31ccb1d1 Merge pull request #251 from ZetaPhoenix/Marlin_v1_bugfix
Limit Switch locations based on MIN/MAX limits and homing direction
2012-09-16 01:47:51 -07:00
ZetaPhoenix
c6caa45ae2 Limit Switch locations based on MIN/MAX limits and homing direction
fixes #246
Added statements to set the limit switch positions to the maximum travel if homing in the positive direction as well as bed center at (0,0) if defined.
Relocated code based on feedback.
2012-09-15 15:25:49 -07:00
ZetaPhoenix
dc566d654f fixes #246
Added statements to set the limit switch positions to the maximum travel if homing in the positive direction as well as bed center at (0,0) if defined.
2012-09-14 21:48:49 -07:00
ErikZalm
ba898faa7d Merge pull request #249 from gwelchc/patch-2
Slight modification for byte savings
2012-09-14 12:13:36 -07:00
ErikZalm
0152ee71a5 Merge pull request #248 from gwelchc/patch-1
Binary representation for characters in ultraldc.pde
2012-09-14 12:10:28 -07:00
ErikZalm
348d543425 Merge pull request #245 from andrey-vasilyev/patch-1
Fix M81 not working reliably on Gen7
2012-09-14 12:04:57 -07:00
G. W. C.
6ccbfeb80c Update Marlin/Marlin.pde
Added function 'setTargetedHotend' that turns into a function an operation repeated 3 times through the M-codes processing.

This modification saves a few bytes that can be used to add support for new commands.
2012-09-14 16:38:54 +03:00
G. W. C.
c433142abf Update Marlin/ultralcd.pde
The joris' char drawins are expressed in binary so to show their content's in a more visual fashion.

This is not a code modification as much as a readibility modification.
2012-09-14 16:29:43 +03:00
andrey-vasilyev
1d389ad3a8 Fix M81 not working reliably on Gen7
Some discussion of the issue is here http://forums.reprap.org/read.php?181,118329,page=1
2012-09-13 19:23:48 +04:00
Mark Finn
5bfccab650 readme 2012-09-12 21:52:16 -05:00
Mark Finn
9698f4ea64 bed pid
Conflicts:

	Marlin/Configuration.h
2012-09-12 21:18:59 -05:00
ErikZalm
769796ed4c Merge pull request #240 from ZetaPhoenix/Marlin_v1_bugfix
Missing #else in temperature.cpp prevented reading bed temp when TEMP_BE...
2012-09-11 02:10:39 -07:00
drakelive
e5c39b7c2a commit 2012-09-10 14:25:49 +02:00
ZetaPhoenix
e8c92e0a95 Missing #else in temperature.cpp prevented reading bed temp when TEMP_BED_PIN <7. Thanks to Leland Wallace for helping me track this down via "Sesame Street" coding (what is not like the other) 2012-09-09 16:06:02 -07:00
drake
bf2071871c Merge branch 'Marlin_v1' of https://github.com/Drakelive/Marlin 2012-09-08 23:08:34 +02:00
drake
fc32e20881 first commit 2012-09-08 22:26:23 +02:00
Erik vd Zalm
abf0693e8e Added KILL_PIN -1 to gen7 boards 2012-09-04 08:20:27 +02:00
Erik vd Zalm
47319cf64e Fixed typo in SF arc fix code. 2012-09-03 21:28:31 +02:00
Erik vd Zalm
e358a2d7af Added fix for SF Arc Point fillet procedure 2012-09-02 01:12:49 +02:00
ErikZalm
044a64a1fb Merge pull request #225 from Justblair/Marlin_v1
Added PDF file containing Menu Tree for documentation purposes.
2012-09-01 04:41:49 -07:00
ErikZalm
cd91e0e3e1 Merge pull request #228 from Drakelive/patch-1
Update Marlin/pins.h
2012-08-30 13:39:37 -07:00
Drakelive
d728e35658 Update Marlin/pins.h 2012-08-30 23:36:49 +03:00
tonokip
1c1fddc7ac Added support for the Rambo reprap electronics board. Added Mcodes to set
motor current and microstepping pins.
2012-08-30 00:16:57 -07:00
Blair Thompson
dcd3e8a211 Tidy up 2012-08-29 22:53:41 +01:00
Blair Thompson
ddd9d0cfd4 Added PDF file containing Menu Tree for documentation purposes. Source xlsx document included. 2012-08-29 21:08:41 +01:00
Erik vd Zalm
0e58ef6805 Some dialogs are corrected 2012-08-29 21:15:59 +02:00
Erik vd Zalm
0e89022cc3 Correct temptable_55 name. 2012-08-28 19:47:22 +02:00
Bracken Dawson
47d4f55bc0 Fix Gen7 1.4 pinout
Gen7 1.4 uses very different pin assignments, might as well make a new
section and remove some of the conditionals from each. It's easier to change
your pin assingment this way if like me you don't wire it exactly to plan.
2012-08-22 23:15:46 +01:00
elgambitero
6cd150842f Update Marlin/language.h
Some dialogs corrected and Default language set to 1
2012-08-22 21:46:22 +03:00
elgambitero
299c18596f Update Marlin/language.h
Some dialogs are corrected
2012-08-22 21:44:57 +03:00
ErikZalm
b86336c3f5 Merge pull request #221 from daid/Marlin_v1
Long filename support for LCD display
2012-08-22 06:30:35 -07:00
daid
b69e75c89a Added long filename support. 2012-08-22 14:49:57 +02:00
ErikZalm
825adbd67b Merge pull request #220 from MaikStohn/1d224cc031
Implemented support for KILL_PIN / Fixed compilation errors for incomplete/bad translations
2012-08-22 04:33:28 -07:00
stohn
1d224cc031 merged with upstream and FIXED AGAIN bad translation commit
PLEASE BE MORE CAREFUL WHEN SUBMITTING NEW TRANSLATIONS

When you add new menu items / messages always copy them to ALL
languages (just use english)
2012-08-22 13:05:42 +02:00
stohn
06c03fe2f0 new method for message for making KILLED message visible
The cli(); at the start of the kill() function also stops the internal
arduino timer which stops updating of millis() which prevents the
display of the "KILLED." message.
The new function updates the display directly without checking any
timers.
2012-08-22 12:44:41 +02:00
daid
87ff61a8a6 Fix for #201 2012-08-22 10:54:55 +02:00
ErikZalm
8c94ad0d26 Merge pull request #219 from Justblair/Marlin_v1
Added new function to the LCD menu.  Preheat settings now adjustable and can be stored
2012-08-21 23:21:11 -07:00
Blair Thompson
aacbebbebe Added Menu Options to the Main-> Control->Temperature Submenu that allow the user to set new values for the ABS and PLA preheat function. EEPROM updated so that these settings can also be committed to EEPROM memory. 2012-08-21 23:46:10 +01:00
stohn
31873ec707 changed int to long to overcome overflow of number display
- related bug reports: Issue #201, Issue #213
2012-08-21 16:47:39 +02:00
stohn
de0448343f added KILL_PIN support / cleaned up manage_inactivity function definition 2012-08-21 14:48:29 +02:00
stohn
69961dbba3 fixed incorrect menu messages from last commit...
- removed several multiple definitions of same message
- fixed definition of missing messages in german and spanish
- tweaked german translation (a lot)
- added note about changing and testing this file
2012-08-21 14:44:20 +02:00
ErikZalm
f67feea093 Merge pull request #217 from Justblair/Marlin_v1
Fixed broken Language file and pre-heat ABS and PLA options
2012-08-20 14:34:32 -07:00
Blair Thompson
6c050b8440 Fixes error introduced at commit aee475aa55 which caused the sketch not to comile for language option 1. Several defines were removed but still referenced in ultralcd.pde 2012-08-20 21:54:47 +01:00
Blair Thompson
b9f9f8f7d3 The pre-heat ABS and PLA options in the LCD Menu were broken a while back. The pre-heat worked fine, but the cooling fans were not switching on as intended. This is now fixed. 2012-08-20 21:49:37 +01:00
elgambitero
d38b96fff1 Update Marlin/language.h 2012-08-12 22:45:11 +03:00
Erik vd Zalm
9f7f7354f5 Set default language 1 2012-08-12 21:29:42 +02:00
ErikZalm
d3b8edb6a2 Merge pull request #212 from elgambitero/Marlin_v1
Spanish language included in the language.h file
2012-08-12 12:27:06 -07:00
elgambitero
aee475aa55 Update Marlin/language.h
Spanish language included. It features the LCD screen messages and a small part of the Serial messages.
2012-08-12 21:26:17 +03:00
Erik vd Zalm
9083966c22 Do not use feedrate multiiply on Z and E only moves. 2012-08-12 18:13:34 +02:00
Erik vd Zalm
5406c533db Disable FAST_PWM by default. On some systems it does not work ok. 2012-08-11 15:51:04 +02:00
Erik vd Zalm
f92dc91c3d Enable M503 also when eeprom is disabled 2012-08-11 15:49:40 +02:00
James Adams
35a1dd081f no message 2012-08-11 15:33:35 +02:00
James Adams
5131ab19ca Fixed Retract in LCD Menu 2012-08-11 15:29:40 +02:00
James Adams
96f4f90cb3 Added pause and retract lcd menu items 2012-08-11 15:29:33 +02:00
James Adams
e10355500d Updated Language.h with pause, resume, and retract 2012-08-11 15:29:26 +02:00
ErikZalm
a97c006bbf Merge pull request #195 from kobaan/Marlin_v1
Updated german translations in language.h
2012-08-11 01:45:30 -07:00
ErikZalm
f062794a0d Merge pull request #208 from Enchiridion/Marlin_v1
Added support for dual Z axis stepper drivers
2012-08-11 01:42:49 -07:00
ErikZalm
57468d3c21 Merge pull request #210 from Dabble63/Marlin_v1
Add Duty Cycling to the Heater Bed
2012-08-11 01:42:02 -07:00
ErikZalm
22aae62ccd Merge pull request #209 from ijackson/for-upstream
M206 fixes, and ancillary improvements
2012-08-11 01:40:50 -07:00
Dabble63
6b45e9f167 Add Duty Cycling to the Heater Bed 2012-08-11 09:17:47 +03:00
Ian Jackson
adee81170d M206: save values in eeprom
Really, we should have a way to adjust the XYZ homing of a machine in
the eeprom.  So as the second stage of this, make the M206 home offset
parameters subject to the M500/M501/M502/M503 eeprom commands.

Bump the eeprom version to "V06".

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-11 01:43:00 +01:00
Ian Jackson
1dba212e18 HOMEAXIS: make into a function
Replace the large macro HOMEAXIS with a function.  This avoids the
compiler generating three copies of largely identical code.  The
saving is 724 bytes of program memory.

We make use of XYZ_CONSTS_FROM_CONFIG to provide convenient
array-shaped access to MAX_LENGTH, HOME_RETRACT_MM and HOME_DIR.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-11 01:43:00 +01:00
Ian Jackson
7bb326d389 eeprom: provide smaller code for SERIAL_ECHOPAIR
SERIAL_ECHOPAIR implies, eventually, two calls to MYSERIAL.print.  One
of these has FORCE_INLINE for a per-character loop, and both involve
constructing a method call rather than a simple function call.

Produce better and smaller code by providing three specialised
functions serial_echopair.  This saves 672 bytes of program memory
(with EEPROM_SETTINGS and SDSUPPORT enabled).

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-11 01:42:59 +01:00
Ian Jackson
957e966d2d M206: always use homing ("homeing") offsets
Previously the parameters set in M206 would only be used if a G82
command was sent with specific axis home values.  This limits its
usefulness.

Really, we should have a way to adjust the XYZ homing of a machine in
the eeprom.  So as the first stage of this, make M206 affect every
home command.  The values set using M206 are now added to the
configuration variables [XYZ]_HOME_POS.

This is achieved by replacing all uses of [XYZ]_HOME_POS in the code
by a new home_pos[] which includes the adjustment.  We also have to
adjust the uses of [XYZ]_{MIN,MAX}_POS similarly - see below.


To allow axis_is_at_home to be written as a function taking an axis
index rather than a macro taking an axis letter, we provide
constant arrays in program memory containing the values of
[XYZ]_{MIN,MAX,HOME}_POS from the compiled-in configuration.

This is done with some helper macros to deal with the declaration
(XYZ_CONSTS_FROM_CONFIG) and definition of the inline function which
does the program memory access.

We also introduce the overloaded function read_pgm_any, whose
instances are produced with DEFINE_PGM_READ_ANY, which allows the
access functions to automatically produce the correct type.

The type- and pointer-massaging code in the access function boils
down, when compiled, to a simple program memory access.


A question arises: if the M206 offset is set, should this adjustment
to the home position shift or change the possible range of movement
permitted by the software endstops ?

The documentation in Configuration.h describes these limits as:
    // Travel limits after homing
Since this is a file containing physical limits, and actual suggested
values for these configuration parameters appear to include a certain
amount of slop, I've taken the view that these should be regarded as
nominal physical distances from the limit switches, and that the
permissible travel should be unaffected by M206.

So for example with the (rather unrealistic)
  #define X_HOME_DIR -1
  #define X_MIN_POS -20
  #define X_HOME_POS 0
  #define X_MAX_POS 100
no matter the setting of M206 X, the machine would be permitted
to move from 20mm "beyond" the limit switch trigger point in
the negative X direction and 100mm away from the limit switch in
the positive X direction, for a total travel of 120mm.

With M206 X-10 that would be considered to correspond to X coordinates
-30 to +90.  With M206 X+10 that would be considered to correspond to
X coordinates -10 to +110.


fixes #200 (in ErikZalm/Marlin).

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-11 01:35:03 +01:00
Ian Jackson
faccb35850 software_endstops: use *_MIN_POS and *_MAX_POS for arcs
If [XYZ]_HOME_POS and [XYZ]_MIN_POS aren't 0, these corrections are
wrong.  Use the same logic as in Marlin.pde:prepare_move: ie, clamp to
[XYZ]_{MIN,MAX}_POS.

While we're here, put this cut-and-paste code in a function
clamp_to_software_endstops.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-10 19:36:30 +01:00
Ian Jackson
3f15b7c7b8 Makefile: Better display of size (device memory usage)
Run avr-size with the --mcu=... -C option as well.  That reports how
much actual device program and data memory is used along with a
percentage fullness.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-10 19:36:30 +01:00
Ian Jackson
0c35facc94 Makefile: support V=1
Often it can be useful to see the actual commands being run by make.
Other projects (eg, the Linux kernel) support this with a "V=1" make
parameter.  Do the same here.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-10 19:36:29 +01:00
Ian Jackson
71404eef29 .gitignore: Add *~, *.orig, *.rej, move to root directory
Move the .gitignore out of the Marlin subdirectory so it applies to
the whole tree, and add some missing patterns.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-10 19:36:29 +01:00
Ian Jackson
a873541ef6 Marlin.pde: include comment for emacs mode
Emacs by default doesn't recognise a ".pde" file as C++ source code.
Add the annotation to the top of the file to make it work.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-10 19:36:29 +01:00
Enchiridion
50cde90324 Added support for dual Z axis stepper drivers 2012-08-04 00:32:26 -06:00
kobaan
603a5e25b3 Updated german translations in language.h and eliminated a few double lines. 2012-07-16 14:26:28 +03:00
Chris Palmer
538189cc19 Fixed soft limits when the origin is in the middle.
HOME_POS is now always where the endstop is and can be outside the limits.
The limits are now defined by MIN_POS and MAX_POS rather than HOME_POS and MAX_LENGTH.
The Z is axis now homed first if direction is away from the bed.

Saguinololu limit pins change from MIN to MAX according to the homing direction.
2012-07-14 22:24:26 +02:00
ErikZalm
686011a548 Fixed typo 2012-07-14 17:25:35 +03:00
Erik van der Zalm
cd57bf305b Merge git://github.com/daid/Marlin into Marlin_v1
Added invert step pins to corexy code
2012-07-14 15:07:14 +02:00
Erik van der Zalm
ea2c19f978 Added CoreXY support (Thanks Ilan Moyer) 2012-07-14 14:21:53 +02:00
Erik van der Zalm
aa65fe22ed decoupled axes sucessfully at least on pure x or y jog 2012-07-14 13:43:19 +02:00
daid
12de8fff81 Support step motor controllers with active low step pins. 2012-06-29 16:27:47 +02:00
Erik van der Zalm
b67dacdc8f Fixed AD595 define 2012-06-11 17:33:42 +02:00
Bernhard
d3002ef741 corrected retract 2012-06-03 16:56:40 +02:00
Bernhard
0c123950e9 __ header file replace 2012-06-02 20:44:17 +02:00
Bernhard
bf077125b9 added firmware retract. disabled by default 2012-06-02 20:32:28 +02:00
Bernhard
88d2a671cc readme corrected 2012-06-02 14:14:36 +02:00
Bernhard
0e5e249ab5 added individual pullup setting option to have finer control in case there is a special z-min sensor, for example 2012-06-02 13:47:50 +02:00
Bernhard
e792d62f47 readme 2012-06-02 13:44:38 +02:00
Bernhard Kubicek
6b14f95b3e Merge pull request #170 from linagee/Marlin_v1
Marlin v1
2012-06-02 03:46:56 -07:00
Bernhard Kubicek
c7ce99d495 Merge pull request #172 from daid/Marlin_v1
Add M401 - Wait for user to press button on LCD (with optional timeout) minor fix in M115.
2012-06-02 03:44:03 -07:00
Bernhard Kubicek
b7fc14bc65 repaired thermistortable_6 by graphcial fitting of the off-slope values. see issue 179. Erik, I know you asked for no changes, but this file probably is not related and hopefully allright. 2012-05-30 14:14:36 +03:00
ErikZalm
9e1021efbe Fixed SL bug. 2012-05-28 22:32:53 +03:00
Daid
e9bec9b6fe Fixed E1_ENABLE pin for Ultimaker. This was wrong for the 1.5.4 and 1.5.3 PCB (I cannot check the 1.5.6) 2012-05-24 18:36:55 +02:00
linagee
fbd282b3ba Update Marlin/Configuration.h 2012-05-20 13:19:28 -06:00
linagee
2e8c5049c5 Update Marlin/thermistortables.h 2012-05-20 13:18:45 -06:00
linagee
2d0d8e5272 Small correction. 2012-05-20 11:09:07 -06:00
Daid
4d7fe7115f Changed M401 to M0/M1 as suggested, so they match normal CNC stop commands. 2012-05-20 14:37:30 +02:00
linagee
9e9db65c3f Update Marlin/thermistortables.h 2012-05-20 05:51:29 -06:00
linagee
bd966ef389 Update Marlin/thermistortables.h 2012-05-20 05:49:01 -06:00
linagee
775da3f103 Added top ratings and extended to ADC=1 for table 3 and 5. 2012-05-20 05:35:57 -06:00
linagee
96a4baa0be Update Marlin/thermistortables.h 2012-05-20 04:55:22 -06:00
linagee
2aa9f7b131 Update Marlin/thermistortables.h 2012-05-20 04:35:28 -06:00
linagee
c4490f5f3d Update Marlin/Configuration.h 2012-05-20 04:27:52 -06:00
linagee
dd9144994e Tested May 19 - It works! Verified with separate thermocouple TM-902C also. 2012-05-20 04:13:29 -06:00
linagee
4c37d0d9f1 Extended range above 250C. (Operating range states up to 300C) 2012-05-20 04:01:30 -06:00
Daid
b59724e42b Add strigification for extruder amount in M115 report. 2012-05-19 19:01:14 +02:00
Daid
16413bb8f2 Last M401 update, refresh the LCD during an M401 wait. 2012-05-19 18:53:56 +02:00
Daid
b3941fce5c Update after testing 2012-05-19 18:48:43 +02:00
Daid
d494688565 Do not initialize in the header file. 2012-05-19 17:57:52 +02:00
Daid
516ec90242 Add M401 - Wait for user on LCD button press 2012-05-19 17:54:07 +02:00
Daid
7244aa7eb7 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2012-05-19 17:38:46 +02:00
linagee
de2ca3b2e8 Grammar correction. 2012-05-19 07:40:35 -06:00
linagee
c2fc466e1b Update Marlin/Configuration.h 2012-05-19 05:56:17 -06:00
linagee
241f5a4c0e Update Marlin/thermistortables.h 2012-05-19 05:52:12 -06:00
linagee
9f9f498491 Update Marlin/Configuration.h 2012-05-19 05:47:30 -06:00
Erik van der Zalm
e31bef31ad Limit PID autotune PWM to PID_MAX 2012-05-16 19:32:23 +02:00
ErikZalm
b2a9ccdb97 Merge pull request #159 from MaikStohn/Marlin_v1
Marlin v1 - BUG FIXES / CORRECTIONS
2012-05-16 12:32:35 -07:00
Erik van der Zalm
d459fb41b7 Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-05-16 19:22:08 +02:00
ErikZalm
804e0d6117 Merge pull request #164 from guanix/Marlin_v1
Melzi support
2012-05-16 12:21:48 -07:00
ErikZalm
bb499421e9 Merge pull request #166 from zittix/Marlin_v1
Fixes #153 for bad call to abs()
2012-05-16 12:00:22 -07:00
Erik van der Zalm
ba96059203 add additional dropsegments test 2012-05-16 19:21:44 +02:00
zittix
fbd91ab0b5 Fixes #153 for bad call to abs() 2012-05-16 18:17:34 +02:00
MaikStohn
b51c06e2b3 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2012-05-11 16:57:08 +02:00
MaikStohn
159ae90874 bug fix for scrolling of main menu when using SMALL_DISPLAY (2 lines only) 2012-05-11 15:23:10 +02:00
MaikStohn
e48f5aa6a7 fixed typo 2012-05-11 15:22:06 +02:00
MaikStohn
1efe9ab497 changed encoder pos from int to long to fix problems setting x/y/z/e stepps_per_mm using the lcd menu 2012-05-11 15:19:09 +02:00
Guan Yang
602c8ee02b Melzi support 2012-05-09 18:37:07 -04:00
Daid
279d00da9f Fixed #if for Ultimaker. 2012-05-09 10:50:44 +02:00
daid
830972ce3c Merge pull request #1 from ErikDeBruijn/Marlin_v1_Ultimaker-rc3
Marlin v1 ultimaker rc3
2012-05-09 01:35:59 -07:00
Bernhard Kubicek
451f9cc6d1 Residual in the comments: there are no more mm/minutes but only mm/sec in the planner buffer. 2012-05-09 08:05:13 +03:00
Erik de Bruijn
e3fe1f0d00 Made a more granular configuration possible PREVENT_LENGTHY_EXTRUDE. You can now decide to allow/disallow large length of extrusions to be executed.
Turning off the protection might be beneficial to those who want to do fast and long reversals.
2012-05-08 17:44:08 +02:00
Erik de Bruijn
d88205d89d Suggestion to improve (TODO), no actual code changed 2012-05-08 17:43:57 +02:00
Erik de Bruijn
5aa80e6c05 Made language.h more flexible. Automatically do the right defines based on MOTHERBOARD == 7 ? "Ultimaker" : "Mendel" 2012-05-08 17:43:02 +02:00
MaikStohn
b657a18449 Revert "magic PROGMEM defines to avoid hundreds of wrong GCC warnings"
This reverts commit 3682d9bd5b.
2012-05-04 12:24:07 +02:00
Bernhard Kubicek
108011085b futher docu of M500 2012-05-04 08:37:49 +03:00
MaikStohn
d188ae4c9d added missing declaration of buttons_init()
This is required when moving the buttons_init() function to the
lcd_init() function
2012-05-03 15:48:44 +02:00
MaikStohn
3682d9bd5b magic PROGMEM defines to avoid hundreds of wrong GCC warnings 2012-05-03 15:43:23 +02:00
MaikStohn
032df0b2c6 Moved LCD initialization out of constructor
Since the class "MainMenu" was used within a static variable the
initialization of the object (constructor call) was done before Arduino
library startup. It always caused a crash when using AVRStudio with
JTAG debugger (caused from calling the LCD initialization / the lot of
I/O work / the stack used during this calls). By moving the LCD_INIT
out of the constructor and using an explicit call inside of Arduino
setup() implementation immediately fixed all problems and the JTAG
debugger runs fine.
2012-05-03 14:28:17 +02:00
MaikStohn
bd1ad7c76a explicit includes to make it compile with AVRStudio/Eclipse 2012-05-03 14:22:43 +02:00
MaikStohn
060b38de5c delete obsolete and wrong code
"i" runs from 0 to 4 but "add_homeing" array size is 3 only. On the
other hand the calculated value gets overwritten by either one of the
if choice.
2012-05-03 14:15:46 +02:00
MaikStohn
789ba02d43 fixed typo in comment 2012-05-03 14:13:53 +02:00
Erik van der Zalm
1874cb71a6 Added option to increase the FAN PWM frequency. 2012-05-02 19:26:14 +02:00
Erik van der Zalm
6a5a34e0ff Small cleanup 2012-04-30 13:37:49 +02:00
Erik van der Zalm
e3821bd86f Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-04-30 13:36:27 +02:00
Erik van der Zalm
02af69911e Added temperature window to M109. This is needed for systems with no overshoot PID. 2012-04-30 13:36:19 +02:00
ErikZalm
e203b8c754 Merge pull request #154 from daid/Marlin_v1
Added 2nd extruder temperature LCD readout and setting.
2012-04-28 13:19:55 -07:00
ErikZalm
362ddc4efc Merge pull request #155 from Atntias/patch-1
adding M120 and 121 for turning on and off the endstops only for homing
2012-04-28 13:19:19 -07:00
ErikZalm
58cad83253 Merge pull request #156 from Atntias/patch-2
Fix to allow M120/M121
2012-04-28 13:19:00 -07:00
sefi
c27081aa4a Fix to allow M120/M121 2012-04-28 17:35:51 +03:00
sefi
e11e072eca adding M120 and 121 for turning on and off the endstops only for homing function 2012-04-28 17:31:22 +03:00
Daid
8e68c6cf89 Show proper temperature for extruder 2 2012-04-27 15:00:01 +02:00
Daid
8503b78876 Added support for 2nd extruder temperature to UltraLCD 2012-04-27 14:51:32 +02:00
Bernhard Kubicek
8446c9dc92 Merge pull request #152 from loganb/Marlin_v1
Fix compile error on boards without a bed heater.

I could not find why this problem was introduced. 
Its quite obvious, so I think its in general interest to merge.
2012-04-25 22:23:31 -07:00
Logan Bowers
3eacb4c16d Wrap the call to turn off the bed heater in a #if to prevent a compile error on boards that do not have a bed heater 2012-04-25 19:22:38 -07:00
Bernhard
e4d2138dbd reinitialize the lcd, if the SD card is inserted or removed. It seems that LCDs can confused by electrical discharges from time to time.
Since a removal or insert of the sd card takes a long time in firmware, just reinitializing the lcd does not hurt.
actually, it solves a problem with the UltiControlle
2012-04-22 21:12:17 +02:00
Bernhard
464b755918 added support for the UltiController 2012-04-22 20:55:56 +02:00
Bernhard
44fd8d46d2 fixed quickhome 2012-04-22 20:44:27 +02:00
Bernhard
33bb044d7c fixed catsting to (int)e in serial error messages.
see https://github.com/ErikZalm/Marlin/issues/148
2012-04-22 20:04:39 +02:00
Erik van der Zalm
ffea8008ca Update readme file 2012-04-15 22:44:03 +02:00
ErikZalm
c2557abc03 Merge pull request #138 from triffid/fix-makefile
make should rebuild if configuration or Makefile is changed
2012-04-15 10:21:46 -07:00
Erik van der Zalm
67cf105bc6 Fixed AUTOTEMP (M109 S215 B260 F1 starts autotemp)
Changed SLOWDOWN. IF this does not work ok OLD_SLOWDOWN is the old algo.
2012-04-15 19:17:33 +02:00
Erik van der Zalm
8aee9d51b6 Disabled disable_heater in PID_autotune. 2012-04-12 21:12:31 +02:00
ErikZalm
939f1fab46 Merge pull request #140 from daid/Marlin_v1
Fix for wrong systax in #ifdef.
2012-04-12 05:29:24 -07:00
Daid
414408b2d0 Fix for wrong systax in #ifdef. 2012-04-12 14:01:30 +02:00
Michael Moon
77d503fa13 Fix Makefile 2012-04-11 11:39:35 +10:00
Erik van der Zalm
cf7c8c458f Fixed MAX6675 2012-04-10 21:57:57 +02:00
ErikZalm
325f0651ac Merge pull request #136 from grrf/patch-1
This breaks temperature readout for pronterface!
2012-04-10 09:48:45 -07:00
grrf
03b0850e63 This breaks temperature readout for pronterface! 2012-04-09 23:37:34 +03:00
ErikZalm
2a019a53d2 Merge pull request #134 from tgiphil/Marlin_v1
- Fixed a typo
2012-04-08 05:16:29 -07:00
tgiphil
ad8bc71d3e - Fixed a typo 2012-04-07 20:01:31 -07:00
Erik van der Zalm
46feae79c6 Fixed typo in arc 2012-04-02 17:19:20 +02:00
Erik van der Zalm
4ca2f336f0 Changed default MINIMUM_PLANNER_SPEED -> 0.05
Fixed small bug in arcs
M105 prints now actual_temp/target_temp
2012-04-01 16:23:40 +02:00
Erik van der Zalm
ae0bf8068b Fixed arc offset. 2012-03-27 19:03:33 +02:00
Erik van der Zalm
0c1b863755 Ignore ":" in comments. 2012-03-25 14:41:26 +02:00
Erik van der Zalm
63aec3c56e Replaced Kill by Stop. If the printer is stopped. Fix the error and use M999 to restart.
Moved the PID_dT in the Ki and Kd calculation from the configuration.h to temperature.cpp
2012-03-25 14:36:51 +02:00
ErikZalm
8b785f75a6 Merge pull request #123 from buserror-uk/for-upstream
For upstream
2012-03-23 11:54:58 -07:00
ErikZalm
5b8758f42b Merge pull request #126 from tommycheng/patch-1
Fix compilation error when PIDTEMP is undefined and ULTIPANEL is defined...
2012-03-23 11:54:37 -07:00
Tommy Cheng
520f1a54a8 Fix compilation error when PIDTEMP is undefined and ULTIPANEL is defined. 2012-03-24 02:26:59 +08:00
Michel Pollet
5550e893d5 New board variant, Open Motion Controller
Open Hardware board currently used by the group build of http://tvrrug.org.uk
The board can be found at http://solderpad.com/folknology/open-motion-controller/

Signed-off-by: Michel Pollet <buserror@gmail.com>
2012-03-22 13:51:21 +00:00
Michel Pollet
aa6e6e914e Makefile: Redone
+ Removed most explicit pathnames, use the standard make "VPATH" to let
make find the files for itself.

+ Added a "hardware variant" variable that allows compiging Sanguino and
Gen7 as well as "generic" arduino.

+ Allows overriding the MOTHERBOARD define from the Makefile

+ Removed the 'preprocessor' bit that wasn't needed, now just "include" the
files that are needed, since it allows gcc to show the right file/line
when displaying error/warnings.

+ Uses gcc's own dependency generator to generate the .d files, and
and include these instead of self-patching the makefile

Signed-off-by: Michel Pollet <buserror@gmail.com>
2012-03-22 13:48:10 +00:00
Bernhard
0183e6332a made prepare->autostart independent of current folder. 2012-03-19 20:24:40 +01:00
Bernhard
1532200435 found error in filenames.
One array was too short. This had nothing to do with long filenames, other than if they were 12 characters exactly, which could only happen if the extension and the text before were filled completely
2012-03-19 20:06:58 +01:00
ErikZalm
7f775c142c Update README.md 2012-03-18 15:59:14 +01:00
Erik van der Zalm
b985e4a134 Fixed compile errors in ultralcd when no ultra_lcd is selected. 2012-03-15 22:29:31 +01:00
Erik van der Zalm
2e749d60c3 Added DISABLE_MAX_ENDSTOPS 2012-03-12 20:32:14 +01:00
Erik van der Zalm
33f5697888 PPID tune exports more constants. 2012-03-11 22:18:25 +01:00
Erik van der Zalm
b44055cc51 Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-03-11 18:03:00 +01:00
Erik van der Zalm
f5eae52098 Added more manage_inactivity checks 2012-03-11 17:59:44 +01:00
ErikZalm
19a47dae4a Merge pull request #99 from Justblair/master
Better pin configuration for rotary encoder in RAMPS boards
2012-03-11 04:34:59 -07:00
Erik van der Zalm
910f4e77a2 Added 20MHz support. 2012-03-11 12:25:04 +01:00
ErikZalm
7cefad3744 Merge pull request #106 from bgamari/Marlin_v1
Make F_CPU dependence of stepper.cpp more explicit
2012-03-11 01:48:30 -08:00
Erik van der Zalm
87ff2f8867 Added CONTROLLERFAN. (Controlling a fan to cool down the steppper drivers) 2012-03-11 10:44:10 +01:00
Erik van der Zalm
387fe51a56 Do not disable steppers when there are moves in the queue. 2012-03-09 20:20:01 +01:00
Erik van der Zalm
421264e58a Fixed typo 2012-03-09 17:49:48 +01:00
Erik van der Zalm
15ad923310 Removed !!!. Stupid arduino bootloader can't handle this. 2012-03-09 17:42:32 +01:00
Erik van der Zalm
61e09e6be2 Added FAN_PIN -1 checks 2012-03-08 22:09:49 +01:00
Erik van der Zalm
87c4e06c24 Corrected active_extruder when autotemp is used. 2012-03-08 22:04:13 +01:00
Erik van der Zalm
7b1e295f34 Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-03-08 21:48:06 +01:00
Erik van der Zalm
c077316b2b Added PID autotune. (experimental)
M303 Starts autotune. Wait till the Kp Ki and Kd constants are printed.
Put these values in Configuration.h
2012-03-08 21:43:21 +01:00
Ben Gamari
49b228c4b3 Add instructions to regenerate speed_lookuptable when changing F_CPU 2012-03-07 18:11:03 -05:00
Ben Gamari
96509494f0 stepper: Clarify comment on timer-counter configuration 2012-03-07 18:11:01 -05:00
Ben Gamari
6d7e6a11fc Add create_speed_lookup 2012-03-07 18:11:01 -05:00
ErikZalm
f3095493b0 Merge pull request #100 from tommycheng/patch-1
While Waiting for hotbed to warm up via M190, LCD Display and Click Enco...
2012-03-05 09:56:50 -08:00
Tommy Cheng
ce07c9186d While Waiting for hotbed to warm up via M190, LCD Display and Click Encoder input freeze until target temperature is reached. 2012-03-05 23:12:26 +08:00
Erik van der Zalm
116dc86b8a Fixed type in e-jerk 2012-03-04 23:09:13 +01:00
Blair Thompson
02ee9e3d30 Changed Pin Assignment for the RAMPS motherboard so that LCD and Rotary encoder are all wired to AUX-4
This simplifies wiring for those with RAMPS 1.3 and 1.4 boards.
2012-03-04 21:34:20 +00:00
Erik van der Zalm
e056bf8081 Added E-Jerk 2012-03-04 16:34:58 +01:00
Erik van der Zalm
4deeffbc88 Added missing defines to the german section.
Translation still needed.
2012-03-04 14:08:20 +01:00
Erik van der Zalm
632528aa95 merging with SCUBA82 2012-03-04 13:41:47 +01:00
Erik van der Zalm
aac7aa3bf0 Queued fan control. Issue #90 2012-03-04 13:05:26 +01:00
Christian Thalhammer
fde51084f3 set SD file delete to M30; switch printime output to M31 2012-03-03 21:58:12 +01:00
Erik van der Zalm
21e2bae063 Changed (corrected?) SD_card comment handling. 2012-03-03 21:28:33 +01:00
Erik van der Zalm
e509bbf636 Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-03-03 20:41:22 +01:00
Erik van der Zalm
072011a3ef Added current_block = NULL to quickStop() 2012-03-03 20:40:46 +01:00
ErikZalm
2422a857a1 Merge pull request #96 from haxar/Marlin_v1
make analog2tempBed return a precise celsius reading for BED_USES_THERMISTOR, ...
2012-03-03 11:24:58 -08:00
Erik van der Zalm
f598077af3 Removed vc files 2012-03-03 20:22:42 +01:00
Erik van der Zalm
cb0c84e075 Merge remote-tracking branch 'justblair/master' into Marlin_v1 2012-03-03 20:20:55 +01:00
ErikZalm
1d5809d458 Merge pull request #88 from daid/Marlin_v1
Made plan_buffer_line arguments const...
2012-03-03 11:18:14 -08:00
Erik van der Zalm
ed951b1977 Fixed RAMPS 1.2 support (Found and fixed by rrhb) 2012-03-03 20:15:41 +01:00
Blair Thompson
4879de08e8 The percent complete for the SD file statistic sits squint. Changed "lcd.Setcursor (7,2);" to "lcd.Setcursor (10,2);".
The percent complete now lines up with the temperatures and Z-axis position figures, nicer to read and nicer to look at IMHO.
2012-03-03 16:47:27 +00:00
Blair Thompson
f278e1c00f This is in my opinion a much better way of dealing with SD cards than my previous fix.
Instead of adding a momentary switch to fake the insertion of the card I have modified the ultralcd menu item:

Card Menu -> Refresh

to reinitialise the card providing that the SDCARDDETECT pin has been set to -1 in the pins.h file.  This requires one less switch on the front panel and the refresh menu item is in the most relevent place for a user who wishes to inert a card and then print from it.

It also means that the "Card inserted" messages do not bother the users of these card readers (they dont make sense for users without SCCARDDETECT)
2012-03-03 16:30:31 +00:00
Blair Thompson
046a8e0039 Added more defines to the language.h file so that nowe most of the text strings are now configured via this file. Still got some hunting down to do to complete this task. 2012-03-03 15:51:47 +00:00
haxar
79a466ca26 make analog2tempBed return a precise celsius reading for BED_USES_THERMISTOR, complementing changes to analog2temp in d15f01e 2012-03-02 17:15:21 -08:00
Christian Thalhammer
5f3a422e68 added M31 - delete file from sd card 2012-03-02 21:49:05 +01:00
Christian Thalhammer
fa2e3a40e9 fixed LCD manual z axis move Feedrate to 70 (was 1700) 2012-03-01 14:38:50 +01:00
Christian Thalhammer
a92b3afe64 added german translation;Menue should be in english.. sounds better 2012-03-01 14:24:20 +01:00
Christian Thalhammer
9fa586bbed fixed languages; Preheat_PLA and Preheat_ABS was not defined for non
english
2012-03-01 14:05:40 +01:00
Daid
00d33e6b82 Typo fix 2012-02-29 19:01:21 +01:00
Daid
7d124478fa Only protect the heater pins for the defined extruders.
Changed the way the extruder pins are defined so it doesn't create extra -1 entries in the list.
2012-02-29 15:49:02 +01:00
Daid
3d83109028 Fixed general 16x2 LCD build without SD support. 2012-02-29 15:33:23 +01:00
Christian Thalhammer
cb02914687 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1 2012-02-29 14:51:35 +01:00
Christian Thalhammer
10bf2bb8e1 - 2012-02-29 14:51:15 +01:00
Daid
d47b666630 Merge branch 'Marlin_v1' of git://github.com/ErikZalm/Marlin into Marlin_v1 2012-02-29 12:19:20 +01:00
Daid
88d289caa1 Made plan_buffer_line arguments const, which optimizes better and fixes the RUNOUT_PREVENTION feature. 2012-02-29 11:38:12 +01:00
Erik van der Zalm
b4833d55c2 Fixed HOME_POS in combination with G28 X0 or G28 Y0 2012-02-28 18:20:03 +01:00
Erik van der Zalm
c6f2ec3c82 remove stop_heating_wait 2012-02-27 18:45:45 +01:00
Erik van der Zalm
b48d67ce10 Fixed homing 2012-02-27 18:31:40 +01:00
ErikZalm
071eec7aa7 Merge pull request #81 from phord/09469add5560ca8a676c42e4bcd499868c33f0dd
Clean up and add some trace info
2012-02-27 08:38:36 -08:00
ErikZalm
1ebe7d1ab6 Merge pull request #83 from phord/tempfix
Add explicit #define for bogus temp override
2012-02-27 08:36:45 -08:00
ErikZalm
de37b2264a Merge pull request #82 from phord/fix-gen7-build
pins.h: Define Z_MAX_PIN for Gen7 board
2012-02-27 08:36:06 -08:00
Phil Hord
b65ef8d66c Add support for upcoming Gen7 v1.4
V1.4 moves thermistor power to the always-on 5v line.
The BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE is no longer
needed on this board.  Add a new motherboard type to
support this feature.
2012-02-26 20:39:49 -05:00
Phil Hord
740f0c7690 Add explicit #define for bogus temp override
The code to ignore the "bad thermistor reading failsafe"
suicide function depends on the existing of the PS_ON pin
feature.  But in some boards this shouldn't be the case
Fix this by adding an explicit definition to make our
intentions more clear and separable.
2012-02-26 20:26:16 -05:00
Phil Hord
ba8500a236 pins.h: Define Z_MAX_PIN for Gen7 board
The Z_MAX_PIN value was defined as no-value, but this causes
the compile to fail.  Fix this by setting the Z_MAX_PIN to the
correct value (which happens to be 0 for pin PB0/DIO0/0).
2012-02-26 20:18:39 -05:00
Phil Hord
09469add55 Add board reset reporting (from Repetier-Firmware) 2012-02-26 18:26:56 -05:00
Phil Hord
f3101e96d9 Add suitable .gitignore to avoid build noise 2012-02-26 18:26:56 -05:00
Phil Hord
245dca4bee Makefile: generic pde=>cpp rule
This adds flexibility to the makefile by allowing different pde
targets to be specified for different needs.
2012-02-26 18:26:55 -05:00
Erik van der Zalm
97d42ca2b2 SDSUPPORT default disabled 2012-02-26 22:05:38 +01:00
ErikZalm
2faa0852b9 Merge pull request #79 from changwoo/Marlin_v1
Fix build on Sanguino based boards with ATmega1284P
2012-02-26 13:03:15 -08:00
Changwoo Ryu
7b14953c99 Fix build on Sanguino based boards with ATmega1284P 2012-02-27 04:12:55 +09:00
Daid
286d5003fa Fixed compiler warning for Sanguino compile 2012-02-26 17:35:01 +01:00
ErikZalm
66d50562b6 Merge pull request #76 from iXce/Marlin_v1
Fix Makefile
2012-02-26 07:30:51 -08:00
Erik van der Zalm
27f595a444 Changed version => RC2 2012-02-26 16:26:40 +01:00
Erik van der Zalm
018c567abf Moved SLOWDOWN function. (jetty840)
Included AD595 calibration options. (daid)
2012-02-26 16:23:47 +01:00
Erik van der Zalm
4fbda5c3f5 Merge remote-tracking branch 'daid/Marlin_v1' into Test 2012-02-26 16:10:59 +01:00
Erik van der Zalm
ce714fe306 Fixes in pins.h 2012-02-25 22:55:17 +01:00
Erik van der Zalm
35e57bf149 Added gen6 deluxe. 2012-02-25 17:44:45 +01:00
Erik van der Zalm
84ea2d61e8 Moved gen7 boards to motherboard type 10, 11 and 12.
Split ramps1.3 in Sprinter like config and multiextruder config.
2012-02-24 23:34:41 +01:00
Guillaume Seguin
adc108d79e Correctly build the produced applet/Marlin.cpp source 2012-02-24 21:21:19 +01:00
Erik van der Zalm
5aa9c41ab1 Changed comment mode for detection.
Added M221 extuder multiply factor.
2012-02-24 20:42:07 +01:00
Erik van der Zalm
00690f7ffd Fix cast warning in Gen7 2012-02-23 18:50:05 +01:00
Erik van der Zalm
01d28c18ab Fixed casting warning in sanguino 2012-02-23 18:45:37 +01:00
Blair Thompson
2fd8c248fe Added Fan control to the pre-heat settings.
I find that the PID routine works better when the cooling fan is switched on
at the beginning of a warm up routine.  Otherwise when you enable the fan
just before a print, you have a delay as the PIDre-adjusts.

This should also be safer as most cooling fans are directed at the hot -ends
thermal barrier!
2012-02-22 23:05:52 +00:00
Blair Thompson
d9f2f509d5 Added new menu items under the prepare submenu.
Instead of a single pre-heat, now there is pre-heat ABS and PLA options
Added defines to the configuration file to adjust preheat temperatures for both
2012-02-22 22:51:04 +00:00
Erik van der Zalm
ae3e7586c6 Added HOME_POS. This adds the posibility to make the center 0
Updated the Xsteps ... settings via the LCD menu
2012-02-22 18:07:56 +01:00
Erik van der Zalm
df1437bd86 Changed display format for some numbers. 2012-02-21 23:05:43 +01:00
Erik van der Zalm
8816ef1c64 Small fixes after merge 2012-02-21 20:36:43 +01:00
Erik van der Zalm
d298dd121f merged SBUBA82 and Justblair 2012-02-21 20:26:59 +01:00
Erik van der Zalm
2cc9a89830 Merge remote-tracking branch 'SCUBA82/Marlin_v1' into Marlin_v1 2012-02-21 20:17:35 +01:00
Erik van der Zalm
a0a1f81913 various changes 2012-02-21 20:17:28 +01:00
Christian Thalhammer
8a8ea50f33 fixed manual axis movement lcd option 2012-02-21 09:31:28 +01:00
Blair Thompson
b976692d0f Removed VS project files for tidyness stakes 2012-02-20 22:39:39 +00:00
Blair Thompson
fe940a142d Added a structure that will allow easy translations/modifications to the LCD menu.
Signed-off-by: Blair Thompson <mail@justblair.co.uk>
2012-02-20 22:22:46 +00:00
Christian Thalhammer
b3fb09a20c change preheat to ABS values of nozzle 227 and be 105 C
next try for manual axis movement
2012-02-20 16:07:27 +01:00
Christian Thalhammer
6a3f8cf23f Infos about fuses to use; correct fuses in boards.txt 2012-02-20 10:25:51 +01:00
Blair Thompson
a05a261b72 Added a workaround. Ramps SD card does not have sdcarddetect. My temporary solution is to add a momentary swtich
that pulls down the SDCARDDETECT pin and mimicking the pull and reinsert ofa a SD card
2012-02-18 23:56:31 +00:00
Blair Thompson
1b6765ed12 Updated the pin config for RAMPS 1.3 to include ultimaker new style LCD/Rotary Encoder interface 2012-02-18 18:25:04 +00:00
Christian Thalhammer
1ff99ae25f ATMega1284P support for Arduino IDE
replace $ARDUINO_HOME/hardware/tools/avr/etc/arduino.conf with this file
2012-02-17 11:41:47 +01:00
Christian Thalhammer
234fe8ea67 added infos for this fork 2012-02-17 11:07:24 +01:00
Christian Thalhammer
e661578c84 support for GEN7 1.1,1.2 and 1.3 2012-02-17 10:46:48 +01:00
Daid
73344e69c1 Added temperature offset/gain settings for AD595. 2012-02-16 11:05:08 +01:00
Christian Thalhammer
d309565b56 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1
Conflicts:
	Marlin/Configuration.h
2012-02-13 13:07:55 +01:00
daid
3f20f37c78 Merge remote branch 'upstream/Marlin_v1' into Marlin_v1 2012-02-13 12:39:00 +01:00
Christian Thalhammer
0e3631ff4b smaller changes 2012-02-13 12:31:53 +01:00
Erik van der Zalm
fa2e1be0ca changed default EXTRUDE_MINTEMP to 170. 2012-02-12 17:38:54 +01:00
Erik van der Zalm
7699f250e3 Fixed small merge bug 2012-02-12 14:06:08 +01:00
Erik van der Zalm
11518a987f merged with triffid fork 2012-02-12 13:58:36 +01:00
Erik van der Zalm
b447815de5 removed unused HEATING_EARLY_FINISH_DEG_OFFSET
Simplified stepper inactive time
2012-02-12 18:02:12 +08:00
Erik van der Zalm
bde30b2b48 Corrected e-length calculation in planner 2012-02-12 18:02:12 +08:00
Erik van der Zalm
13e185d330 removed unused HEATING_EARLY_FINISH_DEG_OFFSET
Simplified stepper inactive time
2012-02-11 23:22:16 +01:00
Erik van der Zalm
b58eae7657 Corrected e-length calculation in planner 2012-02-11 18:36:42 +01:00
ErikZalm
3e7fcb813e Merge pull request #61 from daid/Marlin_v1
Updated SERIAL define to MYSERIAL, because Arduino 1.0 defines SERIAL as 0.
2012-02-11 07:36:24 -08:00
daid
2a77c84c8f Updated SERIAL define to MYSERIAL, because Arduino 1.0 defines SERIAL as 0. 2012-02-11 16:02:47 +01:00
Erik van der Zalm
d47a3e5950 Changed check i mtion_conrol
if (millimeters_of_travel == 0.0) => if (millimeters_of_travel < 0.001)
(thanks mooselake)
2012-02-09 21:02:01 +01:00
Erik van der Zalm
f87c80889f Fixed M109 timer overflow (reported by triffid) 2012-02-09 20:54:49 +01:00
Erik van der Zalm
154de69c02 Print configuration.h version during startup (thanks hairykiwi) 2012-02-09 20:26:17 +01:00
Erik van der Zalm
6ef8459494 Corrected distance calculation. (thanks jv4779) 2012-02-09 19:53:06 +01:00
Erik van der Zalm
598eb1d4f1 Fixed compilation for gcc-4.6.2 with avr-lib-1.8.0 (thanks daid) 2012-02-09 19:38:53 +01:00
Erik van der Zalm
9173a5713b Teensylu support. 2012-02-09 19:27:45 +01:00
Erik van der Zalm
da040fd393 Fixed ultimaker heater 1 pins. (Thanks daid) 2012-02-09 17:19:45 +01:00
Erik van der Zalm
bdb70c0509 Warning for 10k thermistor 2012-02-08 18:38:45 +01:00
Erik van der Zalm
5113513cb2 RC 1 2012-02-08 18:28:54 +01:00
Erik van der Zalm
d8a0c6450f Split the configuration file in two parts.
One for common settings.
One for advanced settings.
2012-02-07 20:23:43 +01:00
Christian Thalhammer
4cc8e37bf1 lcd menue "move_axis" added 2012-02-07 12:58:05 +01:00
Christian Thalhammer
b5fae1104b fixed sUICIDE_PIN disable 2012-02-07 08:50:26 +01:00
Erik van der Zalm
f9c5333f97 Made "stop heating wait" optional.
Default off.
2012-02-06 20:13:44 +01:00
Erik van der Zalm
292ddd2edb Fix Z_LATE_ENABLE 2012-02-06 17:38:16 +01:00
Christian Thalhammer
25cd8af536 added arduino ide GEN7 support Files 2012-02-06 14:11:25 +01:00
Christian Thalhammer
14702089ee -disable TEMP Min MAX Kill while using PS_ON Pin
ON GEN7 there is no temperature reading when power is off.. so Marlin
would kill itself. There seems to be an update from "Traumflug" on GEN7
using standby VCC for thermistors.
2012-02-06 12:28:33 +01:00
Christian Thalhammer
b51e8bf7e5 -disabled CARDDETECT if PIN is set to -1
- redo disable Beeper if PIN is set to -1
2012-02-06 12:22:44 +01:00
Christian Thalhammer
3183a14755 -added Configuration for GEN7 which worked for me 2012-02-06 12:12:18 +01:00
Christian Thalhammer
5edef148fe -disalbe beeper if BEEPER_PIN = -1 2012-02-06 12:10:32 +01:00
Christian Thalhammer
13e2ad2831 - added info for using GEN7 configuration 2012-02-06 11:58:52 +01:00
Christian Thalhammer
59cc5f889e - added support for ATMega1284P 2012-02-06 11:55:56 +01:00
Christian Thalhammer
a11f3b2d2f - Pins for modified GEN7 assigned
- Added support for ATMega1284
2012-02-06 11:49:23 +01:00
Christian Thalhammer
b0070a244a Merge remote-tracking branch 'upstream/master' into Marlin_v1
Conflicts:
	README
2012-02-06 11:37:07 +01:00
Erik van der Zalm
abb7e63906 fixed z-disable bug. 2012-02-05 21:14:55 +01:00
Erik van der Zalm
9f139d6e0e Added MAX6675 support. (Thanks to gregfrost)
Needs some work to remove the blocking in read max6675.
2012-02-05 13:05:07 +01:00
Erik van der Zalm
e45e5c68bb Added support for Gen3+ (Pins file only)
Added late z enable. (blddk request)
Only calculate look ahead if >2 moves in buffer.
Removed some FORCE_INLINE to save memory.

Signed-off-by: Erik van der Zalm <erik@vdzalm.eu>
2012-02-05 12:42:15 +01:00
ErikZalm
7c6141ebc4 Merge pull request #54 from haxar/patch-1
M109 EOL fix when TEMP_RESIDENCY_TIME is undefined; printer interface (p...
2012-02-05 02:19:35 -08:00
Michael Moon
9c918a497b more work on Makefile - actually rebuilds if Makefile or Configuration.h are altered, also much cleaner output 2012-01-25 20:46:27 +11:00
Michael Moon
ab01658fd2 local configuration stuff- WATCHPERIOD causes breakage, disable. few other misc changes 2012-01-24 17:02:45 +11:00
Michael Moon
42bedb3f60 PROGMEM elements must be const 2012-01-24 15:57:42 +11:00
Michael Moon
a991bde523 enable auto-reset before programming, disable afterwards 2012-01-24 14:25:28 +11:00
Michael Moon
3e575533c5 get M81 working 2012-01-24 14:24:41 +11:00
Michael Moon
2ae2ead97b help residency not overflow 2012-01-24 14:24:24 +11:00
Michael Moon
71dc82e0b4 my local configuration 2012-01-24 13:19:37 +11:00
Michael Moon
5aadc2f5ca cardreader needs to include some other files 2012-01-24 13:19:24 +11:00
Michael Moon
8d0916af13 allow Marlin to actually compile with Makefile pulled from Sprinter and a few other modifications 2012-01-24 13:18:54 +11:00
haxar
6cc6029d7a M109 EOL fix when TEMP_RESIDENCY_TIME is undefined; printer interface (pronterface) could not see target extruder heater temperature to continue print 2012-01-22 03:25:56 -08:00
Bernhard
157aa7f2fd m115 eol fix 2012-01-15 20:51:49 +01:00
Bernhard
7aeb45303d small mistake 2012-01-15 18:31:21 +01:00
Bernhard
cee5f9020a added suicide pin for a power supply to the arduino that is only active if the arduino is holding high for an output. 2012-01-15 17:06:10 +01:00
Bernhard
3814bbb529 made sd code only compile with SDSUPPORT defined. safes 10k of codespace 2011-12-26 09:28:51 +01:00
Bernhard
729cde4475 fix autostart failure if in wrong directory 2011-12-26 09:20:53 +01:00
Bernhard
396270a0de fix duplicated definition of MOSI MISO pins in case motherboard==33 2011-12-26 09:20:21 +01:00
Bernhard
11f2dafc4e one step closer to a functional makefile.. 2011-12-22 16:43:28 +01:00
Bernhard
8463e39a4a starting with sanguino arduino 1.0 compatibility 2011-12-22 16:11:15 +01:00
Bernhard
2bc160a978 add wiring.h, that can be used to overwrite:
arduino-0023/hardware/arduino/cores/arduino/wiring.h
this is necessary if the avr libraries are recent, but arduino is old. Alternative: newer arduino
2011-12-22 14:57:28 +01:00
Bernhard
57f9359a41 simplified the includes, makefile now works with arduino23 2011-12-22 14:55:45 +01:00
Bernhard
3c1a4aac2b header file simplification 2011-12-22 12:38:50 +01:00
Bernhard
212515148e added m240 photography support. default off 2011-12-22 12:11:39 +01:00
Bernhard
6735025428 cooldown 2011-12-22 12:02:33 +01:00
Bernhard
415aadf704 lcd panel bed support
advance and ultipanel not any more in default config
2011-12-22 11:45:52 +01:00
Bernhard
4bababf5b0 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2011-12-22 09:22:39 +01:00
Bernhard
f312216e97 Revert "untestest commit, so I don't loose code.. features runout prevention addons"
This reverts commit 651cde8b98.
2011-12-22 09:22:22 +01:00
Bernhard
651cde8b98 untestest commit, so I don't loose code.. features runout prevention addons 2011-12-22 09:20:34 +01:00
Erik van der Zalm
554cc1718d Fiexed E_ENABLE_PIN errors 2011-12-15 11:59:07 +01:00
Erik van der Zalm
617968ab76 G92 fix 2011-12-12 20:43:47 +01:00
Erik van der Zalm
84d9cf7339 merging 2011-12-12 20:35:46 +01:00
Erik van der Zalm
e017228569 Merged multiple extruder support.
Soft PWM. (Sanguinololu can also have PID temperature control)
Interrupt save WRITE for addresses > 0x0FF
2011-12-12 19:34:37 +01:00
Bernhard
3320a5b37d make autotemp compatile for use without pid 2011-12-11 22:25:52 +01:00
Bernhard
06411d5c9e ultralcd can now also stop the wait loop for the hot-end m109 heating when stopping sd prints. 2011-12-11 22:18:50 +01:00
Bernhard
82c99625fa instant stop of sd prints from the panel. 2011-12-11 22:10:06 +01:00
Bernhard
01001b89d2 repaired nozzle runout prevention to not collide with automatic stepper disabeling. 2011-12-11 15:42:56 +01:00
Bernhard
88ee053af0 heating up santity, formarly knows as "watchdog", but renamed due to the existance of the real watchdog, works now. 2011-12-09 17:07:44 +01:00
Bernhard
b1d84d879b st_synchronize back to normal.. 2011-12-09 16:13:58 +01:00
Bernhard Kubicek
f6fe7143e4 Merge pull request #29 from k-eex/Marlin_v1
Fix M201 not saving settings in all places, so the changes did not get written into EEPROM
2011-12-09 06:37:42 -08:00
Bernhard
dde4b40fa9 disable steppers in runout prevention 2011-12-09 15:37:24 +01:00
Bernhard
2bc5e7ec9e prevent too long extrudes, or too cold extrudes 2011-12-09 15:09:52 +01:00
Bernhard
aa4f9a6474 better values. 2011-12-09 14:09:34 +01:00
Bernhard
87fd249c43 made runout prevention independent of tempeorarily set esteps 2011-12-09 13:56:28 +01:00
Bernhard
1ec0c3b68a extruder runout prevention. 2011-12-09 13:39:00 +01:00
Bernhard
5b4625f79c added a partial release option to "m84" aka "stepper release". If you do tiny layers, you might want to keep the z-axis powered to not loose height positioning after homeing. 2011-12-09 12:51:08 +01:00
Bernhard
cc4a9cdb69 added autostart procedure trigger to the ultralcd menu 2011-12-09 12:33:00 +01:00
Bernhard
61c943b4bf fixed the st_synchronize. it would have continued if there is only the last move of the buffer being stepped. 2011-12-09 12:32:31 +01:00
Keegi
bae1e422f6 Fix M201 not saving settings in all places, so the changes did not get written into EEPROM 2011-12-08 12:25:32 +02:00
Bernhard
754d2d69b2 z homing sound fix, for now until the actual cause is found.. 2011-12-07 23:08:13 +01:00
Bernhard
986f0ba76c moved <stdio.h> to more dominant location. 2011-12-07 20:56:47 +01:00
Bernhard
460b788d78 repaired homing position setting. 2011-12-07 20:54:34 +01:00
Erik van der Zalm
3664ed6aad Merge branch 'Marlin_v1' of https://github.com/dob71/Marlin into Marlin_v1 2011-12-07 19:57:39 +01:00
Erik van der Zalm
43f5c3e82b Merge branch 'Marlin_v1', remote-tracking branch 'origin/Marlin_v1' into Marlin_v1 2011-12-07 19:55:17 +01:00
Denis B
4fd75dc813 Working version of multiple extruders (up to 3)
- The temperature control is pretty much complete
  (not sure what to do w/ autotemp though)
  Changed the pins assignment to clearly separate bed and extruder heaters
  and temp sensors, changed a bit how termistor tables are handled.
- The steppers control is rudimentary
  (only chanages what pins it uses depending on the active_extruder var,
   but that's enough for switching extruder in the start.gcode in the
   the profiles)
- Tested only w/ RAMPS 1.4
2011-12-06 00:09:16 -05:00
Bernhard
12e8edcac3 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2011-12-04 22:27:37 +01:00
Bernhard
cf50ba140f added M503 to display eeprom storage, and renamed eeprom routings. This version is compatible with the qtmarlin eeprom-tab. 2011-12-04 22:26:42 +01:00
Erik van der Zalm
89e832c295 Update endstops only for homing. (use less resources when not used) 2011-12-04 21:03:02 +01:00
Erik van der Zalm
b99c49ec3b Add option to only check endstop when homing 2011-12-04 20:17:21 +01:00
Erik van der Zalm
95a0b28acb Merge branch 'Marlin_v1', remote-tracking branch 'origin/Marlin_v1' into Marlin_v1 2011-12-04 19:54:43 +01:00
Erik van der Zalm
af22e9cd38 Some advance modifications 2011-12-04 19:54:07 +01:00
Bernhard
7714b98da7 solved some compiler warnings that are now visible in arduino 1.0.
Found a couple of unused variables, that I commented.
Tried to solve the program memory warning message, and failed.
2011-12-04 12:40:18 +01:00
Bernhard
dfd240b260 overworked autotemp, removed one layer of nesting from the ultralcd. 2011-12-04 09:48:53 +01:00
Bernhard
4f909963e4 make QUICKHOME configureable 2011-12-04 09:02:09 +01:00
Erik van der Zalm
6b86f15686 More 2nd extruder implementation. (Not usable)
Advance (not tested)
2011-12-02 17:45:05 +01:00
Bernhard
0bc9daa4f7 make it compile with arduino 1.0 ; function is still untested. 2011-12-01 16:38:01 +01:00
Bernhard
b0c3871750 more fixing of the sanguino math round problem 2011-11-30 09:07:56 +01:00
Bernhard
9c57453168 removed stream.h referenece from marlinserial. 2011-11-30 08:57:30 +01:00
Bernhard
59205ac5fc preliminiary implementation for the early heating finish.
Might be replaced by something more clever, e.g. by erik, and does not yet support the second extruder or the bed.
its kind of not so cool, because you need 6 more ints.
Maybe isheating() should use the degrees directly, as it is not used in time-critical anyways.
Then it would be much easier. to have the offsets without additional variables.
2011-11-30 08:51:46 +01:00
Bernhard
7a4be21b4f made it compile if arduino decides to include files in a differnt order. DEC HEX and stuff now defined in MarlinSerial.h 2011-11-30 08:32:28 +01:00
Bernhard
716e89b87c first homing move diagonal towards home switches. 2011-11-29 22:11:45 +01:00
Bernhard
d00b7e5587 repaired compiliation in windows 2011-11-28 22:45:40 +01:00
Bernhard
e4ab0e5982 more inlines 2011-11-28 22:11:17 +01:00
Bernhard
8cb29921a0 possible stepper release after sd printing 2011-11-28 22:09:17 +01:00
Bernhard
044886b4a0 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2011-11-28 21:52:16 +01:00
Bernhard
b19c8b74b9 force inline 2011-11-28 21:51:44 +01:00
Erik van der Zalm
6d95644c0d Moved M88 into M84. (M84 E) 2011-11-28 21:49:54 +01:00
Bernhard
311627141b Merge branch 'smallopt' into Marlin_v1
Conflicts:
	Marlin/temperature.h
2011-11-28 21:36:01 +01:00
Erik van der Zalm
7216a12856 Disabled M88 for boards that don't have seperate enable pins. 2011-11-28 21:17:06 +01:00
Erik van der Zalm
98805c9228 Added M88 command. (Request from Action68) 2011-11-28 20:51:01 +01:00
Bernhard
85da81e673 inlineing of small functions in serial 2011-11-28 19:34:42 +01:00
Bernhard
b9ad0bb2ce removed unecessary indirect register adressing in serial. 2011-11-28 19:28:38 +01:00
Bernhard
dd5ca68c87 get rid of indirect ringbuffer calls, made some inlines, removed virtual and streaming class requirements. 2011-11-28 19:13:40 +01:00
Erik van der Zalm
dd5296ad4d Fixed temperature reading bug.
(When using the lower and upper adc input bank)
2011-11-28 17:42:49 +01:00
Erik van der Zalm
f75f426dfa Removed interrupt nesting in the stepper ISR.
Add serial checkRx in stepper ISR.
Copied HardwareSerial to MarlinSerial (Needed for checkRx).
2011-11-27 21:12:55 +01:00
Bernhard
2d9a715655 first naive attempt to have a offset in the homeing procedure. Does not enable to move into regions not allowed by endstops. 2011-11-27 17:27:17 +01:00
Bernhard
d2f034ba84 lcd message from gcode, m117 2011-11-27 16:53:11 +01:00
Bernhard
6aecf80278 add autotemp support to the lcd 2011-11-27 16:45:19 +01:00
Bernhard
b128d25f27 overlooked some inlines.. 2011-11-27 16:45:00 +01:00
Bernhard
26a1de1e44 force inline 2011-11-27 16:04:58 +01:00
Bernhard
f8e170a44b planner optimization by inline functions 2011-11-27 14:57:12 +01:00
Erik van der Zalm
aad4b75b94 First parts 2nd extruder 2011-11-26 17:33:25 +01:00
Bernhard
a0dc66f7bf Home retract distance configureable per axis. 2011-11-26 12:04:06 +01:00
Bernhard
6d6f323535 make an option if sd-card stop should release the steppers. 2011-11-26 11:51:38 +01:00
Bernhard
4d6a5c29df disable steppers as routine in stepper.cpp 2011-11-26 11:50:23 +01:00
Bernhard
74d0032e25 cooldown blocking selectable by #define. 2011-11-26 09:03:12 +01:00
Bernhard
191f36b493 slowdown 2011-11-25 23:59:30 +01:00
Bernhard
c54a807824 overworked ultralcd a bit 2011-11-25 23:37:08 +01:00
Bernhard
a6823a84e1 another typo 2011-11-25 22:36:33 +01:00
Bernhard
57e163e989 typo 2011-11-25 22:34:12 +01:00
Bernhard
b58787a367 now velocities are also set in mm/sec in gcode. 2011-11-25 22:32:26 +01:00
Bernhard
71ca78982b Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2011-11-25 22:14:36 +01:00
Bernhard
235051253a overworked lcd+eeprom to have only mm/sec and PID including pid_dt 2011-11-25 22:14:29 +01:00
Erik van der Zalm
27654bfe69 Fixed variable (removed 0x) 2011-11-25 22:10:06 +01:00
Erik van der Zalm
cdf0bd4e63 Fixed config bug when EEPROM was disabled 2011-11-25 20:07:30 +01:00
Erik van der Zalm
6ac9b2e761 Fixed residency time bug. (Thanks to Sound :-) ) 2011-11-25 19:34:36 +01:00
Erik van der Zalm
ac8adabb2b Small nominal speed improvement. 2011-11-25 15:32:50 +01:00
Erik van der Zalm
0e0e4945d8 Removed ISR overtaken message from ISR routine 2011-11-25 13:59:58 +01:00
Erik van der Zalm
c0f8c9fd72 Seperate ENDSTOP_INVERTING for X Y and Z
Added simple endstop filter.
Corrected M114 count display.
2011-11-25 13:43:06 +01:00
ErikZalm
0db97b9c7f Update README.md 2011-11-21 22:40:47 +01:00
ErikZalm
c9005865ed Update README 2011-11-20 19:21:51 +01:00
ErikZalm
1022a5eaa7 Update README 2011-11-20 19:21:19 +01:00
1155 changed files with 585899 additions and 12660 deletions

23
.astylerc Normal file
View File

@@ -0,0 +1,23 @@
--style=google
--keep-one-line-blocks
--indent=spaces=2
--indent-preproc-block
--indent-preproc-define
--indent-col1-comments
--remove-brackets
--break-after-logical
--delete-empty-lines
--pad-oper
--pad-header
--unpad-paren
--align-pointer=type
--align-reference=type
--attach-classes
--attach-inlines
--keep-one-line-statements
--indent-namespaces

20
.gitignore vendored Normal file
View File

@@ -0,0 +1,20 @@
// Our automatic versioning scheme generates the following file
// NEVER put it in the repository
_Version.h
// All of the following OS, IDE and compiler generated file
// references should be moved from this file
// They are needed, but they belong in your global .gitignore
// rather than in a per-project file such as this
*.o
applet/
*~
*.orig
*.rej
*.bak
*.DS_Store
*.idea
*.s
*.i
*.ii

241
.travis.yml Normal file
View File

@@ -0,0 +1,241 @@
---
language: c
#
before_install:
# Travis runs a detached head. We need to find the current branch
- git checkout `git branch --contains HEAD | grep -v '*'`
# Also tags for the root(s) of the minor version(s)
- git fetch origin --tags
- mkdir ~/bin
#
install:
# Install arduino 1.6.4
- wget http://downloads-02.arduino.cc/arduino-1.6.4-linux64.tar.xz
- tar Jxf arduino-1.6.4-linux64.tar.xz
- sudo mv arduino-1.6.4 /usr/local/share/arduino
- ln -s /usr/local/share/arduino/arduino ~/bin/arduino
# Our custom build commands
- mv LinuxAddons/bin/* ~/bin/
- ls -la ~/bin
# install our platform
- cp -r ArduinoAddons/Arduino_1.6.x/hardware/* /usr/local/share/arduino/hardware
# copy libraries to arduino dir, as conditional includes do not work in .ino files
- cp -r /usr/local/share/arduino/hardware/marlin/avr/libraries/* /usr/local/share/arduino/libraries/
- cp -r ArduinoAddons/Arduino_1.6.x/libraries/* /usr/local/share/arduino/libraries/
# add LiquidCrystal_I2C & LiquidTWI2 libraries
- git clone https://github.com/kiyoshigawa/LiquidCrystal_I2C.git
- mv LiquidCrystal_I2C/LiquidCrystal_I2C /usr/local/share/arduino/libraries/LiquidCrystal_I2C
- git clone https://github.com/lincomatic/LiquidTWI2.git
- mv LiquidTWI2 /usr/local/share/arduino/libraries/LiquidTWI2
#
before_script:
# arduino requires an X server even with command line
# https://github.com/arduino/Arduino/issues/1981
- Xvfb :1 -screen 0 1024x768x16 &> xvfb.log &
# change back to home directory for compiling
- cd $TRAVIS_BUILD_DIR
#
script:
#
# Backup Configuration.h, Configuration_adv.h, and pins_RAMPS_14.h
#
- cp Marlin/Configuration.h Marlin/Configuration.h.backup
- cp Marlin/Configuration_adv.h Marlin/Configuration_adv.h.backup
- cp Marlin/pins_RAMPS_14.h Marlin/pins_RAMPS_14.h.backup
#
# Build with the default configurations
#
- build_marlin
#
# Test heated bed temperature sensor
#
- opt_set TEMP_SENSOR_BED 1
- build_marlin
#
# Test 2 extruders on basic RAMPS 1.4
#
- opt_set MOTHERBOARD BOARD_RAMPS_14_EEB
- opt_set EXTRUDERS 2
- opt_set TEMP_SENSOR_1 1
- build_marlin
#
# Test 3 extruders on RUMBA (can use any board with >=3 extruders defined)
#
- opt_set MOTHERBOARD BOARD_RUMBA
- opt_set EXTRUDERS 3
- opt_set TEMP_SENSOR_2 1
- build_marlin
#
# Test PIDTEMPBED
#
- restore_configs
- opt_enable PIDTEMPBED
- build_marlin
#
# Test AUTO_BED_LEVELING & DEBUG_LEVELING_FEATURE
#
- restore_configs
- opt_enable ENABLE_AUTO_BED_LEVELING DEBUG_LEVELING_FEATURE
- build_marlin
#
# Test AUTO_BED_LEVELING & DEBUG_LEVELING_FEATURE with Servos
#
- opt_enable NUM_SERVOS Z_ENDSTOP_SERVO_NR SERVO_ENDSTOP_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE
- build_marlin
#
# Test EEPROM_SETTINGS & EEPROM_CHITCHAT
#
- restore_configs
- opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT
- build_marlin
#
### LCDS ###
#
#
# ULTIMAKERCONTROLLER
#
- restore_configs
- opt_enable ULTIMAKERCONTROLLER
- build_marlin
#
# MAKRPANEL
# Needs to use Melzi and Sanguino hardware
#
#- restore_configs
#- opt_enable MAKRPANEL
#- build_marlin
#
# REPRAP_DISCOUNT_SMART_CONTROLLER
#
- restore_configs
- opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT
- build_marlin
#
# G3D_PANEL
#
- restore_configs
- opt_enable G3D_PANEL SDSUPPORT
- build_marlin
#
# REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
#
- restore_configs
- opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT
- build_marlin
#
# REPRAPWORLD_KEYPAD
#
# Cant find configuration details to get it to compile
#- restore_configs
#- opt_enable ULTRA_LCD REPRAPWORLD_KEYPAD REPRAPWORLD_KEYPAD_MOVE_STEP
#- build_marlin
#
# RA_CONTROL_PANEL
#
- restore_configs
- opt_enable RA_CONTROL_PANEL
- build_marlin
#
### I2C PANELS ###
#
# LCD_I2C_SAINSMART_YWROBOT
# Failing at the moment needs different library
#- restore_configs
#- opt_enable LCD_I2C_SAINSMART_YWROBOT
#- build_marlin
#
# LCD_I2C_PANELOLU2
#
- restore_configs
- opt_enable LCD_I2C_PANELOLU2
- build_marlin
#
# LCD_I2C_VIKI
#
- restore_configs
- opt_enable LCD_I2C_VIKI
- build_marlin
#
# LCM1602
#
- restore_configs
- opt_enable LCM1602
- build_marlin
#
# Enable FILAMENTCHANGEENABLE
#
- restore_configs
- opt_enable FILAMENTCHANGEENABLE ULTIMAKERCONTROLLER
- build_marlin
#
# Enable filament sensor
#
- restore_configs
- opt_enable FILAMENT_WIDTH_SENSOR
- build_marlin
#
# Enable filament sensor with LCD display
#
- opt_enable ULTIMAKERCONTROLLER FILAMENT_LCD_DISPLAY
- build_marlin
#
# Enable COREXY
#
- restore_configs
- opt_enable COREXY
- build_marlin
#
# Enable COREXZ
#
- restore_configs
- opt_enable COREXZ
- build_marlin
#
# Enable Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS
#
- restore_configs
- opt_enable_adv Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
- pins_set RAMPS_14 X_MAX_PIN -1
- opt_set_adv Z2_MAX_PIN 2
- build_marlin
#
#
######## Example Configurations ##############
#
# Delta Config (generic)
- restore_configs
- use_example_configs delta/generic
- build_marlin
#
# Delta Config (generic) + ABL + ALLEN_KEY
#
- use_example_configs delta/generic
- opt_disable DISABLE_MIN_ENDSTOPS
- opt_enable AUTO_BED_LEVELING_FEATURE Z_PROBE_ALLEN_KEY
- build_marlin
#
# Delta Config (Mini Kossel)
#
- use_example_configs delta/kossel_mini
- build_marlin
#
# Makibox Config need to check board type for Teensy++ 2.0
#
#- use_example_configs makibox
#- build_marlin
#
# SCARA Config
#
- use_example_configs SCARA
- build_marlin
#
# tvrrug Config need to check board type for sanguino atmega644p
#
#- use_example_configs tvrrug/Round2
#- build_marlin
#
#
######## Board Types #############
#
# To be added in nightly test branch
#

View File

@@ -0,0 +1,23 @@
##############################################################
omc.name=OMC with Atmega644 at 20Mhz
omc.upload.maximum_size=63488
omc.upload.maximum_data_size=4096
omc.upload.protocol=stk500v2
omc.upload.speed=115200
omc.bootloader.path=OMC
omc.bootloader.file=bootloader-644-20MHz.hex
omc.bootloader.low_fuses=0xE7
omc.bootloader.high_fuses=0xD4
omc.bootloader.extended_fuses=0xFC
omc.bootloader.unlock_bits=0x3F
omc.bootloader.lock_bits=0x0F
omc.build.mcu=atmega644
omc.build.f_cpu=20000000L
omc.build.board=AVR_OMC
omc.build.core=arduino:arduino
omc.build.variant=sanguino

View File

@@ -0,0 +1,75 @@
:10F800008FEF90E19EBF8DBF11241FBE5A9A00C09A
:10F81000CDB7DEB7CD51D140DEBFCDBF1092C50010
:10F820008AE08093C40088E18093C100EE24FF2425
:10F8300020E0552400E010E039E0432E9BE0292E23
:10F84000312C2C0E3D1ECFC14150504060407040C5
:10F8500011F43FE206C08091C00087FFF5CF3091E0
:10F86000C600933021F1943028F4913099F0923011
:10F87000C8F407C0953049F1953000F19630D1F5C4
:10F8800035C03B3119F491E02BE134C03F3291F5A2
:10F890003983BBC1313011F0351559F52327532E6B
:10F8A00092E028C0B32FA0E0232793E023C0832F4A
:10F8B00090E0A82BB92B232794E01CC03E30C9F45C
:10F8C000232795E0EE24FF2415C0E1E0F0E0EC0FE3
:10F8D000FD1FEE0DFF1D30830894E11CF11C232752
:10F8E000EA16FB0639F4D70196E004C0321709F492
:10F8F0008CC190E041ED5AE363E570E0ACCF90E05D
:10F9000044C08D81803311F090E00AC08F8188233C
:10F9100011F49EE105C0813011F099E001C096E933
:10F920001A821B828D818C838E818D839E831F82A0
:10F9300047E050E0F4C01A8288E08B8381E48C8336
:10F9400086E58D8382E58E8389E48F8383E58887CE
:10F9500080E589878FE58A8782E38B874BE050E0DB
:10F96000DEC08A81813941F0823941F0803911F459
:10F970008FE005C080E003C082E001C08AE01A8207
:10F980008B8343E050E0CBC091E01A8242E050E02C
:10F99000C7C08D81882311F48EE124C0813011F01D
:10F9A00089E020C086E91EC01A82E1E0F0E04092C2
:10F9B0005700849118C08B81803579F48C81883010
:10F9C00031F4E2E0F0E04092570084910BC0E0E0B7
:10F9D000F0E040925700849105C0E3E0F0E04092EF
:10F9E000570084911A828B831C8244E050E097C0B8
:10F9F000BC80AA248D81082F10E00A291B29000F42
:10FA0000111F1A828AC09A8088248B81682F70E027
:10FA100068297929933109F033C0F7EF0F3F1F07A9
:10FA200010F0A8013FC023E0F80120935700E895AB
:10FA300007B600FCFDCFA801D1018C9111962C9145
:10FA400011971296D22ECC2490E08C299D2921E08A
:10FA5000FA010C0120935700E89511244E5F5F4F87
:10FA60006250704051F725E0F80120935700E89567
:10FA700007B600FCFDCF81E180935700E89512C0E6
:10FA8000A801FB01D10141BD52BD4F5F5F4F8D9178
:10FA900080BDFA9AF99AF999FECF3197A1F7A8019A
:10FAA000460F571F1A828A0138C07A8066248B81DC
:10FAB000A82FB0E0A629B7291A828981843191F450
:10FAC000BD019E012D5F3F4FF80185919491F90191
:10FAD000808391832E5F3F4F0E5F1F4F62507040B7
:10FAE00099F713C0A801BD019E012D5F3F4F41BD95
:10FAF00052BD4F5F5F4FF89A80B5F90181939F0126
:10FB000061507040A1F70A0F1B1FAD014D5F5F4FA1
:10FB1000F901108204C080EC8A8342E050E090E05A
:10FB2000FBE1F093C6008091C00086FFFCCF80917E
:10FB3000C00080648093C0005092C6008091C000D5
:10FB400086FFFCCF8091C00080648093C000652F49
:10FB50005093C6008091C00086FFFCCF8091C0000A
:10FB600080648093C000342F4093C6008091C00011
:10FB700086FFFCCF8091C00080648093C0008EE03F
:10FB80008093C6008091C00086FFFCCF8091C000AA
:10FB900080648093C00025E1252523272627FE01C8
:10FBA000319610C030813093C6008091C00086FF2E
:10FBB000FCCF31968091C00080648093C0002327E1
:10FBC000415050404115510569F72093C60080917E
:10FBD000C00086FFFCCF8091C00080648093C0008D
:10FBE000992349F4539441ED5AE363E570E090E0C2
:10FBF000A0E0B0E030CE5A9881E180935700E895BC
:10FC000011241F921F920895FFCF9981933109F417
:10FC1000FACE9431C8F4963009F4EACE973050F415
:10FC2000923009F46CCE933009F49BCE913009F0F8
:10FC300072CF81CE913109F4A7CE923108F0E1CE96
:10FC4000903109F068CF5BCE983109F4B4CE993188
:10FC500050F4953109F4D7CE953108F426CF96317A
:10FC600009F059CF22CF9B3109F493CE9C3120F477
:10FC70009A3109F050CF98CE9D3109F442CE9F328F
:06FC800009F049CFB8CFE6
:040000030000F80001
:00000001FF

View File

@@ -0,0 +1,269 @@
/*
pins_arduino.h - Pin definition functions for Arduino
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2007 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
$Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
Changelog
-----------
11/25/11 - ryan@ryanmsutton.com - Add pins for Sanguino 644P and 1284P
07/15/12 - ryan@ryanmsutton.com - Updated for arduino0101
Improvements by Kristian Lauszus, kristianl@tkjelectronics.dk
*/
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
#include <avr/pgmspace.h>
const static uint8_t SS = 4;
const static uint8_t MOSI = 5;
const static uint8_t MISO = 6;
const static uint8_t SCK = 7;
static const uint8_t SDA = 17;
static const uint8_t SCL = 16;
#define LED_BUILTIN 0
static const uint8_t A0 = 31;
static const uint8_t A1 = 30;
static const uint8_t A2 = 29;
static const uint8_t A3 = 28;
static const uint8_t A4 = 27;
static const uint8_t A5 = 26;
static const uint8_t A6 = 25;
static const uint8_t A7 = 24;
// ATMEL ATMEGA644/ATMEGA1284 / SANGUINO
//
// +---\/---+
// (D 0) PB0 1| |40 PA0 (AI 0 / D31)
// (D 1) PB1 2| |39 PA1 (AI 1 / D30)
// INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29)
// PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28)
// SS PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27)
// MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26)
// MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25)
// SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24)
// RST 9| |32 AREF
// VCC 10| |31 GND
// GND 11| |30 AVCC
// XTAL2 12| |29 PC7 (D 23)
// XTAL1 13| |28 PC6 (D 22)
// RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI
// TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO
// INT0 RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS
// INT1 TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK
// PWM (D 12) PD4 18| |23 PC1 (D 17) SDA
// PWM (D 13) PD5 19| |22 PC0 (D 16) SCL
// PWM (D 14) PD6 20| |21 PD7 (D 15) PWM
// +--------+
//
#define NUM_DIGITAL_PINS 24
#define NUM_ANALOG_INPUTS 8
#define analogInputToDigitalPin(p) ((p < 8) ? 31 - (p): -1)
#define analogPinToChannel(p) ((p < 8) ? (p) : 31 - (p))
#define digitalPinHasPWM(p) ((p) == 3 || (p) == 4 || (p) == 12 || (p) == 13 || (p) == 14 || (p) == 15 )
#define digitalPinToPCICR(p) ( (((p) >= 0) && ((p) <= 31)) ? (&PCICR) : ((uint8_t *)0) )
#define digitalPinToPCICRbit(p) ( (((p) >= 24) && ((p) <= 31)) ? 0 : \
( (((p) >= 0) && ((p) <= 7)) ? 1 : \
( (((p) >= 16) && ((p) <= 23)) ? 2 : \
( (((p) >= 8) && ((p) <= 15)) ? 3 : \
0 ) ) ) )
#define digitalPinToPCMSK(p) ( (((p) >= 24) && ((p) <= 31)) ? (&PCMSK0) : \
( (((p) >= 0) && ((p) <= 7)) ? (&PCMSK1) : \
( (((p) >= 16) && ((p) <= 23)) ? (&PCMSK2) : \
( (((p) >= 8) && ((p) <= 15)) ? (&PCMSK3) : \
((uint8_t *)0) ) ) ) )
#define digitalPinToPCMSKbit(p) ( (((p) >= 24) && ((p) <= 31)) ? (31 - (p)) : \
( (((p) >= 0) && ((p) <= 7)) ? (p) : \
( (((p) >= 16) && ((p) <= 23)) ? ((p) - 16) : \
( (((p) >= 8) && ((p) <= 15)) ? ((p) - 8) : \
0 ) ) ) )
#define digitalPinToInterrupt(p) ((p) == 10 ? 0 : ((p) == 11 ? 1 : ((p) == 2 ? 2 : NOT_AN_INTERRUPT)))
#ifdef ARDUINO_MAIN
// these arrays map port names (e.g. port B) to the
// appropriate addresses for various functions (e.g. reading
// and writing)
const uint16_t PROGMEM port_to_mode_PGM[] =
{
NOT_A_PORT,
(uint16_t) &DDRA,
(uint16_t) &DDRB,
(uint16_t) &DDRC,
(uint16_t) &DDRD,
};
const uint16_t PROGMEM port_to_output_PGM[] =
{
NOT_A_PORT,
(uint16_t) &PORTA,
(uint16_t) &PORTB,
(uint16_t) &PORTC,
(uint16_t) &PORTD,
};
const uint16_t PROGMEM port_to_input_PGM[] =
{
NOT_A_PORT,
(uint16_t) &PINA,
(uint16_t) &PINB,
(uint16_t) &PINC,
(uint16_t) &PIND,
};
const uint8_t PROGMEM digital_pin_to_port_PGM[] =
{
PB, /* 0 */
PB,
PB,
PB,
PB,
PB,
PB,
PB,
PD, /* 8 */
PD,
PD,
PD,
PD,
PD,
PD,
PD,
PC, /* 16 */
PC,
PC,
PC,
PC,
PC,
PC,
PC,
PA, /* 24 */
PA,
PA,
PA,
PA,
PA,
PA,
PA /* 31 */
};
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] =
{
_BV(0), /* 0, port B */
_BV(1),
_BV(2),
_BV(3),
_BV(4),
_BV(5),
_BV(6),
_BV(7),
_BV(0), /* 8, port D */
_BV(1),
_BV(2),
_BV(3),
_BV(4),
_BV(5),
_BV(6),
_BV(7),
_BV(0), /* 16, port C */
_BV(1),
_BV(2),
_BV(3),
_BV(4),
_BV(5),
_BV(6),
_BV(7),
_BV(7), /* 24, port A */
_BV(6),
_BV(5),
_BV(4),
_BV(3),
_BV(2),
_BV(1),
_BV(0)
};
const uint8_t PROGMEM digital_pin_to_timer_PGM[] =
{
NOT_ON_TIMER, /* 0 - PB0 */
NOT_ON_TIMER, /* 1 - PB1 */
NOT_ON_TIMER, /* 2 - PB2 */
TIMER0A, /* 3 - PB3 */
TIMER0B, /* 4 - PB4 */
NOT_ON_TIMER, /* 5 - PB5 */
NOT_ON_TIMER, /* 6 - PB6 */
NOT_ON_TIMER, /* 7 - PB7 */
NOT_ON_TIMER, /* 8 - PD0 */
NOT_ON_TIMER, /* 9 - PD1 */
NOT_ON_TIMER, /* 10 - PD2 */
NOT_ON_TIMER, /* 11 - PD3 */
TIMER1B, /* 12 - PD4 */
TIMER1A, /* 13 - PD5 */
TIMER2B, /* 14 - PD6 */
TIMER2A, /* 15 - PD7 */
NOT_ON_TIMER, /* 16 - PC0 */
NOT_ON_TIMER, /* 17 - PC1 */
NOT_ON_TIMER, /* 18 - PC2 */
NOT_ON_TIMER, /* 19 - PC3 */
NOT_ON_TIMER, /* 20 - PC4 */
NOT_ON_TIMER, /* 21 - PC5 */
NOT_ON_TIMER, /* 22 - PC6 */
NOT_ON_TIMER, /* 23 - PC7 */
NOT_ON_TIMER, /* 24 - PA0 */
NOT_ON_TIMER, /* 25 - PA1 */
NOT_ON_TIMER, /* 26 - PA2 */
NOT_ON_TIMER, /* 27 - PA3 */
NOT_ON_TIMER, /* 28 - PA4 */
NOT_ON_TIMER, /* 29 - PA5 */
NOT_ON_TIMER, /* 30 - PA6 */
NOT_ON_TIMER /* 31 - PA7 */
};
#endif
// These serial port names are intended to allow libraries and architecture-neutral
// sketches to automatically default to the correct port name for a particular type
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
//
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
//
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
//
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
//
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
//
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
// pins are NOT connected to anything by default.
#define SERIAL_PORT_MONITOR Serial
#define SERIAL_PORT_HARDWARE Serial
#define SERIAL_PORT_HARDWARE1 Serial1
#define SERIAL_PORT_HARDWARE_OPEN Serial1
#endif

View File

@@ -0,0 +1,83 @@
############################################################
atmega644.name=Sanguino W/ ATmega644P
atmega644.upload.protocol=stk500
atmega644.upload.maximum_size=63488
atmega644.upload.speed=57600
atmega644.bootloader.low_fuses=0xFF
atmega644.bootloader.high_fuses=0x9A
atmega644.bootloader.extended_fuses=0xFF
atmega644.bootloader.path=atmega
atmega644.bootloader.file=ATmegaBOOT_168_atmega644p.hex
#atmega644.bootloader.file=ATmegaBOOT_644P.hex
atmega644.bootloader.unlock_bits=0x3F
atmega644.bootloader.lock_bits=0x0F
atmega644.build.mcu=atmega644p
atmega644.build.f_cpu=16000000L
atmega644.build.core=arduino
atmega644.build.variant=standard
##############################################################
atmega12848m.name=Sanguino W/ ATmega1284p 8mhz
atmega12848m.upload.protocol=stk500
atmega12848m.upload.maximum_size=131072
atmega12848m.upload.speed=19200
atmega1284.bootloader.low_fuses=0xD6
atmega1284.bootloader.high_fuses=0xDA
atmega1284.bootloader.extended_fuses=0xFD
atmega12848m.bootloader.path=atmega
atmega12848m.bootloader.file=ATmegaBOOT_168_atmega1284p_8m.hex
atmega12848m.bootloader.unlock_bits=0x3F
atmega12848m.bootloader.lock_bits=0x0F
atmega12848m.build.mcu=atmega1284p
atmega12848m.build.f_cpu=8000000L
atmega12848m.build.core=arduino
atmega12848m.build.variant=standard
##############################################################
atmega1284.name=Sanguino W/ ATmega1284p 16mhz
atmega1284.upload.protocol=stk500
atmega1284.upload.maximum_size=131072
atmega1284.upload.speed=57600
atmega1284.bootloader.low_fuses=0xD6
atmega1284.bootloader.high_fuses=0xDA
atmega1284.bootloader.extended_fuses=0xFD
atmega1284.bootloader.path=atmega
atmega1284.bootloader.file=ATmegaBOOT_168_atmega1284p.hex
atmega1284.bootloader.unlock_bits=0x3F
atmega1284.bootloader.lock_bits=0x0F
atmega1284.build.mcu=atmega1284p
atmega1284.build.f_cpu=16000000L
atmega1284.build.core=arduino
atmega1284.build.variant=standard
##############################################################
atmega1284m.name=Sanguino W/ ATmega1284p 20mhz
atmega1284m.upload.protocol=stk500
atmega1284m.upload.maximum_size=131072
atmega1284m.upload.speed=57600
atmega1284m.bootloader.low_fuses=0xD6
atmega1284m.bootloader.high_fuses=0xDA
atmega1284m.bootloader.extended_fuses=0xFD
atmega1284m.bootloader.path=atmega
atmega1284m.bootloader.file=ATmegaBOOT_168_atmega1284p.hex
atmega1284m.bootloader.unlock_bits=0x3F
atmega1284m.bootloader.lock_bits=0x0F
atmega1284m.build.mcu=atmega1284p
atmega1284m.build.f_cpu=20000000L
atmega1284m.build.core=arduino
atmega1284m.build.variant=standard
#

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,130 @@
:020000021000EC
:10F000000C9446F80C9465F80C9465F80C9465F82B
:10F010000C9465F80C9465F80C9465F80C9465F8FC
:10F020000C9465F80C9465F80C9465F80C9465F8EC
:10F030000C9465F80C9465F80C9465F80C9465F8DC
:10F040000C9465F80C9465F80C9465F80C9465F8CC
:10F050000C9465F80C9465F80C9465F80C9465F8BC
:10F060000C9465F80C9465F80C9465F80C9465F8AC
:10F070000C9465F80C9465F80C9465F80C9465F89C
:10F080000C9465F80C9465F80C9465F811241FBE77
:10F09000CFEFD0E4DEBFCDBF11E0A0E0B1E0E8EDFE
:10F0A000F7EF01E00BBF02C007900D92A230B1074D
:10F0B000D9F712E0A2E0B1E001C01D92AD30B10776
:10F0C000E1F70E947EF90C94EAFB0C9400F8909111
:10F0D0000201913019F0923041F008959091C000F2
:10F0E00095FFFCCF8093C60008959091C80095FFCE
:10F0F000FCCF8093CE0008951F93982F95959595FA
:10F1000095959595905D182F1F701A304CF4105DF1
:10F11000892F0E9467F8812F0E9467F81F91089538
:10F12000195A892F0E9467F8812F0E9467F81F9152
:10F130000895EF92FF920F931F9380910201813007
:10F1400069F1823031F080E01F910F91FF90EF90D4
:10F150000895EE24FF2487018091C80087FD17C021
:10F160000894E11CF11C011D111D81E4E81682E4E4
:10F17000F8068FE0080780E0180770F3E0910401BB
:10F18000F091050109958091C80087FFE9CF809132
:10F19000CE001F910F91FF90EF900895EE24FF2471
:10F1A00087018091C00087FD17C00894E11CF11C05
:10F1B000011D111D81E4E81682E4F8068FE00807BE
:10F1C00080E0180770F3E0910401F09105010995C2
:10F1D0008091C00087FFE9CF8091C6001F910F91F9
:10F1E000FF90EF9008951F930E9499F8182F0E94A6
:10F1F00067F8113634F410330CF01053812F1F913F
:10F2000008951755812F1F9108951F930E94F3F8B9
:10F21000182F0E94F3F81295107F810F1F91089507
:10F2200020910201882339F0213031F0223061F041
:10F2300081508823C9F708959091C00097FFFCCFB3
:10F240009091C6008150F5CF9091C80097FFFCCFF8
:10F250009091CE008150EDCF1F93182F0E9499F806
:10F26000803281F0809103018F5F809303018530AC
:10F2700011F01F910895E0910401F09105010995A5
:10F280001F91089584E10E9467F8812F0E9467F81A
:10F2900080E10E9467F8EDCF0E9499F8803271F00A
:10F2A000809103018F5F80930301853009F00895F9
:10F2B000E0910401F09105010995089584E10E940F
:10F2C00067F880E10E9467F8089515C0289A2FEF2B
:10F2D00031EE44E0215030404040E1F700C00000F2
:10F2E00028982FEF31EE44E0215030404040E1F7C4
:10F2F00000C000008150882349F70895EF92FF92E3
:10F300000F931F93CF93DF93000081E0809302015E
:10F3100080E18093C4001092C5001092C00086E086
:10F320008093C20088E18093C100209A81E00E940E
:10F3300065F90E9499F88033B1F18133B9F18034D5
:10F3400009F454C0813409F45AC0823409F469C004
:10F35000853409F46CC0803531F1823521F1813575
:10F3600011F1853509F469C0863509F471C0843618
:10F3700009F47AC0843709F4E1C0853709F43FC144
:10F38000863709F44AC0809103018F5F809303019F
:10F39000853079F6E0910401F091050109950E940C
:10F3A00099F8803351F60E944CF9C3CF0E9499F826
:10F3B000803249F784E10E9467F881E40E9467F88F
:10F3C00086E50E9467F882E50E9467F880E20E9465
:10F3D00067F889E40E9467F883E50E9467F880E592
:10F3E0000E9467F880E10E9467F8A3CF0E9499F815
:10F3F0008638C8F20E9499F80E944CF99ACF0E9470
:10F4000099F8803809F414C1813809F415C182389B
:10F4100009F416C1883909F407C180E00E942CF96B
:10F4200088CF84E10E9410F90E944CF982CF85E0D8
:10F430000E9410F90E944CF97CCF0E9499F88093A9
:10F4400006010E9499F8809307010E944CF971CF40
:10F450000E9499F8803309F405C183E00E9410F9F5
:10F4600080E00E942CF965CF0E9499F880930902F0
:10F470000E9499F88093080280910C028E7F8093FD
:10F480000C020E9499F8853409F4FDC080910802AD
:10F49000909109020097A1F068E0E62E61E0F62E57
:10F4A00000E010E00E9499F8F70181937F010F5F5F
:10F4B0001F4F80910802909109020817190790F3D5
:10F4C0000E9499F8803209F05ECF80910C0280FF93
:10F4D000ECC08091060190910701880F991F9093CD
:10F4E000070180930601209108023091090221153D
:10F4F0003105E9F048E0E42E41E0F42E00E010E0B0
:10F50000F70161917F010E94DCFB809106019091DF
:10F510000701019690930701809306010F5F1F4F2B
:10F5200020910802309109020217130748F384E181
:10F530000E9467F880E10E9467F8FBCE0E9499F86C
:10F54000809309020E9499F8809308028091060135
:10F550009091070197FDA3C020910C022D7F20936D
:10F560000C02880F991F90930701809306010E9457
:10F5700099F8853409F48DC080910C028E7F8093B8
:10F580000C020E9499F8803209F0D3CE84E10E94E7
:10F5900067F88091080290910902009709F440C031
:10F5A00000E010E0809106019091070116C0FC0177
:10F5B00084910E9467F8809106019091070101965D
:10F5C00090930701809306010F5F1F4F209108025F
:10F5D000309109020217130718F520910C0220FD43
:10F5E00033C021FFE4CFA0E0B0E080509040AF4FA7
:10F5F000BF4FABBFFC0187910E9467F8DCCF0E9430
:10F6000099F8803209F0BFCE84E10E9467F88EE15C
:10F610000E9467F887E90E9467F885E00E9467F812
:10F6200080E10E9467F885CE83E00E942CF981CEAC
:10F6300082E00E942CF97DCE81E00E942CF979CEE7
:10F6400080E10E942CF975CE0E94D4FB0E9467F8DD
:10F650008091060190910701019690930701809394
:10F660000601B2CF0E9499F80E9499F8082F0E94D3
:10F6700099F8002309F48BC0013009F48CC085E0AF
:10F680000E942CF956CE80910C02816080930C026E
:10F69000FDCE80910C02816080930C0272CF20918C
:10F6A0000C02226020930C025CCF8091070187FD41
:10F6B00076C010920B0280E08BBF80910601909182
:10F6C0000701880F991F909307018093060180918D
:10F6D000080280FF09C080910802909109020196FA
:10F6E0009093090280930802F894F999FECF1127AC
:10F6F000E0910601F0910701C8E0D1E08091080295
:10F7000090910902103091F400915700017001307E
:10F71000D9F303E000935700E8950091570001707A
:10F720000130D9F301E100935700E8950990199051
:10F730000091570001700130D9F301E000935700A8
:10F74000E8951395103898F0112700915700017033
:10F750000130D9F305E000935700E8950091570078
:10F7600001700130D9F301E100935700E89532961A
:10F77000029709F0C7CF103011F00296E5CF11249F
:10F7800084E10E9467F880E10E9467F8D2CD8EE1A3
:10F790000E942CF9CECD87E90E942CF9CACDF1E068
:10F7A000F0930B0281E088CFF999FECF92BD81BD25
:10F7B000F89A992780B50895262FF999FECF1FBA98
:10F7C00092BD81BD20BD0FB6F894FA9AF99A0FBE8A
:08F7D00001960895F894FFCFA3
:02F7D8008000AF
:040000031000F000F9
:00000001FF

View File

@@ -0,0 +1,130 @@
:020000021000EC
:10F000000C9446F80C9465F80C9465F80C9465F82B
:10F010000C9465F80C9465F80C9465F80C9465F8FC
:10F020000C9465F80C9465F80C9465F80C9465F8EC
:10F030000C9465F80C9465F80C9465F80C9465F8DC
:10F040000C9465F80C9465F80C9465F80C9465F8CC
:10F050000C9465F80C9465F80C9465F80C9465F8BC
:10F060000C9465F80C9465F80C9465F80C9465F8AC
:10F070000C9465F80C9465F80C9465F80C9465F89C
:10F080000C9465F80C9465F80C9465F811241FBE77
:10F09000CFEFD0E4DEBFCDBF11E0A0E0B1E0E8EDFE
:10F0A000F7EF01E00BBF02C007900D92A230B1074D
:10F0B000D9F712E0A2E0B1E001C01D92AD30B10776
:10F0C000E1F70E947EF90C94EAFB0C9400F8909111
:10F0D0000201913019F0923041F008959091C000F2
:10F0E00095FFFCCF8093C60008959091C80095FFCE
:10F0F000FCCF8093CE0008951F93982F95959595FA
:10F1000095959595905D182F1F701A304CF4105DF1
:10F11000892F0E9467F8812F0E9467F81F91089538
:10F12000195A892F0E9467F8812F0E9467F81F9152
:10F130000895EF92FF920F931F9380910201813007
:10F1400069F1823031F080E01F910F91FF90EF90D4
:10F150000895EE24FF2487018091C80087FD17C021
:10F160000894E11CF11C011D111D81E2E81681EAE1
:10F17000F80687E0080780E0180770F3E0910401C3
:10F18000F091050109958091C80087FFE9CF809132
:10F19000CE001F910F91FF90EF900895EE24FF2471
:10F1A00087018091C00087FD17C00894E11CF11C05
:10F1B000011D111D81E2E81681EAF80687E00807C3
:10F1C00080E0180770F3E0910401F09105010995C2
:10F1D0008091C00087FFE9CF8091C6001F910F91F9
:10F1E000FF90EF9008951F930E9499F8182F0E94A6
:10F1F00067F8113634F410330CF01053812F1F913F
:10F2000008951755812F1F9108951F930E94F3F8B9
:10F21000182F0E94F3F81295107F810F1F91089507
:10F2200020910201882339F0213031F0223061F041
:10F2300081508823C9F708959091C00097FFFCCFB3
:10F240009091C6008150F5CF9091C80097FFFCCFF8
:10F250009091CE008150EDCF1F93182F0E9499F806
:10F26000803281F0809103018F5F809303018530AC
:10F2700011F01F910895E0910401F09105010995A5
:10F280001F91089584E10E9467F8812F0E9467F81A
:10F2900080E10E9467F8EDCF0E9499F8803271F00A
:10F2A000809103018F5F80930301853009F00895F9
:10F2B000E0910401F09105010995089584E10E940F
:10F2C00067F880E10E9467F8089515C0289A2FEF2B
:10F2D00030E742E0215030404040E1F700C00000FC
:10F2E00028982FEF30E742E0215030404040E1F7CE
:10F2F00000C000008150882349F70895EF92FF92E3
:10F300000F931F93CF93DF93000081E0809302015E
:10F3100089E18093C4001092C5001092C00086E07D
:10F320008093C20088E18093C100209A81E00E940E
:10F3300065F90E9499F88033B1F18133B9F18034D5
:10F3400009F454C0813409F45AC0823409F469C004
:10F35000853409F46CC0803531F1823521F1813575
:10F3600011F1853509F469C0863509F471C0843618
:10F3700009F47AC0843709F4E1C0853709F43FC144
:10F38000863709F44AC0809103018F5F809303019F
:10F39000853079F6E0910401F091050109950E940C
:10F3A00099F8803351F60E944CF9C3CF0E9499F826
:10F3B000803249F784E10E9467F881E40E9467F88F
:10F3C00086E50E9467F882E50E9467F880E20E9465
:10F3D00067F889E40E9467F883E50E9467F880E592
:10F3E0000E9467F880E10E9467F8A3CF0E9499F815
:10F3F0008638C8F20E9499F80E944CF99ACF0E9470
:10F4000099F8803809F414C1813809F415C182389B
:10F4100009F416C1883909F407C180E00E942CF96B
:10F4200088CF84E10E9410F90E944CF982CF85E0D8
:10F430000E9410F90E944CF97CCF0E9499F88093A9
:10F4400006010E9499F8809307010E944CF971CF40
:10F450000E9499F8803309F405C183E00E9410F9F5
:10F4600080E00E942CF965CF0E9499F880930902F0
:10F470000E9499F88093080280910C028E7F8093FD
:10F480000C020E9499F8853409F4FDC080910802AD
:10F49000909109020097A1F068E0E62E61E0F62E57
:10F4A00000E010E00E9499F8F70181937F010F5F5F
:10F4B0001F4F80910802909109020817190790F3D5
:10F4C0000E9499F8803209F05ECF80910C0280FF93
:10F4D000ECC08091060190910701880F991F9093CD
:10F4E000070180930601209108023091090221153D
:10F4F0003105E9F048E0E42E41E0F42E00E010E0B0
:10F50000F70161917F010E94DCFB809106019091DF
:10F510000701019690930701809306010F5F1F4F2B
:10F5200020910802309109020217130748F384E181
:10F530000E9467F880E10E9467F8FBCE0E9499F86C
:10F54000809309020E9499F8809308028091060135
:10F550009091070197FDA3C020910C022D7F20936D
:10F560000C02880F991F90930701809306010E9457
:10F5700099F8853409F48DC080910C028E7F8093B8
:10F580000C020E9499F8803209F0D3CE84E10E94E7
:10F5900067F88091080290910902009709F440C031
:10F5A00000E010E0809106019091070116C0FC0177
:10F5B00084910E9467F8809106019091070101965D
:10F5C00090930701809306010F5F1F4F209108025F
:10F5D000309109020217130718F520910C0220FD43
:10F5E00033C021FFE4CFA0E0B0E080509040AF4FA7
:10F5F000BF4FABBFFC0187910E9467F8DCCF0E9430
:10F6000099F8803209F0BFCE84E10E9467F88EE15C
:10F610000E9467F887E90E9467F885E00E9467F812
:10F6200080E10E9467F885CE83E00E942CF981CEAC
:10F6300082E00E942CF97DCE81E00E942CF979CEE7
:10F6400080E10E942CF975CE0E94D4FB0E9467F8DD
:10F650008091060190910701019690930701809394
:10F660000601B2CF0E9499F80E9499F8082F0E94D3
:10F6700099F8002309F48BC0013009F48CC085E0AF
:10F680000E942CF956CE80910C02816080930C026E
:10F69000FDCE80910C02816080930C0272CF20918C
:10F6A0000C02226020930C025CCF8091070187FD41
:10F6B00076C010920B0280E08BBF80910601909182
:10F6C0000701880F991F909307018093060180918D
:10F6D000080280FF09C080910802909109020196FA
:10F6E0009093090280930802F894F999FECF1127AC
:10F6F000E0910601F0910701C8E0D1E08091080295
:10F7000090910902103091F400915700017001307E
:10F71000D9F303E000935700E8950091570001707A
:10F720000130D9F301E100935700E8950990199051
:10F730000091570001700130D9F301E000935700A8
:10F74000E8951395103898F0112700915700017033
:10F750000130D9F305E000935700E8950091570078
:10F7600001700130D9F301E100935700E89532961A
:10F77000029709F0C7CF103011F00296E5CF11249F
:10F7800084E10E9467F880E10E9467F8D2CD8EE1A3
:10F790000E942CF9CECD87E90E942CF9CACDF1E068
:10F7A000F0930B0281E088CFF999FECF92BD81BD25
:10F7B000F89A992780B50895262FF999FECF1FBA98
:10F7C00092BD81BD20BD0FB6F894FA9AF99A0FBE8A
:08F7D00001960895F894FFCFA3
:02F7D8008000AF
:040000031000F000F9
:00000001FF

View File

@@ -0,0 +1,126 @@
:10F800000C943E7C0C945B7C0C945B7C0C945B7C39
:10F810000C945B7C0C945B7C0C945B7C0C945B7C0C
:10F820000C945B7C0C945B7C0C945B7C0C945B7CFC
:10F830000C945B7C0C945B7C0C945B7C0C945B7CEC
:10F840000C945B7C0C945B7C0C945B7C0C945B7CDC
:10F850000C945B7C0C945B7C0C945B7C0C945B7CCC
:10F860000C945B7C0C945B7C0C945B7C0C945B7CBC
:10F870000C945B7C0C945B7C0C945B7C11241FBE11
:10F88000CFEFD0E1DEBFCDBF11E0A0E0B1E0EAEA0A
:10F89000FFEF02C005900D92A230B107D9F712E038
:10F8A000A2E0B1E001C01D92AD30B107E1F70E94C6
:10F8B000747D0C94D37F0C94007C90910201913064
:10F8C00019F0923041F008959091C00095FFFCCF5F
:10F8D0008093C60008959091C80095FFFCCF809357
:10F8E000CE0008951F93982F95959595959595958C
:10F8F000905D182F1F701A304CF4105D892F0E94F4
:10F900005D7C812F0E945D7C1F910895195A892F7B
:10F910000E945D7C812F0E945D7C1F910895EF9273
:10F92000FF920F931F9380910201813069F1823021
:10F9300031F080E01F910F91FF90EF900895EE2439
:10F94000FF2487018091C80087FD17C00894E11C3F
:10F95000F11C011D111D81E4E81682E4F8068FE018
:10F96000080780E0180770F3E0910401F0910501A9
:10F9700009958091C80087FFE9CF8091CE001F9143
:10F980000F91FF90EF900895EE24FF24870180915E
:10F99000C00087FD17C00894E11CF11C011D111D5A
:10F9A00081E4E81682E4F8068FE0080780E0180793
:10F9B00070F3E0910401F091050109958091C00078
:10F9C00087FFE9CF8091C6001F910F91FF90EF90C4
:10F9D00008951F930E948F7C182F0E945D7C113622
:10F9E00034F410330CF01053812F1F9108951755E4
:10F9F000812F1F9108951F930E94E97C182F0E9468
:10FA0000E97C1295107F810F1F91089520910201CA
:10FA1000882339F0213031F0223061F08150882381
:10FA2000C9F708959091C00097FFFCCF9091C60050
:10FA30008150F5CF9091C80097FFFCCF9091CE00F8
:10FA40008150EDCF1F93182F0E948F7C803281F060
:10FA5000809103018F5F80930301853011F01F9126
:10FA60000895E0910401F091050109951F91089511
:10FA700084E10E945D7C812F0E945D7C80E10E9478
:10FA80005D7CEDCF0E948F7C803271F0809103010C
:10FA90008F5F80930301853009F00895E0910401A0
:10FAA000F09105010995089584E10E945D7C80E153
:10FAB0000E945D7C089515C0289A2FEF31EE44E036
:10FAC000215030404040E1F700C0000028982FEF5F
:10FAD00031EE44E0215030404040E1F700C00000EA
:10FAE0008150882349F70895EF92FF920F931F9357
:10FAF000CF93DF93000081E08093020180E1809347
:10FB0000C4001092C5001092C00086E08093C2002D
:10FB100088E18093C100209A81E00E945B7D0E9471
:10FB20008F7C8033B1F18133B9F1803409F454C052
:10FB3000813409F45AC0823409F469C0853409F467
:10FB40006CC0803531F1823521F1813511F1853577
:10FB500009F469C0863509F471C0843609F47AC0A5
:10FB6000843709F4E1C0853709F439C1863709F4CF
:10FB70004AC0809103018F5F80930301853079F63D
:10FB8000E0910401F091050109950E948F7C80337A
:10FB900051F60E94427DC3CF0E948F7C803249F78C
:10FBA00084E10E945D7C81E40E945D7C86E50E9488
:10FBB0005D7C82E50E945D7C80E20E945D7C89E440
:10FBC0000E945D7C83E50E945D7C80E50E945D7CF7
:10FBD00080E10E945D7CA3CF0E948F7C8638C8F2B2
:10FBE0000E948F7C0E94427D9ACF0E948F7C803839
:10FBF00009F40EC1813809F40FC1823809F410C12B
:10FC0000883909F401C180E00E94227D88CF84E117
:10FC10000E94067D0E94427D82CF85E00E94067D83
:10FC20000E94427D7CCF0E948F7C809306010E94BF
:10FC30008F7C809307010E94427D71CF0E948F7C50
:10FC4000803309F4F1C083E00E94067D80E00E94C9
:10FC5000227D65CF0E948F7C809309020E948F7C59
:10FC60008093080280910C028E7F80930C020E9488
:10FC70008F7C853409F4E9C08091080290910902D3
:10FC80000097A1F068E0E62E61E0F62E00E010E0BB
:10FC90000E948F7CF70181937F010F5F1F4F80913E
:10FCA0000802909109020817190790F30E948F7CAF
:10FCB000803209F05ECF80910C0280FFE5C0809118
:10FCC000060190910701880F991F90930701809377
:10FCD0000601209108023091090221153105E9F051
:10FCE00048E0E42E41E0F42E00E010E0F7016191DD
:10FCF0007F010E94C57F80910601909107010196C6
:10FD000090930701809306010F5F1F4F2091080217
:10FD1000309109020217130748F384E10E945D7CC9
:10FD200080E10E945D7CFBCE0E948F7C8093090263
:10FD30000E948F7C809308028091060190910701B8
:10FD400097FD9CC020910C022D7F20930C02880F00
:10FD5000991F90930701809306010E948F7C853440
:10FD600009F486C080910C028E7F80930C020E9461
:10FD70008F7C803209F0D3CE84E10E945D7C20919B
:10FD800008023091090221153105D1F100E010E09F
:10FD900080910601909107010CC041FF5CC0019663
:10FDA00090930701809306010F5F1F4F02171307FF
:10FDB00038F540910C0240FFF0CF0E94BD7F0E94B9
:10FDC0005D7C809106019091070101969093070157
:10FDD000809306012091080230910902E5CF0E942C
:10FDE0008F7C803209F0C5CE84E10E945D7C8EE17B
:10FDF0000E945D7C86E90E945D7C8AE00E945D7CB9
:10FE000080E10E945D7C8BCE83E00E94227D87CEC4
:10FE100082E00E94227D83CE81E00E94227D7FCEFF
:10FE200080E10E94227D7BCE0E948F7C0E948F7C8D
:10FE3000082F0E948F7C002309F497C0013009F439
:10FE400098C08AE00E94227D6ACE80910C02816077
:10FE500080930C0211CFFC0184910E945D7C209163
:10FE6000080230910902809106019091070197CF15
:10FE700080910C02816080930C0279CF20910C025A
:10FE8000226020930C0263CF80910701880F880BBA
:10FE9000817080930B028091060190910701880F79
:10FEA000991F90930701809306018091080280FFBB
:10FEB00009C080910802909109020196909309026D
:10FEC00080930802F894F999FECF1127E09106017A
:10FED000F0910701C8E0D1E08091080290910902F9
:10FEE000103091F40091570001700130D9F303E014
:10FEF00000935700E8950091570001700130D9F345
:10FF000001E100935700E89509901990009157007E
:10FF100001700130D9F301E000935700E895139583
:10FF2000103898F011270091570001700130D9F373
:10FF300005E000935700E8950091570001700130EB
:10FF4000D9F301E100935700E8953296029709F042
:10FF5000C7CF103011F00296E5CF112484E10E9442
:10FF60005D7C80E10E945D7CDACD8EE10E94227D85
:10FF7000D6CD86E90E94227DD2CDF999FECF92BDE1
:10FF800081BDF89A992780B50895262FF999FECF5B
:10FF90001FBA92BD81BD20BD0FB6F894FA9AF99AA6
:0AFFA0000FBE01960895F894FFCFFC
:02FFAA008000D5
:040000030000F80001
:00000001FF

View File

@@ -0,0 +1,254 @@
# Makefile for ATmegaBOOT
# E.Lins, 18.7.2005
# $Id$
#
# Instructions
#
# To make bootloader .hex file:
# make diecimila
# make lilypad
# make ng
# etc...
#
# To burn bootloader .hex file:
# make diecimila_isp
# make lilypad_isp
# make ng_isp
# etc...
# program name should not be changed...
PROGRAM = ATmegaBOOT_168
# enter the parameters for the avrdude isp tool
ISPTOOL = stk500v2
ISPPORT = usb
ISPSPEED = -b 115200
MCU_TARGET = atmega168
LDSECTION = --section-start=.text=0x3800
# the efuse should really be 0xf8; since, however, only the lower
# three bits of that byte are used on the atmega168, avrdude gets
# confused if you specify 1's for the higher bits, see:
# http://tinker.it/now/2007/02/24/the-tale-of-avrdude-atmega168-and-extended-bits-fuses/
#
# similarly, the lock bits should be 0xff instead of 0x3f (to
# unlock the bootloader section) and 0xcf instead of 0x0f (to
# lock it), but since the high two bits of the lock byte are
# unused, avrdude would get confused.
ISPFUSES = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \
-e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m
ISPFLASH = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \
-U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m
STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe"
STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex \
-lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt
STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt
OBJ = $(PROGRAM).o
OPTIMIZE = -O2
DEFS =
LIBS =
CC = avr-gcc
# Override is only needed by avr-lib build system.
override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS)
override LDFLAGS = -Wl,$(LDSECTION)
#override LDFLAGS = -Wl,-Map,$(PROGRAM).map,$(LDSECTION)
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
all:
lilypad: TARGET = lilypad
lilypad: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3'
lilypad: AVR_FREQ = 8000000L
lilypad: $(PROGRAM)_lilypad.hex
lilypad_isp: lilypad
lilypad_isp: TARGET = lilypad
lilypad_isp: HFUSE = DD
lilypad_isp: LFUSE = E2
lilypad_isp: EFUSE = 00
lilypad_isp: isp
lilypad_resonator: TARGET = lilypad_resonator
lilypad_resonator: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=3'
lilypad_resonator: AVR_FREQ = 8000000L
lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex
lilypad_resonator_isp: lilypad_resonator
lilypad_resonator_isp: TARGET = lilypad_resonator
lilypad_resonator_isp: HFUSE = DD
lilypad_resonator_isp: LFUSE = C6
lilypad_resonator_isp: EFUSE = 00
lilypad_resonator_isp: isp
pro8: TARGET = pro_8MHz
pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
pro8: AVR_FREQ = 8000000L
pro8: $(PROGRAM)_pro_8MHz.hex
pro8_isp: pro8
pro8_isp: TARGET = pro_8MHz
pro8_isp: HFUSE = DD
pro8_isp: LFUSE = C6
pro8_isp: EFUSE = 00
pro8_isp: isp
pro16: TARGET = pro_16MHz
pro16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
pro16: AVR_FREQ = 16000000L
pro16: $(PROGRAM)_pro_16MHz.hex
pro16_isp: pro16
pro16_isp: TARGET = pro_16MHz
pro16_isp: HFUSE = DD
pro16_isp: LFUSE = C6
pro16_isp: EFUSE = 00
pro16_isp: isp
pro20: TARGET = pro_20mhz
pro20: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
pro20: AVR_FREQ = 20000000L
pro20: $(PROGRAM)_pro_20mhz.hex
pro20_isp: pro20
pro20_isp: TARGET = pro_20mhz
pro20_isp: HFUSE = DD
pro20_isp: LFUSE = C6
pro20_isp: EFUSE = 00
pro20_isp: isp
diecimila: TARGET = diecimila
diecimila: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1'
diecimila: AVR_FREQ = 16000000L
diecimila: $(PROGRAM)_diecimila.hex
diecimila_isp: diecimila
diecimila_isp: TARGET = diecimila
diecimila_isp: HFUSE = DD
diecimila_isp: LFUSE = FF
diecimila_isp: EFUSE = 00
diecimila_isp: isp
ng: TARGET = ng
ng: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3'
ng: AVR_FREQ = 16000000L
ng: $(PROGRAM)_ng.hex
ng_isp: ng
ng_isp: TARGET = ng
ng_isp: HFUSE = DD
ng_isp: LFUSE = FF
ng_isp: EFUSE = 00
ng_isp: isp
atmega328: TARGET = atmega328
atmega328: MCU_TARGET = atmega328p
atmega328: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600
atmega328: AVR_FREQ = 16000000L
atmega328: LDSECTION = --section-start=.text=0x7800
atmega328: $(PROGRAM)_atmega328.hex
atmega328_isp: atmega328
atmega328_isp: TARGET = atmega328
atmega328_isp: MCU_TARGET = atmega328p
atmega328_isp: HFUSE = DA
atmega328_isp: LFUSE = FF
atmega328_isp: EFUSE = 05
atmega328_isp: isp
atmega328_pro8: TARGET = atmega328_pro_8MHz
atmega328_pro8: MCU_TARGET = atmega328p
atmega328_pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 -DDOUBLE_SPEED
atmega328_pro8: AVR_FREQ = 8000000L
atmega328_pro8: LDSECTION = --section-start=.text=0x7800
atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.hex
atmega328_pro8_isp: atmega328_pro8
atmega328_pro8_isp: TARGET = atmega328_pro_8MHz
atmega328_pro8_isp: MCU_TARGET = atmega328p
atmega328_pro8_isp: HFUSE = DA
atmega328_pro8_isp: LFUSE = FF
atmega328_pro8_isp: EFUSE = 05
atmega328_pro8_isp: isp
mega: TARGET = atmega1280
mega: MCU_TARGET = atmega1280
mega: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' -DBAUD_RATE=57600
mega: AVR_FREQ = 16000000L
mega: LDSECTION = --section-start=.text=0x1F000
mega: $(PROGRAM)_atmega1280.hex
mega_isp: mega
mega_isp: TARGET = atmega1280
mega_isp: MCU_TARGET = atmega1280
mega_isp: HFUSE = DA
mega_isp: LFUSE = FF
mega_isp: EFUSE = F5
mega_isp: isp
atmega1284p: TARGET = atmega1284p
atmega1284p: MCU_TARGET = atmega1284p
atmega1284p: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' '-DBAUD_RATE=57600'
atmega1284p: AVR_FREQ = 16000000L
atmega1284p: LDSECTION = --section-start=.text=0x1F000
atmega1284p: $(PROGRAM)_atmega1284p.hex
atmega1284p_8m: TARGET = atmega1284p
atmega1284p_8m: MCU_TARGET = atmega1284p
atmega1284p_8m: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' '-DBAUD_RATE=19200'
atmega1284p_8m: AVR_FREQ = 8000000L
atmega1284p_8m: LDSECTION = --section-start=.text=0x1F000
atmega1284p_8m: $(PROGRAM)_atmega1284p_8m.hex
atmega644p: TARGET = atmega644p
atmega644p: MCU_TARGET = atmega644p
atmega644p: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' '-DBAUD_RATE=57600'
atmega644p: AVR_FREQ = 16000000L
atmega644p: LDSECTION = --section-start=.text=0xF800
atmega644p: $(PROGRAM)_atmega644p.hex
atmega1284p_isp: atmega1284p
atmega1284p_isp: TARGET = atmega1284p
atmega1284p_isp: MCU_TARGET = atmega1284p
atmega1284p_isp: HFUSE = DC
atmega1284p_isp: LFUSE = FF
atmega1284p_isp: EFUSE = FD
atmega1284p_isp: isp
isp: $(TARGET)
$(ISPFUSES)
$(ISPFLASH)
isp-stk500: $(PROGRAM)_$(TARGET).hex
$(STK500-1)
$(STK500-2)
%.elf: $(OBJ)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
clean:
rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex
%.lst: %.elf
$(OBJDUMP) -h -S $< > $@
%.hex: %.elf
$(OBJCOPY) -j .text -j .data -O ihex $< $@
%.srec: %.elf
$(OBJCOPY) -j .text -j .data -O srec $< $@
%.bin: %.elf
$(OBJCOPY) -j .text -j .data -O binary $< $@

View File

@@ -0,0 +1,717 @@
/**********************************************************/
/* Serial Bootloader for Atmel megaAVR Controllers */
/* */
/* tested with ATmega644 and ATmega644P */
/* should work with other mega's, see code for details */
/* */
/* ATmegaBOOT.c */
/* */
/* 20090131: Added 324P support from Alex Leone */
/* Marius Kintel */
/* 20080915: applied ADABoot mods for Sanguino 644P */
/* Brian Riley */
/* 20080711: hacked for Sanguino by Zach Smith */
/* and Justin Day */
/* 20070626: hacked for Arduino Diecimila (which auto- */
/* resets when a USB connection is made to it) */
/* by D. Mellis */
/* 20060802: hacked for Arduino by D. Cuartielles */
/* based on a previous hack by D. Mellis */
/* and D. Cuartielles */
/* */
/* Monitor and debug functions were added to the original */
/* code by Dr. Erik Lins, chip45.com. (See below) */
/* */
/* Thanks to Karl Pitrich for fixing a bootloader pin */
/* problem and more informative LED blinking! */
/* */
/* For the latest version see: */
/* http://www.chip45.com/ */
/* */
/* ------------------------------------------------------ */
/* */
/* based on stk500boot.c */
/* Copyright (c) 2003, Jason P. Kyle */
/* All rights reserved. */
/* see avr1.org for original file and information */
/* */
/* This program is free software; you can redistribute it */
/* and/or modify it under the terms of the GNU General */
/* Public License as published by the Free Software */
/* Foundation; either version 2 of the License, or */
/* (at your option) any later version. */
/* */
/* This program is distributed in the hope that it will */
/* be useful, but WITHOUT ANY WARRANTY; without even the */
/* implied warranty of MERCHANTABILITY or FITNESS FOR A */
/* PARTICULAR PURPOSE. See the GNU General Public */
/* License for more details. */
/* */
/* You should have received a copy of the GNU General */
/* Public License along with this program; if not, write */
/* to the Free Software Foundation, Inc., */
/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/* */
/* Licence can be viewed at */
/* http://www.fsf.org/licenses/gpl.txt */
/* */
/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */
/* m8515,m8535. ATmega161 has a very small boot block so */
/* isn't supported. */
/* */
/* Tested with m168 */
/**********************************************************/
/* $Id$ */
/* some includes */
#include <inttypes.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <avr/boot.h>
#ifdef ADABOOT
#define NUM_LED_FLASHES 3
#define ADABOOT_VER 1
#endif
/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */
#define MAX_ERROR_COUNT 5
/* set the UART baud rate */
/* 20080711: hack by Zach Hoeken */
#define BAUD_RATE 38400
/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */
/* never allow AVR Studio to do an update !!!! */
#define HW_VER 0x02
#define SW_MAJOR 0x01
#define SW_MINOR 0x10
/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */
/* if monitor functions are included, LED goes on after monitor was entered */
#define LED_DDR DDRB
#define LED_PORT PORTB
#define LED_PIN PINB
#define LED PINB0
/* define various device id's */
/* manufacturer byte is always the same */
#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :(
#if defined(__AVR_ATmega1284P__)
#define SIG2 0x97
#define SIG3 0x05
#elif defined(__AVR_ATmega644P__)
#define SIG2 0x96
#define SIG3 0x0A
#elif defined(__AVR_ATmega644__)
#define SIG2 0x96
#define SIG3 0x09
#elif defined(__AVR_ATmega324P__)
#define SIG2 0x95
#define SIG3 0x08
#endif
#define PAGE_SIZE 0x080U //128 words
#define PAGE_SIZE_BYTES 0x100U //256 bytes
/* function prototypes */
void putch(char);
char getch(void);
void getNch(uint8_t);
void byte_response(uint8_t);
void nothing_response(void);
char gethex(void);
void puthex(char);
void flash_led(uint8_t);
/* some variables */
union address_union
{
uint16_t word;
uint8_t byte[2];
} address;
union length_union
{
uint16_t word;
uint8_t byte[2];
} length;
struct flags_struct
{
unsigned eeprom : 1;
unsigned rampz : 1;
} flags;
uint8_t buff[256];
uint8_t error_count = 0;
uint8_t sreg;
void (*app_start)(void) = 0x0000;
/* main program starts here */
int main(void)
{
uint8_t ch,ch2;
uint16_t w;
uint16_t i;
asm volatile("nop\n\t");
#ifdef ADABOOT // BBR/LF 10/8/2007 & 9/13/2008
ch = MCUSR;
MCUSR = 0;
WDTCSR |= _BV(WDCE) | _BV(WDE);
WDTCSR = 0;
// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
if (! (ch & _BV(EXTRF))) // if it's a not an external reset...
app_start(); // skip bootloader
#endif
//initialize our serial port.
UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1);
UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8;
UCSR0B = (1<<RXEN0) | (1<<TXEN0);
UCSR0C = (1<<UCSZ00) | (1<<UCSZ01);
/* Enable internal pull-up resistor on pin D0 (RX), in order
to supress line noise that prevents the bootloader from
timing out (DAM: 20070509) */
DDRD &= ~_BV(PIND0);
PORTD |= _BV(PIND0);
/* set LED pin as output */
LED_DDR |= _BV(LED);
/* flash onboard LED to signal entering of bootloader */
/* ADABOOT will do two series of flashes. first 4 - signifying ADABOOT */
/* then a pause and another flash series signifying ADABOOT sub-version */
flash_led(NUM_LED_FLASHES);
#ifdef ADABOOT
flash_led(ADABOOT_VER); // BBR 9/13/2008
#endif
/* forever loop */
for (;;)
{
/* get character from UART */
ch = getch();
/* A bunch of if...else if... gives smaller code than switch...case ! */
/* Hello is anyone home ? */
if(ch=='0')
nothing_response();
/* Request programmer ID */
/* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */
/* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */
else if(ch=='1')
{
if (getch() == ' ')
{
putch(0x14);
putch('A');
putch('V');
putch('R');
putch(' ');
putch('I');
putch('S');
putch('P');
putch(0x10);
}
else
{
if (++error_count == MAX_ERROR_COUNT)
app_start();
}
}
/* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */
else if(ch=='@')
{
ch2 = getch();
if (ch2 > 0x85)
getch();
nothing_response();
}
/* AVR ISP/STK500 board requests */
else if(ch=='A')
{
ch2 = getch();
if(ch2 == 0x80)
byte_response(HW_VER); // Hardware version
else if(ch2==0x81)
byte_response(SW_MAJOR); // Software major version
else if(ch2==0x82)
byte_response(SW_MINOR); // Software minor version
else if(ch2==0x98)
byte_response(0x03); // Unknown but seems to be required by avr studio 3.56
else
byte_response(0x00); // Covers various unnecessary responses we don't care about
}
/* Device Parameters DON'T CARE, DEVICE IS FIXED */
else if(ch=='B')
{
getNch(20);
nothing_response();
}
/* Parallel programming stuff DON'T CARE */
else if(ch=='E')
{
getNch(5);
nothing_response();
}
/* Enter programming mode */
else if(ch=='P')
{
nothing_response();
}
/* Leave programming mode */
else if(ch=='Q')
{
nothing_response();
#ifdef ADABOOT
// autoreset via watchdog (sneaky!) BBR/LF 9/13/2008
WDTCSR = _BV(WDE);
while (1); // 16 ms
#endif
}
/* Erase device, don't care as we will erase one page at a time anyway. */
else if(ch=='R')
{
nothing_response();
}
/* Set address, little endian. EEPROM in bytes, FLASH in words */
/* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */
/* This might explain why little endian was used here, big endian used everywhere else. */
else if(ch=='U')
{
address.byte[0] = getch();
address.byte[1] = getch();
nothing_response();
}
/* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */
else if(ch=='V')
{
getNch(4);
byte_response(0x00);
}
/* Write memory, length is big endian and is in bytes */
else if(ch=='d')
{
length.byte[1] = getch();
length.byte[0] = getch();
flags.eeprom = 0;
if (getch() == 'E')
flags.eeprom = 1;
for (i=0; i<PAGE_SIZE; i++)
buff[i] = 0;
for (w = 0; w < length.word; w++)
{
// Store data in buffer, can't keep up with serial data stream whilst programming pages
buff[w] = getch();
}
if (getch() == ' ')
{
if (flags.eeprom)
{
//Write to EEPROM one byte at a time
for(w=0;w<length.word;w++)
{
while(EECR & (1<<EEPE));
EEAR = (uint16_t)(void *)address.word;
EEDR = buff[w];
EECR |= (1<<EEMPE);
EECR |= (1<<EEPE);
address.word++;
}
}
else
{
//address * 2 -> byte location
address.word = address.word << 1;
//Even up an odd number of bytes
if ((length.byte[0] & 0x01))
length.word++;
// HACKME: EEPE used to be EEWE
//Wait for previous EEPROM writes to complete
//while(bit_is_set(EECR,EEPE));
while(EECR & (1<<EEPE));
asm volatile(
"clr r17 \n\t" //page_word_count
"lds r30,address \n\t" //Address of FLASH location (in bytes)
"lds r31,address+1 \n\t"
"ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM
"ldi r29,hi8(buff) \n\t"
"lds r24,length \n\t" //Length of data to be written (in bytes)
"lds r25,length+1 \n\t"
"length_loop: \n\t" //Main loop, repeat for number of words in block
"cpi r17,0x00 \n\t" //If page_word_count=0 then erase page
"brne no_page_erase \n\t"
"wait_spm1: \n\t"
"lds r16,%0 \n\t" //Wait for previous spm to complete
"andi r16,1 \n\t"
"cpi r16,1 \n\t"
"breq wait_spm1 \n\t"
"ldi r16,0x03 \n\t" //Erase page pointed to by Z
"sts %0,r16 \n\t"
"spm \n\t"
"wait_spm2: \n\t"
"lds r16,%0 \n\t" //Wait for previous spm to complete
"andi r16,1 \n\t"
"cpi r16,1 \n\t"
"breq wait_spm2 \n\t"
"ldi r16,0x11 \n\t" //Re-enable RWW section
"sts %0,r16 \n\t"
"spm \n\t"
"no_page_erase: \n\t"
"ld r0,Y+ \n\t" //Write 2 bytes into page buffer
"ld r1,Y+ \n\t"
"wait_spm3: \n\t"
"lds r16,%0 \n\t" //Wait for previous spm to complete
"andi r16,1 \n\t"
"cpi r16,1 \n\t"
"breq wait_spm3 \n\t"
"ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer
"sts %0,r16 \n\t"
"spm \n\t"
"inc r17 \n\t" //page_word_count++
"cpi r17,%1 \n\t"
"brlo same_page \n\t" //Still same page in FLASH
"write_page: \n\t"
"clr r17 \n\t" //New page, write current one first
"wait_spm4: \n\t"
"lds r16,%0 \n\t" //Wait for previous spm to complete
"andi r16,1 \n\t"
"cpi r16,1 \n\t"
"breq wait_spm4 \n\t"
"ldi r16,0x05 \n\t" //Write page pointed to by Z
"sts %0,r16 \n\t"
"spm \n\t"
"wait_spm5: \n\t"
"lds r16,%0 \n\t" //Wait for previous spm to complete
"andi r16,1 \n\t"
"cpi r16,1 \n\t"
"breq wait_spm5 \n\t"
"ldi r16,0x11 \n\t" //Re-enable RWW section
"sts %0,r16 \n\t"
"spm \n\t"
"same_page: \n\t"
"adiw r30,2 \n\t" //Next word in FLASH
"sbiw r24,2 \n\t" //length-2
"breq final_write \n\t" //Finished
"rjmp length_loop \n\t"
"final_write: \n\t"
"cpi r17,0 \n\t"
"breq block_done \n\t"
"adiw r24,2 \n\t" //length+2, fool above check on length after short page write
"rjmp write_page \n\t"
"block_done: \n\t"
"clr __zero_reg__ \n\t" //restore zero register
: "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31"
);
}
putch(0x14);
putch(0x10);
}
else
{
if (++error_count == MAX_ERROR_COUNT)
app_start();
}
}
/* Read memory block mode, length is big endian. */
else if(ch=='t')
{
length.byte[1] = getch();
length.byte[0] = getch();
if (getch() == 'E')
flags.eeprom = 1;
else
{
flags.eeprom = 0;
address.word = address.word << 1; // address * 2 -> byte location
}
// Command terminator
if (getch() == ' ')
{
putch(0x14);
for (w=0; w<length.word; w++)
{
// Can handle odd and even lengths okay
if (flags.eeprom)
{
// Byte access EEPROM read
while(EECR & (1<<EEPE));
EEAR = (uint16_t)(void *)address.word;
EECR |= (1<<EERE);
putch(EEDR);
address.word++;
}
else
{
if (!flags.rampz)
putch(pgm_read_byte_near(address.word));
address.word++;
}
}
putch(0x10);
}
}
/* Get device signature bytes */
else if(ch=='u')
{
if (getch() == ' ')
{
putch(0x14);
putch(SIG1);
putch(SIG2);
putch(SIG3);
putch(0x10);
}
else
{
if (++error_count == MAX_ERROR_COUNT)
app_start();
}
}
/* Read oscillator calibration byte */
else if(ch=='v')
byte_response(0x00);
else if (++error_count == MAX_ERROR_COUNT)
app_start();
}
/* end of forever loop */
}
char gethex(void)
{
char ah,al;
ah = getch();
putch(ah);
al = getch();
putch(al);
if(ah >= 'a')
ah = ah - 'a' + 0x0a;
else if(ah >= '0')
ah -= '0';
if(al >= 'a')
al = al - 'a' + 0x0a;
else if(al >= '0')
al -= '0';
return (ah << 4) + al;
}
void puthex(char ch)
{
char ah,al;
ah = (ch & 0xf0) >> 4;
if(ah >= 0x0a)
ah = ah - 0x0a + 'a';
else
ah += '0';
al = (ch & 0x0f);
if(al >= 0x0a)
al = al - 0x0a + 'a';
else
al += '0';
putch(ah);
putch(al);
}
void putch(char ch)
{
while (!(UCSR0A & _BV(UDRE0)));
UDR0 = ch;
}
char getch(void)
{
uint32_t count = 0;
#ifdef ADABOOT
LED_PORT &= ~_BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008
#endif
while(!(UCSR0A & _BV(RXC0)))
{
/* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/
/* HACKME:: here is a good place to count times*/
count++;
if (count > MAX_TIME_COUNT)
app_start();
}
#ifdef ADABOOT
LED_PORT |= _BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008
#endif
return UDR0;
}
void getNch(uint8_t count)
{
uint8_t i;
for(i=0;i<count;i++)
{
while(!(UCSR0A & _BV(RXC0)));
UDR0;
}
}
void byte_response(uint8_t val)
{
if (getch() == ' ')
{
putch(0x14);
putch(val);
putch(0x10);
}
else
{
if (++error_count == MAX_ERROR_COUNT)
app_start();
}
}
void nothing_response(void)
{
if (getch() == ' ')
{
putch(0x14);
putch(0x10);
}
else
{
if (++error_count == MAX_ERROR_COUNT)
app_start();
}
}
#ifdef ADABOOT
void flash_led(uint8_t count)
{
/* flash onboard LED count times to signal entering of bootloader */
/* l needs to be volatile or the delay loops below might get */
/* optimized away if compiling with optimizations (DAM). */
volatile uint32_t l;
if (count == 0) {
count = ADABOOT;
}
int8_t i;
for (i = 0; i < count; ++i) {
LED_PORT |= _BV(LED); // LED on
for(l = 0; l < (F_CPU / 1000); ++l); // delay NGvalue was 1000 for both loops - BBR
LED_PORT &= ~_BV(LED); // LED off
for(l = 0; l < (F_CPU / 250); ++l); // delay asymmteric for ADA BOOT BBR
}
for(l = 0; l < (F_CPU / 100); ++l); // pause ADA BOOT BBR
}
#else
void flash_led(uint8_t count)
{
/* flash onboard LED three times to signal entering of bootloader */
/* l needs to be volatile or the delay loops below might get
optimized away if compiling with optimizations (DAM). */
volatile uint32_t l;
if (count == 0) {
count = 3;
}
int8_t i;
for (i = 0; i < count; ++i) {
LED_PORT |= _BV(LED);
for(l = 0; l < (F_CPU / 1000); ++l);
LED_PORT &= ~_BV(LED);
for(l = 0; l < (F_CPU / 1000); ++l);
}
}
#endif
/* end of file ATmegaBOOT.c */

View File

@@ -0,0 +1,388 @@
/**********************************************************/
/* Serial Bootloader for Atmel megaAVR Controllers */
/* */
/* tested with ATmega644 and ATmega644P */
/* should work with other mega's, see code for details */
/* */
/* ATmegaBOOT.c */
/* */
/* 20090131: Added 324P support from Alex Leone */
/* Marius Kintel */
/* 20080915: applied ADABoot mods for Sanguino 644P */
/* Brian Riley */
/* 20080711: hacked for Sanguino by Zach Smith */
/* and Justin Day */
/* 20070626: hacked for Arduino Diecimila (which auto- */
/* resets when a USB connection is made to it) */
/* by D. Mellis */
/* 20060802: hacked for Arduino by D. Cuartielles */
/* based on a previous hack by D. Mellis */
/* and D. Cuartielles */
/* */
/* Monitor and debug functions were added to the original */
/* code by Dr. Erik Lins, chip45.com. (See below) */
/* */
/* Thanks to Karl Pitrich for fixing a bootloader pin */
/* problem and more informative LED blinking! */
/* */
/* For the latest version see: */
/* http://www.chip45.com/ */
/* */
/* ------------------------------------------------------ */
/* */
/* based on stk500boot.c */
/* Copyright (c) 2003, Jason P. Kyle */
/* All rights reserved. */
/* see avr1.org for original file and information */
/* */
/* This program is free software; you can redistribute it */
/* and/or modify it under the terms of the GNU General */
/* Public License as published by the Free Software */
/* Foundation; either version 2 of the License, or */
/* (at your option) any later version. */
/* */
/* This program is distributed in the hope that it will */
/* be useful, but WITHOUT ANY WARRANTY; without even the */
/* implied warranty of MERCHANTABILITY or FITNESS FOR A */
/* PARTICULAR PURPOSE. See the GNU General Public */
/* License for more details. */
/* */
/* You should have received a copy of the GNU General */
/* Public License along with this program; if not, write */
/* to the Free Software Foundation, Inc., */
/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/* */
/* Licence can be viewed at */
/* http://www.fsf.org/licenses/gpl.txt */
/* */
/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */
/* m8515,m8535. ATmega161 has a very small boot block so */
/* isn't supported. */
/* */
/* Tested with m168 */
/**********************************************************/
/* $Id$ */
/* some includes */
#include <inttypes.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <avr/boot.h>
#include <util/delay.h>
#ifdef ADABOOT
#define NUM_LED_FLASHES 3
#define ADABOOT_VER 1
#endif
/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */
#define MAX_ERROR_COUNT 5
/* set the UART baud rate */
/* 20080711: hack by Zach Hoeken */
#define BAUD_RATE 38400
/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */
/* never allow AVR Studio to do an update !!!! */
#define HW_VER 0x02
#define SW_MAJOR 0x01
#define SW_MINOR 0x10
/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */
/* if monitor functions are included, LED goes on after monitor was entered */
#define LED_DDR DDRB
#define LED_PORT PORTB
#define LED_PIN PINB
#define LED PINB0
/* define various device id's */
/* manufacturer byte is always the same */
#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :(
#if defined(__AVR_ATmega1284P__)
#define SIG2 0x97
#define SIG3 0x05
#elif defined(__AVR_ATmega644P__)
#define SIG2 0x96
#define SIG3 0x0A
#elif defined(__AVR_ATmega644__)
#define SIG2 0x96
#define SIG3 0x09
#elif defined(__AVR_ATmega324P__)
#define SIG2 0x95
#define SIG3 0x08
#endif
#define PAGE_SIZE 0x080U //128 words
#define PAGE_SIZE_BYTES 0x100U //256 bytes
/* function prototypes */
void putch(char);
char getch(void);
void getNch(uint8_t);
void byte_response(uint8_t);
void nothing_response(void);
char gethex(void);
void puthex(char);
void flash_led(uint8_t);
/* some variables */
union address_union
{
uint16_t word;
uint8_t byte[2];
} address;
union length_union
{
uint16_t word;
uint8_t byte[2];
} length;
struct flags_struct
{
unsigned eeprom : 1;
unsigned rampz : 1;
} flags;
uint8_t buff[256];
uint8_t error_count = 0;
uint8_t sreg;
void (*app_start)(void) = 0x0000;
/* main program starts here */
int main(void)
{
uint8_t ch,ch2;
uint16_t w;
uint16_t i;
asm volatile("nop\n\t");
#ifdef ADABOOT // BBR/LF 10/8/2007 & 9/13/2008
ch = MCUSR;
MCUSR = 0;
WDTCSR |= _BV(WDCE) | _BV(WDE);
WDTCSR = 0;
// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
if (! (ch & _BV(EXTRF))) // if it's a not an external reset...
app_start(); // skip bootloader
#endif
//initialize our serial port.
UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1);
UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8;
UCSR0B = (1<<RXEN0) | (1<<TXEN0);
UCSR0C = (1<<UCSZ00) | (1<<UCSZ01);
/* Enable internal pull-up resistor on pin D0 (RX), in order
to supress line noise that prevents the bootloader from
timing out (DAM: 20070509) */
DDRD &= ~_BV(PIND0);
PORTD |= _BV(PIND0);
/* set LED pin as output */
LED_DDR |= _BV(LED);
/* flash onboard LED to signal entering of bootloader */
/* ADABOOT will do two series of flashes. first 4 - signifying ADABOOT */
/* then a pause and another flash series signifying ADABOOT sub-version */
flash_led(NUM_LED_FLASHES);
#ifdef ADABOOT
flash_led(ADABOOT_VER); // BBR 9/13/2008
#endif
/* forever loop */
for (;;)
{
putch('\r');
_delay_ms(500);
}
/* end of forever loop */
}
char gethex(void)
{
char ah,al;
ah = getch();
putch(ah);
al = getch();
putch(al);
if(ah >= 'a')
ah = ah - 'a' + 0x0a;
else if(ah >= '0')
ah -= '0';
if(al >= 'a')
al = al - 'a' + 0x0a;
else if(al >= '0')
al -= '0';
return (ah << 4) + al;
}
void puthex(char ch)
{
char ah,al;
ah = (ch & 0xf0) >> 4;
if(ah >= 0x0a)
ah = ah - 0x0a + 'a';
else
ah += '0';
al = (ch & 0x0f);
if(al >= 0x0a)
al = al - 0x0a + 'a';
else
al += '0';
putch(ah);
putch(al);
}
void putch(char ch)
{
while (!(UCSR0A & _BV(UDRE0)));
UDR0 = ch;
}
char getch(void)
{
uint32_t count = 0;
#ifdef ADABOOT
LED_PORT &= ~_BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008
#endif
while(!(UCSR0A & _BV(RXC0)))
{
/* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/
/* HACKME:: here is a good place to count times*/
count++;
if (count > MAX_TIME_COUNT)
app_start();
}
#ifdef ADABOOT
LED_PORT |= _BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008
#endif
return UDR0;
}
void getNch(uint8_t count)
{
uint8_t i;
for(i=0;i<count;i++)
{
while(!(UCSR0A & _BV(RXC0)));
UDR0;
}
}
void byte_response(uint8_t val)
{
if (getch() == ' ')
{
putch(0x14);
putch(val);
putch(0x10);
}
else
{
if (++error_count == MAX_ERROR_COUNT)
app_start();
}
}
void nothing_response(void)
{
if (getch() == ' ')
{
putch(0x14);
putch(0x10);
}
else
{
if (++error_count == MAX_ERROR_COUNT)
app_start();
}
}
#ifdef ADABOOT
void flash_led(uint8_t count)
{
/* flash onboard LED count times to signal entering of bootloader */
/* l needs to be volatile or the delay loops below might get */
/* optimized away if compiling with optimizations (DAM). */
volatile uint32_t l;
if (count == 0) {
count = ADABOOT;
}
int8_t i;
for (i = 0; i < count; ++i) {
LED_PORT |= _BV(LED); // LED on
for(l = 0; l < (F_CPU / 1000); ++l); // delay NGvalue was 1000 for both loops - BBR
LED_PORT &= ~_BV(LED); // LED off
for(l = 0; l < (F_CPU / 250); ++l); // delay asymmteric for ADA BOOT BBR
}
for(l = 0; l < (F_CPU / 100); ++l); // pause ADA BOOT BBR
}
#else
void flash_led(uint8_t count)
{
/* flash onboard LED three times to signal entering of bootloader */
/* l needs to be volatile or the delay loops below might get
optimized away if compiling with optimizations (DAM). */
volatile uint32_t l;
if (count == 0) {
count = 3;
}
int8_t i;
for (i = 0; i < count; ++i) {
LED_PORT |= _BV(LED);
for(l = 0; l < (F_CPU / 1000); ++l);
LED_PORT &= ~_BV(LED);
for(l = 0; l < (F_CPU / 1000); ++l);
}
}
#endif
/* end of file ATmegaBOOT.c */

View File

@@ -0,0 +1,110 @@
:020000021000EC
:10F000000C943EF80C9450F80C9450F80C9450F872
:10F010000C9450F80C9450F80C9450F80C9450F850
:10F020000C9450F80C9450F80C9450F80C9450F840
:10F030000C9450F80C9450F80C9450F80C9450F830
:10F040000C9450F80C9450F80C9450F80C9450F820
:10F050000C9450F80C9450F80C9450F80C9450F810
:10F060000C9450F80C9450F80C9450F80C9450F800
:10F070000C9450F80C9450F80C9450F811241FBEC6
:10F08000CFEFD0E1DEBFCDBF12E0A0E0B1E001C024
:10F090001D92A930B107E1F70E9471F90C944FFB62
:10F0A0000C9400F89091C00095FFFCCF8093C600AF
:10F0B00008951F93282F332727FD3095207F307028
:10F0C00094E0359527959A95E1F72A3014F0295A5E
:10F0D00001C0205D182F1F701A3014F0195A01C09A
:10F0E000105D822F0E9452F8812F0E9452F81F91CA
:10F0F0000895EF92FF920F931F932898EE24FF2418
:10F10000870113C00894E11CF11C011D111D81E051
:10F11000E81689E0F8068DE3080780E0180728F074
:10F12000E0910101F091020109958091C00087FFF3
:10F13000E9CF289A8091C6001F910F91FF90EF9020
:10F1400008950F931F930E9479F8082F0E9452F898
:10F150000E9479F8182F0E9452F8013614F00755D2
:10F1600003C000330CF00053113614F0175503C0E0
:10F1700010330CF01053802F8295807F810F1F91E8
:10F180000F91089590E007C02091C00027FFFCCFA9
:10F190002091C6009F5F9817B8F308951F93182F0A
:10F1A0000E9479F8803251F484E10E9452F8812F54
:10F1B0000E9452F880E10E9452F80CC08091000138
:10F1C0008F5F80930001853029F4E0910101F09177
:10F1D000020109951F9108950E9479F8803239F44F
:10F1E00084E10E9452F880E10E9452F808958091D3
:10F1F00000018F5F80930001853029F4E0910101C7
:10F20000F091020109950895DF93CF9300D000D0CB
:10F21000CDB7DEB7882309F481E090E03DC0289A9D
:10F2200019821A821B821C820CC029813A814B816F
:10F230005C812F5F3F4F4F4F5F4F29833A834B8352
:10F240005C8329813A814B815C8120386EE33607EB
:10F2500060E0460760E0560740F3289819821A825A
:10F260001B821C820CC029813A814B815C812F5FFB
:10F270003F4F4F4F5F4F29833A834B835C832981F4
:10F280003A814B815C8120306AEF360760E04607A7
:10F2900060E0560740F39F5F981709F619821A82BB
:10F2A0001B821C820BC089819A81AB81BC81019633
:10F2B000A11DB11D89839A83AB83BC8389819A8107
:10F2C000AB81BC81803021E7920722E0A20720E0D9
:10F2D000B20748F30F900F900F900F90CF91DF91EE
:10F2E0000895CF92DF92EF92FF920F931F93CF93E7
:10F2F000DF93000094B714BE809160008861809312
:10F3000060001092600091FD05C0E0910101F09154
:10F310000201099589E18093C4001092C50088E13B
:10F320008093C10086E08093C2005098589A209A3A
:10F3300083E00E9404F981E00E9404F90E9479F8B8
:10F34000803309F441C08133E1F40E9479F88032BE
:10F3500009F097C184E10E9452F881E40E9452F8BA
:10F3600086E50E9452F882E50E9452F880E20E94EF
:10F3700052F889E40E9452F883E50E9452F880E531
:10F380000BC1803439F40E9479F88638E8F00E9485
:10F3900079F81AC0813499F40E9479F8803811F410
:10F3A00082E06CC1813811F481E068C1823811F4C7
:10F3B00080E164C1883909F060C183E05FC18234B3
:10F3C00031F484E10E94C2F80E94ECF8B7CF853492
:10F3D00011F485E0F7CF8035B9F3813531F40E941F
:10F3E000ECF888E080936000FFCF823569F38535C3
:10F3F00049F40E9479F8809303010E9479F8809380
:10F400000401E2CF863521F484E00E94C2F835C1C0
:10F41000843609F0C7C00E9479F8809306020E94E2
:10F4200079F880930502809108028E7F809308020C
:10F430000E9479F8853429F48091080281608093D4
:10F44000080205E011E0F801119281E0E538F807C3
:10F45000D9F745E0C42E41E0D42EEE24FF2408C0A5
:10F460000E9479F8F60181936F010894E11CF11C68
:10F470008091050290910602E816F90688F30E9431
:10F4800079F8803209F0FDC08091080280FD17C034
:10F4900020C0F999FECF209103013091040132BDC3
:10F4A00021BDF80141918F0140BDFA9AF99A2F5F71
:10F4B0003F4F3093040120930301019602C080E086
:10F4C00090E020910502309106028217930708F31D
:10F4D00062C08091030190910401880F991F90935D
:10F4E0000401809303018091050280FF09C080918F
:10F4F0000502909106020196909306028093050200
:10F50000F999FECF1127E0910301F0910401C5E0C4
:10F51000D1E08091050290910602103091F40091A3
:10F52000570001700130D9F303E000935700E895CC
:10F530000091570001700130D9F301E100935700A9
:10F54000E895099019900091570001700130D9F3A6
:10F5500001E000935700E8951395103898F01127B3
:10F560000091570001700130D9F305E00093570076
:10F57000E8950091570001700130D9F301E1009343
:10F580005700E8953296029709F0C7CF103011F076
:10F590000296E5CF112484E10E9452F880E10E9496
:10F5A00052F8CCCE843709F055C00E9479F8809388
:10F5B00006020E9479F8809305020E9479F89091E2
:10F5C0000802853421F49160909308020DC09E7F5B
:10F5D000909308028091030190910401880F991F74
:10F5E00090930401809303010E9479F8803209F01E
:10F5F000A5CE84E10E9452F800E010E023C0809183
:10F60000080280FF0BC0F999FECF80910301909111
:10F61000040192BD81BDF89A80B507C081FD07C085
:10F62000E0910301F091040184910E9452F88091CD
:10F6300003019091040101969093040180930301CA
:10F640000F5F1F4F8091050290910602081719075E
:10F65000B0F2A4CF853779F40E9479F8803289F42A
:10F6600084E10E9452F88EE10E9452F886E90E94DD
:10F6700052F88AE091CF863721F480E00E94CEF8DC
:10F680005DCE809100018F5F80930001853009F08D
:10F6900055CEE0910101F091020109954FCEF89409
:02F6A000FFCF9A
:040000031000F000F9
:00000001FF

View File

@@ -0,0 +1,56 @@
#Makefile for ATmegaBOOT
# E.Lins, 18.7.2005
# $Id$
# program name should not be changed...
PROGRAM = ATmegaBOOT_644P
# enter the target CPU frequency
AVR_FREQ = 16000000L
MCU_TARGET = atmega644p
LDSECTION = --section-start=.text=0x1F000
OBJ = $(PROGRAM).o
OPTIMIZE = -Os
DEFS =
LIBS =
CC = avr-gcc
# Override is only needed by avr-lib build system.
override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS)
override LDFLAGS = -Wl,$(LDSECTION)
#override LDFLAGS = -Wl,-Map,$(PROGRAM).map,$(LDSECTION)
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
all: CFLAGS += '-DMAX_TIME_COUNT=8000000L>>1' -DADABOOT
all: $(PROGRAM).hex
$(PROGRAM).hex: $(PROGRAM).elf
$(OBJCOPY) -j .text -j .data -O ihex $< $@
$(PROGRAM).elf: $(OBJ)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
$(OBJ): ATmegaBOOT.c
avr-gcc $(CFLAGS) $(LDFLAGS) -c -g -Os -Wall -mmcu=$(MCU_TARGET) ATmegaBOOT.c -o $(PROGRAM).o
%.lst: %.elf
$(OBJDUMP) -h -S $< > $@
%.srec: %.elf
$(OBJCOPY) -j .text -j .data -O srec $< $@
%.bin: %.elf
$(OBJCOPY) -j .text -j .data -O binary $< $@
clean:
rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex

View File

@@ -0,0 +1,3 @@
Note: This bootloader support ATmega644, ATmega644P and ATmega324P.
To build, set PROGRAM and MCU_TARGET in the Makefile according to your target device.

View File

@@ -0,0 +1,215 @@
#ifndef Arduino_h
#define Arduino_h
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <avr/pgmspace.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "binary.h"
#ifdef __cplusplus
extern "C"{
#endif
#define HIGH 0x1
#define LOW 0x0
#define INPUT 0x0
#define OUTPUT 0x1
#define INPUT_PULLUP 0x2
#define true 0x1
#define false 0x0
#define PI 3.1415926535897932384626433832795
#define HALF_PI 1.5707963267948966192313216916398
#define TWO_PI 6.283185307179586476925286766559
#define DEG_TO_RAD 0.017453292519943295769236907684886
#define RAD_TO_DEG 57.295779513082320876798154814105
#define SERIAL 0x0
#define DISPLAY 0x1
#define LSBFIRST 0
#define MSBFIRST 1
#define CHANGE 1
#define FALLING 2
#define RISING 3
#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
#define DEFAULT 0
#define EXTERNAL 1
#define INTERNAL 2
#else
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__)
#define INTERNAL1V1 2
#define INTERNAL2V56 3
#else
#define INTERNAL 3
#endif
#define DEFAULT 1
#define EXTERNAL 0
#endif
// undefine stdlib's abs if encountered
#ifdef abs
#undef abs
#endif
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(x) ((x)>0?(x):-(x))
#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
#define radians(deg) ((deg)*DEG_TO_RAD)
#define degrees(rad) ((rad)*RAD_TO_DEG)
#define sq(x) ((x)*(x))
#define interrupts() sei()
#define noInterrupts() cli()
#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L )
#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() )
#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() )
#define lowByte(w) ((uint8_t) ((w) & 0xff))
#define highByte(w) ((uint8_t) ((w) >> 8))
#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
typedef unsigned int word;
#define bit(b) (1UL << (b))
typedef uint8_t boolean;
typedef uint8_t byte;
void init(void);
void pinMode(uint8_t, uint8_t);
void digitalWrite(uint8_t, uint8_t);
int digitalRead(uint8_t);
int analogRead(uint8_t);
void analogReference(uint8_t mode);
void analogWrite(uint8_t, int);
unsigned long millis(void);
unsigned long micros(void);
void delay(unsigned long);
void delayMicroseconds(unsigned int us);
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val);
uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder);
void attachInterrupt(uint8_t, void (*)(void), int mode);
void detachInterrupt(uint8_t);
void setup(void);
void loop(void);
// Get the bit location within the hardware port of the given virtual pin.
// This comes from the pins_*.c file for the active board configuration.
#define analogInPinToBit(P) (P)
// On the ATmega1280, the addresses of some of the port registers are
// greater than 255, so we can't store them in uint8_t's.
extern const uint16_t PROGMEM port_to_mode_PGM[];
extern const uint16_t PROGMEM port_to_input_PGM[];
extern const uint16_t PROGMEM port_to_output_PGM[];
extern const uint8_t PROGMEM digital_pin_to_port_PGM[];
// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[];
extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[];
extern const uint8_t PROGMEM digital_pin_to_timer_PGM[];
// Get the bit location within the hardware port of the given virtual pin.
// This comes from the pins_*.c file for the active board configuration.
//
// These perform slightly better as macros compared to inline functions
//
#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) )
#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) )
#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) )
#define analogInPinToBit(P) (P)
#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) )
#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) )
#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) )
#define NOT_A_PIN 0
#define NOT_A_PORT 0
#ifdef ARDUINO_MAIN
#define PA 1
#define PB 2
#define PC 3
#define PD 4
#define PE 5
#define PF 6
#define PG 7
#define PH 8
#define PJ 10
#define PK 11
#define PL 12
#endif
#define NOT_ON_TIMER 0
#define TIMER0A 1
#define TIMER0B 2
#define TIMER1A 3
#define TIMER1B 4
#define TIMER2 5
#define TIMER2A 6
#define TIMER2B 7
#define TIMER3A 8
#define TIMER3B 9
#define TIMER3C 10
#define TIMER4A 11
#define TIMER4B 12
#define TIMER4C 13
#define TIMER4D 14
#define TIMER5A 15
#define TIMER5B 16
#define TIMER5C 17
#ifdef __cplusplus
} // extern "C"
#endif
#ifdef __cplusplus
#include "WCharacter.h"
#include "WString.h"
#include "HardwareSerial.h"
uint16_t makeWord(uint16_t w);
uint16_t makeWord(byte h, byte l);
#define word(...) makeWord(__VA_ARGS__)
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L);
void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0);
void noTone(uint8_t _pin);
// WMath prototypes
long random(long);
long random(long, long);
void randomSeed(unsigned int);
long map(long, long, long, long, long);
#endif
#include "pins_arduino.h"
#endif

View File

@@ -0,0 +1,239 @@
/* Copyright (c) 2011, Peter Barrett
**
** Permission to use, copy, modify, and/or distribute this software for
** any purpose with or without fee is hereby granted, provided that the
** above copyright notice and this permission notice appear in all copies.
**
** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
** SOFTWARE.
*/
#include "Platform.h"
#include "USBAPI.h"
#include <avr/wdt.h>
#if defined(USBCON)
#ifdef CDC_ENABLED
#if (RAMEND < 1000)
#define SERIAL_BUFFER_SIZE 16
#else
#define SERIAL_BUFFER_SIZE 64
#endif
struct ring_buffer
{
unsigned char buffer[SERIAL_BUFFER_SIZE];
volatile int head;
volatile int tail;
};
ring_buffer cdc_rx_buffer = { { 0 }, 0, 0};
typedef struct
{
u32 dwDTERate;
u8 bCharFormat;
u8 bParityType;
u8 bDataBits;
u8 lineState;
} LineInfo;
static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 };
#define WEAK __attribute__ ((weak))
extern const CDCDescriptor _cdcInterface PROGMEM;
const CDCDescriptor _cdcInterface =
{
D_IAD(0,2,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,1),
// CDC communication interface
D_INTERFACE(CDC_ACM_INTERFACE,1,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,0),
D_CDCCS(CDC_HEADER,0x10,0x01), // Header (1.10 bcd)
D_CDCCS(CDC_CALL_MANAGEMENT,1,1), // Device handles call management (not)
D_CDCCS4(CDC_ABSTRACT_CONTROL_MANAGEMENT,6), // SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported
D_CDCCS(CDC_UNION,CDC_ACM_INTERFACE,CDC_DATA_INTERFACE), // Communication interface is master, data interface is slave 0
D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_ACM),USB_ENDPOINT_TYPE_INTERRUPT,0x10,0x40),
// CDC data interface
D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0),
D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,0x40,0),
D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,0x40,0)
};
int WEAK CDC_GetInterface(u8* interfaceNum)
{
interfaceNum[0] += 2; // uses 2
return USB_SendControl(TRANSFER_PGM,&_cdcInterface,sizeof(_cdcInterface));
}
bool WEAK CDC_Setup(Setup& setup)
{
u8 r = setup.bRequest;
u8 requestType = setup.bmRequestType;
if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType)
{
if (CDC_GET_LINE_CODING == r)
{
USB_SendControl(0,(void*)&_usbLineInfo,7);
return true;
}
}
if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType)
{
if (CDC_SET_LINE_CODING == r)
{
USB_RecvControl((void*)&_usbLineInfo,7);
return true;
}
if (CDC_SET_CONTROL_LINE_STATE == r)
{
_usbLineInfo.lineState = setup.wValueL;
// auto-reset into the bootloader is triggered when the port, already
// open at 1200 bps, is closed. this is the signal to start the watchdog
// with a relatively long period so it can finish housekeeping tasks
// like servicing endpoints before the sketch ends
if (1200 == _usbLineInfo.dwDTERate) {
// We check DTR state to determine if host port is open (bit 0 of lineState).
if ((_usbLineInfo.lineState & 0x01) == 0) {
*(uint16_t *)0x0800 = 0x7777;
wdt_enable(WDTO_120MS);
} else {
// Most OSs do some intermediate steps when configuring ports and DTR can
// twiggle more than once before stabilizing.
// To avoid spurious resets we set the watchdog to 250ms and eventually
// cancel if DTR goes back high.
wdt_disable();
wdt_reset();
*(uint16_t *)0x0800 = 0x0;
}
}
return true;
}
}
return false;
}
int _serialPeek = -1;
void Serial_::begin(uint16_t baud_count)
{
}
void Serial_::end(void)
{
}
void Serial_::accept(void)
{
ring_buffer *buffer = &cdc_rx_buffer;
int i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE;
// if we should be storing the received character into the location
// just before the tail (meaning that the head would advance to the
// current location of the tail), we're about to overflow the buffer
// and so we don't write the character or advance the head.
// while we have room to store a byte
while (i != buffer->tail) {
int c = USB_Recv(CDC_RX);
if (c == -1)
break; // no more data
buffer->buffer[buffer->head] = c;
buffer->head = i;
i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE;
}
}
int Serial_::available(void)
{
ring_buffer *buffer = &cdc_rx_buffer;
return (unsigned int)(SERIAL_BUFFER_SIZE + buffer->head - buffer->tail) % SERIAL_BUFFER_SIZE;
}
int Serial_::peek(void)
{
ring_buffer *buffer = &cdc_rx_buffer;
if (buffer->head == buffer->tail) {
return -1;
} else {
return buffer->buffer[buffer->tail];
}
}
int Serial_::read(void)
{
ring_buffer *buffer = &cdc_rx_buffer;
// if the head isn't ahead of the tail, we don't have any characters
if (buffer->head == buffer->tail) {
return -1;
} else {
unsigned char c = buffer->buffer[buffer->tail];
buffer->tail = (unsigned int)(buffer->tail + 1) % SERIAL_BUFFER_SIZE;
return c;
}
}
void Serial_::flush(void)
{
USB_Flush(CDC_TX);
}
size_t Serial_::write(uint8_t c)
{
/* only try to send bytes if the high-level CDC connection itself
is open (not just the pipe) - the OS should set lineState when the port
is opened and clear lineState when the port is closed.
bytes sent before the user opens the connection or after
the connection is closed are lost - just like with a UART. */
// TODO - ZE - check behavior on different OSes and test what happens if an
// open connection isn't broken cleanly (cable is yanked out, host dies
// or locks up, or host virtual serial port hangs)
if (_usbLineInfo.lineState > 0) {
int r = USB_Send(CDC_TX,&c,1);
if (r > 0) {
return r;
} else {
setWriteError();
return 0;
}
}
setWriteError();
return 0;
}
// This operator is a convenient way for a sketch to check whether the
// port has actually been configured and opened by the host (as opposed
// to just being connected to the host). It can be used, for example, in
// setup() before printing to ensure that an application on the host is
// actually ready to receive and display the data.
// We add a short delay before returning to fix a bug observed by Federico
// where the port is configured (lineState != 0) but not quite opened.
Serial_::operator bool() {
bool result = false;
if (_usbLineInfo.lineState > 0)
result = true;
delay(10);
return result;
}
Serial_ Serial;
#endif
#endif /* if defined(USBCON) */

View File

@@ -0,0 +1,26 @@
#ifndef client_h
#define client_h
#include "Print.h"
#include "Stream.h"
#include "IPAddress.h"
class Client : public Stream {
public:
virtual int connect(IPAddress ip, uint16_t port) =0;
virtual int connect(const char *host, uint16_t port) =0;
virtual size_t write(uint8_t) =0;
virtual size_t write(const uint8_t *buf, size_t size) =0;
virtual int available() = 0;
virtual int read() = 0;
virtual int read(uint8_t *buf, size_t size) = 0;
virtual int peek() = 0;
virtual void flush() = 0;
virtual void stop() = 0;
virtual uint8_t connected() = 0;
virtual operator bool() = 0;
protected:
uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); };
};
#endif

View File

@@ -0,0 +1,520 @@
/* Copyright (c) 2011, Peter Barrett
**
** Permission to use, copy, modify, and/or distribute this software for
** any purpose with or without fee is hereby granted, provided that the
** above copyright notice and this permission notice appear in all copies.
**
** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
** SOFTWARE.
*/
#include "Platform.h"
#include "USBAPI.h"
#include "USBDesc.h"
#if defined(USBCON)
#ifdef HID_ENABLED
//#define RAWHID_ENABLED
// Singletons for mouse and keyboard
Mouse_ Mouse;
Keyboard_ Keyboard;
//================================================================================
//================================================================================
// HID report descriptor
#define LSB(_x) ((_x) & 0xFF)
#define MSB(_x) ((_x) >> 8)
#define RAWHID_USAGE_PAGE 0xFFC0
#define RAWHID_USAGE 0x0C00
#define RAWHID_TX_SIZE 64
#define RAWHID_RX_SIZE 64
extern const u8 _hidReportDescriptor[] PROGMEM;
const u8 _hidReportDescriptor[] = {
// Mouse
0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 54
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x01, // COLLECTION (Application)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x85, 0x01, // REPORT_ID (1)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x03, // USAGE_MAXIMUM (Button 3)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x95, 0x03, // REPORT_COUNT (3)
0x75, 0x01, // REPORT_SIZE (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x05, // REPORT_SIZE (5)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x09, 0x38, // USAGE (Wheel)
0x15, 0x81, // LOGICAL_MINIMUM (-127)
0x25, 0x7f, // LOGICAL_MAXIMUM (127)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x03, // REPORT_COUNT (3)
0x81, 0x06, // INPUT (Data,Var,Rel)
0xc0, // END_COLLECTION
0xc0, // END_COLLECTION
// Keyboard
0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47
0x09, 0x06, // USAGE (Keyboard)
0xa1, 0x01, // COLLECTION (Application)
0x85, 0x02, // REPORT_ID (2)
0x05, 0x07, // USAGE_PAGE (Keyboard)
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x08, // REPORT_COUNT (8)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x08, // REPORT_SIZE (8)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x95, 0x06, // REPORT_COUNT (6)
0x75, 0x08, // REPORT_SIZE (8)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x65, // LOGICAL_MAXIMUM (101)
0x05, 0x07, // USAGE_PAGE (Keyboard)
0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))
0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application)
0x81, 0x00, // INPUT (Data,Ary,Abs)
0xc0, // END_COLLECTION
#if RAWHID_ENABLED
// RAW HID
0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30
0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE),
0xA1, 0x01, // Collection 0x01
0x85, 0x03, // REPORT_ID (3)
0x75, 0x08, // report size = 8 bits
0x15, 0x00, // logical minimum = 0
0x26, 0xFF, 0x00, // logical maximum = 255
0x95, 64, // report count TX
0x09, 0x01, // usage
0x81, 0x02, // Input (array)
0x95, 64, // report count RX
0x09, 0x02, // usage
0x91, 0x02, // Output (array)
0xC0 // end collection
#endif
};
extern const HIDDescriptor _hidInterface PROGMEM;
const HIDDescriptor _hidInterface =
{
D_INTERFACE(HID_INTERFACE,1,3,0,0),
D_HIDREPORT(sizeof(_hidReportDescriptor)),
D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,0x40,0x01)
};
//================================================================================
//================================================================================
// Driver
u8 _hid_protocol = 1;
u8 _hid_idle = 1;
#define WEAK __attribute__ ((weak))
int WEAK HID_GetInterface(u8* interfaceNum)
{
interfaceNum[0] += 1; // uses 1
return USB_SendControl(TRANSFER_PGM,&_hidInterface,sizeof(_hidInterface));
}
int WEAK HID_GetDescriptor(int i)
{
return USB_SendControl(TRANSFER_PGM,_hidReportDescriptor,sizeof(_hidReportDescriptor));
}
void WEAK HID_SendReport(u8 id, const void* data, int len)
{
USB_Send(HID_TX, &id, 1);
USB_Send(HID_TX | TRANSFER_RELEASE,data,len);
}
bool WEAK HID_Setup(Setup& setup)
{
u8 r = setup.bRequest;
u8 requestType = setup.bmRequestType;
if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType)
{
if (HID_GET_REPORT == r)
{
//HID_GetReport();
return true;
}
if (HID_GET_PROTOCOL == r)
{
//Send8(_hid_protocol); // TODO
return true;
}
}
if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType)
{
if (HID_SET_PROTOCOL == r)
{
_hid_protocol = setup.wValueL;
return true;
}
if (HID_SET_IDLE == r)
{
_hid_idle = setup.wValueL;
return true;
}
}
return false;
}
//================================================================================
//================================================================================
// Mouse
Mouse_::Mouse_(void) : _buttons(0)
{
}
void Mouse_::begin(void)
{
}
void Mouse_::end(void)
{
}
void Mouse_::click(uint8_t b)
{
_buttons = b;
move(0,0,0);
_buttons = 0;
move(0,0,0);
}
void Mouse_::move(signed char x, signed char y, signed char wheel)
{
u8 m[4];
m[0] = _buttons;
m[1] = x;
m[2] = y;
m[3] = wheel;
HID_SendReport(1,m,4);
}
void Mouse_::buttons(uint8_t b)
{
if (b != _buttons)
{
_buttons = b;
move(0,0,0);
}
}
void Mouse_::press(uint8_t b)
{
buttons(_buttons | b);
}
void Mouse_::release(uint8_t b)
{
buttons(_buttons & ~b);
}
bool Mouse_::isPressed(uint8_t b)
{
if ((b & _buttons) > 0)
return true;
return false;
}
//================================================================================
//================================================================================
// Keyboard
Keyboard_::Keyboard_(void)
{
}
void Keyboard_::begin(void)
{
}
void Keyboard_::end(void)
{
}
void Keyboard_::sendReport(KeyReport* keys)
{
HID_SendReport(2,keys,sizeof(KeyReport));
}
extern
const uint8_t _asciimap[128] PROGMEM;
#define SHIFT 0x80
const uint8_t _asciimap[128] =
{
0x00, // NUL
0x00, // SOH
0x00, // STX
0x00, // ETX
0x00, // EOT
0x00, // ENQ
0x00, // ACK
0x00, // BEL
0x2a, // BS Backspace
0x2b, // TAB Tab
0x28, // LF Enter
0x00, // VT
0x00, // FF
0x00, // CR
0x00, // SO
0x00, // SI
0x00, // DEL
0x00, // DC1
0x00, // DC2
0x00, // DC3
0x00, // DC4
0x00, // NAK
0x00, // SYN
0x00, // ETB
0x00, // CAN
0x00, // EM
0x00, // SUB
0x00, // ESC
0x00, // FS
0x00, // GS
0x00, // RS
0x00, // US
0x2c, // ' '
0x1e|SHIFT, // !
0x34|SHIFT, // "
0x20|SHIFT, // #
0x21|SHIFT, // $
0x22|SHIFT, // %
0x24|SHIFT, // &
0x34, // '
0x26|SHIFT, // (
0x27|SHIFT, // )
0x25|SHIFT, // *
0x2e|SHIFT, // +
0x36, // ,
0x2d, // -
0x37, // .
0x38, // /
0x27, // 0
0x1e, // 1
0x1f, // 2
0x20, // 3
0x21, // 4
0x22, // 5
0x23, // 6
0x24, // 7
0x25, // 8
0x26, // 9
0x33|SHIFT, // :
0x33, // ;
0x36|SHIFT, // <
0x2e, // =
0x37|SHIFT, // >
0x38|SHIFT, // ?
0x1f|SHIFT, // @
0x04|SHIFT, // A
0x05|SHIFT, // B
0x06|SHIFT, // C
0x07|SHIFT, // D
0x08|SHIFT, // E
0x09|SHIFT, // F
0x0a|SHIFT, // G
0x0b|SHIFT, // H
0x0c|SHIFT, // I
0x0d|SHIFT, // J
0x0e|SHIFT, // K
0x0f|SHIFT, // L
0x10|SHIFT, // M
0x11|SHIFT, // N
0x12|SHIFT, // O
0x13|SHIFT, // P
0x14|SHIFT, // Q
0x15|SHIFT, // R
0x16|SHIFT, // S
0x17|SHIFT, // T
0x18|SHIFT, // U
0x19|SHIFT, // V
0x1a|SHIFT, // W
0x1b|SHIFT, // X
0x1c|SHIFT, // Y
0x1d|SHIFT, // Z
0x2f, // [
0x31, // bslash
0x30, // ]
0x23|SHIFT, // ^
0x2d|SHIFT, // _
0x35, // `
0x04, // a
0x05, // b
0x06, // c
0x07, // d
0x08, // e
0x09, // f
0x0a, // g
0x0b, // h
0x0c, // i
0x0d, // j
0x0e, // k
0x0f, // l
0x10, // m
0x11, // n
0x12, // o
0x13, // p
0x14, // q
0x15, // r
0x16, // s
0x17, // t
0x18, // u
0x19, // v
0x1a, // w
0x1b, // x
0x1c, // y
0x1d, // z
0x2f|SHIFT, //
0x31|SHIFT, // |
0x30|SHIFT, // }
0x35|SHIFT, // ~
0 // DEL
};
uint8_t USBPutChar(uint8_t c);
// press() adds the specified key (printing, non-printing, or modifier)
// to the persistent key report and sends the report. Because of the way
// USB HID works, the host acts like the key remains pressed until we
// call release(), releaseAll(), or otherwise clear the report and resend.
size_t Keyboard_::press(uint8_t k)
{
uint8_t i;
if (k >= 136) { // it's a non-printing key (not a modifier)
k = k - 136;
} else if (k >= 128) { // it's a modifier key
_keyReport.modifiers |= (1<<(k-128));
k = 0;
} else { // it's a printing key
k = pgm_read_byte(_asciimap + k);
if (!k) {
setWriteError();
return 0;
}
if (k & 0x80) { // it's a capital letter or other character reached with shift
_keyReport.modifiers |= 0x02; // the left shift modifier
k &= 0x7F;
}
}
// Add k to the key report only if it's not already present
// and if there is an empty slot.
if (_keyReport.keys[0] != k && _keyReport.keys[1] != k &&
_keyReport.keys[2] != k && _keyReport.keys[3] != k &&
_keyReport.keys[4] != k && _keyReport.keys[5] != k) {
for (i=0; i<6; i++) {
if (_keyReport.keys[i] == 0x00) {
_keyReport.keys[i] = k;
break;
}
}
if (i == 6) {
setWriteError();
return 0;
}
}
sendReport(&_keyReport);
return 1;
}
// release() takes the specified key out of the persistent key report and
// sends the report. This tells the OS the key is no longer pressed and that
// it shouldn't be repeated any more.
size_t Keyboard_::release(uint8_t k)
{
uint8_t i;
if (k >= 136) { // it's a non-printing key (not a modifier)
k = k - 136;
} else if (k >= 128) { // it's a modifier key
_keyReport.modifiers &= ~(1<<(k-128));
k = 0;
} else { // it's a printing key
k = pgm_read_byte(_asciimap + k);
if (!k) {
return 0;
}
if (k & 0x80) { // it's a capital letter or other character reached with shift
_keyReport.modifiers &= ~(0x02); // the left shift modifier
k &= 0x7F;
}
}
// Test the key report to see if k is present. Clear it if it exists.
// Check all positions in case the key is present more than once (which it shouldn't be)
for (i=0; i<6; i++) {
if (0 != k && _keyReport.keys[i] == k) {
_keyReport.keys[i] = 0x00;
}
}
sendReport(&_keyReport);
return 1;
}
void Keyboard_::releaseAll(void)
{
_keyReport.keys[0] = 0;
_keyReport.keys[1] = 0;
_keyReport.keys[2] = 0;
_keyReport.keys[3] = 0;
_keyReport.keys[4] = 0;
_keyReport.keys[5] = 0;
_keyReport.modifiers = 0;
sendReport(&_keyReport);
}
size_t Keyboard_::write(uint8_t c)
{
uint8_t p = press(c); // Keydown
uint8_t r = release(c); // Keyup
return (p); // just return the result of press() since release() almost always returns 1
}
#endif
#endif /* if defined(USBCON) */

View File

@@ -0,0 +1,519 @@
/*
HardwareSerial.cpp - Hardware serial library for Wiring
Copyright (c) 2006 Nicholas Zambetti. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Modified 23 November 2006 by David A. Mellis
Modified 28 September 2010 by Mark Sproul
Modified 14 August 2012 by Alarus
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include "Arduino.h"
#include "wiring_private.h"
// 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)
#include "HardwareSerial.h"
/*
* on ATmega8, the uart and its bits are not numbered, so there is no "TXC0"
* definition.
*/
#if !defined(TXC0)
#if defined(TXC)
#define TXC0 TXC
#elif defined(TXC1)
// Some devices have uart1 but no uart0
#define TXC0 TXC1
#else
#error TXC0 not definable in HardwareSerial.h
#endif
#endif
// Define constants and variables for buffering incoming serial data. We're
// using a ring buffer (I think), in which head is the index of the location
// to which to write the next incoming character and tail is the index of the
// location from which to read.
#if (RAMEND < 1000)
#define SERIAL_BUFFER_SIZE 16
#else
#define SERIAL_BUFFER_SIZE 64
#endif
struct ring_buffer
{
unsigned char buffer[SERIAL_BUFFER_SIZE];
volatile unsigned int head;
volatile unsigned int tail;
};
#if defined(USBCON)
ring_buffer rx_buffer = { { 0 }, 0, 0};
ring_buffer tx_buffer = { { 0 }, 0, 0};
#endif
#if defined(UBRRH) || defined(UBRR0H)
ring_buffer rx_buffer = { { 0 }, 0, 0 };
ring_buffer tx_buffer = { { 0 }, 0, 0 };
#endif
#if defined(UBRR1H)
ring_buffer rx_buffer1 = { { 0 }, 0, 0 };
ring_buffer tx_buffer1 = { { 0 }, 0, 0 };
#endif
#if defined(UBRR2H)
ring_buffer rx_buffer2 = { { 0 }, 0, 0 };
ring_buffer tx_buffer2 = { { 0 }, 0, 0 };
#endif
#if defined(UBRR3H)
ring_buffer rx_buffer3 = { { 0 }, 0, 0 };
ring_buffer tx_buffer3 = { { 0 }, 0, 0 };
#endif
inline void store_char(unsigned char c, ring_buffer *buffer)
{
int i = (unsigned int)(buffer->head + 1) % SERIAL_BUFFER_SIZE;
// if we should be storing the received character into the location
// just before the tail (meaning that the head would advance to the
// current location of the tail), we're about to overflow the buffer
// and so we don't write the character or advance the head.
if (i != buffer->tail) {
buffer->buffer[buffer->head] = c;
buffer->head = i;
}
}
#if !defined(USART0_RX_vect) && defined(USART1_RX_vect)
// do nothing - on the 32u4 the first USART is USART1
#else
#if !defined(USART_RX_vect) && !defined(SIG_USART0_RECV) && \
!defined(SIG_UART0_RECV) && !defined(USART0_RX_vect) && \
!defined(SIG_UART_RECV)
#error "Don't know what the Data Received vector is called for the first UART"
#else
void serialEvent() __attribute__((weak));
void serialEvent() {}
#define serialEvent_implemented
#if defined(USART_RX_vect)
SIGNAL(USART_RX_vect)
#elif defined(SIG_USART0_RECV)
SIGNAL(SIG_USART0_RECV)
#elif defined(SIG_UART0_RECV)
SIGNAL(SIG_UART0_RECV)
#elif defined(USART0_RX_vect)
SIGNAL(USART0_RX_vect)
#elif defined(SIG_UART_RECV)
SIGNAL(SIG_UART_RECV)
#endif
{
#if defined(UDR0)
if (bit_is_clear(UCSR0A, UPE0)) {
unsigned char c = UDR0;
store_char(c, &rx_buffer);
} else {
unsigned char c = UDR0;
};
#elif defined(UDR)
if (bit_is_clear(UCSRA, PE)) {
unsigned char c = UDR;
store_char(c, &rx_buffer);
} else {
unsigned char c = UDR;
};
#else
#error UDR not defined
#endif
}
#endif
#endif
#if defined(USART1_RX_vect)
void serialEvent1() __attribute__((weak));
void serialEvent1() {}
#define serialEvent1_implemented
SIGNAL(USART1_RX_vect)
{
if (bit_is_clear(UCSR1A, UPE1)) {
unsigned char c = UDR1;
store_char(c, &rx_buffer1);
} else {
unsigned char c = UDR1;
};
}
#elif defined(SIG_USART1_RECV)
#error SIG_USART1_RECV
#endif
#if defined(USART2_RX_vect) && defined(UDR2)
void serialEvent2() __attribute__((weak));
void serialEvent2() {}
#define serialEvent2_implemented
SIGNAL(USART2_RX_vect)
{
if (bit_is_clear(UCSR2A, UPE2)) {
unsigned char c = UDR2;
store_char(c, &rx_buffer2);
} else {
unsigned char c = UDR2;
};
}
#elif defined(SIG_USART2_RECV)
#error SIG_USART2_RECV
#endif
#if defined(USART3_RX_vect) && defined(UDR3)
void serialEvent3() __attribute__((weak));
void serialEvent3() {}
#define serialEvent3_implemented
SIGNAL(USART3_RX_vect)
{
if (bit_is_clear(UCSR3A, UPE3)) {
unsigned char c = UDR3;
store_char(c, &rx_buffer3);
} else {
unsigned char c = UDR3;
};
}
#elif defined(SIG_USART3_RECV)
#error SIG_USART3_RECV
#endif
void serialEventRun(void)
{
#ifdef serialEvent_implemented
if (Serial.available()) serialEvent();
#endif
#ifdef serialEvent1_implemented
if (Serial1.available()) serialEvent1();
#endif
#ifdef serialEvent2_implemented
if (Serial2.available()) serialEvent2();
#endif
#ifdef serialEvent3_implemented
if (Serial3.available()) serialEvent3();
#endif
}
#if !defined(USART0_UDRE_vect) && defined(USART1_UDRE_vect)
// do nothing - on the 32u4 the first USART is USART1
#else
#if !defined(UART0_UDRE_vect) && !defined(UART_UDRE_vect) && !defined(USART0_UDRE_vect) && !defined(USART_UDRE_vect)
#error "Don't know what the Data Register Empty vector is called for the first UART"
#else
#if defined(UART0_UDRE_vect)
ISR(UART0_UDRE_vect)
#elif defined(UART_UDRE_vect)
ISR(UART_UDRE_vect)
#elif defined(USART0_UDRE_vect)
ISR(USART0_UDRE_vect)
#elif defined(USART_UDRE_vect)
ISR(USART_UDRE_vect)
#endif
{
if (tx_buffer.head == tx_buffer.tail) {
// Buffer empty, so disable interrupts
#if defined(UCSR0B)
cbi(UCSR0B, UDRIE0);
#else
cbi(UCSRB, UDRIE);
#endif
}
else {
// There is more data in the output buffer. Send the next byte
unsigned char c = tx_buffer.buffer[tx_buffer.tail];
tx_buffer.tail = (tx_buffer.tail + 1) % SERIAL_BUFFER_SIZE;
#if defined(UDR0)
UDR0 = c;
#elif defined(UDR)
UDR = c;
#else
#error UDR not defined
#endif
}
}
#endif
#endif
#ifdef USART1_UDRE_vect
ISR(USART1_UDRE_vect)
{
if (tx_buffer1.head == tx_buffer1.tail) {
// Buffer empty, so disable interrupts
cbi(UCSR1B, UDRIE1);
}
else {
// There is more data in the output buffer. Send the next byte
unsigned char c = tx_buffer1.buffer[tx_buffer1.tail];
tx_buffer1.tail = (tx_buffer1.tail + 1) % SERIAL_BUFFER_SIZE;
UDR1 = c;
}
}
#endif
#ifdef USART2_UDRE_vect
ISR(USART2_UDRE_vect)
{
if (tx_buffer2.head == tx_buffer2.tail) {
// Buffer empty, so disable interrupts
cbi(UCSR2B, UDRIE2);
}
else {
// There is more data in the output buffer. Send the next byte
unsigned char c = tx_buffer2.buffer[tx_buffer2.tail];
tx_buffer2.tail = (tx_buffer2.tail + 1) % SERIAL_BUFFER_SIZE;
UDR2 = c;
}
}
#endif
#ifdef USART3_UDRE_vect
ISR(USART3_UDRE_vect)
{
if (tx_buffer3.head == tx_buffer3.tail) {
// Buffer empty, so disable interrupts
cbi(UCSR3B, UDRIE3);
}
else {
// There is more data in the output buffer. Send the next byte
unsigned char c = tx_buffer3.buffer[tx_buffer3.tail];
tx_buffer3.tail = (tx_buffer3.tail + 1) % SERIAL_BUFFER_SIZE;
UDR3 = c;
}
}
#endif
// Constructors ////////////////////////////////////////////////////////////////
HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer,
volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
volatile uint8_t *ucsrc, volatile uint8_t *udr,
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x)
{
_rx_buffer = rx_buffer;
_tx_buffer = tx_buffer;
_ubrrh = ubrrh;
_ubrrl = ubrrl;
_ucsra = ucsra;
_ucsrb = ucsrb;
_ucsrc = ucsrc;
_udr = udr;
_rxen = rxen;
_txen = txen;
_rxcie = rxcie;
_udrie = udrie;
_u2x = u2x;
}
// Public Methods //////////////////////////////////////////////////////////////
void HardwareSerial::begin(unsigned long baud)
{
uint16_t baud_setting;
bool use_u2x = true;
#if F_CPU == 16000000UL
// hardcoded exception for compatibility with the bootloader shipped
// with the Duemilanove and previous boards and the firmware on the 8U2
// on the Uno and Mega 2560.
if (baud == 57600) {
use_u2x = false;
}
#endif
try_again:
if (use_u2x) {
*_ucsra = 1 << _u2x;
baud_setting = (F_CPU / 4 / baud - 1) / 2;
} else {
*_ucsra = 0;
baud_setting = (F_CPU / 8 / baud - 1) / 2;
}
if ((baud_setting > 4095) && use_u2x)
{
use_u2x = false;
goto try_again;
}
// assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register)
*_ubrrh = baud_setting >> 8;
*_ubrrl = baud_setting;
transmitting = false;
sbi(*_ucsrb, _rxen);
sbi(*_ucsrb, _txen);
sbi(*_ucsrb, _rxcie);
cbi(*_ucsrb, _udrie);
}
void HardwareSerial::begin(unsigned long baud, byte config)
{
uint16_t baud_setting;
uint8_t current_config;
bool use_u2x = true;
#if F_CPU == 16000000UL
// hardcoded exception for compatibility with the bootloader shipped
// with the Duemilanove and previous boards and the firmware on the 8U2
// on the Uno and Mega 2560.
if (baud == 57600) {
use_u2x = false;
}
#endif
try_again:
if (use_u2x) {
*_ucsra = 1 << _u2x;
baud_setting = (F_CPU / 4 / baud - 1) / 2;
} else {
*_ucsra = 0;
baud_setting = (F_CPU / 8 / baud - 1) / 2;
}
if ((baud_setting > 4095) && use_u2x)
{
use_u2x = false;
goto try_again;
}
// assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register)
*_ubrrh = baud_setting >> 8;
*_ubrrl = baud_setting;
//set the data bits, parity, and stop bits
#if defined(__AVR_ATmega8__)
config |= 0x80; // select UCSRC register (shared with UBRRH)
#endif
*_ucsrc = config;
sbi(*_ucsrb, _rxen);
sbi(*_ucsrb, _txen);
sbi(*_ucsrb, _rxcie);
cbi(*_ucsrb, _udrie);
}
void HardwareSerial::end()
{
// wait for transmission of outgoing data
while (_tx_buffer->head != _tx_buffer->tail)
;
cbi(*_ucsrb, _rxen);
cbi(*_ucsrb, _txen);
cbi(*_ucsrb, _rxcie);
cbi(*_ucsrb, _udrie);
// clear any received data
_rx_buffer->head = _rx_buffer->tail;
}
int HardwareSerial::available(void)
{
return (unsigned int)(SERIAL_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % SERIAL_BUFFER_SIZE;
}
int HardwareSerial::peek(void)
{
if (_rx_buffer->head == _rx_buffer->tail) {
return -1;
} else {
return _rx_buffer->buffer[_rx_buffer->tail];
}
}
int HardwareSerial::read(void)
{
// if the head isn't ahead of the tail, we don't have any characters
if (_rx_buffer->head == _rx_buffer->tail) {
return -1;
} else {
unsigned char c = _rx_buffer->buffer[_rx_buffer->tail];
_rx_buffer->tail = (unsigned int)(_rx_buffer->tail + 1) % SERIAL_BUFFER_SIZE;
return c;
}
}
void HardwareSerial::flush()
{
// UDR is kept full while the buffer is not empty, so TXC triggers when EMPTY && SENT
while (transmitting && ! (*_ucsra & _BV(TXC0)));
transmitting = false;
}
size_t HardwareSerial::write(uint8_t c)
{
int i = (_tx_buffer->head + 1) % SERIAL_BUFFER_SIZE;
// If the output buffer is full, there's nothing for it other than to
// wait for the interrupt handler to empty it a bit
// ???: return 0 here instead?
while (i == _tx_buffer->tail)
;
_tx_buffer->buffer[_tx_buffer->head] = c;
_tx_buffer->head = i;
sbi(*_ucsrb, _udrie);
// clear the TXC bit -- "can be cleared by writing a one to its bit location"
transmitting = true;
sbi(*_ucsra, TXC0);
return 1;
}
HardwareSerial::operator bool() {
return true;
}
// Preinstantiate Objects //////////////////////////////////////////////////////
#if defined(UBRRH) && defined(UBRRL)
HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UCSRC, &UDR, RXEN, TXEN, RXCIE, UDRIE, U2X);
#elif defined(UBRR0H) && defined(UBRR0L)
HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UCSR0C, &UDR0, RXEN0, TXEN0, RXCIE0, UDRIE0, U2X0);
#elif defined(USBCON)
// do nothing - Serial object and buffers are initialized in CDC code
#else
#error no serial port defined (port 0)
#endif
#if defined(UBRR1H)
HardwareSerial Serial1(&rx_buffer1, &tx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UCSR1C, &UDR1, RXEN1, TXEN1, RXCIE1, UDRIE1, U2X1);
#endif
#if defined(UBRR2H)
HardwareSerial Serial2(&rx_buffer2, &tx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UCSR2C, &UDR2, RXEN2, TXEN2, RXCIE2, UDRIE2, U2X2);
#endif
#if defined(UBRR3H)
HardwareSerial Serial3(&rx_buffer3, &tx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3);
#endif
#endif // whole file

View File

@@ -0,0 +1,115 @@
/*
HardwareSerial.h - Hardware serial library for Wiring
Copyright (c) 2006 Nicholas Zambetti. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Modified 28 September 2010 by Mark Sproul
Modified 14 August 2012 by Alarus
*/
#ifndef HardwareSerial_h
#define HardwareSerial_h
#include <inttypes.h>
#include "Stream.h"
struct ring_buffer;
class HardwareSerial : public Stream
{
private:
ring_buffer *_rx_buffer;
ring_buffer *_tx_buffer;
volatile uint8_t *_ubrrh;
volatile uint8_t *_ubrrl;
volatile uint8_t *_ucsra;
volatile uint8_t *_ucsrb;
volatile uint8_t *_ucsrc;
volatile uint8_t *_udr;
uint8_t _rxen;
uint8_t _txen;
uint8_t _rxcie;
uint8_t _udrie;
uint8_t _u2x;
bool transmitting;
public:
HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer,
volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
volatile uint8_t *ucsrc, volatile uint8_t *udr,
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x);
void begin(unsigned long);
void begin(unsigned long, uint8_t);
void end();
virtual int available(void);
virtual int peek(void);
virtual int read(void);
virtual void flush(void);
virtual size_t write(uint8_t);
inline size_t write(unsigned long n) { return write((uint8_t)n); }
inline size_t write(long n) { return write((uint8_t)n); }
inline size_t write(unsigned int n) { return write((uint8_t)n); }
inline size_t write(int n) { return write((uint8_t)n); }
using Print::write; // pull in write(str) and write(buf, size) from Print
operator bool();
};
// Define config for Serial.begin(baud, config);
#define SERIAL_5N1 0x00
#define SERIAL_6N1 0x02
#define SERIAL_7N1 0x04
#define SERIAL_8N1 0x06
#define SERIAL_5N2 0x08
#define SERIAL_6N2 0x0A
#define SERIAL_7N2 0x0C
#define SERIAL_8N2 0x0E
#define SERIAL_5E1 0x20
#define SERIAL_6E1 0x22
#define SERIAL_7E1 0x24
#define SERIAL_8E1 0x26
#define SERIAL_5E2 0x28
#define SERIAL_6E2 0x2A
#define SERIAL_7E2 0x2C
#define SERIAL_8E2 0x2E
#define SERIAL_5O1 0x30
#define SERIAL_6O1 0x32
#define SERIAL_7O1 0x34
#define SERIAL_8O1 0x36
#define SERIAL_5O2 0x38
#define SERIAL_6O2 0x3A
#define SERIAL_7O2 0x3C
#define SERIAL_8O2 0x3E
#if defined(UBRRH) || defined(UBRR0H)
extern HardwareSerial Serial;
#elif defined(USBCON)
#include "USBAPI.h"
// extern HardwareSerial Serial_;
#endif
#if defined(UBRR1H)
extern HardwareSerial Serial1;
#endif
#if defined(UBRR2H)
extern HardwareSerial Serial2;
#endif
#if defined(UBRR3H)
extern HardwareSerial Serial3;
#endif
extern void serialEventRun(void) __attribute__((weak));
#endif

View File

@@ -0,0 +1,56 @@
#include <Arduino.h>
#include <IPAddress.h>
IPAddress::IPAddress()
{
memset(_address, 0, sizeof(_address));
}
IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet)
{
_address[0] = first_octet;
_address[1] = second_octet;
_address[2] = third_octet;
_address[3] = fourth_octet;
}
IPAddress::IPAddress(uint32_t address)
{
memcpy(_address, &address, sizeof(_address));
}
IPAddress::IPAddress(const uint8_t *address)
{
memcpy(_address, address, sizeof(_address));
}
IPAddress& IPAddress::operator=(const uint8_t *address)
{
memcpy(_address, address, sizeof(_address));
return *this;
}
IPAddress& IPAddress::operator=(uint32_t address)
{
memcpy(_address, (const uint8_t *)&address, sizeof(_address));
return *this;
}
bool IPAddress::operator==(const uint8_t* addr)
{
return memcmp(addr, _address, sizeof(_address)) == 0;
}
size_t IPAddress::printTo(Print& p) const
{
size_t n = 0;
for (int i =0; i < 3; i++)
{
n += p.print(_address[i], DEC);
n += p.print('.');
}
n += p.print(_address[3], DEC);
return n;
}

View File

@@ -0,0 +1,76 @@
/*
*
* MIT License:
* Copyright (c) 2011 Adrian McEwen
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* adrianm@mcqn.com 1/1/2011
*/
#ifndef IPAddress_h
#define IPAddress_h
#include <Printable.h>
// A class to make it easier to handle and pass around IP addresses
class IPAddress : public Printable {
private:
uint8_t _address[4]; // IPv4 address
// Access the raw byte array containing the address. Because this returns a pointer
// to the internal structure rather than a copy of the address this function should only
// be used when you know that the usage of the returned uint8_t* will be transient and not
// stored.
uint8_t* raw_address() { return _address; };
public:
// Constructors
IPAddress();
IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet);
IPAddress(uint32_t address);
IPAddress(const uint8_t *address);
// Overloaded cast operator to allow IPAddress objects to be used where a pointer
// to a four-byte uint8_t array is expected
operator uint32_t() { return *((uint32_t*)_address); };
bool operator==(const IPAddress& addr) { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); };
bool operator==(const uint8_t* addr);
// Overloaded index operator to allow getting and setting individual octets of the address
uint8_t operator[](int index) const { return _address[index]; };
uint8_t& operator[](int index) { return _address[index]; };
// Overloaded copy operators to allow initialisation of IPAddress objects from other types
IPAddress& operator=(const uint8_t *address);
IPAddress& operator=(uint32_t address);
virtual size_t printTo(Print& p) const;
friend class EthernetClass;
friend class UDP;
friend class Client;
friend class Server;
friend class DhcpClass;
friend class DNSClient;
};
const IPAddress INADDR_NONE(0,0,0,0);
#endif

View File

@@ -0,0 +1,23 @@
#ifndef __PLATFORM_H__
#define __PLATFORM_H__
#include <inttypes.h>
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#include <avr/interrupt.h>
#include <util/delay.h>
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned long u32;
#include "Arduino.h"
#if defined(USBCON)
#include "USBDesc.h"
#include "USBCore.h"
#include "USBAPI.h"
#endif /* if defined(USBCON) */
#endif

View File

@@ -0,0 +1,268 @@
/*
Print.cpp - Base class that provides print() and println()
Copyright (c) 2008 David A. Mellis. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Modified 23 November 2006 by David A. Mellis
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "Arduino.h"
#include "Print.h"
// Public Methods //////////////////////////////////////////////////////////////
/* default implementation: may be overridden */
size_t Print::write(const uint8_t *buffer, size_t size)
{
size_t n = 0;
while (size--) {
n += write(*buffer++);
}
return n;
}
size_t Print::print(const __FlashStringHelper *ifsh)
{
const char PROGMEM *p = (const char PROGMEM *)ifsh;
size_t n = 0;
while (1) {
unsigned char c = pgm_read_byte(p++);
if (c == 0) break;
n += write(c);
}
return n;
}
size_t Print::print(const String &s)
{
size_t n = 0;
for (uint16_t i = 0; i < s.length(); i++) {
n += write(s[i]);
}
return n;
}
size_t Print::print(const char str[])
{
return write(str);
}
size_t Print::print(char c)
{
return write(c);
}
size_t Print::print(unsigned char b, int base)
{
return print((unsigned long) b, base);
}
size_t Print::print(int n, int base)
{
return print((long) n, base);
}
size_t Print::print(unsigned int n, int base)
{
return print((unsigned long) n, base);
}
size_t Print::print(long n, int base)
{
if (base == 0) {
return write(n);
} else if (base == 10) {
if (n < 0) {
int t = print('-');
n = -n;
return printNumber(n, 10) + t;
}
return printNumber(n, 10);
} else {
return printNumber(n, base);
}
}
size_t Print::print(unsigned long n, int base)
{
if (base == 0) return write(n);
else return printNumber(n, base);
}
size_t Print::print(double n, int digits)
{
return printFloat(n, digits);
}
size_t Print::println(const __FlashStringHelper *ifsh)
{
size_t n = print(ifsh);
n += println();
return n;
}
size_t Print::print(const Printable& x)
{
return x.printTo(*this);
}
size_t Print::println(void)
{
size_t n = print('\r');
n += print('\n');
return n;
}
size_t Print::println(const String &s)
{
size_t n = print(s);
n += println();
return n;
}
size_t Print::println(const char c[])
{
size_t n = print(c);
n += println();
return n;
}
size_t Print::println(char c)
{
size_t n = print(c);
n += println();
return n;
}
size_t Print::println(unsigned char b, int base)
{
size_t n = print(b, base);
n += println();
return n;
}
size_t Print::println(int num, int base)
{
size_t n = print(num, base);
n += println();
return n;
}
size_t Print::println(unsigned int num, int base)
{
size_t n = print(num, base);
n += println();
return n;
}
size_t Print::println(long num, int base)
{
size_t n = print(num, base);
n += println();
return n;
}
size_t Print::println(unsigned long num, int base)
{
size_t n = print(num, base);
n += println();
return n;
}
size_t Print::println(double num, int digits)
{
size_t n = print(num, digits);
n += println();
return n;
}
size_t Print::println(const Printable& x)
{
size_t n = print(x);
n += println();
return n;
}
// Private Methods /////////////////////////////////////////////////////////////
size_t Print::printNumber(unsigned long n, uint8_t base) {
char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte.
char *str = &buf[sizeof(buf) - 1];
*str = '\0';
// prevent crash if called with base == 1
if (base < 2) base = 10;
do {
unsigned long m = n;
n /= base;
char c = m - base * n;
*--str = c < 10 ? c + '0' : c + 'A' - 10;
} while(n);
return write(str);
}
size_t Print::printFloat(double number, uint8_t digits)
{
size_t n = 0;
if (isnan(number)) return print("nan");
if (isinf(number)) return print("inf");
if (number > 4294967040.0) return print ("ovf"); // constant determined empirically
if (number <-4294967040.0) return print ("ovf"); // constant determined empirically
// Handle negative numbers
if (number < 0.0)
{
n += print('-');
number = -number;
}
// Round correctly so that print(1.999, 2) prints as "2.00"
double rounding = 0.5;
for (uint8_t i=0; i<digits; ++i)
rounding /= 10.0;
number += rounding;
// Extract the integer part of the number and print it
unsigned long int_part = (unsigned long)number;
double remainder = number - (double)int_part;
n += print(int_part);
// Print the decimal point, but only if there are digits beyond
if (digits > 0) {
n += print(".");
}
// Extract digits from the remainder one at a time
while (digits-- > 0)
{
remainder *= 10.0;
int toPrint = int(remainder);
n += print(toPrint);
remainder -= toPrint;
}
return n;
}

View File

@@ -0,0 +1,81 @@
/*
Print.h - Base class that provides print() and println()
Copyright (c) 2008 David A. Mellis. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef Print_h
#define Print_h
#include <inttypes.h>
#include <stdio.h> // for size_t
#include "WString.h"
#include "Printable.h"
#define DEC 10
#define HEX 16
#define OCT 8
#define BIN 2
class Print
{
private:
int write_error;
size_t printNumber(unsigned long, uint8_t);
size_t printFloat(double, uint8_t);
protected:
void setWriteError(int err = 1) { write_error = err; }
public:
Print() : write_error(0) {}
int getWriteError() { return write_error; }
void clearWriteError() { setWriteError(0); }
virtual size_t write(uint8_t) = 0;
size_t write(const char *str) {
if (str == NULL) return 0;
return write((const uint8_t *)str, strlen(str));
}
virtual size_t write(const uint8_t *buffer, size_t size);
size_t print(const __FlashStringHelper *);
size_t print(const String &);
size_t print(const char[]);
size_t print(char);
size_t print(unsigned char, int = DEC);
size_t print(int, int = DEC);
size_t print(unsigned int, int = DEC);
size_t print(long, int = DEC);
size_t print(unsigned long, int = DEC);
size_t print(double, int = 2);
size_t print(const Printable&);
size_t println(const __FlashStringHelper *);
size_t println(const String &s);
size_t println(const char[]);
size_t println(char);
size_t println(unsigned char, int = DEC);
size_t println(int, int = DEC);
size_t println(unsigned int, int = DEC);
size_t println(long, int = DEC);
size_t println(unsigned long, int = DEC);
size_t println(double, int = 2);
size_t println(const Printable&);
size_t println(void);
};
#endif

View File

@@ -0,0 +1,40 @@
/*
Printable.h - Interface class that allows printing of complex types
Copyright (c) 2011 Adrian McEwen. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef Printable_h
#define Printable_h
#include <new.h>
class Print;
/** The Printable class provides a way for new classes to allow themselves to be printed.
By deriving from Printable and implementing the printTo method, it will then be possible
for users to print out instances of this class by passing them into the usual
Print::print and Print::println methods.
*/
class Printable
{
public:
virtual size_t printTo(Print& p) const = 0;
};
#endif

View File

@@ -0,0 +1,9 @@
#ifndef server_h
#define server_h
class Server : public Print {
public:
virtual void begin() =0;
};
#endif

View File

@@ -0,0 +1,270 @@
/*
Stream.cpp - adds parsing methods to Stream class
Copyright (c) 2008 David A. Mellis. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Created July 2011
parsing functions based on TextFinder library by Michael Margolis
*/
#include "Arduino.h"
#include "Stream.h"
#define PARSE_TIMEOUT 1000 // default number of milli-seconds to wait
#define NO_SKIP_CHAR 1 // a magic char not found in a valid ASCII numeric field
// private method to read stream with timeout
int Stream::timedRead()
{
int c;
_startMillis = millis();
do {
c = read();
if (c >= 0) return c;
} while(millis() - _startMillis < _timeout);
return -1; // -1 indicates timeout
}
// private method to peek stream with timeout
int Stream::timedPeek()
{
int c;
_startMillis = millis();
do {
c = peek();
if (c >= 0) return c;
} while(millis() - _startMillis < _timeout);
return -1; // -1 indicates timeout
}
// returns peek of the next digit in the stream or -1 if timeout
// discards non-numeric characters
int Stream::peekNextDigit()
{
int c;
while (1) {
c = timedPeek();
if (c < 0) return c; // timeout
if (c == '-') return c;
if (c >= '0' && c <= '9') return c;
read(); // discard non-numeric
}
}
// Public Methods
//////////////////////////////////////////////////////////////
void Stream::setTimeout(unsigned long timeout) // sets the maximum number of milliseconds to wait
{
_timeout = timeout;
}
// find returns true if the target string is found
bool Stream::find(char *target)
{
return findUntil(target, NULL);
}
// reads data from the stream until the target string of given length is found
// returns true if target string is found, false if timed out
bool Stream::find(char *target, size_t length)
{
return findUntil(target, length, NULL, 0);
}
// as find but search ends if the terminator string is found
bool Stream::findUntil(char *target, char *terminator)
{
return findUntil(target, strlen(target), terminator, strlen(terminator));
}
// reads data from the stream until the target string of the given length is found
// search terminated if the terminator string is found
// returns true if target string is found, false if terminated or timed out
bool Stream::findUntil(char *target, size_t targetLen, char *terminator, size_t termLen)
{
size_t index = 0; // maximum target string length is 64k bytes!
size_t termIndex = 0;
int c;
if( *target == 0)
return true; // return true if target is a null string
while( (c = timedRead()) > 0){
if(c != target[index])
index = 0; // reset index if any char does not match
if( c == target[index]){
//////Serial.print("found "); Serial.write(c); Serial.print("index now"); Serial.println(index+1);
if(++index >= targetLen){ // return true if all chars in the target match
return true;
}
}
if(termLen > 0 && c == terminator[termIndex]){
if(++termIndex >= termLen)
return false; // return false if terminate string found before target string
}
else
termIndex = 0;
}
return false;
}
// returns the first valid (long) integer value from the current position.
// initial characters that are not digits (or the minus sign) are skipped
// function is terminated by the first character that is not a digit.
long Stream::parseInt()
{
return parseInt(NO_SKIP_CHAR); // terminate on first non-digit character (or timeout)
}
// as above but a given skipChar is ignored
// this allows format characters (typically commas) in values to be ignored
long Stream::parseInt(char skipChar)
{
boolean isNegative = false;
long value = 0;
int c;
c = peekNextDigit();
// ignore non numeric leading characters
if(c < 0)
return 0; // zero returned if timeout
do{
if(c == skipChar)
; // ignore this charactor
else if(c == '-')
isNegative = true;
else if(c >= '0' && c <= '9') // is c a digit?
value = value * 10 + c - '0';
read(); // consume the character we got with peek
c = timedPeek();
}
while( (c >= '0' && c <= '9') || c == skipChar );
if(isNegative)
value = -value;
return value;
}
// as parseInt but returns a floating point value
float Stream::parseFloat()
{
return parseFloat(NO_SKIP_CHAR);
}
// as above but the given skipChar is ignored
// this allows format characters (typically commas) in values to be ignored
float Stream::parseFloat(char skipChar){
boolean isNegative = false;
boolean isFraction = false;
long value = 0;
char c;
float fraction = 1.0;
c = peekNextDigit();
// ignore non numeric leading characters
if(c < 0)
return 0; // zero returned if timeout
do{
if(c == skipChar)
; // ignore
else if(c == '-')
isNegative = true;
else if (c == '.')
isFraction = true;
else if(c >= '0' && c <= '9') { // is c a digit?
value = value * 10 + c - '0';
if(isFraction)
fraction *= 0.1;
}
read(); // consume the character we got with peek
c = timedPeek();
}
while( (c >= '0' && c <= '9') || c == '.' || c == skipChar );
if(isNegative)
value = -value;
if(isFraction)
return value * fraction;
else
return value;
}
// read characters from stream into buffer
// terminates if length characters have been read, or timeout (see setTimeout)
// returns the number of characters placed in the buffer
// the buffer is NOT null terminated.
//
size_t Stream::readBytes(char *buffer, size_t length)
{
size_t count = 0;
while (count < length) {
int c = timedRead();
if (c < 0) break;
*buffer++ = (char)c;
count++;
}
return count;
}
// as readBytes with terminator character
// terminates if length characters have been read, timeout, or if the terminator character detected
// returns the number of characters placed in the buffer (0 means no valid data found)
size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length)
{
if (length < 1) return 0;
size_t index = 0;
while (index < length) {
int c = timedRead();
if (c < 0 || c == terminator) break;
*buffer++ = (char)c;
index++;
}
return index; // return number of characters, not including null terminator
}
String Stream::readString()
{
String ret;
int c = timedRead();
while (c >= 0)
{
ret += (char)c;
c = timedRead();
}
return ret;
}
String Stream::readStringUntil(char terminator)
{
String ret;
int c = timedRead();
while (c >= 0 && c != terminator)
{
ret += (char)c;
c = timedRead();
}
return ret;
}

View File

@@ -0,0 +1,96 @@
/*
Stream.h - base class for character-based streams.
Copyright (c) 2010 David A. Mellis. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
parsing functions based on TextFinder library by Michael Margolis
*/
#ifndef Stream_h
#define Stream_h
#include <inttypes.h>
#include "Print.h"
// compatability macros for testing
/*
#define getInt() parseInt()
#define getInt(skipChar) parseInt(skipchar)
#define getFloat() parseFloat()
#define getFloat(skipChar) parseFloat(skipChar)
#define getString( pre_string, post_string, buffer, length)
readBytesBetween( pre_string, terminator, buffer, length)
*/
class Stream : public Print
{
private:
unsigned long _timeout; // number of milliseconds to wait for the next char before aborting timed read
unsigned long _startMillis; // used for timeout measurement
int timedRead(); // private method to read stream with timeout
int timedPeek(); // private method to peek stream with timeout
int peekNextDigit(); // returns the next numeric digit in the stream or -1 if timeout
public:
virtual int available() = 0;
virtual int read() = 0;
virtual int peek() = 0;
virtual void flush() = 0;
Stream() {_timeout=1000;}
// parsing methods
void setTimeout(unsigned long timeout); // sets maximum milliseconds to wait for stream data, default is 1 second
bool find(char *target); // reads data from the stream until the target string is found
// returns true if target string is found, false if timed out (see setTimeout)
bool find(char *target, size_t length); // reads data from the stream until the target string of given length is found
// returns true if target string is found, false if timed out
bool findUntil(char *target, char *terminator); // as find but search ends if the terminator string is found
bool findUntil(char *target, size_t targetLen, char *terminate, size_t termLen); // as above but search ends if the terminate string is found
long parseInt(); // returns the first valid (long) integer value from the current position.
// initial characters that are not digits (or the minus sign) are skipped
// integer is terminated by the first character that is not a digit.
float parseFloat(); // float version of parseInt
size_t readBytes( char *buffer, size_t length); // read chars from stream into buffer
// terminates if length characters have been read or timeout (see setTimeout)
// returns the number of characters placed in the buffer (0 means no valid data found)
size_t readBytesUntil( char terminator, char *buffer, size_t length); // as readBytes with terminator character
// terminates if length characters have been read, timeout, or if the terminator character detected
// returns the number of characters placed in the buffer (0 means no valid data found)
// Arduino String functions to be added here
String readString();
String readStringUntil(char terminator);
protected:
long parseInt(char skipChar); // as above but the given skipChar is ignored
// as above but the given skipChar is ignored
// this allows format characters (typically commas) in values to be ignored
float parseFloat(char skipChar); // as above but the given skipChar is ignored
};
#endif

View File

@@ -0,0 +1,616 @@
/* Tone.cpp
A Tone Generator Library
Written by Brett Hagman
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Version Modified By Date Comments
------- ----------- -------- --------
0001 B Hagman 09/08/02 Initial coding
0002 B Hagman 09/08/18 Multiple pins
0003 B Hagman 09/08/18 Moved initialization from constructor to begin()
0004 B Hagman 09/09/26 Fixed problems with ATmega8
0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers
09/11/25 Changed pin toggle method to XOR
09/11/25 Fixed timer0 from being excluded
0006 D Mellis 09/12/29 Replaced objects with functions
0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register
0008 S Kanemoto 12/06/22 Fixed for Leonardo by @maris_HY
*************************************************/
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include "Arduino.h"
#include "pins_arduino.h"
#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__)
#define TCCR2A TCCR2
#define TCCR2B TCCR2
#define COM2A1 COM21
#define COM2A0 COM20
#define OCR2A OCR2
#define TIMSK2 TIMSK
#define OCIE2A OCIE2
#define TIMER2_COMPA_vect TIMER2_COMP_vect
#define TIMSK1 TIMSK
#endif
// timerx_toggle_count:
// > 0 - duration specified
// = 0 - stopped
// < 0 - infinitely (until stop() method called, or new play() called)
#if !defined(__AVR_ATmega8__)
volatile long timer0_toggle_count;
volatile uint8_t *timer0_pin_port;
volatile uint8_t timer0_pin_mask;
#endif
volatile long timer1_toggle_count;
volatile uint8_t *timer1_pin_port;
volatile uint8_t timer1_pin_mask;
volatile long timer2_toggle_count;
volatile uint8_t *timer2_pin_port;
volatile uint8_t timer2_pin_mask;
#if defined(TIMSK3)
volatile long timer3_toggle_count;
volatile uint8_t *timer3_pin_port;
volatile uint8_t timer3_pin_mask;
#endif
#if defined(TIMSK4)
volatile long timer4_toggle_count;
volatile uint8_t *timer4_pin_port;
volatile uint8_t timer4_pin_mask;
#endif
#if defined(TIMSK5)
volatile long timer5_toggle_count;
volatile uint8_t *timer5_pin_port;
volatile uint8_t timer5_pin_mask;
#endif
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define AVAILABLE_TONE_PINS 1
#define USE_TIMER2
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ };
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ };
#elif defined(__AVR_ATmega8__)
#define AVAILABLE_TONE_PINS 1
#define USE_TIMER2
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ };
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ };
#elif defined(__AVR_ATmega32U4__)
#define AVAILABLE_TONE_PINS 1
#define USE_TIMER3
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 3 /*, 1 */ };
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ };
#else
#define AVAILABLE_TONE_PINS 1
#define USE_TIMER2
// Leave timer 0 to last.
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ };
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ };
#endif
static int8_t toneBegin(uint8_t _pin)
{
int8_t _timer = -1;
// if we're already using the pin, the timer should be configured.
for (int i = 0; i < AVAILABLE_TONE_PINS; i++) {
if (tone_pins[i] == _pin) {
return pgm_read_byte(tone_pin_to_timer_PGM + i);
}
}
// search for an unused timer.
for (int i = 0; i < AVAILABLE_TONE_PINS; i++) {
if (tone_pins[i] == 255) {
tone_pins[i] = _pin;
_timer = pgm_read_byte(tone_pin_to_timer_PGM + i);
break;
}
}
if (_timer != -1)
{
// Set timer specific stuff
// All timers in CTC mode
// 8 bit timers will require changing prescalar values,
// whereas 16 bit timers are set to either ck/1 or ck/64 prescalar
switch (_timer)
{
#if defined(TCCR0A) && defined(TCCR0B)
case 0:
// 8 bit timer
TCCR0A = 0;
TCCR0B = 0;
bitWrite(TCCR0A, WGM01, 1);
bitWrite(TCCR0B, CS00, 1);
timer0_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer0_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
#if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12)
case 1:
// 16 bit timer
TCCR1A = 0;
TCCR1B = 0;
bitWrite(TCCR1B, WGM12, 1);
bitWrite(TCCR1B, CS10, 1);
timer1_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer1_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
#if defined(TCCR2A) && defined(TCCR2B)
case 2:
// 8 bit timer
TCCR2A = 0;
TCCR2B = 0;
bitWrite(TCCR2A, WGM21, 1);
bitWrite(TCCR2B, CS20, 1);
timer2_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer2_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
#if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3)
case 3:
// 16 bit timer
TCCR3A = 0;
TCCR3B = 0;
bitWrite(TCCR3B, WGM32, 1);
bitWrite(TCCR3B, CS30, 1);
timer3_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer3_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
#if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4)
case 4:
// 16 bit timer
TCCR4A = 0;
TCCR4B = 0;
#if defined(WGM42)
bitWrite(TCCR4B, WGM42, 1);
#elif defined(CS43)
#warning this may not be correct
// atmega32u4
bitWrite(TCCR4B, CS43, 1);
#endif
bitWrite(TCCR4B, CS40, 1);
timer4_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer4_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
#if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5)
case 5:
// 16 bit timer
TCCR5A = 0;
TCCR5B = 0;
bitWrite(TCCR5B, WGM52, 1);
bitWrite(TCCR5B, CS50, 1);
timer5_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer5_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
}
}
return _timer;
}
// frequency (in hertz) and duration (in milliseconds).
void tone(uint8_t _pin, unsigned int frequency, unsigned long duration)
{
uint8_t prescalarbits = 0b001;
long toggle_count = 0;
uint32_t ocr = 0;
int8_t _timer;
_timer = toneBegin(_pin);
if (_timer >= 0)
{
// Set the pinMode as OUTPUT
pinMode(_pin, OUTPUT);
// if we are using an 8 bit timer, scan through prescalars to find the best fit
if (_timer == 0 || _timer == 2)
{
ocr = F_CPU / frequency / 2 - 1;
prescalarbits = 0b001; // ck/1: same for both timers
if (ocr > 255)
{
ocr = F_CPU / frequency / 2 / 8 - 1;
prescalarbits = 0b010; // ck/8: same for both timers
if (_timer == 2 && ocr > 255)
{
ocr = F_CPU / frequency / 2 / 32 - 1;
prescalarbits = 0b011;
}
if (ocr > 255)
{
ocr = F_CPU / frequency / 2 / 64 - 1;
prescalarbits = _timer == 0 ? 0b011 : 0b100;
if (_timer == 2 && ocr > 255)
{
ocr = F_CPU / frequency / 2 / 128 - 1;
prescalarbits = 0b101;
}
if (ocr > 255)
{
ocr = F_CPU / frequency / 2 / 256 - 1;
prescalarbits = _timer == 0 ? 0b100 : 0b110;
if (ocr > 255)
{
// can't do any better than /1024
ocr = F_CPU / frequency / 2 / 1024 - 1;
prescalarbits = _timer == 0 ? 0b101 : 0b111;
}
}
}
}
#if defined(TCCR0B)
if (_timer == 0)
{
TCCR0B = prescalarbits;
}
else
#endif
#if defined(TCCR2B)
{
TCCR2B = prescalarbits;
}
#else
{
// dummy place holder to make the above ifdefs work
}
#endif
}
else
{
// two choices for the 16 bit timers: ck/1 or ck/64
ocr = F_CPU / frequency / 2 - 1;
prescalarbits = 0b001;
if (ocr > 0xffff)
{
ocr = F_CPU / frequency / 2 / 64 - 1;
prescalarbits = 0b011;
}
if (_timer == 1)
{
#if defined(TCCR1B)
TCCR1B = (TCCR1B & 0b11111000) | prescalarbits;
#endif
}
#if defined(TCCR3B)
else if (_timer == 3)
TCCR3B = (TCCR3B & 0b11111000) | prescalarbits;
#endif
#if defined(TCCR4B)
else if (_timer == 4)
TCCR4B = (TCCR4B & 0b11111000) | prescalarbits;
#endif
#if defined(TCCR5B)
else if (_timer == 5)
TCCR5B = (TCCR5B & 0b11111000) | prescalarbits;
#endif
}
// Calculate the toggle count
if (duration > 0)
{
toggle_count = 2 * frequency * duration / 1000;
}
else
{
toggle_count = -1;
}
// Set the OCR for the given timer,
// set the toggle count,
// then turn on the interrupts
switch (_timer)
{
#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A)
case 0:
OCR0A = ocr;
timer0_toggle_count = toggle_count;
bitWrite(TIMSK0, OCIE0A, 1);
break;
#endif
case 1:
#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A)
OCR1A = ocr;
timer1_toggle_count = toggle_count;
bitWrite(TIMSK1, OCIE1A, 1);
#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A)
// this combination is for at least the ATmega32
OCR1A = ocr;
timer1_toggle_count = toggle_count;
bitWrite(TIMSK, OCIE1A, 1);
#endif
break;
#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A)
case 2:
OCR2A = ocr;
timer2_toggle_count = toggle_count;
bitWrite(TIMSK2, OCIE2A, 1);
break;
#endif
#if defined(TIMSK3)
case 3:
OCR3A = ocr;
timer3_toggle_count = toggle_count;
bitWrite(TIMSK3, OCIE3A, 1);
break;
#endif
#if defined(TIMSK4)
case 4:
OCR4A = ocr;
timer4_toggle_count = toggle_count;
bitWrite(TIMSK4, OCIE4A, 1);
break;
#endif
#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A)
case 5:
OCR5A = ocr;
timer5_toggle_count = toggle_count;
bitWrite(TIMSK5, OCIE5A, 1);
break;
#endif
}
}
}
// XXX: this function only works properly for timer 2 (the only one we use
// currently). for the others, it should end the tone, but won't restore
// proper PWM functionality for the timer.
void disableTimer(uint8_t _timer)
{
switch (_timer)
{
case 0:
#if defined(TIMSK0)
TIMSK0 = 0;
#elif defined(TIMSK)
TIMSK = 0; // atmega32
#endif
break;
#if defined(TIMSK1) && defined(OCIE1A)
case 1:
bitWrite(TIMSK1, OCIE1A, 0);
break;
#endif
case 2:
#if defined(TIMSK2) && defined(OCIE2A)
bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt
#endif
#if defined(TCCR2A) && defined(WGM20)
TCCR2A = (1 << WGM20);
#endif
#if defined(TCCR2B) && defined(CS22)
TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22);
#endif
#if defined(OCR2A)
OCR2A = 0;
#endif
break;
#if defined(TIMSK3)
case 3:
TIMSK3 = 0;
break;
#endif
#if defined(TIMSK4)
case 4:
TIMSK4 = 0;
break;
#endif
#if defined(TIMSK5)
case 5:
TIMSK5 = 0;
break;
#endif
}
}
void noTone(uint8_t _pin)
{
int8_t _timer = -1;
for (int i = 0; i < AVAILABLE_TONE_PINS; i++) {
if (tone_pins[i] == _pin) {
_timer = pgm_read_byte(tone_pin_to_timer_PGM + i);
tone_pins[i] = 255;
}
}
disableTimer(_timer);
digitalWrite(_pin, 0);
}
#ifdef USE_TIMER0
ISR(TIMER0_COMPA_vect)
{
if (timer0_toggle_count != 0)
{
// toggle the pin
*timer0_pin_port ^= timer0_pin_mask;
if (timer0_toggle_count > 0)
timer0_toggle_count--;
}
else
{
disableTimer(0);
*timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop
}
}
#endif
#ifdef USE_TIMER1
ISR(TIMER1_COMPA_vect)
{
if (timer1_toggle_count != 0)
{
// toggle the pin
*timer1_pin_port ^= timer1_pin_mask;
if (timer1_toggle_count > 0)
timer1_toggle_count--;
}
else
{
disableTimer(1);
*timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop
}
}
#endif
#ifdef USE_TIMER2
ISR(TIMER2_COMPA_vect)
{
if (timer2_toggle_count != 0)
{
// toggle the pin
*timer2_pin_port ^= timer2_pin_mask;
if (timer2_toggle_count > 0)
timer2_toggle_count--;
}
else
{
// need to call noTone() so that the tone_pins[] entry is reset, so the
// timer gets initialized next time we call tone().
// XXX: this assumes timer 2 is always the first one used.
noTone(tone_pins[0]);
// disableTimer(2);
// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop
}
}
#endif
#ifdef USE_TIMER3
ISR(TIMER3_COMPA_vect)
{
if (timer3_toggle_count != 0)
{
// toggle the pin
*timer3_pin_port ^= timer3_pin_mask;
if (timer3_toggle_count > 0)
timer3_toggle_count--;
}
else
{
disableTimer(3);
*timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop
}
}
#endif
#ifdef USE_TIMER4
ISR(TIMER4_COMPA_vect)
{
if (timer4_toggle_count != 0)
{
// toggle the pin
*timer4_pin_port ^= timer4_pin_mask;
if (timer4_toggle_count > 0)
timer4_toggle_count--;
}
else
{
disableTimer(4);
*timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop
}
}
#endif
#ifdef USE_TIMER5
ISR(TIMER5_COMPA_vect)
{
if (timer5_toggle_count != 0)
{
// toggle the pin
*timer5_pin_port ^= timer5_pin_mask;
if (timer5_toggle_count > 0)
timer5_toggle_count--;
}
else
{
disableTimer(5);
*timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop
}
}
#endif

View File

@@ -0,0 +1,196 @@
#ifndef __USBAPI__
#define __USBAPI__
#if defined(USBCON)
//================================================================================
//================================================================================
// USB
class USBDevice_
{
public:
USBDevice_();
bool configured();
void attach();
void detach(); // Serial port goes down too...
void poll();
};
extern USBDevice_ USBDevice;
//================================================================================
//================================================================================
// Serial over CDC (Serial1 is the physical port)
class Serial_ : public Stream
{
private:
ring_buffer *_cdc_rx_buffer;
public:
void begin(uint16_t baud_count);
void end(void);
virtual int available(void);
virtual void accept(void);
virtual int peek(void);
virtual int read(void);
virtual void flush(void);
virtual size_t write(uint8_t);
using Print::write; // pull in write(str) and write(buf, size) from Print
operator bool();
};
extern Serial_ Serial;
//================================================================================
//================================================================================
// Mouse
#define MOUSE_LEFT 1
#define MOUSE_RIGHT 2
#define MOUSE_MIDDLE 4
#define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE)
class Mouse_
{
private:
uint8_t _buttons;
void buttons(uint8_t b);
public:
Mouse_(void);
void begin(void);
void end(void);
void click(uint8_t b = MOUSE_LEFT);
void move(signed char x, signed char y, signed char wheel = 0);
void press(uint8_t b = MOUSE_LEFT); // press LEFT by default
void release(uint8_t b = MOUSE_LEFT); // release LEFT by default
bool isPressed(uint8_t b = MOUSE_LEFT); // check LEFT by default
};
extern Mouse_ Mouse;
//================================================================================
//================================================================================
// Keyboard
#define KEY_LEFT_CTRL 0x80
#define KEY_LEFT_SHIFT 0x81
#define KEY_LEFT_ALT 0x82
#define KEY_LEFT_GUI 0x83
#define KEY_RIGHT_CTRL 0x84
#define KEY_RIGHT_SHIFT 0x85
#define KEY_RIGHT_ALT 0x86
#define KEY_RIGHT_GUI 0x87
#define KEY_UP_ARROW 0xDA
#define KEY_DOWN_ARROW 0xD9
#define KEY_LEFT_ARROW 0xD8
#define KEY_RIGHT_ARROW 0xD7
#define KEY_BACKSPACE 0xB2
#define KEY_TAB 0xB3
#define KEY_RETURN 0xB0
#define KEY_ESC 0xB1
#define KEY_INSERT 0xD1
#define KEY_DELETE 0xD4
#define KEY_PAGE_UP 0xD3
#define KEY_PAGE_DOWN 0xD6
#define KEY_HOME 0xD2
#define KEY_END 0xD5
#define KEY_CAPS_LOCK 0xC1
#define KEY_F1 0xC2
#define KEY_F2 0xC3
#define KEY_F3 0xC4
#define KEY_F4 0xC5
#define KEY_F5 0xC6
#define KEY_F6 0xC7
#define KEY_F7 0xC8
#define KEY_F8 0xC9
#define KEY_F9 0xCA
#define KEY_F10 0xCB
#define KEY_F11 0xCC
#define KEY_F12 0xCD
// Low level key report: up to 6 keys and shift, ctrl etc at once
typedef struct
{
uint8_t modifiers;
uint8_t reserved;
uint8_t keys[6];
} KeyReport;
class Keyboard_ : public Print
{
private:
KeyReport _keyReport;
void sendReport(KeyReport* keys);
public:
Keyboard_(void);
void begin(void);
void end(void);
virtual size_t write(uint8_t k);
virtual size_t press(uint8_t k);
virtual size_t release(uint8_t k);
virtual void releaseAll(void);
};
extern Keyboard_ Keyboard;
//================================================================================
//================================================================================
// Low level API
typedef struct
{
uint8_t bmRequestType;
uint8_t bRequest;
uint8_t wValueL;
uint8_t wValueH;
uint16_t wIndex;
uint16_t wLength;
} Setup;
//================================================================================
//================================================================================
// HID 'Driver'
int HID_GetInterface(uint8_t* interfaceNum);
int HID_GetDescriptor(int i);
bool HID_Setup(Setup& setup);
void HID_SendReport(uint8_t id, const void* data, int len);
//================================================================================
//================================================================================
// MSC 'Driver'
int MSC_GetInterface(uint8_t* interfaceNum);
int MSC_GetDescriptor(int i);
bool MSC_Setup(Setup& setup);
bool MSC_Data(uint8_t rx,uint8_t tx);
//================================================================================
//================================================================================
// CSC 'Driver'
int CDC_GetInterface(uint8_t* interfaceNum);
int CDC_GetDescriptor(int i);
bool CDC_Setup(Setup& setup);
//================================================================================
//================================================================================
#define TRANSFER_PGM 0x80
#define TRANSFER_RELEASE 0x40
#define TRANSFER_ZERO 0x20
int USB_SendControl(uint8_t flags, const void* d, int len);
int USB_RecvControl(void* d, int len);
uint8_t USB_Available(uint8_t ep);
int USB_Send(uint8_t ep, const void* data, int len); // blocking
int USB_Recv(uint8_t ep, void* data, int len); // non-blocking
int USB_Recv(uint8_t ep); // non-blocking
void USB_Flush(uint8_t ep);
#endif
#endif /* if defined(USBCON) */

View File

@@ -0,0 +1,684 @@
/* Copyright (c) 2010, Peter Barrett
**
** Permission to use, copy, modify, and/or distribute this software for
** any purpose with or without fee is hereby granted, provided that the
** above copyright notice and this permission notice appear in all copies.
**
** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
** SOFTWARE.
*/
#include "Platform.h"
#include "USBAPI.h"
#include "USBDesc.h"
#if defined(USBCON)
#define EP_TYPE_CONTROL 0x00
#define EP_TYPE_BULK_IN 0x81
#define EP_TYPE_BULK_OUT 0x80
#define EP_TYPE_INTERRUPT_IN 0xC1
#define EP_TYPE_INTERRUPT_OUT 0xC0
#define EP_TYPE_ISOCHRONOUS_IN 0x41
#define EP_TYPE_ISOCHRONOUS_OUT 0x40
/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */
#define TX_RX_LED_PULSE_MS 100
volatile u8 TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */
volatile u8 RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */
//==================================================================
//==================================================================
extern const u16 STRING_LANGUAGE[] PROGMEM;
extern const u16 STRING_IPRODUCT[] PROGMEM;
extern const u16 STRING_IMANUFACTURER[] PROGMEM;
extern const DeviceDescriptor USB_DeviceDescriptor PROGMEM;
extern const DeviceDescriptor USB_DeviceDescriptorA PROGMEM;
const u16 STRING_LANGUAGE[2] = {
(3<<8) | (2+2),
0x0409 // English
};
const u16 STRING_IPRODUCT[17] = {
(3<<8) | (2+2*16),
#if USB_PID == 0x8036
'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o'
#elif USB_PID == 0x8037
'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ',' ',' '
#elif USB_PID == 0x803C
'A','r','d','u','i','n','o',' ','E','s','p','l','o','r','a',' '
#elif USB_PID == 0x9208
'L','i','l','y','P','a','d','U','S','B',' ',' ',' ',' ',' ',' '
#else
'U','S','B',' ','I','O',' ','B','o','a','r','d',' ',' ',' ',' '
#endif
};
const u16 STRING_IMANUFACTURER[12] = {
(3<<8) | (2+2*11),
#if USB_VID == 0x2341
'A','r','d','u','i','n','o',' ','L','L','C'
#elif USB_VID == 0x1b4f
'S','p','a','r','k','F','u','n',' ',' ',' '
#else
'U','n','k','n','o','w','n',' ',' ',' ',' '
#endif
};
#ifdef CDC_ENABLED
#define DEVICE_CLASS 0x02
#else
#define DEVICE_CLASS 0x00
#endif
// DEVICE DESCRIPTOR
const DeviceDescriptor USB_DeviceDescriptor =
D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1);
const DeviceDescriptor USB_DeviceDescriptorA =
D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1);
//==================================================================
//==================================================================
volatile u8 _usbConfiguration = 0;
static inline void WaitIN(void)
{
while (!(UEINTX & (1<<TXINI)));
}
static inline void ClearIN(void)
{
UEINTX = ~(1<<TXINI);
}
static inline void WaitOUT(void)
{
while (!(UEINTX & (1<<RXOUTI)))
;
}
static inline u8 WaitForINOrOUT()
{
while (!(UEINTX & ((1<<TXINI)|(1<<RXOUTI))))
;
return (UEINTX & (1<<RXOUTI)) == 0;
}
static inline void ClearOUT(void)
{
UEINTX = ~(1<<RXOUTI);
}
void Recv(volatile u8* data, u8 count)
{
while (count--)
*data++ = UEDATX;
RXLED1; // light the RX LED
RxLEDPulse = TX_RX_LED_PULSE_MS;
}
static inline u8 Recv8()
{
RXLED1; // light the RX LED
RxLEDPulse = TX_RX_LED_PULSE_MS;
return UEDATX;
}
static inline void Send8(u8 d)
{
UEDATX = d;
}
static inline void SetEP(u8 ep)
{
UENUM = ep;
}
static inline u8 FifoByteCount()
{
return UEBCLX;
}
static inline u8 ReceivedSetupInt()
{
return UEINTX & (1<<RXSTPI);
}
static inline void ClearSetupInt()
{
UEINTX = ~((1<<RXSTPI) | (1<<RXOUTI) | (1<<TXINI));
}
static inline void Stall()
{
UECONX = (1<<STALLRQ) | (1<<EPEN);
}
static inline u8 ReadWriteAllowed()
{
return UEINTX & (1<<RWAL);
}
static inline u8 Stalled()
{
return UEINTX & (1<<STALLEDI);
}
static inline u8 FifoFree()
{
return UEINTX & (1<<FIFOCON);
}
static inline void ReleaseRX()
{
UEINTX = 0x6B; // FIFOCON=0 NAKINI=1 RWAL=1 NAKOUTI=0 RXSTPI=1 RXOUTI=0 STALLEDI=1 TXINI=1
}
static inline void ReleaseTX()
{
UEINTX = 0x3A; // FIFOCON=0 NAKINI=0 RWAL=1 NAKOUTI=1 RXSTPI=1 RXOUTI=0 STALLEDI=1 TXINI=0
}
static inline u8 FrameNumber()
{
return UDFNUML;
}
//==================================================================
//==================================================================
u8 USBGetConfiguration(void)
{
return _usbConfiguration;
}
#define USB_RECV_TIMEOUT
class LockEP
{
u8 _sreg;
public:
LockEP(u8 ep) : _sreg(SREG)
{
cli();
SetEP(ep & 7);
}
~LockEP()
{
SREG = _sreg;
}
};
// Number of bytes, assumes a rx endpoint
u8 USB_Available(u8 ep)
{
LockEP lock(ep);
return FifoByteCount();
}
// Non Blocking receive
// Return number of bytes read
int USB_Recv(u8 ep, void* d, int len)
{
if (!_usbConfiguration || len < 0)
return -1;
LockEP lock(ep);
u8 n = FifoByteCount();
len = min(n,len);
n = len;
u8* dst = (u8*)d;
while (n--)
*dst++ = Recv8();
if (len && !FifoByteCount()) // release empty buffer
ReleaseRX();
return len;
}
// Recv 1 byte if ready
int USB_Recv(u8 ep)
{
u8 c;
if (USB_Recv(ep,&c,1) != 1)
return -1;
return c;
}
// Space in send EP
u8 USB_SendSpace(u8 ep)
{
LockEP lock(ep);
if (!ReadWriteAllowed())
return 0;
return 64 - FifoByteCount();
}
// Blocking Send of data to an endpoint
int USB_Send(u8 ep, const void* d, int len)
{
if (!_usbConfiguration)
return -1;
int r = len;
const u8* data = (const u8*)d;
u8 zero = ep & TRANSFER_ZERO;
u8 timeout = 250; // 250ms timeout on send? TODO
while (len)
{
u8 n = USB_SendSpace(ep);
if (n == 0)
{
if (!(--timeout))
return -1;
delay(1);
continue;
}
if (n > len)
n = len;
len -= n;
{
LockEP lock(ep);
if (ep & TRANSFER_ZERO)
{
while (n--)
Send8(0);
}
else if (ep & TRANSFER_PGM)
{
while (n--)
Send8(pgm_read_byte(data++));
}
else
{
while (n--)
Send8(*data++);
}
if (!ReadWriteAllowed() || ((len == 0) && (ep & TRANSFER_RELEASE))) // Release full buffer
ReleaseTX();
}
}
TXLED1; // light the TX LED
TxLEDPulse = TX_RX_LED_PULSE_MS;
return r;
}
extern const u8 _initEndpoints[] PROGMEM;
const u8 _initEndpoints[] =
{
0,
#ifdef CDC_ENABLED
EP_TYPE_INTERRUPT_IN, // CDC_ENDPOINT_ACM
EP_TYPE_BULK_OUT, // CDC_ENDPOINT_OUT
EP_TYPE_BULK_IN, // CDC_ENDPOINT_IN
#endif
#ifdef HID_ENABLED
EP_TYPE_INTERRUPT_IN // HID_ENDPOINT_INT
#endif
};
#define EP_SINGLE_64 0x32 // EP0
#define EP_DOUBLE_64 0x36 // Other endpoints
static
void InitEP(u8 index, u8 type, u8 size)
{
UENUM = index;
UECONX = 1;
UECFG0X = type;
UECFG1X = size;
}
static
void InitEndpoints()
{
for (u8 i = 1; i < sizeof(_initEndpoints); i++)
{
UENUM = i;
UECONX = 1;
UECFG0X = pgm_read_byte(_initEndpoints+i);
UECFG1X = EP_DOUBLE_64;
}
UERST = 0x7E; // And reset them
UERST = 0;
}
// Handle CLASS_INTERFACE requests
static
bool ClassInterfaceRequest(Setup& setup)
{
u8 i = setup.wIndex;
#ifdef CDC_ENABLED
if (CDC_ACM_INTERFACE == i)
return CDC_Setup(setup);
#endif
#ifdef HID_ENABLED
if (HID_INTERFACE == i)
return HID_Setup(setup);
#endif
return false;
}
int _cmark;
int _cend;
void InitControl(int end)
{
SetEP(0);
_cmark = 0;
_cend = end;
}
static
bool SendControl(u8 d)
{
if (_cmark < _cend)
{
if (!WaitForINOrOUT())
return false;
Send8(d);
if (!((_cmark + 1) & 0x3F))
ClearIN(); // Fifo is full, release this packet
}
_cmark++;
return true;
};
// Clipped by _cmark/_cend
int USB_SendControl(u8 flags, const void* d, int len)
{
int sent = len;
const u8* data = (const u8*)d;
bool pgm = flags & TRANSFER_PGM;
while (len--)
{
u8 c = pgm ? pgm_read_byte(data++) : *data++;
if (!SendControl(c))
return -1;
}
return sent;
}
// Does not timeout or cross fifo boundaries
// Will only work for transfers <= 64 bytes
// TODO
int USB_RecvControl(void* d, int len)
{
WaitOUT();
Recv((u8*)d,len);
ClearOUT();
return len;
}
int SendInterfaces()
{
int total = 0;
u8 interfaces = 0;
#ifdef CDC_ENABLED
total = CDC_GetInterface(&interfaces);
#endif
#ifdef HID_ENABLED
total += HID_GetInterface(&interfaces);
#endif
return interfaces;
}
// Construct a dynamic configuration descriptor
// This really needs dynamic endpoint allocation etc
// TODO
static
bool SendConfiguration(int maxlen)
{
// Count and measure interfaces
InitControl(0);
int interfaces = SendInterfaces();
ConfigDescriptor config = D_CONFIG(_cmark + sizeof(ConfigDescriptor),interfaces);
// Now send them
InitControl(maxlen);
USB_SendControl(0,&config,sizeof(ConfigDescriptor));
SendInterfaces();
return true;
}
u8 _cdcComposite = 0;
static
bool SendDescriptor(Setup& setup)
{
u8 t = setup.wValueH;
if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t)
return SendConfiguration(setup.wLength);
InitControl(setup.wLength);
#ifdef HID_ENABLED
if (HID_REPORT_DESCRIPTOR_TYPE == t)
return HID_GetDescriptor(t);
#endif
u8 desc_length = 0;
const u8* desc_addr = 0;
if (USB_DEVICE_DESCRIPTOR_TYPE == t)
{
if (setup.wLength == 8)
_cdcComposite = 1;
desc_addr = _cdcComposite ? (const u8*)&USB_DeviceDescriptorA : (const u8*)&USB_DeviceDescriptor;
}
else if (USB_STRING_DESCRIPTOR_TYPE == t)
{
if (setup.wValueL == 0)
desc_addr = (const u8*)&STRING_LANGUAGE;
else if (setup.wValueL == IPRODUCT)
desc_addr = (const u8*)&STRING_IPRODUCT;
else if (setup.wValueL == IMANUFACTURER)
desc_addr = (const u8*)&STRING_IMANUFACTURER;
else
return false;
}
if (desc_addr == 0)
return false;
if (desc_length == 0)
desc_length = pgm_read_byte(desc_addr);
USB_SendControl(TRANSFER_PGM,desc_addr,desc_length);
return true;
}
// Endpoint 0 interrupt
ISR(USB_COM_vect)
{
SetEP(0);
if (!ReceivedSetupInt())
return;
Setup setup;
Recv((u8*)&setup,8);
ClearSetupInt();
u8 requestType = setup.bmRequestType;
if (requestType & REQUEST_DEVICETOHOST)
WaitIN();
else
ClearIN();
bool ok = true;
if (REQUEST_STANDARD == (requestType & REQUEST_TYPE))
{
// Standard Requests
u8 r = setup.bRequest;
if (GET_STATUS == r)
{
Send8(0); // TODO
Send8(0);
}
else if (CLEAR_FEATURE == r)
{
}
else if (SET_FEATURE == r)
{
}
else if (SET_ADDRESS == r)
{
WaitIN();
UDADDR = setup.wValueL | (1<<ADDEN);
}
else if (GET_DESCRIPTOR == r)
{
ok = SendDescriptor(setup);
}
else if (SET_DESCRIPTOR == r)
{
ok = false;
}
else if (GET_CONFIGURATION == r)
{
Send8(1);
}
else if (SET_CONFIGURATION == r)
{
if (REQUEST_DEVICE == (requestType & REQUEST_RECIPIENT))
{
InitEndpoints();
_usbConfiguration = setup.wValueL;
} else
ok = false;
}
else if (GET_INTERFACE == r)
{
}
else if (SET_INTERFACE == r)
{
}
}
else
{
InitControl(setup.wLength); // Max length of transfer
ok = ClassInterfaceRequest(setup);
}
if (ok)
ClearIN();
else
{
Stall();
}
}
void USB_Flush(u8 ep)
{
SetEP(ep);
if (FifoByteCount())
ReleaseTX();
}
// General interrupt
ISR(USB_GEN_vect)
{
u8 udint = UDINT;
UDINT = 0;
// End of Reset
if (udint & (1<<EORSTI))
{
InitEP(0,EP_TYPE_CONTROL,EP_SINGLE_64); // init ep0
_usbConfiguration = 0; // not configured yet
UEIENX = 1 << RXSTPE; // Enable interrupts for ep0
}
// Start of Frame - happens every millisecond so we use it for TX and RX LED one-shot timing, too
if (udint & (1<<SOFI))
{
#ifdef CDC_ENABLED
USB_Flush(CDC_TX); // Send a tx frame if found
if (USB_Available(CDC_RX)) // Handle received bytes (if any)
Serial.accept();
#endif
// check whether the one-shot period has elapsed. if so, turn off the LED
if (TxLEDPulse && !(--TxLEDPulse))
TXLED0;
if (RxLEDPulse && !(--RxLEDPulse))
RXLED0;
}
}
// VBUS or counting frames
// Any frame counting?
u8 USBConnected()
{
u8 f = UDFNUML;
delay(3);
return f != UDFNUML;
}
//=======================================================================
//=======================================================================
USBDevice_ USBDevice;
USBDevice_::USBDevice_()
{
}
void USBDevice_::attach()
{
_usbConfiguration = 0;
UHWCON = 0x01; // power internal reg
USBCON = (1<<USBE)|(1<<FRZCLK); // clock frozen, usb enabled
#if F_CPU == 16000000UL
PLLCSR = 0x12; // Need 16 MHz xtal
#elif F_CPU == 8000000UL
PLLCSR = 0x02; // Need 8 MHz xtal
#endif
while (!(PLLCSR & (1<<PLOCK))) // wait for lock pll
;
// Some tests on specific versions of macosx (10.7.3), reported some
// strange behaviuors when the board is reset using the serial
// port touch at 1200 bps. This delay fixes this behaviour.
delay(1);
USBCON = ((1<<USBE)|(1<<OTGPADE)); // start USB clock
UDIEN = (1<<EORSTE)|(1<<SOFE); // Enable interrupts for EOR (End of Reset) and SOF (start of frame)
UDCON = 0; // enable attach resistor
TX_RX_LED_INIT;
}
void USBDevice_::detach()
{
}
// Check for interrupts
// TODO: VBUS detection
bool USBDevice_::configured()
{
return _usbConfiguration;
}
void USBDevice_::poll()
{
}
#endif /* if defined(USBCON) */

View File

@@ -0,0 +1,303 @@
// Copyright (c) 2010, Peter Barrett
/*
** Permission to use, copy, modify, and/or distribute this software for
** any purpose with or without fee is hereby granted, provided that the
** above copyright notice and this permission notice appear in all copies.
**
** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
** SOFTWARE.
*/
#ifndef __USBCORE_H__
#define __USBCORE_H__
// Standard requests
#define GET_STATUS 0
#define CLEAR_FEATURE 1
#define SET_FEATURE 3
#define SET_ADDRESS 5
#define GET_DESCRIPTOR 6
#define SET_DESCRIPTOR 7
#define GET_CONFIGURATION 8
#define SET_CONFIGURATION 9
#define GET_INTERFACE 10
#define SET_INTERFACE 11
// bmRequestType
#define REQUEST_HOSTTODEVICE 0x00
#define REQUEST_DEVICETOHOST 0x80
#define REQUEST_DIRECTION 0x80
#define REQUEST_STANDARD 0x00
#define REQUEST_CLASS 0x20
#define REQUEST_VENDOR 0x40
#define REQUEST_TYPE 0x60
#define REQUEST_DEVICE 0x00
#define REQUEST_INTERFACE 0x01
#define REQUEST_ENDPOINT 0x02
#define REQUEST_OTHER 0x03
#define REQUEST_RECIPIENT 0x03
#define REQUEST_DEVICETOHOST_CLASS_INTERFACE (REQUEST_DEVICETOHOST + REQUEST_CLASS + REQUEST_INTERFACE)
#define REQUEST_HOSTTODEVICE_CLASS_INTERFACE (REQUEST_HOSTTODEVICE + REQUEST_CLASS + REQUEST_INTERFACE)
// Class requests
#define CDC_SET_LINE_CODING 0x20
#define CDC_GET_LINE_CODING 0x21
#define CDC_SET_CONTROL_LINE_STATE 0x22
#define MSC_RESET 0xFF
#define MSC_GET_MAX_LUN 0xFE
#define HID_GET_REPORT 0x01
#define HID_GET_IDLE 0x02
#define HID_GET_PROTOCOL 0x03
#define HID_SET_REPORT 0x09
#define HID_SET_IDLE 0x0A
#define HID_SET_PROTOCOL 0x0B
// Descriptors
#define USB_DEVICE_DESC_SIZE 18
#define USB_CONFIGUARTION_DESC_SIZE 9
#define USB_INTERFACE_DESC_SIZE 9
#define USB_ENDPOINT_DESC_SIZE 7
#define USB_DEVICE_DESCRIPTOR_TYPE 1
#define USB_CONFIGURATION_DESCRIPTOR_TYPE 2
#define USB_STRING_DESCRIPTOR_TYPE 3
#define USB_INTERFACE_DESCRIPTOR_TYPE 4
#define USB_ENDPOINT_DESCRIPTOR_TYPE 5
#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02
#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03
#define USB_DEVICE_CLASS_STORAGE 0x08
#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF
#define USB_CONFIG_POWERED_MASK 0x40
#define USB_CONFIG_BUS_POWERED 0x80
#define USB_CONFIG_SELF_POWERED 0xC0
#define USB_CONFIG_REMOTE_WAKEUP 0x20
// bMaxPower in Configuration Descriptor
#define USB_CONFIG_POWER_MA(mA) ((mA)/2)
// bEndpointAddress in Endpoint Descriptor
#define USB_ENDPOINT_DIRECTION_MASK 0x80
#define USB_ENDPOINT_OUT(addr) ((addr) | 0x00)
#define USB_ENDPOINT_IN(addr) ((addr) | 0x80)
#define USB_ENDPOINT_TYPE_MASK 0x03
#define USB_ENDPOINT_TYPE_CONTROL 0x00
#define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01
#define USB_ENDPOINT_TYPE_BULK 0x02
#define USB_ENDPOINT_TYPE_INTERRUPT 0x03
#define TOBYTES(x) ((x) & 0xFF),(((x) >> 8) & 0xFF)
#define CDC_V1_10 0x0110
#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02
#define CDC_CALL_MANAGEMENT 0x01
#define CDC_ABSTRACT_CONTROL_MODEL 0x02
#define CDC_HEADER 0x00
#define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02
#define CDC_UNION 0x06
#define CDC_CS_INTERFACE 0x24
#define CDC_CS_ENDPOINT 0x25
#define CDC_DATA_INTERFACE_CLASS 0x0A
#define MSC_SUBCLASS_SCSI 0x06
#define MSC_PROTOCOL_BULK_ONLY 0x50
#define HID_HID_DESCRIPTOR_TYPE 0x21
#define HID_REPORT_DESCRIPTOR_TYPE 0x22
#define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23
// Device
typedef struct {
u8 len; // 18
u8 dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE
u16 usbVersion; // 0x200
u8 deviceClass;
u8 deviceSubClass;
u8 deviceProtocol;
u8 packetSize0; // Packet 0
u16 idVendor;
u16 idProduct;
u16 deviceVersion; // 0x100
u8 iManufacturer;
u8 iProduct;
u8 iSerialNumber;
u8 bNumConfigurations;
} DeviceDescriptor;
// Config
typedef struct {
u8 len; // 9
u8 dtype; // 2
u16 clen; // total length
u8 numInterfaces;
u8 config;
u8 iconfig;
u8 attributes;
u8 maxPower;
} ConfigDescriptor;
// String
// Interface
typedef struct
{
u8 len; // 9
u8 dtype; // 4
u8 number;
u8 alternate;
u8 numEndpoints;
u8 interfaceClass;
u8 interfaceSubClass;
u8 protocol;
u8 iInterface;
} InterfaceDescriptor;
// Endpoint
typedef struct
{
u8 len; // 7
u8 dtype; // 5
u8 addr;
u8 attr;
u16 packetSize;
u8 interval;
} EndpointDescriptor;
// Interface Association Descriptor
// Used to bind 2 interfaces together in CDC compostite device
typedef struct
{
u8 len; // 8
u8 dtype; // 11
u8 firstInterface;
u8 interfaceCount;
u8 functionClass;
u8 funtionSubClass;
u8 functionProtocol;
u8 iInterface;
} IADDescriptor;
// CDC CS interface descriptor
typedef struct
{
u8 len; // 5
u8 dtype; // 0x24
u8 subtype;
u8 d0;
u8 d1;
} CDCCSInterfaceDescriptor;
typedef struct
{
u8 len; // 4
u8 dtype; // 0x24
u8 subtype;
u8 d0;
} CDCCSInterfaceDescriptor4;
typedef struct
{
u8 len;
u8 dtype; // 0x24
u8 subtype; // 1
u8 bmCapabilities;
u8 bDataInterface;
} CMFunctionalDescriptor;
typedef struct
{
u8 len;
u8 dtype; // 0x24
u8 subtype; // 1
u8 bmCapabilities;
} ACMFunctionalDescriptor;
typedef struct
{
// IAD
IADDescriptor iad; // Only needed on compound device
// Control
InterfaceDescriptor cif; //
CDCCSInterfaceDescriptor header;
CMFunctionalDescriptor callManagement; // Call Management
ACMFunctionalDescriptor controlManagement; // ACM
CDCCSInterfaceDescriptor functionalDescriptor; // CDC_UNION
EndpointDescriptor cifin;
// Data
InterfaceDescriptor dif;
EndpointDescriptor in;
EndpointDescriptor out;
} CDCDescriptor;
typedef struct
{
InterfaceDescriptor msc;
EndpointDescriptor in;
EndpointDescriptor out;
} MSCDescriptor;
typedef struct
{
u8 len; // 9
u8 dtype; // 0x21
u8 addr;
u8 versionL; // 0x101
u8 versionH; // 0x101
u8 country;
u8 desctype; // 0x22 report
u8 descLenL;
u8 descLenH;
} HIDDescDescriptor;
typedef struct
{
InterfaceDescriptor hid;
HIDDescDescriptor desc;
EndpointDescriptor in;
} HIDDescriptor;
#define D_DEVICE(_class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs) \
{ 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs }
#define D_CONFIG(_totalLength,_interfaces) \
{ 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(500) }
#define D_INTERFACE(_n,_numEndpoints,_class,_subClass,_protocol) \
{ 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 }
#define D_ENDPOINT(_addr,_attr,_packetSize, _interval) \
{ 7, 5, _addr,_attr,_packetSize, _interval }
#define D_IAD(_firstInterface, _count, _class, _subClass, _protocol) \
{ 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 }
#define D_HIDREPORT(_descriptorLength) \
{ 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 }
#define D_CDCCS(_subtype,_d0,_d1) { 5, 0x24, _subtype, _d0, _d1 }
#define D_CDCCS4(_subtype,_d0) { 4, 0x24, _subtype, _d0 }
#endif

View File

@@ -0,0 +1,63 @@
/* Copyright (c) 2011, Peter Barrett
**
** Permission to use, copy, modify, and/or distribute this software for
** any purpose with or without fee is hereby granted, provided that the
** above copyright notice and this permission notice appear in all copies.
**
** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
** SOFTWARE.
*/
#define CDC_ENABLED
#define HID_ENABLED
#ifdef CDC_ENABLED
#define CDC_INTERFACE_COUNT 2
#define CDC_ENPOINT_COUNT 3
#else
#define CDC_INTERFACE_COUNT 0
#define CDC_ENPOINT_COUNT 0
#endif
#ifdef HID_ENABLED
#define HID_INTERFACE_COUNT 1
#define HID_ENPOINT_COUNT 1
#else
#define HID_INTERFACE_COUNT 0
#define HID_ENPOINT_COUNT 0
#endif
#define CDC_ACM_INTERFACE 0 // CDC ACM
#define CDC_DATA_INTERFACE 1 // CDC Data
#define CDC_FIRST_ENDPOINT 1
#define CDC_ENDPOINT_ACM (CDC_FIRST_ENDPOINT) // CDC First
#define CDC_ENDPOINT_OUT (CDC_FIRST_ENDPOINT+1)
#define CDC_ENDPOINT_IN (CDC_FIRST_ENDPOINT+2)
#define HID_INTERFACE (CDC_ACM_INTERFACE + CDC_INTERFACE_COUNT) // HID Interface
#define HID_FIRST_ENDPOINT (CDC_FIRST_ENDPOINT + CDC_ENPOINT_COUNT)
#define HID_ENDPOINT_INT (HID_FIRST_ENDPOINT)
#define INTERFACE_COUNT (MSC_INTERFACE + MSC_INTERFACE_COUNT)
#ifdef CDC_ENABLED
#define CDC_RX CDC_ENDPOINT_OUT
#define CDC_TX CDC_ENDPOINT_IN
#endif
#ifdef HID_ENABLED
#define HID_TX HID_ENDPOINT_INT
#endif
#define IMANUFACTURER 1
#define IPRODUCT 2

View File

@@ -0,0 +1,88 @@
/*
* Udp.cpp: Library to send/receive UDP packets.
*
* NOTE: UDP is fast, but has some important limitations (thanks to Warren Gray for mentioning these)
* 1) UDP does not guarantee the order in which assembled UDP packets are received. This
* might not happen often in practice, but in larger network topologies, a UDP
* packet can be received out of sequence.
* 2) UDP does not guard against lost packets - so packets *can* disappear without the sender being
* aware of it. Again, this may not be a concern in practice on small local networks.
* For more information, see http://www.cafeaulait.org/course/week12/35.html
*
* MIT License:
* Copyright (c) 2008 Bjoern Hartmann
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* bjoern@cs.stanford.edu 12/30/2008
*/
#ifndef udp_h
#define udp_h
#include <Stream.h>
#include <IPAddress.h>
class UDP : public Stream {
public:
virtual uint8_t begin(uint16_t) =0; // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use
virtual void stop() =0; // Finish with the UDP socket
// Sending UDP packets
// Start building up a packet to send to the remote host specific in ip and port
// Returns 1 if successful, 0 if there was a problem with the supplied IP address or port
virtual int beginPacket(IPAddress ip, uint16_t port) =0;
// Start building up a packet to send to the remote host specific in host and port
// Returns 1 if successful, 0 if there was a problem resolving the hostname or port
virtual int beginPacket(const char *host, uint16_t port) =0;
// Finish off this packet and send it
// Returns 1 if the packet was sent successfully, 0 if there was an error
virtual int endPacket() =0;
// Write a single byte into the packet
virtual size_t write(uint8_t) =0;
// Write size bytes from buffer into the packet
virtual size_t write(const uint8_t *buffer, size_t size) =0;
// Start processing the next available incoming packet
// Returns the size of the packet in bytes, or 0 if no packets are available
virtual int parsePacket() =0;
// Number of bytes remaining in the current packet
virtual int available() =0;
// Read a single byte from the current packet
virtual int read() =0;
// Read up to len bytes from the current packet and place them into buffer
// Returns the number of bytes read, or 0 if none are available
virtual int read(unsigned char* buffer, size_t len) =0;
// Read up to len characters from the current packet and place them into buffer
// Returns the number of characters read, or 0 if none are available
virtual int read(char* buffer, size_t len) =0;
// Return the next byte from the current packet without moving on to the next byte
virtual int peek() =0;
virtual void flush() =0; // Finish reading the current packet
// Return the IP address of the host who sent the current incoming packet
virtual IPAddress remoteIP() =0;
// Return the port of the host who sent the current incoming packet
virtual uint16_t remotePort() =0;
protected:
uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); };
};
#endif

View File

@@ -0,0 +1,322 @@
/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */
/*
Part of the Wiring project - http://wiring.uniandes.edu.co
Copyright (c) 2004-05 Hernando Barragan
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
Modified 24 November 2006 by David A. Mellis
Modified 1 August 2010 by Mark Sproul
*/
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <stdio.h>
#include "wiring_private.h"
static volatile voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS];
// volatile static voidFuncPtr twiIntFunc;
void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) {
if(interruptNum < EXTERNAL_NUM_INTERRUPTS) {
intFunc[interruptNum] = userFunc;
// Configure the interrupt mode (trigger on low input, any change, rising
// edge, or falling edge). The mode constants were chosen to correspond
// to the configuration bits in the hardware register, so we simply shift
// the mode into place.
// Enable the interrupt.
switch (interruptNum) {
#if defined(__AVR_ATmega32U4__)
// I hate doing this, but the register assignment differs between the 1280/2560
// and the 32U4. Since avrlib defines registers PCMSK1 and PCMSK2 that aren't
// even present on the 32U4 this is the only way to distinguish between them.
case 0:
EICRA = (EICRA & ~((1<<ISC00) | (1<<ISC01))) | (mode << ISC00);
EIMSK |= (1<<INT0);
break;
case 1:
EICRA = (EICRA & ~((1<<ISC10) | (1<<ISC11))) | (mode << ISC10);
EIMSK |= (1<<INT1);
break;
case 2:
EICRA = (EICRA & ~((1<<ISC20) | (1<<ISC21))) | (mode << ISC20);
EIMSK |= (1<<INT2);
break;
case 3:
EICRA = (EICRA & ~((1<<ISC30) | (1<<ISC31))) | (mode << ISC30);
EIMSK |= (1<<INT3);
break;
#elif defined(EICRA) && defined(EICRB) && defined(EIMSK)
case 2:
EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00);
EIMSK |= (1 << INT0);
break;
case 3:
EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10);
EIMSK |= (1 << INT1);
break;
case 4:
EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20);
EIMSK |= (1 << INT2);
break;
case 5:
EICRA = (EICRA & ~((1 << ISC30) | (1 << ISC31))) | (mode << ISC30);
EIMSK |= (1 << INT3);
break;
case 0:
EICRB = (EICRB & ~((1 << ISC40) | (1 << ISC41))) | (mode << ISC40);
EIMSK |= (1 << INT4);
break;
case 1:
EICRB = (EICRB & ~((1 << ISC50) | (1 << ISC51))) | (mode << ISC50);
EIMSK |= (1 << INT5);
break;
case 6:
EICRB = (EICRB & ~((1 << ISC60) | (1 << ISC61))) | (mode << ISC60);
EIMSK |= (1 << INT6);
break;
case 7:
EICRB = (EICRB & ~((1 << ISC70) | (1 << ISC71))) | (mode << ISC70);
EIMSK |= (1 << INT7);
break;
#else
case 0:
#if defined(EICRA) && defined(ISC00) && defined(EIMSK)
EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00);
EIMSK |= (1 << INT0);
#elif defined(MCUCR) && defined(ISC00) && defined(GICR)
MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00);
GICR |= (1 << INT0);
#elif defined(MCUCR) && defined(ISC00) && defined(GIMSK)
MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00);
GIMSK |= (1 << INT0);
#else
#error attachInterrupt not finished for this CPU (case 0)
#endif
break;
case 1:
#if defined(EICRA) && defined(ISC10) && defined(ISC11) && defined(EIMSK)
EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10);
EIMSK |= (1 << INT1);
#elif defined(MCUCR) && defined(ISC10) && defined(ISC11) && defined(GICR)
MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10);
GICR |= (1 << INT1);
#elif defined(MCUCR) && defined(ISC10) && defined(GIMSK) && defined(GIMSK)
MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10);
GIMSK |= (1 << INT1);
#else
#warning attachInterrupt may need some more work for this cpu (case 1)
#endif
break;
case 2:
#if defined(EICRA) && defined(ISC20) && defined(ISC21) && defined(EIMSK)
EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20);
EIMSK |= (1 << INT2);
#elif defined(MCUCR) && defined(ISC20) && defined(ISC21) && defined(GICR)
MCUCR = (MCUCR & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20);
GICR |= (1 << INT2);
#elif defined(MCUCR) && defined(ISC20) && defined(GIMSK) && defined(GIMSK)
MCUCR = (MCUCR & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20);
GIMSK |= (1 << INT2);
#endif
break;
#endif
}
}
}
void detachInterrupt(uint8_t interruptNum) {
if(interruptNum < EXTERNAL_NUM_INTERRUPTS) {
// Disable the interrupt. (We can't assume that interruptNum is equal
// to the number of the EIMSK bit to clear, as this isn't true on the
// ATmega8. There, INT0 is 6 and INT1 is 7.)
switch (interruptNum) {
#if defined(__AVR_ATmega32U4__)
case 0:
EIMSK &= ~(1<<INT0);
break;
case 1:
EIMSK &= ~(1<<INT1);
break;
case 2:
EIMSK &= ~(1<<INT2);
break;
case 3:
EIMSK &= ~(1<<INT3);
break;
#elif defined(EICRA) && defined(EICRB) && defined(EIMSK)
case 2:
EIMSK &= ~(1 << INT0);
break;
case 3:
EIMSK &= ~(1 << INT1);
break;
case 4:
EIMSK &= ~(1 << INT2);
break;
case 5:
EIMSK &= ~(1 << INT3);
break;
case 0:
EIMSK &= ~(1 << INT4);
break;
case 1:
EIMSK &= ~(1 << INT5);
break;
case 6:
EIMSK &= ~(1 << INT6);
break;
case 7:
EIMSK &= ~(1 << INT7);
break;
#else
case 0:
#if defined(EIMSK) && defined(INT0)
EIMSK &= ~(1 << INT0);
#elif defined(GICR) && defined(ISC00)
GICR &= ~(1 << INT0); // atmega32
#elif defined(GIMSK) && defined(INT0)
GIMSK &= ~(1 << INT0);
#else
#error detachInterrupt not finished for this cpu
#endif
break;
case 1:
#if defined(EIMSK) && defined(INT1)
EIMSK &= ~(1 << INT1);
#elif defined(GICR) && defined(INT1)
GICR &= ~(1 << INT1); // atmega32
#elif defined(GIMSK) && defined(INT1)
GIMSK &= ~(1 << INT1);
#else
#warning detachInterrupt may need some more work for this cpu (case 1)
#endif
break;
#endif
}
intFunc[interruptNum] = 0;
}
}
/*
void attachInterruptTwi(void (*userFunc)(void) ) {
twiIntFunc = userFunc;
}
*/
#if defined(__AVR_ATmega32U4__)
SIGNAL(INT0_vect) {
if(intFunc[EXTERNAL_INT_0])
intFunc[EXTERNAL_INT_0]();
}
SIGNAL(INT1_vect) {
if(intFunc[EXTERNAL_INT_1])
intFunc[EXTERNAL_INT_1]();
}
SIGNAL(INT2_vect) {
if(intFunc[EXTERNAL_INT_2])
intFunc[EXTERNAL_INT_2]();
}
SIGNAL(INT3_vect) {
if(intFunc[EXTERNAL_INT_3])
intFunc[EXTERNAL_INT_3]();
}
#elif defined(EICRA) && defined(EICRB)
SIGNAL(INT0_vect) {
if(intFunc[EXTERNAL_INT_2])
intFunc[EXTERNAL_INT_2]();
}
SIGNAL(INT1_vect) {
if(intFunc[EXTERNAL_INT_3])
intFunc[EXTERNAL_INT_3]();
}
SIGNAL(INT2_vect) {
if(intFunc[EXTERNAL_INT_4])
intFunc[EXTERNAL_INT_4]();
}
SIGNAL(INT3_vect) {
if(intFunc[EXTERNAL_INT_5])
intFunc[EXTERNAL_INT_5]();
}
SIGNAL(INT4_vect) {
if(intFunc[EXTERNAL_INT_0])
intFunc[EXTERNAL_INT_0]();
}
SIGNAL(INT5_vect) {
if(intFunc[EXTERNAL_INT_1])
intFunc[EXTERNAL_INT_1]();
}
SIGNAL(INT6_vect) {
if(intFunc[EXTERNAL_INT_6])
intFunc[EXTERNAL_INT_6]();
}
SIGNAL(INT7_vect) {
if(intFunc[EXTERNAL_INT_7])
intFunc[EXTERNAL_INT_7]();
}
#else
SIGNAL(INT0_vect) {
if(intFunc[EXTERNAL_INT_0])
intFunc[EXTERNAL_INT_0]();
}
SIGNAL(INT1_vect) {
if(intFunc[EXTERNAL_INT_1])
intFunc[EXTERNAL_INT_1]();
}
#if defined(EICRA) && defined(ISC20)
SIGNAL(INT2_vect) {
if(intFunc[EXTERNAL_INT_2])
intFunc[EXTERNAL_INT_2]();
}
#endif
#endif
/*
SIGNAL(SIG_2WIRE_SERIAL) {
if(twiIntFunc)
twiIntFunc();
}
*/

View File

@@ -0,0 +1,645 @@
/*
WString.cpp - String library for Wiring & Arduino
...mostly rewritten by Paul Stoffregen...
Copyright (c) 2009-10 Hernando Barragan. All rights reserved.
Copyright 2011, Paul Stoffregen, paul@pjrc.com
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "WString.h"
/*********************************************/
/* Constructors */
/*********************************************/
String::String(const char *cstr)
{
init();
if (cstr) copy(cstr, strlen(cstr));
}
String::String(const String &value)
{
init();
*this = value;
}
#ifdef __GXX_EXPERIMENTAL_CXX0X__
String::String(String &&rval)
{
init();
move(rval);
}
String::String(StringSumHelper &&rval)
{
init();
move(rval);
}
#endif
String::String(char c)
{
init();
char buf[2];
buf[0] = c;
buf[1] = 0;
*this = buf;
}
String::String(unsigned char value, unsigned char base)
{
init();
char buf[9];
utoa(value, buf, base);
*this = buf;
}
String::String(int value, unsigned char base)
{
init();
char buf[18];
itoa(value, buf, base);
*this = buf;
}
String::String(unsigned int value, unsigned char base)
{
init();
char buf[17];
utoa(value, buf, base);
*this = buf;
}
String::String(long value, unsigned char base)
{
init();
char buf[34];
ltoa(value, buf, base);
*this = buf;
}
String::String(unsigned long value, unsigned char base)
{
init();
char buf[33];
ultoa(value, buf, base);
*this = buf;
}
String::~String()
{
free(buffer);
}
/*********************************************/
/* Memory Management */
/*********************************************/
inline void String::init(void)
{
buffer = NULL;
capacity = 0;
len = 0;
flags = 0;
}
void String::invalidate(void)
{
if (buffer) free(buffer);
buffer = NULL;
capacity = len = 0;
}
unsigned char String::reserve(unsigned int size)
{
if (buffer && capacity >= size) return 1;
if (changeBuffer(size)) {
if (len == 0) buffer[0] = 0;
return 1;
}
return 0;
}
unsigned char String::changeBuffer(unsigned int maxStrLen)
{
char *newbuffer = (char *)realloc(buffer, maxStrLen + 1);
if (newbuffer) {
buffer = newbuffer;
capacity = maxStrLen;
return 1;
}
return 0;
}
/*********************************************/
/* Copy and Move */
/*********************************************/
String & String::copy(const char *cstr, unsigned int length)
{
if (!reserve(length)) {
invalidate();
return *this;
}
len = length;
strcpy(buffer, cstr);
return *this;
}
#ifdef __GXX_EXPERIMENTAL_CXX0X__
void String::move(String &rhs)
{
if (buffer) {
if (capacity >= rhs.len) {
strcpy(buffer, rhs.buffer);
len = rhs.len;
rhs.len = 0;
return;
} else {
free(buffer);
}
}
buffer = rhs.buffer;
capacity = rhs.capacity;
len = rhs.len;
rhs.buffer = NULL;
rhs.capacity = 0;
rhs.len = 0;
}
#endif
String & String::operator = (const String &rhs)
{
if (this == &rhs) return *this;
if (rhs.buffer) copy(rhs.buffer, rhs.len);
else invalidate();
return *this;
}
#ifdef __GXX_EXPERIMENTAL_CXX0X__
String & String::operator = (String &&rval)
{
if (this != &rval) move(rval);
return *this;
}
String & String::operator = (StringSumHelper &&rval)
{
if (this != &rval) move(rval);
return *this;
}
#endif
String & String::operator = (const char *cstr)
{
if (cstr) copy(cstr, strlen(cstr));
else invalidate();
return *this;
}
/*********************************************/
/* concat */
/*********************************************/
unsigned char String::concat(const String &s)
{
return concat(s.buffer, s.len);
}
unsigned char String::concat(const char *cstr, unsigned int length)
{
unsigned int newlen = len + length;
if (!cstr) return 0;
if (length == 0) return 1;
if (!reserve(newlen)) return 0;
strcpy(buffer + len, cstr);
len = newlen;
return 1;
}
unsigned char String::concat(const char *cstr)
{
if (!cstr) return 0;
return concat(cstr, strlen(cstr));
}
unsigned char String::concat(char c)
{
char buf[2];
buf[0] = c;
buf[1] = 0;
return concat(buf, 1);
}
unsigned char String::concat(unsigned char num)
{
char buf[4];
itoa(num, buf, 10);
return concat(buf, strlen(buf));
}
unsigned char String::concat(int num)
{
char buf[7];
itoa(num, buf, 10);
return concat(buf, strlen(buf));
}
unsigned char String::concat(unsigned int num)
{
char buf[6];
utoa(num, buf, 10);
return concat(buf, strlen(buf));
}
unsigned char String::concat(long num)
{
char buf[12];
ltoa(num, buf, 10);
return concat(buf, strlen(buf));
}
unsigned char String::concat(unsigned long num)
{
char buf[11];
ultoa(num, buf, 10);
return concat(buf, strlen(buf));
}
/*********************************************/
/* Concatenate */
/*********************************************/
StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(rhs.buffer, rhs.len)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!cstr || !a.concat(cstr, strlen(cstr))) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, char c)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(c)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(num)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, int num)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(num)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(num)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, long num)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(num)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(num)) a.invalidate();
return a;
}
/*********************************************/
/* Comparison */
/*********************************************/
int String::compareTo(const String &s) const
{
if (!buffer || !s.buffer) {
if (s.buffer && s.len > 0) return 0 - *(unsigned char *)s.buffer;
if (buffer && len > 0) return *(unsigned char *)buffer;
return 0;
}
return strcmp(buffer, s.buffer);
}
unsigned char String::equals(const String &s2) const
{
return (len == s2.len && compareTo(s2) == 0);
}
unsigned char String::equals(const char *cstr) const
{
if (len == 0) return (cstr == NULL || *cstr == 0);
if (cstr == NULL) return buffer[0] == 0;
return strcmp(buffer, cstr) == 0;
}
unsigned char String::operator<(const String &rhs) const
{
return compareTo(rhs) < 0;
}
unsigned char String::operator>(const String &rhs) const
{
return compareTo(rhs) > 0;
}
unsigned char String::operator<=(const String &rhs) const
{
return compareTo(rhs) <= 0;
}
unsigned char String::operator>=(const String &rhs) const
{
return compareTo(rhs) >= 0;
}
unsigned char String::equalsIgnoreCase( const String &s2 ) const
{
if (this == &s2) return 1;
if (len != s2.len) return 0;
if (len == 0) return 1;
const char *p1 = buffer;
const char *p2 = s2.buffer;
while (*p1) {
if (tolower(*p1++) != tolower(*p2++)) return 0;
}
return 1;
}
unsigned char String::startsWith( const String &s2 ) const
{
if (len < s2.len) return 0;
return startsWith(s2, 0);
}
unsigned char String::startsWith( const String &s2, unsigned int offset ) const
{
if (offset > len - s2.len || !buffer || !s2.buffer) return 0;
return strncmp( &buffer[offset], s2.buffer, s2.len ) == 0;
}
unsigned char String::endsWith( const String &s2 ) const
{
if ( len < s2.len || !buffer || !s2.buffer) return 0;
return strcmp(&buffer[len - s2.len], s2.buffer) == 0;
}
/*********************************************/
/* Character Access */
/*********************************************/
char String::charAt(unsigned int loc) const
{
return operator[](loc);
}
void String::setCharAt(unsigned int loc, char c)
{
if (loc < len) buffer[loc] = c;
}
char & String::operator[](unsigned int index)
{
static char dummy_writable_char;
if (index >= len || !buffer) {
dummy_writable_char = 0;
return dummy_writable_char;
}
return buffer[index];
}
char String::operator[]( unsigned int index ) const
{
if (index >= len || !buffer) return 0;
return buffer[index];
}
void String::getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index) const
{
if (!bufsize || !buf) return;
if (index >= len) {
buf[0] = 0;
return;
}
unsigned int n = bufsize - 1;
if (n > len - index) n = len - index;
strncpy((char *)buf, buffer + index, n);
buf[n] = 0;
}
/*********************************************/
/* Search */
/*********************************************/
int String::indexOf(char c) const
{
return indexOf(c, 0);
}
int String::indexOf( char ch, unsigned int fromIndex ) const
{
if (fromIndex >= len) return -1;
const char* temp = strchr(buffer + fromIndex, ch);
if (temp == NULL) return -1;
return temp - buffer;
}
int String::indexOf(const String &s2) const
{
return indexOf(s2, 0);
}
int String::indexOf(const String &s2, unsigned int fromIndex) const
{
if (fromIndex >= len) return -1;
const char *found = strstr(buffer + fromIndex, s2.buffer);
if (found == NULL) return -1;
return found - buffer;
}
int String::lastIndexOf( char theChar ) const
{
return lastIndexOf(theChar, len - 1);
}
int String::lastIndexOf(char ch, unsigned int fromIndex) const
{
if (fromIndex >= len) return -1;
char tempchar = buffer[fromIndex + 1];
buffer[fromIndex + 1] = '\0';
char* temp = strrchr( buffer, ch );
buffer[fromIndex + 1] = tempchar;
if (temp == NULL) return -1;
return temp - buffer;
}
int String::lastIndexOf(const String &s2) const
{
return lastIndexOf(s2, len - s2.len);
}
int String::lastIndexOf(const String &s2, unsigned int fromIndex) const
{
if (s2.len == 0 || len == 0 || s2.len > len) return -1;
if (fromIndex >= len) fromIndex = len - 1;
int found = -1;
for (char *p = buffer; p <= buffer + fromIndex; p++) {
p = strstr(p, s2.buffer);
if (!p) break;
if ((unsigned int)(p - buffer) <= fromIndex) found = p - buffer;
}
return found;
}
String String::substring( unsigned int left ) const
{
return substring(left, len);
}
String String::substring(unsigned int left, unsigned int right) const
{
if (left > right) {
unsigned int temp = right;
right = left;
left = temp;
}
String out;
if (left > len) return out;
if (right > len) right = len;
char temp = buffer[right]; // save the replaced character
buffer[right] = '\0';
out = buffer + left; // pointer arithmetic
buffer[right] = temp; //restore character
return out;
}
/*********************************************/
/* Modification */
/*********************************************/
void String::replace(char find, char replace)
{
if (!buffer) return;
for (char *p = buffer; *p; p++) {
if (*p == find) *p = replace;
}
}
void String::replace(const String& find, const String& replace)
{
if (len == 0 || find.len == 0) return;
int diff = replace.len - find.len;
char *readFrom = buffer;
char *foundAt;
if (diff == 0) {
while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
memcpy(foundAt, replace.buffer, replace.len);
readFrom = foundAt + replace.len;
}
} else if (diff < 0) {
char *writeTo = buffer;
while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
unsigned int n = foundAt - readFrom;
memcpy(writeTo, readFrom, n);
writeTo += n;
memcpy(writeTo, replace.buffer, replace.len);
writeTo += replace.len;
readFrom = foundAt + find.len;
len += diff;
}
strcpy(writeTo, readFrom);
} else {
unsigned int size = len; // compute size needed for result
while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
readFrom = foundAt + find.len;
size += diff;
}
if (size == len) return;
if (size > capacity && !changeBuffer(size)) return; // XXX: tell user!
int index = len - 1;
while (index >= 0 && (index = lastIndexOf(find, index)) >= 0) {
readFrom = buffer + index + find.len;
memmove(readFrom + diff, readFrom, len - (readFrom - buffer));
len += diff;
buffer[len] = 0;
memcpy(buffer + index, replace.buffer, replace.len);
index--;
}
}
}
void String::toLowerCase(void)
{
if (!buffer) return;
for (char *p = buffer; *p; p++) {
*p = tolower(*p);
}
}
void String::toUpperCase(void)
{
if (!buffer) return;
for (char *p = buffer; *p; p++) {
*p = toupper(*p);
}
}
void String::trim(void)
{
if (!buffer || len == 0) return;
char *begin = buffer;
while (isspace(*begin)) begin++;
char *end = buffer + len - 1;
while (isspace(*end) && end >= begin) end--;
len = end + 1 - begin;
if (begin > buffer) memcpy(buffer, begin, len);
buffer[len] = 0;
}
/*********************************************/
/* Parsing / Conversion */
/*********************************************/
long String::toInt(void) const
{
if (buffer) return atol(buffer);
return 0;
}

View File

@@ -0,0 +1,205 @@
/*
WString.h - String library for Wiring & Arduino
...mostly rewritten by Paul Stoffregen...
Copyright (c) 2009-10 Hernando Barragan. All right reserved.
Copyright 2011, Paul Stoffregen, paul@pjrc.com
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef String_class_h
#define String_class_h
#ifdef __cplusplus
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <avr/pgmspace.h>
// When compiling programs with this class, the following gcc parameters
// dramatically increase performance and memory (RAM) efficiency, typically
// with little or no increase in code size.
// -felide-constructors
// -std=c++0x
class __FlashStringHelper;
#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
// An inherited class for holding the result of a concatenation. These
// result objects are assumed to be writable by subsequent concatenations.
class StringSumHelper;
// The string class
class String
{
// use a function pointer to allow for "if (s)" without the
// complications of an operator bool(). for more information, see:
// http://www.artima.com/cppsource/safebool.html
typedef void (String::*StringIfHelperType)() const;
void StringIfHelper() const {}
public:
// constructors
// creates a copy of the initial value.
// if the initial value is null or invalid, or if memory allocation
// fails, the string will be marked as invalid (i.e. "if (s)" will
// be false).
String(const char *cstr = "");
String(const String &str);
#ifdef __GXX_EXPERIMENTAL_CXX0X__
String(String &&rval);
String(StringSumHelper &&rval);
#endif
explicit String(char c);
explicit String(unsigned char, unsigned char base=10);
explicit String(int, unsigned char base=10);
explicit String(unsigned int, unsigned char base=10);
explicit String(long, unsigned char base=10);
explicit String(unsigned long, unsigned char base=10);
~String(void);
// memory management
// return true on success, false on failure (in which case, the string
// is left unchanged). reserve(0), if successful, will validate an
// invalid string (i.e., "if (s)" will be true afterwards)
unsigned char reserve(unsigned int size);
inline unsigned int length(void) const {return len;}
// creates a copy of the assigned value. if the value is null or
// invalid, or if the memory allocation fails, the string will be
// marked as invalid ("if (s)" will be false).
String & operator = (const String &rhs);
String & operator = (const char *cstr);
#ifdef __GXX_EXPERIMENTAL_CXX0X__
String & operator = (String &&rval);
String & operator = (StringSumHelper &&rval);
#endif
// concatenate (works w/ built-in types)
// returns true on success, false on failure (in which case, the string
// is left unchanged). if the argument is null or invalid, the
// concatenation is considered unsucessful.
unsigned char concat(const String &str);
unsigned char concat(const char *cstr);
unsigned char concat(char c);
unsigned char concat(unsigned char c);
unsigned char concat(int num);
unsigned char concat(unsigned int num);
unsigned char concat(long num);
unsigned char concat(unsigned long num);
// if there's not enough memory for the concatenated value, the string
// will be left unchanged (but this isn't signalled in any way)
String & operator += (const String &rhs) {concat(rhs); return (*this);}
String & operator += (const char *cstr) {concat(cstr); return (*this);}
String & operator += (char c) {concat(c); return (*this);}
String & operator += (unsigned char num) {concat(num); return (*this);}
String & operator += (int num) {concat(num); return (*this);}
String & operator += (unsigned int num) {concat(num); return (*this);}
String & operator += (long num) {concat(num); return (*this);}
String & operator += (unsigned long num) {concat(num); return (*this);}
friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs);
friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr);
friend StringSumHelper & operator + (const StringSumHelper &lhs, char c);
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, int num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, long num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num);
// comparison (only works w/ Strings and "strings")
operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; }
int compareTo(const String &s) const;
unsigned char equals(const String &s) const;
unsigned char equals(const char *cstr) const;
unsigned char operator == (const String &rhs) const {return equals(rhs);}
unsigned char operator == (const char *cstr) const {return equals(cstr);}
unsigned char operator != (const String &rhs) const {return !equals(rhs);}
unsigned char operator != (const char *cstr) const {return !equals(cstr);}
unsigned char operator < (const String &rhs) const;
unsigned char operator > (const String &rhs) const;
unsigned char operator <= (const String &rhs) const;
unsigned char operator >= (const String &rhs) const;
unsigned char equalsIgnoreCase(const String &s) const;
unsigned char startsWith( const String &prefix) const;
unsigned char startsWith(const String &prefix, unsigned int offset) const;
unsigned char endsWith(const String &suffix) const;
// character acccess
char charAt(unsigned int index) const;
void setCharAt(unsigned int index, char c);
char operator [] (unsigned int index) const;
char& operator [] (unsigned int index);
void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const;
void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const
{getBytes((unsigned char *)buf, bufsize, index);}
// search
int indexOf( char ch ) const;
int indexOf( char ch, unsigned int fromIndex ) const;
int indexOf( const String &str ) const;
int indexOf( const String &str, unsigned int fromIndex ) const;
int lastIndexOf( char ch ) const;
int lastIndexOf( char ch, unsigned int fromIndex ) const;
int lastIndexOf( const String &str ) const;
int lastIndexOf( const String &str, unsigned int fromIndex ) const;
String substring( unsigned int beginIndex ) const;
String substring( unsigned int beginIndex, unsigned int endIndex ) const;
// modification
void replace(char find, char replace);
void replace(const String& find, const String& replace);
void toLowerCase(void);
void toUpperCase(void);
void trim(void);
// parsing/conversion
long toInt(void) const;
protected:
char *buffer; // the actual char array
unsigned int capacity; // the array length minus one (for the '\0')
unsigned int len; // the String length (not counting the '\0')
unsigned char flags; // unused, for future features
protected:
void init(void);
void invalidate(void);
unsigned char changeBuffer(unsigned int maxStrLen);
unsigned char concat(const char *cstr, unsigned int length);
// copy and move
String & copy(const char *cstr, unsigned int length);
#ifdef __GXX_EXPERIMENTAL_CXX0X__
void move(String &rhs);
#endif
};
class StringSumHelper : public String
{
public:
StringSumHelper(const String &s) : String(s) {}
StringSumHelper(const char *p) : String(p) {}
StringSumHelper(char c) : String(c) {}
StringSumHelper(unsigned char num) : String(num) {}
StringSumHelper(int num) : String(num) {}
StringSumHelper(unsigned int num) : String(num) {}
StringSumHelper(long num) : String(num) {}
StringSumHelper(unsigned long num) : String(num) {}
};
#endif // __cplusplus
#endif // String_class_h

View File

@@ -0,0 +1,20 @@
#include <Arduino.h>
int main(void)
{
init();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}

View File

@@ -0,0 +1,18 @@
#include <new.h>
void * operator new(size_t size)
{
return malloc(size);
}
void operator delete(void * ptr)
{
free(ptr);
}
int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);};
void __cxa_guard_release (__guard *g) {*(char *)g = 1;};
void __cxa_guard_abort (__guard *) {};
void __cxa_pure_virtual(void) {};

View File

@@ -0,0 +1,22 @@
/* Header to define new/delete operators as they aren't provided by avr-gcc by default
Taken from http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=59453
*/
#ifndef NEW_H
#define NEW_H
#include <stdlib.h>
void * operator new(size_t size);
void operator delete(void * ptr);
__extension__ typedef int __guard __attribute__((mode (__DI__)));
extern "C" int __cxa_guard_acquire(__guard *);
extern "C" void __cxa_guard_release (__guard *);
extern "C" void __cxa_guard_abort (__guard *);
extern "C" void __cxa_pure_virtual(void);
#endif

View File

@@ -0,0 +1,324 @@
/*
wiring.c - Partial implementation of the Wiring API for the ATmega8.
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2005-2006 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
$Id$
*/
#include "wiring_private.h"
// the prescaler is set so that timer0 ticks every 64 clock cycles, and the
// the overflow handler is called every 256 ticks.
#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256))
// the whole number of milliseconds per timer0 overflow
#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000)
// the fractional number of milliseconds per timer0 overflow. we shift right
// by three to fit these numbers into a byte. (for the clock speeds we care
// about - 8 and 16 MHz - this doesn't lose precision.)
#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3)
#define FRACT_MAX (1000 >> 3)
volatile unsigned long timer0_overflow_count = 0;
volatile unsigned long timer0_millis = 0;
static unsigned char timer0_fract = 0;
#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
SIGNAL(TIM0_OVF_vect)
#else
SIGNAL(TIMER0_OVF_vect)
#endif
{
// copy these to local variables so they can be stored in registers
// (volatile variables must be read from memory on every access)
unsigned long m = timer0_millis;
unsigned char f = timer0_fract;
m += MILLIS_INC;
f += FRACT_INC;
if (f >= FRACT_MAX) {
f -= FRACT_MAX;
m += 1;
}
timer0_fract = f;
timer0_millis = m;
timer0_overflow_count++;
}
unsigned long millis()
{
unsigned long m;
uint8_t oldSREG = SREG;
// disable interrupts while we read timer0_millis or we might get an
// inconsistent value (e.g. in the middle of a write to timer0_millis)
cli();
m = timer0_millis;
SREG = oldSREG;
return m;
}
unsigned long micros() {
unsigned long m;
uint8_t oldSREG = SREG, t;
cli();
m = timer0_overflow_count;
#if defined(TCNT0)
t = TCNT0;
#elif defined(TCNT0L)
t = TCNT0L;
#else
#error TIMER 0 not defined
#endif
#ifdef TIFR0
if ((TIFR0 & _BV(TOV0)) && (t < 255))
m++;
#else
if ((TIFR & _BV(TOV0)) && (t < 255))
m++;
#endif
SREG = oldSREG;
return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond());
}
void delay(unsigned long ms)
{
uint16_t start = (uint16_t)micros();
while (ms > 0) {
if (((uint16_t)micros() - start) >= 1000) {
ms--;
start += 1000;
}
}
}
/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */
void delayMicroseconds(unsigned int us)
{
// calling avrlib's delay_us() function with low values (e.g. 1 or
// 2 microseconds) gives delays longer than desired.
//delay_us(us);
#if F_CPU >= 20000000L
// for the 20 MHz clock on rare Arduino boards
// for a one-microsecond delay, simply wait 2 cycle and return. The overhead
// of the function call yields a delay of exactly a one microsecond.
__asm__ __volatile__ (
"nop" "\n\t"
"nop"); //just waiting 2 cycle
if (--us == 0)
return;
// the following loop takes a 1/5 of a microsecond (4 cycles)
// per iteration, so execute it five times for each microsecond of
// delay requested.
us = (us<<2) + us; // x5 us
// account for the time taken in the preceeding commands.
us -= 2;
#elif F_CPU >= 16000000L
// for the 16 MHz clock on most Arduino boards
// for a one-microsecond delay, simply return. the overhead
// of the function call yields a delay of approximately 1 1/8 us.
if (--us == 0)
return;
// the following loop takes a quarter of a microsecond (4 cycles)
// per iteration, so execute it four times for each microsecond of
// delay requested.
us <<= 2;
// account for the time taken in the preceeding commands.
us -= 2;
#else
// for the 8 MHz internal clock on the ATmega168
// for a one- or two-microsecond delay, simply return. the overhead of
// the function calls takes more than two microseconds. can't just
// subtract two, since us is unsigned; we'd overflow.
if (--us == 0)
return;
if (--us == 0)
return;
// the following loop takes half of a microsecond (4 cycles)
// per iteration, so execute it twice for each microsecond of
// delay requested.
us <<= 1;
// partially compensate for the time taken by the preceeding commands.
// we can't subtract any more than this or we'd overflow w/ small delays.
us--;
#endif
// busy wait
__asm__ __volatile__ (
"1: sbiw %0,1" "\n\t" // 2 cycles
"brne 1b" : "=w" (us) : "0" (us) // 2 cycles
);
}
void init()
{
// this needs to be called before setup() or some functions won't
// work there
sei();
// on the ATmega168, timer 0 is also used for fast hardware pwm
// (using phase-correct PWM would mean that timer 0 overflowed half as often
// resulting in different millis() behavior on the ATmega8 and ATmega168)
#if defined(TCCR0A) && defined(WGM01)
sbi(TCCR0A, WGM01);
sbi(TCCR0A, WGM00);
#endif
// set timer 0 prescale factor to 64
#if defined(__AVR_ATmega128__)
// CPU specific: different values for the ATmega128
sbi(TCCR0, CS02);
#elif defined(TCCR0) && defined(CS01) && defined(CS00)
// this combination is for the standard atmega8
sbi(TCCR0, CS01);
sbi(TCCR0, CS00);
#elif defined(TCCR0B) && defined(CS01) && defined(CS00)
// this combination is for the standard 168/328/1280/2560
sbi(TCCR0B, CS01);
sbi(TCCR0B, CS00);
#elif defined(TCCR0A) && defined(CS01) && defined(CS00)
// this combination is for the __AVR_ATmega645__ series
sbi(TCCR0A, CS01);
sbi(TCCR0A, CS00);
#else
#error Timer 0 prescale factor 64 not set correctly
#endif
// enable timer 0 overflow interrupt
#if defined(TIMSK) && defined(TOIE0)
sbi(TIMSK, TOIE0);
#elif defined(TIMSK0) && defined(TOIE0)
sbi(TIMSK0, TOIE0);
#else
#error Timer 0 overflow interrupt not set correctly
#endif
// timers 1 and 2 are used for phase-correct hardware pwm
// this is better for motors as it ensures an even waveform
// note, however, that fast pwm mode can achieve a frequency of up
// 8 MHz (with a 16 MHz clock) at 50% duty cycle
#if defined(TCCR1B) && defined(CS11) && defined(CS10)
TCCR1B = 0;
// set timer 1 prescale factor to 64
sbi(TCCR1B, CS11);
#if F_CPU >= 8000000L
sbi(TCCR1B, CS10);
#endif
#elif defined(TCCR1) && defined(CS11) && defined(CS10)
sbi(TCCR1, CS11);
#if F_CPU >= 8000000L
sbi(TCCR1, CS10);
#endif
#endif
// put timer 1 in 8-bit phase correct pwm mode
#if defined(TCCR1A) && defined(WGM10)
sbi(TCCR1A, WGM10);
#elif defined(TCCR1)
#warning this needs to be finished
#endif
// set timer 2 prescale factor to 64
#if defined(TCCR2) && defined(CS22)
sbi(TCCR2, CS22);
#elif defined(TCCR2B) && defined(CS22)
sbi(TCCR2B, CS22);
#else
#warning Timer 2 not finished (may not be present on this CPU)
#endif
// configure timer 2 for phase correct pwm (8-bit)
#if defined(TCCR2) && defined(WGM20)
sbi(TCCR2, WGM20);
#elif defined(TCCR2A) && defined(WGM20)
sbi(TCCR2A, WGM20);
#else
#warning Timer 2 not finished (may not be present on this CPU)
#endif
#if defined(TCCR3B) && defined(CS31) && defined(WGM30)
sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64
sbi(TCCR3B, CS30);
sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode
#endif
#if defined(TCCR4A) && defined(TCCR4B) && defined(TCCR4D) /* beginning of timer4 block for 32U4 and similar */
sbi(TCCR4B, CS42); // set timer4 prescale factor to 64
sbi(TCCR4B, CS41);
sbi(TCCR4B, CS40);
sbi(TCCR4D, WGM40); // put timer 4 in phase- and frequency-correct PWM mode
sbi(TCCR4A, PWM4A); // enable PWM mode for comparator OCR4A
sbi(TCCR4C, PWM4D); // enable PWM mode for comparator OCR4D
#else /* beginning of timer4 block for ATMEGA1280 and ATMEGA2560 */
#if defined(TCCR4B) && defined(CS41) && defined(WGM40)
sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64
sbi(TCCR4B, CS40);
sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode
#endif
#endif /* end timer4 block for ATMEGA1280/2560 and similar */
#if defined(TCCR5B) && defined(CS51) && defined(WGM50)
sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64
sbi(TCCR5B, CS50);
sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode
#endif
#if defined(ADCSRA)
// set a2d prescale factor to 128
// 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range.
// XXX: this will not work properly for other clock speeds, and
// this code should use F_CPU to determine the prescale factor.
sbi(ADCSRA, ADPS2);
sbi(ADCSRA, ADPS1);
sbi(ADCSRA, ADPS0);
// enable a2d conversions
sbi(ADCSRA, ADEN);
#endif
// the bootloader connects pins 0 and 1 to the USART; disconnect them
// here so they can be used as normal digital i/o; they will be
// reconnected in Serial.begin()
#if defined(UCSRB)
UCSRB = 0;
#elif defined(UCSR0B)
UCSR0B = 0;
#endif
}

View File

@@ -0,0 +1,282 @@
/*
wiring_analog.c - analog input and output
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2005-2006 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
Modified 28 September 2010 by Mark Sproul
$Id: wiring.c 248 2007-02-03 15:36:30Z mellis $
*/
#include "wiring_private.h"
#include "pins_arduino.h"
uint8_t analog_reference = DEFAULT;
void analogReference(uint8_t mode)
{
// can't actually set the register here because the default setting
// will connect AVCC and the AREF pin, which would cause a short if
// there's something connected to AREF.
analog_reference = mode;
}
int analogRead(uint8_t pin)
{
uint8_t low, high;
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
if (pin >= 54) pin -= 54; // allow for channel or pin numbers
#elif defined(__AVR_ATmega32U4__)
if (pin >= 18) pin -= 18; // allow for channel or pin numbers
#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__)
if (pin >= 24) pin -= 24; // allow for channel or pin numbers
#else
if (pin >= 14) pin -= 14; // allow for channel or pin numbers
#endif
#if defined(__AVR_ATmega32U4__)
pin = analogPinToChannel(pin);
ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5);
#elif defined(ADCSRB) && defined(MUX5)
// the MUX5 bit of ADCSRB selects whether we're reading from channels
// 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high).
ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5);
#endif
// set the analog reference (high two bits of ADMUX) and select the
// channel (low 4 bits). this also sets ADLAR (left-adjust result)
// to 0 (the default).
#if defined(ADMUX)
ADMUX = (analog_reference << 6) | (pin & 0x07);
#endif
// without a delay, we seem to read from the wrong channel
//delay(1);
#if defined(ADCSRA) && defined(ADCL)
// start the conversion
sbi(ADCSRA, ADSC);
// ADSC is cleared when the conversion finishes
while (bit_is_set(ADCSRA, ADSC));
// we have to read ADCL first; doing so locks both ADCL
// and ADCH until ADCH is read. reading ADCL second would
// cause the results of each conversion to be discarded,
// as ADCL and ADCH would be locked when it completed.
low = ADCL;
high = ADCH;
#else
// we dont have an ADC, return 0
low = 0;
high = 0;
#endif
// combine the two bytes
return (high << 8) | low;
}
// Right now, PWM output only works on the pins with
// hardware support. These are defined in the appropriate
// pins_*.c file. For the rest of the pins, we default
// to digital output.
void analogWrite(uint8_t pin, int val)
{
// We need to make sure the PWM output is enabled for those pins
// that support it, as we turn it off when digitally reading or
// writing with them. Also, make sure the pin is in output mode
// for consistenty with Wiring, which doesn't require a pinMode
// call for the analog output pins.
pinMode(pin, OUTPUT);
if (val == 0)
{
digitalWrite(pin, LOW);
}
else if (val == 255)
{
digitalWrite(pin, HIGH);
}
else
{
switch(digitalPinToTimer(pin))
{
// XXX fix needed for atmega8
#if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__)
case TIMER0A:
// connect pwm to pin on timer 0
sbi(TCCR0, COM00);
OCR0 = val; // set pwm duty
break;
#endif
#if defined(TCCR0A) && defined(COM0A1)
case TIMER0A:
// connect pwm to pin on timer 0, channel A
sbi(TCCR0A, COM0A1);
OCR0A = val; // set pwm duty
break;
#endif
#if defined(TCCR0A) && defined(COM0B1)
case TIMER0B:
// connect pwm to pin on timer 0, channel B
sbi(TCCR0A, COM0B1);
OCR0B = val; // set pwm duty
break;
#endif
#if defined(TCCR1A) && defined(COM1A1)
case TIMER1A:
// connect pwm to pin on timer 1, channel A
sbi(TCCR1A, COM1A1);
OCR1A = val; // set pwm duty
break;
#endif
#if defined(TCCR1A) && defined(COM1B1)
case TIMER1B:
// connect pwm to pin on timer 1, channel B
sbi(TCCR1A, COM1B1);
OCR1B = val; // set pwm duty
break;
#endif
#if defined(TCCR2) && defined(COM21)
case TIMER2:
// connect pwm to pin on timer 2
sbi(TCCR2, COM21);
OCR2 = val; // set pwm duty
break;
#endif
#if defined(TCCR2A) && defined(COM2A1)
case TIMER2A:
// connect pwm to pin on timer 2, channel A
sbi(TCCR2A, COM2A1);
OCR2A = val; // set pwm duty
break;
#endif
#if defined(TCCR2A) && defined(COM2B1)
case TIMER2B:
// connect pwm to pin on timer 2, channel B
sbi(TCCR2A, COM2B1);
OCR2B = val; // set pwm duty
break;
#endif
#if defined(TCCR3A) && defined(COM3A1)
case TIMER3A:
// connect pwm to pin on timer 3, channel A
sbi(TCCR3A, COM3A1);
OCR3A = val; // set pwm duty
break;
#endif
#if defined(TCCR3A) && defined(COM3B1)
case TIMER3B:
// connect pwm to pin on timer 3, channel B
sbi(TCCR3A, COM3B1);
OCR3B = val; // set pwm duty
break;
#endif
#if defined(TCCR3A) && defined(COM3C1)
case TIMER3C:
// connect pwm to pin on timer 3, channel C
sbi(TCCR3A, COM3C1);
OCR3C = val; // set pwm duty
break;
#endif
#if defined(TCCR4A)
case TIMER4A:
//connect pwm to pin on timer 4, channel A
sbi(TCCR4A, COM4A1);
#if defined(COM4A0) // only used on 32U4
cbi(TCCR4A, COM4A0);
#endif
OCR4A = val; // set pwm duty
break;
#endif
#if defined(TCCR4A) && defined(COM4B1)
case TIMER4B:
// connect pwm to pin on timer 4, channel B
sbi(TCCR4A, COM4B1);
OCR4B = val; // set pwm duty
break;
#endif
#if defined(TCCR4A) && defined(COM4C1)
case TIMER4C:
// connect pwm to pin on timer 4, channel C
sbi(TCCR4A, COM4C1);
OCR4C = val; // set pwm duty
break;
#endif
#if defined(TCCR4C) && defined(COM4D1)
case TIMER4D:
// connect pwm to pin on timer 4, channel D
sbi(TCCR4C, COM4D1);
#if defined(COM4D0) // only used on 32U4
cbi(TCCR4C, COM4D0);
#endif
OCR4D = val; // set pwm duty
break;
#endif
#if defined(TCCR5A) && defined(COM5A1)
case TIMER5A:
// connect pwm to pin on timer 5, channel A
sbi(TCCR5A, COM5A1);
OCR5A = val; // set pwm duty
break;
#endif
#if defined(TCCR5A) && defined(COM5B1)
case TIMER5B:
// connect pwm to pin on timer 5, channel B
sbi(TCCR5A, COM5B1);
OCR5B = val; // set pwm duty
break;
#endif
#if defined(TCCR5A) && defined(COM5C1)
case TIMER5C:
// connect pwm to pin on timer 5, channel C
sbi(TCCR5A, COM5C1);
OCR5C = val; // set pwm duty
break;
#endif
case NOT_ON_TIMER:
default:
if (val < 128) {
digitalWrite(pin, LOW);
} else {
digitalWrite(pin, HIGH);
}
}
}
}

View File

@@ -24,6 +24,7 @@
$Id: wiring.c 248 2007-02-03 15:36:30Z mellis $
*/
#define ARDUINO_MAIN
#include "wiring_private.h"
#include "pins_arduino.h"
@@ -31,17 +32,25 @@ void pinMode(uint8_t pin, uint8_t mode)
{
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
volatile uint8_t *reg;
volatile uint8_t *reg, *out;
if (port == NOT_A_PIN) return;
// JWS: can I let the optimizer do this?
reg = portModeRegister(port);
out = portOutputRegister(port);
if (mode == INPUT) {
uint8_t oldSREG = SREG;
cli();
*reg &= ~bit;
*out &= ~bit;
SREG = oldSREG;
} else if (mode == INPUT_PULLUP) {
uint8_t oldSREG = SREG;
cli();
*reg &= ~bit;
*out |= bit;
SREG = oldSREG;
} else {
uint8_t oldSREG = SREG;
@@ -106,13 +115,17 @@ static void turnOffPWM(uint8_t timer)
#if defined(TCCR4A) && defined(COM4A1)
case TIMER4A: cbi(TCCR4A, COM4A1); break;
#endif
#endif
#if defined(TCCR4A) && defined(COM4B1)
case TIMER4B: cbi(TCCR4A, COM4B1); break;
#endif
#if defined(TCCR4A) && defined(COM4C1)
case TIMER4C: cbi(TCCR4A, COM4C1); break;
#endif
#endif
#if defined(TCCR4C) && defined(COM4D1)
case TIMER4D: cbi(TCCR4C, COM4D1); break;
#endif
#if defined(TCCR5A)
case TIMER5A: cbi(TCCR5A, COM5A1); break;
case TIMER5B: cbi(TCCR5A, COM5B1); break;
@@ -136,17 +149,16 @@ void digitalWrite(uint8_t pin, uint8_t val)
out = portOutputRegister(port);
uint8_t oldSREG = SREG;
cli();
if (val == LOW) {
uint8_t oldSREG = SREG;
cli();
*out &= ~bit;
SREG = oldSREG;
} else {
uint8_t oldSREG = SREG;
cli();
*out |= bit;
SREG = oldSREG;
}
SREG = oldSREG;
}
int digitalRead(uint8_t pin)

View File

@@ -0,0 +1,71 @@
/*
wiring_private.h - Internal header file.
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2005-2006 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
$Id: wiring.h 239 2007-01-12 17:58:39Z mellis $
*/
#ifndef WiringPrivate_h
#define WiringPrivate_h
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include <stdarg.h>
#include "Arduino.h"
#ifdef __cplusplus
extern "C"{
#endif
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
#define EXTERNAL_INT_0 0
#define EXTERNAL_INT_1 1
#define EXTERNAL_INT_2 2
#define EXTERNAL_INT_3 3
#define EXTERNAL_INT_4 4
#define EXTERNAL_INT_5 5
#define EXTERNAL_INT_6 6
#define EXTERNAL_INT_7 7
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define EXTERNAL_NUM_INTERRUPTS 8
#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__)
#define EXTERNAL_NUM_INTERRUPTS 3
#elif defined(__AVR_ATmega32U4__)
#define EXTERNAL_NUM_INTERRUPTS 4
#else
#define EXTERNAL_NUM_INTERRUPTS 2
#endif
typedef void (*voidFuncPtr)(void);
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View File

@@ -0,0 +1,285 @@
/*
pins_arduino.h - Pin definition functions for Arduino
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2007 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
$Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
Changelog
-----------
11/25/11 - ryan@ryanmsutton.com - Add pins for Sanguino 644P and 1284P
07/15/12 - ryan@ryanmsutton.com - Updated for arduino0101
*/
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
#include <avr/pgmspace.h>
#define NOT_A_PIN 0
#define NOT_A_PORT 0
#define NOT_ON_TIMER 0
#define TIMER0A 1
#define TIMER0B 2
#define TIMER1A 3
#define TIMER1B 4
#define TIMER2 5
#define TIMER2A 6
#define TIMER2B 7
#define TIMER3A 8
#define TIMER3B 9
#define TIMER3C 10
#define TIMER4A 11
#define TIMER4B 12
#define TIMER4C 13
#define TIMER5A 14
#define TIMER5B 15
#define TIMER5C 16
const static uint8_t SS = 4;
const static uint8_t MOSI = 5;
const static uint8_t MISO = 6;
const static uint8_t SCK = 7;
static const uint8_t SDA = 17;
static const uint8_t SCL = 16;
static const uint8_t LED_BUILTIN = 13;
static const uint8_t A0 = 31;
static const uint8_t A1 = 30;
static const uint8_t A2 = 29;
static const uint8_t A3 = 28;
static const uint8_t A4 = 27;
static const uint8_t A5 = 26;
static const uint8_t A6 = 25;
static const uint8_t A7 = 24;
// On the ATmega1280, the addresses of some of the port registers are
// greater than 255, so we can't store them in uint8_t's.
// extern const uint16_t PROGMEM port_to_mode_PGM[];
// extern const uint16_t PROGMEM port_to_input_PGM[];
// extern const uint16_t PROGMEM port_to_output_PGM[];
// extern const uint8_t PROGMEM digital_pin_to_port_PGM[];
// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[];
// extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[];
// extern const uint8_t PROGMEM digital_pin_to_timer_PGM[];
// ATMEL ATMEGA644P / SANGUINO
//
// +---\/---+
// INT0 (D 0) PB0 1| |40 PA0 (AI 0 / D31)
// INT1 (D 1) PB1 2| |39 PA1 (AI 1 / D30)
// INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29)
// PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28)
// PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27)
// MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26)
// MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25)
// SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24)
// RST 9| |32 AREF
// VCC 10| |31 GND
// GND 11| |30 AVCC
// XTAL2 12| |29 PC7 (D 23)
// XTAL1 13| |28 PC6 (D 22)
// RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI
// TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO
// RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS
// TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK
// PWM (D 12) PD4 18| |23 PC1 (D 17) SDA
// PWM (D 13) PD5 19| |22 PC0 (D 16) SCL
// PWM (D 14) PD6 20| |21 PD7 (D 15) PWM
// +--------+
//
#define NUM_DIGITAL_PINS 24
#define NUM_ANALOG_INPUTS 8
#define analogInputToDigitalPin(p) ((p < 7) ? (p) + 24 : -1)
#define digitalPinHasPWM(p) ((p) == 3 || (p) == 4 || (p) == 12 || (p) == 13 || (p) == 14 || (p) == 15 )
#define digitalPinToPCICR(p) ( (((p) >= 0) && ((p) <= 31)) ? (&PCICR) : ((uint8_t *)0) )
#define digitalPinToPCICRbit(p) ( (((p) >= 24) && ((p) <= 31)) ? 0 : \
( (((p) >= 0) && ((p) <= 7)) ? 1 : \
( (((p) >= 16) && ((p) <= 23)) ? 2 : \
( (((p) >= 8) && ((p) <= 15)) ? 3 : \
0 ) ) ) )
#define digitalPinToPCMSK(p) ( (((p) >= 24) && ((p) <= 31)) ? (&PCMSK0) : \
( (((p) >= 0) && ((p) <= 7)) ? (&PCMSK1) : \
( (((p) >= 16) && ((p) <= 23)) ? (&PCMSK2) : \
( (((p) >= 8) && ((p) <= 15)) ? (&PCMSK3) : \
((uint8_t *)0) ) ) ) )
#define digitalPinToPCMSKbit(p) ( (((p) >= 24) && ((p) <= 31)) ? (31 - (p)) : \
( (((p) >= 0) && ((p) <= 7)) ? (p) : \
( (((p) >= 16) && ((p) <= 23)) ? ((p) - 16) : \
( (((p) >= 8) && ((p) <= 15)) ? ((p) - 8) : \
0 ) ) ) )
#define PA 1
#define PB 2
#define PC 3
#define PD 4
#define PE 5
#define PF 6
#define PG 7
#define PH 8
#define PJ 10
#define PK 11
#define PL 12
#ifdef ARDUINO_MAIN
// these arrays map port names (e.g. port B) to the
// appropriate addresses for various functions (e.g. reading
// and writing)
const uint16_t PROGMEM port_to_mode_PGM[] =
{
NOT_A_PORT,
(uint16_t) &DDRA,
(uint16_t) &DDRB,
(uint16_t) &DDRC,
(uint16_t) &DDRD,
};
const uint16_t PROGMEM port_to_output_PGM[] =
{
NOT_A_PORT,
(uint16_t) &PORTA,
(uint16_t) &PORTB,
(uint16_t) &PORTC,
(uint16_t) &PORTD,
};
const uint16_t PROGMEM port_to_input_PGM[] =
{
NOT_A_PORT,
(uint16_t) &PINA,
(uint16_t) &PINB,
(uint16_t) &PINC,
(uint16_t) &PIND,
};
const uint8_t PROGMEM digital_pin_to_port_PGM[] =
{
PB, /* 0 */
PB,
PB,
PB,
PB,
PB,
PB,
PB,
PD, /* 8 */
PD,
PD,
PD,
PD,
PD,
PD,
PD,
PC, /* 16 */
PC,
PC,
PC,
PC,
PC,
PC,
PC,
PA, /* 24 */
PA,
PA,
PA,
PA,
PA,
PA,
PA /* 31 */
};
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] =
{
_BV(0), /* 0, port B */
_BV(1),
_BV(2),
_BV(3),
_BV(4),
_BV(5),
_BV(6),
_BV(7),
_BV(0), /* 8, port D */
_BV(1),
_BV(2),
_BV(3),
_BV(4),
_BV(5),
_BV(6),
_BV(7),
_BV(0), /* 16, port C */
_BV(1),
_BV(2),
_BV(3),
_BV(4),
_BV(5),
_BV(6),
_BV(7),
_BV(7), /* 24, port A */
_BV(6),
_BV(5),
_BV(4),
_BV(3),
_BV(2),
_BV(1),
_BV(0)
};
const uint8_t PROGMEM digital_pin_to_timer_PGM[] =
{
NOT_ON_TIMER, /* 0 - PB0 */
NOT_ON_TIMER, /* 1 - PB1 */
NOT_ON_TIMER, /* 2 - PB2 */
TIMER0A, /* 3 - PB3 */
TIMER0B, /* 4 - PB4 */
NOT_ON_TIMER, /* 5 - PB5 */
NOT_ON_TIMER, /* 6 - PB6 */
NOT_ON_TIMER, /* 7 - PB7 */
NOT_ON_TIMER, /* 8 - PD0 */
NOT_ON_TIMER, /* 9 - PD1 */
NOT_ON_TIMER, /* 10 - PD2 */
NOT_ON_TIMER, /* 11 - PD3 */
TIMER1B, /* 12 - PD4 */
TIMER1A, /* 13 - PD5 */
TIMER2B, /* 14 - PD6 */
TIMER2A, /* 15 - PD7 */
NOT_ON_TIMER, /* 16 - PC0 */
NOT_ON_TIMER, /* 17 - PC1 */
NOT_ON_TIMER, /* 18 - PC2 */
NOT_ON_TIMER, /* 19 - PC3 */
NOT_ON_TIMER, /* 20 - PC4 */
NOT_ON_TIMER, /* 21 - PC5 */
NOT_ON_TIMER, /* 22 - PC6 */
NOT_ON_TIMER, /* 23 - PC7 */
NOT_ON_TIMER, /* 24 - PA0 */
NOT_ON_TIMER, /* 25 - PA1 */
NOT_ON_TIMER, /* 26 - PA2 */
NOT_ON_TIMER, /* 27 - PA3 */
NOT_ON_TIMER, /* 28 - PA4 */
NOT_ON_TIMER, /* 29 - PA5 */
NOT_ON_TIMER, /* 30 - PA6 */
NOT_ON_TIMER /* 31 - PA7 */
};
#endif
#endif

View File

@@ -0,0 +1,22 @@
# See: http://code.google.com/p/arduino/wiki/Platforms
##############################################################
mega2560.name=RAMBo
mega2560.upload.protocol=wiring
mega2560.upload.maximum_size=258048
mega2560.upload.speed=115200
mega2560.bootloader.low_fuses=0xFF
mega2560.bootloader.high_fuses=0xD8
mega2560.bootloader.extended_fuses=0xFD
mega2560.bootloader.path=stk500v2
mega2560.bootloader.file=stk500boot_v2_mega2560.hex
mega2560.bootloader.unlock_bits=0x3F
mega2560.bootloader.lock_bits=0x0F
mega2560.build.mcu=atmega2560
mega2560.build.f_cpu=16000000L
mega2560.build.core=arduino
mega2560.build.variant=standard

View File

@@ -0,0 +1,215 @@
#ifndef Arduino_h
#define Arduino_h
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <avr/pgmspace.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "binary.h"
#ifdef __cplusplus
extern "C"{
#endif
#define HIGH 0x1
#define LOW 0x0
#define INPUT 0x0
#define OUTPUT 0x1
#define INPUT_PULLUP 0x2
#define true 0x1
#define false 0x0
#define PI 3.1415926535897932384626433832795
#define HALF_PI 1.5707963267948966192313216916398
#define TWO_PI 6.283185307179586476925286766559
#define DEG_TO_RAD 0.017453292519943295769236907684886
#define RAD_TO_DEG 57.295779513082320876798154814105
#define SERIAL 0x0
#define DISPLAY 0x1
#define LSBFIRST 0
#define MSBFIRST 1
#define CHANGE 1
#define FALLING 2
#define RISING 3
#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
#define DEFAULT 0
#define EXTERNAL 1
#define INTERNAL 2
#else
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__)
#define INTERNAL1V1 2
#define INTERNAL2V56 3
#else
#define INTERNAL 3
#endif
#define DEFAULT 1
#define EXTERNAL 0
#endif
// undefine stdlib's abs if encountered
#ifdef abs
#undef abs
#endif
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(x) ((x)>0?(x):-(x))
#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
#define radians(deg) ((deg)*DEG_TO_RAD)
#define degrees(rad) ((rad)*RAD_TO_DEG)
#define sq(x) ((x)*(x))
#define interrupts() sei()
#define noInterrupts() cli()
#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L )
#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() )
#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() )
#define lowByte(w) ((uint8_t) ((w) & 0xff))
#define highByte(w) ((uint8_t) ((w) >> 8))
#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
typedef unsigned int word;
#define bit(b) (1UL << (b))
typedef uint8_t boolean;
typedef uint8_t byte;
void init(void);
void pinMode(uint8_t, uint8_t);
void digitalWrite(uint8_t, uint8_t);
int digitalRead(uint8_t);
int analogRead(uint8_t);
void analogReference(uint8_t mode);
void analogWrite(uint8_t, int);
unsigned long millis(void);
unsigned long micros(void);
void delay(unsigned long);
void delayMicroseconds(unsigned int us);
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val);
uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder);
void attachInterrupt(uint8_t, void (*)(void), int mode);
void detachInterrupt(uint8_t);
void setup(void);
void loop(void);
// Get the bit location within the hardware port of the given virtual pin.
// This comes from the pins_*.c file for the active board configuration.
#define analogInPinToBit(P) (P)
// On the ATmega1280, the addresses of some of the port registers are
// greater than 255, so we can't store them in uint8_t's.
extern const uint16_t PROGMEM port_to_mode_PGM[];
extern const uint16_t PROGMEM port_to_input_PGM[];
extern const uint16_t PROGMEM port_to_output_PGM[];
extern const uint8_t PROGMEM digital_pin_to_port_PGM[];
// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[];
extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[];
extern const uint8_t PROGMEM digital_pin_to_timer_PGM[];
// Get the bit location within the hardware port of the given virtual pin.
// This comes from the pins_*.c file for the active board configuration.
//
// These perform slightly better as macros compared to inline functions
//
#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) )
#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) )
#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) )
#define analogInPinToBit(P) (P)
#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) )
#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) )
#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) )
#define NOT_A_PIN 0
#define NOT_A_PORT 0
#ifdef ARDUINO_MAIN
#define PA 1
#define PB 2
#define PC 3
#define PD 4
#define PE 5
#define PF 6
#define PG 7
#define PH 8
#define PJ 10
#define PK 11
#define PL 12
#endif
#define NOT_ON_TIMER 0
#define TIMER0A 1
#define TIMER0B 2
#define TIMER1A 3
#define TIMER1B 4
#define TIMER2 5
#define TIMER2A 6
#define TIMER2B 7
#define TIMER3A 8
#define TIMER3B 9
#define TIMER3C 10
#define TIMER4A 11
#define TIMER4B 12
#define TIMER4C 13
#define TIMER4D 14
#define TIMER5A 15
#define TIMER5B 16
#define TIMER5C 17
#ifdef __cplusplus
} // extern "C"
#endif
#ifdef __cplusplus
#include "WCharacter.h"
#include "WString.h"
#include "HardwareSerial.h"
uint16_t makeWord(uint16_t w);
uint16_t makeWord(byte h, byte l);
#define word(...) makeWord(__VA_ARGS__)
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L);
void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0);
void noTone(uint8_t _pin);
// WMath prototypes
long random(long);
long random(long, long);
void randomSeed(unsigned int);
long map(long, long, long, long, long);
#endif
#include "pins_arduino.h"
#endif

View File

@@ -0,0 +1,239 @@
/* Copyright (c) 2011, Peter Barrett
**
** Permission to use, copy, modify, and/or distribute this software for
** any purpose with or without fee is hereby granted, provided that the
** above copyright notice and this permission notice appear in all copies.
**
** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
** SOFTWARE.
*/
#include "Platform.h"
#include "USBAPI.h"
#include <avr/wdt.h>
#if defined(USBCON)
#ifdef CDC_ENABLED
#if (RAMEND < 1000)
#define SERIAL_BUFFER_SIZE 16
#else
#define SERIAL_BUFFER_SIZE 64
#endif
struct ring_buffer
{
unsigned char buffer[SERIAL_BUFFER_SIZE];
volatile int head;
volatile int tail;
};
ring_buffer cdc_rx_buffer = { { 0 }, 0, 0};
typedef struct
{
u32 dwDTERate;
u8 bCharFormat;
u8 bParityType;
u8 bDataBits;
u8 lineState;
} LineInfo;
static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 };
#define WEAK __attribute__ ((weak))
extern const CDCDescriptor _cdcInterface PROGMEM;
const CDCDescriptor _cdcInterface =
{
D_IAD(0,2,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,1),
// CDC communication interface
D_INTERFACE(CDC_ACM_INTERFACE,1,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,0),
D_CDCCS(CDC_HEADER,0x10,0x01), // Header (1.10 bcd)
D_CDCCS(CDC_CALL_MANAGEMENT,1,1), // Device handles call management (not)
D_CDCCS4(CDC_ABSTRACT_CONTROL_MANAGEMENT,6), // SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported
D_CDCCS(CDC_UNION,CDC_ACM_INTERFACE,CDC_DATA_INTERFACE), // Communication interface is master, data interface is slave 0
D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_ACM),USB_ENDPOINT_TYPE_INTERRUPT,0x10,0x40),
// CDC data interface
D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0),
D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,0x40,0),
D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,0x40,0)
};
int WEAK CDC_GetInterface(u8* interfaceNum)
{
interfaceNum[0] += 2; // uses 2
return USB_SendControl(TRANSFER_PGM,&_cdcInterface,sizeof(_cdcInterface));
}
bool WEAK CDC_Setup(Setup& setup)
{
u8 r = setup.bRequest;
u8 requestType = setup.bmRequestType;
if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType)
{
if (CDC_GET_LINE_CODING == r)
{
USB_SendControl(0,(void*)&_usbLineInfo,7);
return true;
}
}
if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType)
{
if (CDC_SET_LINE_CODING == r)
{
USB_RecvControl((void*)&_usbLineInfo,7);
return true;
}
if (CDC_SET_CONTROL_LINE_STATE == r)
{
_usbLineInfo.lineState = setup.wValueL;
// auto-reset into the bootloader is triggered when the port, already
// open at 1200 bps, is closed. this is the signal to start the watchdog
// with a relatively long period so it can finish housekeeping tasks
// like servicing endpoints before the sketch ends
if (1200 == _usbLineInfo.dwDTERate) {
// We check DTR state to determine if host port is open (bit 0 of lineState).
if ((_usbLineInfo.lineState & 0x01) == 0) {
*(uint16_t *)0x0800 = 0x7777;
wdt_enable(WDTO_120MS);
} else {
// Most OSs do some intermediate steps when configuring ports and DTR can
// twiggle more than once before stabilizing.
// To avoid spurious resets we set the watchdog to 250ms and eventually
// cancel if DTR goes back high.
wdt_disable();
wdt_reset();
*(uint16_t *)0x0800 = 0x0;
}
}
return true;
}
}
return false;
}
int _serialPeek = -1;
void Serial_::begin(uint16_t baud_count)
{
}
void Serial_::end(void)
{
}
void Serial_::accept(void)
{
ring_buffer *buffer = &cdc_rx_buffer;
int i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE;
// if we should be storing the received character into the location
// just before the tail (meaning that the head would advance to the
// current location of the tail), we're about to overflow the buffer
// and so we don't write the character or advance the head.
// while we have room to store a byte
while (i != buffer->tail) {
int c = USB_Recv(CDC_RX);
if (c == -1)
break; // no more data
buffer->buffer[buffer->head] = c;
buffer->head = i;
i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE;
}
}
int Serial_::available(void)
{
ring_buffer *buffer = &cdc_rx_buffer;
return (unsigned int)(SERIAL_BUFFER_SIZE + buffer->head - buffer->tail) % SERIAL_BUFFER_SIZE;
}
int Serial_::peek(void)
{
ring_buffer *buffer = &cdc_rx_buffer;
if (buffer->head == buffer->tail) {
return -1;
} else {
return buffer->buffer[buffer->tail];
}
}
int Serial_::read(void)
{
ring_buffer *buffer = &cdc_rx_buffer;
// if the head isn't ahead of the tail, we don't have any characters
if (buffer->head == buffer->tail) {
return -1;
} else {
unsigned char c = buffer->buffer[buffer->tail];
buffer->tail = (unsigned int)(buffer->tail + 1) % SERIAL_BUFFER_SIZE;
return c;
}
}
void Serial_::flush(void)
{
USB_Flush(CDC_TX);
}
size_t Serial_::write(uint8_t c)
{
/* only try to send bytes if the high-level CDC connection itself
is open (not just the pipe) - the OS should set lineState when the port
is opened and clear lineState when the port is closed.
bytes sent before the user opens the connection or after
the connection is closed are lost - just like with a UART. */
// TODO - ZE - check behavior on different OSes and test what happens if an
// open connection isn't broken cleanly (cable is yanked out, host dies
// or locks up, or host virtual serial port hangs)
if (_usbLineInfo.lineState > 0) {
int r = USB_Send(CDC_TX,&c,1);
if (r > 0) {
return r;
} else {
setWriteError();
return 0;
}
}
setWriteError();
return 0;
}
// This operator is a convenient way for a sketch to check whether the
// port has actually been configured and opened by the host (as opposed
// to just being connected to the host). It can be used, for example, in
// setup() before printing to ensure that an application on the host is
// actually ready to receive and display the data.
// We add a short delay before returning to fix a bug observed by Federico
// where the port is configured (lineState != 0) but not quite opened.
Serial_::operator bool() {
bool result = false;
if (_usbLineInfo.lineState > 0)
result = true;
delay(10);
return result;
}
Serial_ Serial;
#endif
#endif /* if defined(USBCON) */

View File

@@ -0,0 +1,26 @@
#ifndef client_h
#define client_h
#include "Print.h"
#include "Stream.h"
#include "IPAddress.h"
class Client : public Stream {
public:
virtual int connect(IPAddress ip, uint16_t port) =0;
virtual int connect(const char *host, uint16_t port) =0;
virtual size_t write(uint8_t) =0;
virtual size_t write(const uint8_t *buf, size_t size) =0;
virtual int available() = 0;
virtual int read() = 0;
virtual int read(uint8_t *buf, size_t size) = 0;
virtual int peek() = 0;
virtual void flush() = 0;
virtual void stop() = 0;
virtual uint8_t connected() = 0;
virtual operator bool() = 0;
protected:
uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); };
};
#endif

View File

@@ -0,0 +1,520 @@
/* Copyright (c) 2011, Peter Barrett
**
** Permission to use, copy, modify, and/or distribute this software for
** any purpose with or without fee is hereby granted, provided that the
** above copyright notice and this permission notice appear in all copies.
**
** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
** SOFTWARE.
*/
#include "Platform.h"
#include "USBAPI.h"
#include "USBDesc.h"
#if defined(USBCON)
#ifdef HID_ENABLED
//#define RAWHID_ENABLED
// Singletons for mouse and keyboard
Mouse_ Mouse;
Keyboard_ Keyboard;
//================================================================================
//================================================================================
// HID report descriptor
#define LSB(_x) ((_x) & 0xFF)
#define MSB(_x) ((_x) >> 8)
#define RAWHID_USAGE_PAGE 0xFFC0
#define RAWHID_USAGE 0x0C00
#define RAWHID_TX_SIZE 64
#define RAWHID_RX_SIZE 64
extern const u8 _hidReportDescriptor[] PROGMEM;
const u8 _hidReportDescriptor[] = {
// Mouse
0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 54
0x09, 0x02, // USAGE (Mouse)
0xa1, 0x01, // COLLECTION (Application)
0x09, 0x01, // USAGE (Pointer)
0xa1, 0x00, // COLLECTION (Physical)
0x85, 0x01, // REPORT_ID (1)
0x05, 0x09, // USAGE_PAGE (Button)
0x19, 0x01, // USAGE_MINIMUM (Button 1)
0x29, 0x03, // USAGE_MAXIMUM (Button 3)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x95, 0x03, // REPORT_COUNT (3)
0x75, 0x01, // REPORT_SIZE (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x05, // REPORT_SIZE (5)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)
0x09, 0x38, // USAGE (Wheel)
0x15, 0x81, // LOGICAL_MINIMUM (-127)
0x25, 0x7f, // LOGICAL_MAXIMUM (127)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x03, // REPORT_COUNT (3)
0x81, 0x06, // INPUT (Data,Var,Rel)
0xc0, // END_COLLECTION
0xc0, // END_COLLECTION
// Keyboard
0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47
0x09, 0x06, // USAGE (Keyboard)
0xa1, 0x01, // COLLECTION (Application)
0x85, 0x02, // REPORT_ID (2)
0x05, 0x07, // USAGE_PAGE (Keyboard)
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x08, // REPORT_COUNT (8)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x08, // REPORT_SIZE (8)
0x81, 0x03, // INPUT (Cnst,Var,Abs)
0x95, 0x06, // REPORT_COUNT (6)
0x75, 0x08, // REPORT_SIZE (8)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x65, // LOGICAL_MAXIMUM (101)
0x05, 0x07, // USAGE_PAGE (Keyboard)
0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))
0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application)
0x81, 0x00, // INPUT (Data,Ary,Abs)
0xc0, // END_COLLECTION
#if RAWHID_ENABLED
// RAW HID
0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30
0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE),
0xA1, 0x01, // Collection 0x01
0x85, 0x03, // REPORT_ID (3)
0x75, 0x08, // report size = 8 bits
0x15, 0x00, // logical minimum = 0
0x26, 0xFF, 0x00, // logical maximum = 255
0x95, 64, // report count TX
0x09, 0x01, // usage
0x81, 0x02, // Input (array)
0x95, 64, // report count RX
0x09, 0x02, // usage
0x91, 0x02, // Output (array)
0xC0 // end collection
#endif
};
extern const HIDDescriptor _hidInterface PROGMEM;
const HIDDescriptor _hidInterface =
{
D_INTERFACE(HID_INTERFACE,1,3,0,0),
D_HIDREPORT(sizeof(_hidReportDescriptor)),
D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,0x40,0x01)
};
//================================================================================
//================================================================================
// Driver
u8 _hid_protocol = 1;
u8 _hid_idle = 1;
#define WEAK __attribute__ ((weak))
int WEAK HID_GetInterface(u8* interfaceNum)
{
interfaceNum[0] += 1; // uses 1
return USB_SendControl(TRANSFER_PGM,&_hidInterface,sizeof(_hidInterface));
}
int WEAK HID_GetDescriptor(int i)
{
return USB_SendControl(TRANSFER_PGM,_hidReportDescriptor,sizeof(_hidReportDescriptor));
}
void WEAK HID_SendReport(u8 id, const void* data, int len)
{
USB_Send(HID_TX, &id, 1);
USB_Send(HID_TX | TRANSFER_RELEASE,data,len);
}
bool WEAK HID_Setup(Setup& setup)
{
u8 r = setup.bRequest;
u8 requestType = setup.bmRequestType;
if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType)
{
if (HID_GET_REPORT == r)
{
//HID_GetReport();
return true;
}
if (HID_GET_PROTOCOL == r)
{
//Send8(_hid_protocol); // TODO
return true;
}
}
if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType)
{
if (HID_SET_PROTOCOL == r)
{
_hid_protocol = setup.wValueL;
return true;
}
if (HID_SET_IDLE == r)
{
_hid_idle = setup.wValueL;
return true;
}
}
return false;
}
//================================================================================
//================================================================================
// Mouse
Mouse_::Mouse_(void) : _buttons(0)
{
}
void Mouse_::begin(void)
{
}
void Mouse_::end(void)
{
}
void Mouse_::click(uint8_t b)
{
_buttons = b;
move(0,0,0);
_buttons = 0;
move(0,0,0);
}
void Mouse_::move(signed char x, signed char y, signed char wheel)
{
u8 m[4];
m[0] = _buttons;
m[1] = x;
m[2] = y;
m[3] = wheel;
HID_SendReport(1,m,4);
}
void Mouse_::buttons(uint8_t b)
{
if (b != _buttons)
{
_buttons = b;
move(0,0,0);
}
}
void Mouse_::press(uint8_t b)
{
buttons(_buttons | b);
}
void Mouse_::release(uint8_t b)
{
buttons(_buttons & ~b);
}
bool Mouse_::isPressed(uint8_t b)
{
if ((b & _buttons) > 0)
return true;
return false;
}
//================================================================================
//================================================================================
// Keyboard
Keyboard_::Keyboard_(void)
{
}
void Keyboard_::begin(void)
{
}
void Keyboard_::end(void)
{
}
void Keyboard_::sendReport(KeyReport* keys)
{
HID_SendReport(2,keys,sizeof(KeyReport));
}
extern
const uint8_t _asciimap[128] PROGMEM;
#define SHIFT 0x80
const uint8_t _asciimap[128] =
{
0x00, // NUL
0x00, // SOH
0x00, // STX
0x00, // ETX
0x00, // EOT
0x00, // ENQ
0x00, // ACK
0x00, // BEL
0x2a, // BS Backspace
0x2b, // TAB Tab
0x28, // LF Enter
0x00, // VT
0x00, // FF
0x00, // CR
0x00, // SO
0x00, // SI
0x00, // DEL
0x00, // DC1
0x00, // DC2
0x00, // DC3
0x00, // DC4
0x00, // NAK
0x00, // SYN
0x00, // ETB
0x00, // CAN
0x00, // EM
0x00, // SUB
0x00, // ESC
0x00, // FS
0x00, // GS
0x00, // RS
0x00, // US
0x2c, // ' '
0x1e|SHIFT, // !
0x34|SHIFT, // "
0x20|SHIFT, // #
0x21|SHIFT, // $
0x22|SHIFT, // %
0x24|SHIFT, // &
0x34, // '
0x26|SHIFT, // (
0x27|SHIFT, // )
0x25|SHIFT, // *
0x2e|SHIFT, // +
0x36, // ,
0x2d, // -
0x37, // .
0x38, // /
0x27, // 0
0x1e, // 1
0x1f, // 2
0x20, // 3
0x21, // 4
0x22, // 5
0x23, // 6
0x24, // 7
0x25, // 8
0x26, // 9
0x33|SHIFT, // :
0x33, // ;
0x36|SHIFT, // <
0x2e, // =
0x37|SHIFT, // >
0x38|SHIFT, // ?
0x1f|SHIFT, // @
0x04|SHIFT, // A
0x05|SHIFT, // B
0x06|SHIFT, // C
0x07|SHIFT, // D
0x08|SHIFT, // E
0x09|SHIFT, // F
0x0a|SHIFT, // G
0x0b|SHIFT, // H
0x0c|SHIFT, // I
0x0d|SHIFT, // J
0x0e|SHIFT, // K
0x0f|SHIFT, // L
0x10|SHIFT, // M
0x11|SHIFT, // N
0x12|SHIFT, // O
0x13|SHIFT, // P
0x14|SHIFT, // Q
0x15|SHIFT, // R
0x16|SHIFT, // S
0x17|SHIFT, // T
0x18|SHIFT, // U
0x19|SHIFT, // V
0x1a|SHIFT, // W
0x1b|SHIFT, // X
0x1c|SHIFT, // Y
0x1d|SHIFT, // Z
0x2f, // [
0x31, // bslash
0x30, // ]
0x23|SHIFT, // ^
0x2d|SHIFT, // _
0x35, // `
0x04, // a
0x05, // b
0x06, // c
0x07, // d
0x08, // e
0x09, // f
0x0a, // g
0x0b, // h
0x0c, // i
0x0d, // j
0x0e, // k
0x0f, // l
0x10, // m
0x11, // n
0x12, // o
0x13, // p
0x14, // q
0x15, // r
0x16, // s
0x17, // t
0x18, // u
0x19, // v
0x1a, // w
0x1b, // x
0x1c, // y
0x1d, // z
0x2f|SHIFT, //
0x31|SHIFT, // |
0x30|SHIFT, // }
0x35|SHIFT, // ~
0 // DEL
};
uint8_t USBPutChar(uint8_t c);
// press() adds the specified key (printing, non-printing, or modifier)
// to the persistent key report and sends the report. Because of the way
// USB HID works, the host acts like the key remains pressed until we
// call release(), releaseAll(), or otherwise clear the report and resend.
size_t Keyboard_::press(uint8_t k)
{
uint8_t i;
if (k >= 136) { // it's a non-printing key (not a modifier)
k = k - 136;
} else if (k >= 128) { // it's a modifier key
_keyReport.modifiers |= (1<<(k-128));
k = 0;
} else { // it's a printing key
k = pgm_read_byte(_asciimap + k);
if (!k) {
setWriteError();
return 0;
}
if (k & 0x80) { // it's a capital letter or other character reached with shift
_keyReport.modifiers |= 0x02; // the left shift modifier
k &= 0x7F;
}
}
// Add k to the key report only if it's not already present
// and if there is an empty slot.
if (_keyReport.keys[0] != k && _keyReport.keys[1] != k &&
_keyReport.keys[2] != k && _keyReport.keys[3] != k &&
_keyReport.keys[4] != k && _keyReport.keys[5] != k) {
for (i=0; i<6; i++) {
if (_keyReport.keys[i] == 0x00) {
_keyReport.keys[i] = k;
break;
}
}
if (i == 6) {
setWriteError();
return 0;
}
}
sendReport(&_keyReport);
return 1;
}
// release() takes the specified key out of the persistent key report and
// sends the report. This tells the OS the key is no longer pressed and that
// it shouldn't be repeated any more.
size_t Keyboard_::release(uint8_t k)
{
uint8_t i;
if (k >= 136) { // it's a non-printing key (not a modifier)
k = k - 136;
} else if (k >= 128) { // it's a modifier key
_keyReport.modifiers &= ~(1<<(k-128));
k = 0;
} else { // it's a printing key
k = pgm_read_byte(_asciimap + k);
if (!k) {
return 0;
}
if (k & 0x80) { // it's a capital letter or other character reached with shift
_keyReport.modifiers &= ~(0x02); // the left shift modifier
k &= 0x7F;
}
}
// Test the key report to see if k is present. Clear it if it exists.
// Check all positions in case the key is present more than once (which it shouldn't be)
for (i=0; i<6; i++) {
if (0 != k && _keyReport.keys[i] == k) {
_keyReport.keys[i] = 0x00;
}
}
sendReport(&_keyReport);
return 1;
}
void Keyboard_::releaseAll(void)
{
_keyReport.keys[0] = 0;
_keyReport.keys[1] = 0;
_keyReport.keys[2] = 0;
_keyReport.keys[3] = 0;
_keyReport.keys[4] = 0;
_keyReport.keys[5] = 0;
_keyReport.modifiers = 0;
sendReport(&_keyReport);
}
size_t Keyboard_::write(uint8_t c)
{
uint8_t p = press(c); // Keydown
uint8_t r = release(c); // Keyup
return (p); // just return the result of press() since release() almost always returns 1
}
#endif
#endif /* if defined(USBCON) */

View File

@@ -0,0 +1,519 @@
/*
HardwareSerial.cpp - Hardware serial library for Wiring
Copyright (c) 2006 Nicholas Zambetti. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Modified 23 November 2006 by David A. Mellis
Modified 28 September 2010 by Mark Sproul
Modified 14 August 2012 by Alarus
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include "Arduino.h"
#include "wiring_private.h"
// 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)
#include "HardwareSerial.h"
/*
* on ATmega8, the uart and its bits are not numbered, so there is no "TXC0"
* definition.
*/
#if !defined(TXC0)
#if defined(TXC)
#define TXC0 TXC
#elif defined(TXC1)
// Some devices have uart1 but no uart0
#define TXC0 TXC1
#else
#error TXC0 not definable in HardwareSerial.h
#endif
#endif
// Define constants and variables for buffering incoming serial data. We're
// using a ring buffer (I think), in which head is the index of the location
// to which to write the next incoming character and tail is the index of the
// location from which to read.
#if (RAMEND < 1000)
#define SERIAL_BUFFER_SIZE 16
#else
#define SERIAL_BUFFER_SIZE 64
#endif
struct ring_buffer
{
unsigned char buffer[SERIAL_BUFFER_SIZE];
volatile unsigned int head;
volatile unsigned int tail;
};
#if defined(USBCON)
ring_buffer rx_buffer = { { 0 }, 0, 0};
ring_buffer tx_buffer = { { 0 }, 0, 0};
#endif
#if defined(UBRRH) || defined(UBRR0H)
ring_buffer rx_buffer = { { 0 }, 0, 0 };
ring_buffer tx_buffer = { { 0 }, 0, 0 };
#endif
#if defined(UBRR1H)
ring_buffer rx_buffer1 = { { 0 }, 0, 0 };
ring_buffer tx_buffer1 = { { 0 }, 0, 0 };
#endif
#if defined(UBRR2H)
ring_buffer rx_buffer2 = { { 0 }, 0, 0 };
ring_buffer tx_buffer2 = { { 0 }, 0, 0 };
#endif
#if defined(UBRR3H)
ring_buffer rx_buffer3 = { { 0 }, 0, 0 };
ring_buffer tx_buffer3 = { { 0 }, 0, 0 };
#endif
inline void store_char(unsigned char c, ring_buffer *buffer)
{
int i = (unsigned int)(buffer->head + 1) % SERIAL_BUFFER_SIZE;
// if we should be storing the received character into the location
// just before the tail (meaning that the head would advance to the
// current location of the tail), we're about to overflow the buffer
// and so we don't write the character or advance the head.
if (i != buffer->tail) {
buffer->buffer[buffer->head] = c;
buffer->head = i;
}
}
#if !defined(USART0_RX_vect) && defined(USART1_RX_vect)
// do nothing - on the 32u4 the first USART is USART1
#else
#if !defined(USART_RX_vect) && !defined(SIG_USART0_RECV) && \
!defined(SIG_UART0_RECV) && !defined(USART0_RX_vect) && \
!defined(SIG_UART_RECV)
#error "Don't know what the Data Received vector is called for the first UART"
#else
void serialEvent() __attribute__((weak));
void serialEvent() {}
#define serialEvent_implemented
#if defined(USART_RX_vect)
SIGNAL(USART_RX_vect)
#elif defined(SIG_USART0_RECV)
SIGNAL(SIG_USART0_RECV)
#elif defined(SIG_UART0_RECV)
SIGNAL(SIG_UART0_RECV)
#elif defined(USART0_RX_vect)
SIGNAL(USART0_RX_vect)
#elif defined(SIG_UART_RECV)
SIGNAL(SIG_UART_RECV)
#endif
{
#if defined(UDR0)
if (bit_is_clear(UCSR0A, UPE0)) {
unsigned char c = UDR0;
store_char(c, &rx_buffer);
} else {
unsigned char c = UDR0;
};
#elif defined(UDR)
if (bit_is_clear(UCSRA, PE)) {
unsigned char c = UDR;
store_char(c, &rx_buffer);
} else {
unsigned char c = UDR;
};
#else
#error UDR not defined
#endif
}
#endif
#endif
#if defined(USART1_RX_vect)
void serialEvent1() __attribute__((weak));
void serialEvent1() {}
#define serialEvent1_implemented
SIGNAL(USART1_RX_vect)
{
if (bit_is_clear(UCSR1A, UPE1)) {
unsigned char c = UDR1;
store_char(c, &rx_buffer1);
} else {
unsigned char c = UDR1;
};
}
#elif defined(SIG_USART1_RECV)
#error SIG_USART1_RECV
#endif
#if defined(USART2_RX_vect) && defined(UDR2)
void serialEvent2() __attribute__((weak));
void serialEvent2() {}
#define serialEvent2_implemented
SIGNAL(USART2_RX_vect)
{
if (bit_is_clear(UCSR2A, UPE2)) {
unsigned char c = UDR2;
store_char(c, &rx_buffer2);
} else {
unsigned char c = UDR2;
};
}
#elif defined(SIG_USART2_RECV)
#error SIG_USART2_RECV
#endif
#if defined(USART3_RX_vect) && defined(UDR3)
void serialEvent3() __attribute__((weak));
void serialEvent3() {}
#define serialEvent3_implemented
SIGNAL(USART3_RX_vect)
{
if (bit_is_clear(UCSR3A, UPE3)) {
unsigned char c = UDR3;
store_char(c, &rx_buffer3);
} else {
unsigned char c = UDR3;
};
}
#elif defined(SIG_USART3_RECV)
#error SIG_USART3_RECV
#endif
void serialEventRun(void)
{
#ifdef serialEvent_implemented
if (Serial.available()) serialEvent();
#endif
#ifdef serialEvent1_implemented
if (Serial1.available()) serialEvent1();
#endif
#ifdef serialEvent2_implemented
if (Serial2.available()) serialEvent2();
#endif
#ifdef serialEvent3_implemented
if (Serial3.available()) serialEvent3();
#endif
}
#if !defined(USART0_UDRE_vect) && defined(USART1_UDRE_vect)
// do nothing - on the 32u4 the first USART is USART1
#else
#if !defined(UART0_UDRE_vect) && !defined(UART_UDRE_vect) && !defined(USART0_UDRE_vect) && !defined(USART_UDRE_vect)
#error "Don't know what the Data Register Empty vector is called for the first UART"
#else
#if defined(UART0_UDRE_vect)
ISR(UART0_UDRE_vect)
#elif defined(UART_UDRE_vect)
ISR(UART_UDRE_vect)
#elif defined(USART0_UDRE_vect)
ISR(USART0_UDRE_vect)
#elif defined(USART_UDRE_vect)
ISR(USART_UDRE_vect)
#endif
{
if (tx_buffer.head == tx_buffer.tail) {
// Buffer empty, so disable interrupts
#if defined(UCSR0B)
cbi(UCSR0B, UDRIE0);
#else
cbi(UCSRB, UDRIE);
#endif
}
else {
// There is more data in the output buffer. Send the next byte
unsigned char c = tx_buffer.buffer[tx_buffer.tail];
tx_buffer.tail = (tx_buffer.tail + 1) % SERIAL_BUFFER_SIZE;
#if defined(UDR0)
UDR0 = c;
#elif defined(UDR)
UDR = c;
#else
#error UDR not defined
#endif
}
}
#endif
#endif
#ifdef USART1_UDRE_vect
ISR(USART1_UDRE_vect)
{
if (tx_buffer1.head == tx_buffer1.tail) {
// Buffer empty, so disable interrupts
cbi(UCSR1B, UDRIE1);
}
else {
// There is more data in the output buffer. Send the next byte
unsigned char c = tx_buffer1.buffer[tx_buffer1.tail];
tx_buffer1.tail = (tx_buffer1.tail + 1) % SERIAL_BUFFER_SIZE;
UDR1 = c;
}
}
#endif
#ifdef USART2_UDRE_vect
ISR(USART2_UDRE_vect)
{
if (tx_buffer2.head == tx_buffer2.tail) {
// Buffer empty, so disable interrupts
cbi(UCSR2B, UDRIE2);
}
else {
// There is more data in the output buffer. Send the next byte
unsigned char c = tx_buffer2.buffer[tx_buffer2.tail];
tx_buffer2.tail = (tx_buffer2.tail + 1) % SERIAL_BUFFER_SIZE;
UDR2 = c;
}
}
#endif
#ifdef USART3_UDRE_vect
ISR(USART3_UDRE_vect)
{
if (tx_buffer3.head == tx_buffer3.tail) {
// Buffer empty, so disable interrupts
cbi(UCSR3B, UDRIE3);
}
else {
// There is more data in the output buffer. Send the next byte
unsigned char c = tx_buffer3.buffer[tx_buffer3.tail];
tx_buffer3.tail = (tx_buffer3.tail + 1) % SERIAL_BUFFER_SIZE;
UDR3 = c;
}
}
#endif
// Constructors ////////////////////////////////////////////////////////////////
HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer,
volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
volatile uint8_t *ucsrc, volatile uint8_t *udr,
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x)
{
_rx_buffer = rx_buffer;
_tx_buffer = tx_buffer;
_ubrrh = ubrrh;
_ubrrl = ubrrl;
_ucsra = ucsra;
_ucsrb = ucsrb;
_ucsrc = ucsrc;
_udr = udr;
_rxen = rxen;
_txen = txen;
_rxcie = rxcie;
_udrie = udrie;
_u2x = u2x;
}
// Public Methods //////////////////////////////////////////////////////////////
void HardwareSerial::begin(unsigned long baud)
{
uint16_t baud_setting;
bool use_u2x = true;
#if F_CPU == 16000000UL
// hardcoded exception for compatibility with the bootloader shipped
// with the Duemilanove and previous boards and the firmware on the 8U2
// on the Uno and Mega 2560.
if (baud == 57600) {
use_u2x = false;
}
#endif
try_again:
if (use_u2x) {
*_ucsra = 1 << _u2x;
baud_setting = (F_CPU / 4 / baud - 1) / 2;
} else {
*_ucsra = 0;
baud_setting = (F_CPU / 8 / baud - 1) / 2;
}
if ((baud_setting > 4095) && use_u2x)
{
use_u2x = false;
goto try_again;
}
// assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register)
*_ubrrh = baud_setting >> 8;
*_ubrrl = baud_setting;
transmitting = false;
sbi(*_ucsrb, _rxen);
sbi(*_ucsrb, _txen);
sbi(*_ucsrb, _rxcie);
cbi(*_ucsrb, _udrie);
}
void HardwareSerial::begin(unsigned long baud, byte config)
{
uint16_t baud_setting;
uint8_t current_config;
bool use_u2x = true;
#if F_CPU == 16000000UL
// hardcoded exception for compatibility with the bootloader shipped
// with the Duemilanove and previous boards and the firmware on the 8U2
// on the Uno and Mega 2560.
if (baud == 57600) {
use_u2x = false;
}
#endif
try_again:
if (use_u2x) {
*_ucsra = 1 << _u2x;
baud_setting = (F_CPU / 4 / baud - 1) / 2;
} else {
*_ucsra = 0;
baud_setting = (F_CPU / 8 / baud - 1) / 2;
}
if ((baud_setting > 4095) && use_u2x)
{
use_u2x = false;
goto try_again;
}
// assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register)
*_ubrrh = baud_setting >> 8;
*_ubrrl = baud_setting;
//set the data bits, parity, and stop bits
#if defined(__AVR_ATmega8__)
config |= 0x80; // select UCSRC register (shared with UBRRH)
#endif
*_ucsrc = config;
sbi(*_ucsrb, _rxen);
sbi(*_ucsrb, _txen);
sbi(*_ucsrb, _rxcie);
cbi(*_ucsrb, _udrie);
}
void HardwareSerial::end()
{
// wait for transmission of outgoing data
while (_tx_buffer->head != _tx_buffer->tail)
;
cbi(*_ucsrb, _rxen);
cbi(*_ucsrb, _txen);
cbi(*_ucsrb, _rxcie);
cbi(*_ucsrb, _udrie);
// clear any received data
_rx_buffer->head = _rx_buffer->tail;
}
int HardwareSerial::available(void)
{
return (unsigned int)(SERIAL_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % SERIAL_BUFFER_SIZE;
}
int HardwareSerial::peek(void)
{
if (_rx_buffer->head == _rx_buffer->tail) {
return -1;
} else {
return _rx_buffer->buffer[_rx_buffer->tail];
}
}
int HardwareSerial::read(void)
{
// if the head isn't ahead of the tail, we don't have any characters
if (_rx_buffer->head == _rx_buffer->tail) {
return -1;
} else {
unsigned char c = _rx_buffer->buffer[_rx_buffer->tail];
_rx_buffer->tail = (unsigned int)(_rx_buffer->tail + 1) % SERIAL_BUFFER_SIZE;
return c;
}
}
void HardwareSerial::flush()
{
// UDR is kept full while the buffer is not empty, so TXC triggers when EMPTY && SENT
while (transmitting && ! (*_ucsra & _BV(TXC0)));
transmitting = false;
}
size_t HardwareSerial::write(uint8_t c)
{
int i = (_tx_buffer->head + 1) % SERIAL_BUFFER_SIZE;
// If the output buffer is full, there's nothing for it other than to
// wait for the interrupt handler to empty it a bit
// ???: return 0 here instead?
while (i == _tx_buffer->tail)
;
_tx_buffer->buffer[_tx_buffer->head] = c;
_tx_buffer->head = i;
sbi(*_ucsrb, _udrie);
// clear the TXC bit -- "can be cleared by writing a one to its bit location"
transmitting = true;
sbi(*_ucsra, TXC0);
return 1;
}
HardwareSerial::operator bool() {
return true;
}
// Preinstantiate Objects //////////////////////////////////////////////////////
#if defined(UBRRH) && defined(UBRRL)
HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UCSRC, &UDR, RXEN, TXEN, RXCIE, UDRIE, U2X);
#elif defined(UBRR0H) && defined(UBRR0L)
HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UCSR0C, &UDR0, RXEN0, TXEN0, RXCIE0, UDRIE0, U2X0);
#elif defined(USBCON)
// do nothing - Serial object and buffers are initialized in CDC code
#else
#error no serial port defined (port 0)
#endif
#if defined(UBRR1H)
HardwareSerial Serial1(&rx_buffer1, &tx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UCSR1C, &UDR1, RXEN1, TXEN1, RXCIE1, UDRIE1, U2X1);
#endif
#if defined(UBRR2H)
HardwareSerial Serial2(&rx_buffer2, &tx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UCSR2C, &UDR2, RXEN2, TXEN2, RXCIE2, UDRIE2, U2X2);
#endif
#if defined(UBRR3H)
HardwareSerial Serial3(&rx_buffer3, &tx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3);
#endif
#endif // whole file

View File

@@ -0,0 +1,115 @@
/*
HardwareSerial.h - Hardware serial library for Wiring
Copyright (c) 2006 Nicholas Zambetti. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Modified 28 September 2010 by Mark Sproul
Modified 14 August 2012 by Alarus
*/
#ifndef HardwareSerial_h
#define HardwareSerial_h
#include <inttypes.h>
#include "Stream.h"
struct ring_buffer;
class HardwareSerial : public Stream
{
private:
ring_buffer *_rx_buffer;
ring_buffer *_tx_buffer;
volatile uint8_t *_ubrrh;
volatile uint8_t *_ubrrl;
volatile uint8_t *_ucsra;
volatile uint8_t *_ucsrb;
volatile uint8_t *_ucsrc;
volatile uint8_t *_udr;
uint8_t _rxen;
uint8_t _txen;
uint8_t _rxcie;
uint8_t _udrie;
uint8_t _u2x;
bool transmitting;
public:
HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer,
volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
volatile uint8_t *ucsrc, volatile uint8_t *udr,
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x);
void begin(unsigned long);
void begin(unsigned long, uint8_t);
void end();
virtual int available(void);
virtual int peek(void);
virtual int read(void);
virtual void flush(void);
virtual size_t write(uint8_t);
inline size_t write(unsigned long n) { return write((uint8_t)n); }
inline size_t write(long n) { return write((uint8_t)n); }
inline size_t write(unsigned int n) { return write((uint8_t)n); }
inline size_t write(int n) { return write((uint8_t)n); }
using Print::write; // pull in write(str) and write(buf, size) from Print
operator bool();
};
// Define config for Serial.begin(baud, config);
#define SERIAL_5N1 0x00
#define SERIAL_6N1 0x02
#define SERIAL_7N1 0x04
#define SERIAL_8N1 0x06
#define SERIAL_5N2 0x08
#define SERIAL_6N2 0x0A
#define SERIAL_7N2 0x0C
#define SERIAL_8N2 0x0E
#define SERIAL_5E1 0x20
#define SERIAL_6E1 0x22
#define SERIAL_7E1 0x24
#define SERIAL_8E1 0x26
#define SERIAL_5E2 0x28
#define SERIAL_6E2 0x2A
#define SERIAL_7E2 0x2C
#define SERIAL_8E2 0x2E
#define SERIAL_5O1 0x30
#define SERIAL_6O1 0x32
#define SERIAL_7O1 0x34
#define SERIAL_8O1 0x36
#define SERIAL_5O2 0x38
#define SERIAL_6O2 0x3A
#define SERIAL_7O2 0x3C
#define SERIAL_8O2 0x3E
#if defined(UBRRH) || defined(UBRR0H)
extern HardwareSerial Serial;
#elif defined(USBCON)
#include "USBAPI.h"
// extern HardwareSerial Serial_;
#endif
#if defined(UBRR1H)
extern HardwareSerial Serial1;
#endif
#if defined(UBRR2H)
extern HardwareSerial Serial2;
#endif
#if defined(UBRR3H)
extern HardwareSerial Serial3;
#endif
extern void serialEventRun(void) __attribute__((weak));
#endif

View File

@@ -0,0 +1,56 @@
#include <Arduino.h>
#include <IPAddress.h>
IPAddress::IPAddress()
{
memset(_address, 0, sizeof(_address));
}
IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet)
{
_address[0] = first_octet;
_address[1] = second_octet;
_address[2] = third_octet;
_address[3] = fourth_octet;
}
IPAddress::IPAddress(uint32_t address)
{
memcpy(_address, &address, sizeof(_address));
}
IPAddress::IPAddress(const uint8_t *address)
{
memcpy(_address, address, sizeof(_address));
}
IPAddress& IPAddress::operator=(const uint8_t *address)
{
memcpy(_address, address, sizeof(_address));
return *this;
}
IPAddress& IPAddress::operator=(uint32_t address)
{
memcpy(_address, (const uint8_t *)&address, sizeof(_address));
return *this;
}
bool IPAddress::operator==(const uint8_t* addr)
{
return memcmp(addr, _address, sizeof(_address)) == 0;
}
size_t IPAddress::printTo(Print& p) const
{
size_t n = 0;
for (int i =0; i < 3; i++)
{
n += p.print(_address[i], DEC);
n += p.print('.');
}
n += p.print(_address[3], DEC);
return n;
}

View File

@@ -0,0 +1,76 @@
/*
*
* MIT License:
* Copyright (c) 2011 Adrian McEwen
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* adrianm@mcqn.com 1/1/2011
*/
#ifndef IPAddress_h
#define IPAddress_h
#include <Printable.h>
// A class to make it easier to handle and pass around IP addresses
class IPAddress : public Printable {
private:
uint8_t _address[4]; // IPv4 address
// Access the raw byte array containing the address. Because this returns a pointer
// to the internal structure rather than a copy of the address this function should only
// be used when you know that the usage of the returned uint8_t* will be transient and not
// stored.
uint8_t* raw_address() { return _address; };
public:
// Constructors
IPAddress();
IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet);
IPAddress(uint32_t address);
IPAddress(const uint8_t *address);
// Overloaded cast operator to allow IPAddress objects to be used where a pointer
// to a four-byte uint8_t array is expected
operator uint32_t() { return *((uint32_t*)_address); };
bool operator==(const IPAddress& addr) { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); };
bool operator==(const uint8_t* addr);
// Overloaded index operator to allow getting and setting individual octets of the address
uint8_t operator[](int index) const { return _address[index]; };
uint8_t& operator[](int index) { return _address[index]; };
// Overloaded copy operators to allow initialisation of IPAddress objects from other types
IPAddress& operator=(const uint8_t *address);
IPAddress& operator=(uint32_t address);
virtual size_t printTo(Print& p) const;
friend class EthernetClass;
friend class UDP;
friend class Client;
friend class Server;
friend class DhcpClass;
friend class DNSClient;
};
const IPAddress INADDR_NONE(0,0,0,0);
#endif

View File

@@ -0,0 +1,23 @@
#ifndef __PLATFORM_H__
#define __PLATFORM_H__
#include <inttypes.h>
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#include <avr/interrupt.h>
#include <util/delay.h>
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned long u32;
#include "Arduino.h"
#if defined(USBCON)
#include "USBDesc.h"
#include "USBCore.h"
#include "USBAPI.h"
#endif /* if defined(USBCON) */
#endif

View File

@@ -0,0 +1,268 @@
/*
Print.cpp - Base class that provides print() and println()
Copyright (c) 2008 David A. Mellis. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Modified 23 November 2006 by David A. Mellis
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "Arduino.h"
#include "Print.h"
// Public Methods //////////////////////////////////////////////////////////////
/* default implementation: may be overridden */
size_t Print::write(const uint8_t *buffer, size_t size)
{
size_t n = 0;
while (size--) {
n += write(*buffer++);
}
return n;
}
size_t Print::print(const __FlashStringHelper *ifsh)
{
const char PROGMEM *p = (const char PROGMEM *)ifsh;
size_t n = 0;
while (1) {
unsigned char c = pgm_read_byte(p++);
if (c == 0) break;
n += write(c);
}
return n;
}
size_t Print::print(const String &s)
{
size_t n = 0;
for (uint16_t i = 0; i < s.length(); i++) {
n += write(s[i]);
}
return n;
}
size_t Print::print(const char str[])
{
return write(str);
}
size_t Print::print(char c)
{
return write(c);
}
size_t Print::print(unsigned char b, int base)
{
return print((unsigned long) b, base);
}
size_t Print::print(int n, int base)
{
return print((long) n, base);
}
size_t Print::print(unsigned int n, int base)
{
return print((unsigned long) n, base);
}
size_t Print::print(long n, int base)
{
if (base == 0) {
return write(n);
} else if (base == 10) {
if (n < 0) {
int t = print('-');
n = -n;
return printNumber(n, 10) + t;
}
return printNumber(n, 10);
} else {
return printNumber(n, base);
}
}
size_t Print::print(unsigned long n, int base)
{
if (base == 0) return write(n);
else return printNumber(n, base);
}
size_t Print::print(double n, int digits)
{
return printFloat(n, digits);
}
size_t Print::println(const __FlashStringHelper *ifsh)
{
size_t n = print(ifsh);
n += println();
return n;
}
size_t Print::print(const Printable& x)
{
return x.printTo(*this);
}
size_t Print::println(void)
{
size_t n = print('\r');
n += print('\n');
return n;
}
size_t Print::println(const String &s)
{
size_t n = print(s);
n += println();
return n;
}
size_t Print::println(const char c[])
{
size_t n = print(c);
n += println();
return n;
}
size_t Print::println(char c)
{
size_t n = print(c);
n += println();
return n;
}
size_t Print::println(unsigned char b, int base)
{
size_t n = print(b, base);
n += println();
return n;
}
size_t Print::println(int num, int base)
{
size_t n = print(num, base);
n += println();
return n;
}
size_t Print::println(unsigned int num, int base)
{
size_t n = print(num, base);
n += println();
return n;
}
size_t Print::println(long num, int base)
{
size_t n = print(num, base);
n += println();
return n;
}
size_t Print::println(unsigned long num, int base)
{
size_t n = print(num, base);
n += println();
return n;
}
size_t Print::println(double num, int digits)
{
size_t n = print(num, digits);
n += println();
return n;
}
size_t Print::println(const Printable& x)
{
size_t n = print(x);
n += println();
return n;
}
// Private Methods /////////////////////////////////////////////////////////////
size_t Print::printNumber(unsigned long n, uint8_t base) {
char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte.
char *str = &buf[sizeof(buf) - 1];
*str = '\0';
// prevent crash if called with base == 1
if (base < 2) base = 10;
do {
unsigned long m = n;
n /= base;
char c = m - base * n;
*--str = c < 10 ? c + '0' : c + 'A' - 10;
} while(n);
return write(str);
}
size_t Print::printFloat(double number, uint8_t digits)
{
size_t n = 0;
if (isnan(number)) return print("nan");
if (isinf(number)) return print("inf");
if (number > 4294967040.0) return print ("ovf"); // constant determined empirically
if (number <-4294967040.0) return print ("ovf"); // constant determined empirically
// Handle negative numbers
if (number < 0.0)
{
n += print('-');
number = -number;
}
// Round correctly so that print(1.999, 2) prints as "2.00"
double rounding = 0.5;
for (uint8_t i=0; i<digits; ++i)
rounding /= 10.0;
number += rounding;
// Extract the integer part of the number and print it
unsigned long int_part = (unsigned long)number;
double remainder = number - (double)int_part;
n += print(int_part);
// Print the decimal point, but only if there are digits beyond
if (digits > 0) {
n += print(".");
}
// Extract digits from the remainder one at a time
while (digits-- > 0)
{
remainder *= 10.0;
int toPrint = int(remainder);
n += print(toPrint);
remainder -= toPrint;
}
return n;
}

View File

@@ -0,0 +1,81 @@
/*
Print.h - Base class that provides print() and println()
Copyright (c) 2008 David A. Mellis. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef Print_h
#define Print_h
#include <inttypes.h>
#include <stdio.h> // for size_t
#include "WString.h"
#include "Printable.h"
#define DEC 10
#define HEX 16
#define OCT 8
#define BIN 2
class Print
{
private:
int write_error;
size_t printNumber(unsigned long, uint8_t);
size_t printFloat(double, uint8_t);
protected:
void setWriteError(int err = 1) { write_error = err; }
public:
Print() : write_error(0) {}
int getWriteError() { return write_error; }
void clearWriteError() { setWriteError(0); }
virtual size_t write(uint8_t) = 0;
size_t write(const char *str) {
if (str == NULL) return 0;
return write((const uint8_t *)str, strlen(str));
}
virtual size_t write(const uint8_t *buffer, size_t size);
size_t print(const __FlashStringHelper *);
size_t print(const String &);
size_t print(const char[]);
size_t print(char);
size_t print(unsigned char, int = DEC);
size_t print(int, int = DEC);
size_t print(unsigned int, int = DEC);
size_t print(long, int = DEC);
size_t print(unsigned long, int = DEC);
size_t print(double, int = 2);
size_t print(const Printable&);
size_t println(const __FlashStringHelper *);
size_t println(const String &s);
size_t println(const char[]);
size_t println(char);
size_t println(unsigned char, int = DEC);
size_t println(int, int = DEC);
size_t println(unsigned int, int = DEC);
size_t println(long, int = DEC);
size_t println(unsigned long, int = DEC);
size_t println(double, int = 2);
size_t println(const Printable&);
size_t println(void);
};
#endif

View File

@@ -0,0 +1,40 @@
/*
Printable.h - Interface class that allows printing of complex types
Copyright (c) 2011 Adrian McEwen. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef Printable_h
#define Printable_h
#include <new.h>
class Print;
/** The Printable class provides a way for new classes to allow themselves to be printed.
By deriving from Printable and implementing the printTo method, it will then be possible
for users to print out instances of this class by passing them into the usual
Print::print and Print::println methods.
*/
class Printable
{
public:
virtual size_t printTo(Print& p) const = 0;
};
#endif

View File

@@ -0,0 +1,9 @@
#ifndef server_h
#define server_h
class Server : public Print {
public:
virtual void begin() =0;
};
#endif

View File

@@ -0,0 +1,270 @@
/*
Stream.cpp - adds parsing methods to Stream class
Copyright (c) 2008 David A. Mellis. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Created July 2011
parsing functions based on TextFinder library by Michael Margolis
*/
#include "Arduino.h"
#include "Stream.h"
#define PARSE_TIMEOUT 1000 // default number of milli-seconds to wait
#define NO_SKIP_CHAR 1 // a magic char not found in a valid ASCII numeric field
// private method to read stream with timeout
int Stream::timedRead()
{
int c;
_startMillis = millis();
do {
c = read();
if (c >= 0) return c;
} while(millis() - _startMillis < _timeout);
return -1; // -1 indicates timeout
}
// private method to peek stream with timeout
int Stream::timedPeek()
{
int c;
_startMillis = millis();
do {
c = peek();
if (c >= 0) return c;
} while(millis() - _startMillis < _timeout);
return -1; // -1 indicates timeout
}
// returns peek of the next digit in the stream or -1 if timeout
// discards non-numeric characters
int Stream::peekNextDigit()
{
int c;
while (1) {
c = timedPeek();
if (c < 0) return c; // timeout
if (c == '-') return c;
if (c >= '0' && c <= '9') return c;
read(); // discard non-numeric
}
}
// Public Methods
//////////////////////////////////////////////////////////////
void Stream::setTimeout(unsigned long timeout) // sets the maximum number of milliseconds to wait
{
_timeout = timeout;
}
// find returns true if the target string is found
bool Stream::find(char *target)
{
return findUntil(target, NULL);
}
// reads data from the stream until the target string of given length is found
// returns true if target string is found, false if timed out
bool Stream::find(char *target, size_t length)
{
return findUntil(target, length, NULL, 0);
}
// as find but search ends if the terminator string is found
bool Stream::findUntil(char *target, char *terminator)
{
return findUntil(target, strlen(target), terminator, strlen(terminator));
}
// reads data from the stream until the target string of the given length is found
// search terminated if the terminator string is found
// returns true if target string is found, false if terminated or timed out
bool Stream::findUntil(char *target, size_t targetLen, char *terminator, size_t termLen)
{
size_t index = 0; // maximum target string length is 64k bytes!
size_t termIndex = 0;
int c;
if( *target == 0)
return true; // return true if target is a null string
while( (c = timedRead()) > 0){
if(c != target[index])
index = 0; // reset index if any char does not match
if( c == target[index]){
//////Serial.print("found "); Serial.write(c); Serial.print("index now"); Serial.println(index+1);
if(++index >= targetLen){ // return true if all chars in the target match
return true;
}
}
if(termLen > 0 && c == terminator[termIndex]){
if(++termIndex >= termLen)
return false; // return false if terminate string found before target string
}
else
termIndex = 0;
}
return false;
}
// returns the first valid (long) integer value from the current position.
// initial characters that are not digits (or the minus sign) are skipped
// function is terminated by the first character that is not a digit.
long Stream::parseInt()
{
return parseInt(NO_SKIP_CHAR); // terminate on first non-digit character (or timeout)
}
// as above but a given skipChar is ignored
// this allows format characters (typically commas) in values to be ignored
long Stream::parseInt(char skipChar)
{
boolean isNegative = false;
long value = 0;
int c;
c = peekNextDigit();
// ignore non numeric leading characters
if(c < 0)
return 0; // zero returned if timeout
do{
if(c == skipChar)
; // ignore this charactor
else if(c == '-')
isNegative = true;
else if(c >= '0' && c <= '9') // is c a digit?
value = value * 10 + c - '0';
read(); // consume the character we got with peek
c = timedPeek();
}
while( (c >= '0' && c <= '9') || c == skipChar );
if(isNegative)
value = -value;
return value;
}
// as parseInt but returns a floating point value
float Stream::parseFloat()
{
return parseFloat(NO_SKIP_CHAR);
}
// as above but the given skipChar is ignored
// this allows format characters (typically commas) in values to be ignored
float Stream::parseFloat(char skipChar){
boolean isNegative = false;
boolean isFraction = false;
long value = 0;
char c;
float fraction = 1.0;
c = peekNextDigit();
// ignore non numeric leading characters
if(c < 0)
return 0; // zero returned if timeout
do{
if(c == skipChar)
; // ignore
else if(c == '-')
isNegative = true;
else if (c == '.')
isFraction = true;
else if(c >= '0' && c <= '9') { // is c a digit?
value = value * 10 + c - '0';
if(isFraction)
fraction *= 0.1;
}
read(); // consume the character we got with peek
c = timedPeek();
}
while( (c >= '0' && c <= '9') || c == '.' || c == skipChar );
if(isNegative)
value = -value;
if(isFraction)
return value * fraction;
else
return value;
}
// read characters from stream into buffer
// terminates if length characters have been read, or timeout (see setTimeout)
// returns the number of characters placed in the buffer
// the buffer is NOT null terminated.
//
size_t Stream::readBytes(char *buffer, size_t length)
{
size_t count = 0;
while (count < length) {
int c = timedRead();
if (c < 0) break;
*buffer++ = (char)c;
count++;
}
return count;
}
// as readBytes with terminator character
// terminates if length characters have been read, timeout, or if the terminator character detected
// returns the number of characters placed in the buffer (0 means no valid data found)
size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length)
{
if (length < 1) return 0;
size_t index = 0;
while (index < length) {
int c = timedRead();
if (c < 0 || c == terminator) break;
*buffer++ = (char)c;
index++;
}
return index; // return number of characters, not including null terminator
}
String Stream::readString()
{
String ret;
int c = timedRead();
while (c >= 0)
{
ret += (char)c;
c = timedRead();
}
return ret;
}
String Stream::readStringUntil(char terminator)
{
String ret;
int c = timedRead();
while (c >= 0 && c != terminator)
{
ret += (char)c;
c = timedRead();
}
return ret;
}

View File

@@ -0,0 +1,96 @@
/*
Stream.h - base class for character-based streams.
Copyright (c) 2010 David A. Mellis. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
parsing functions based on TextFinder library by Michael Margolis
*/
#ifndef Stream_h
#define Stream_h
#include <inttypes.h>
#include "Print.h"
// compatability macros for testing
/*
#define getInt() parseInt()
#define getInt(skipChar) parseInt(skipchar)
#define getFloat() parseFloat()
#define getFloat(skipChar) parseFloat(skipChar)
#define getString( pre_string, post_string, buffer, length)
readBytesBetween( pre_string, terminator, buffer, length)
*/
class Stream : public Print
{
private:
unsigned long _timeout; // number of milliseconds to wait for the next char before aborting timed read
unsigned long _startMillis; // used for timeout measurement
int timedRead(); // private method to read stream with timeout
int timedPeek(); // private method to peek stream with timeout
int peekNextDigit(); // returns the next numeric digit in the stream or -1 if timeout
public:
virtual int available() = 0;
virtual int read() = 0;
virtual int peek() = 0;
virtual void flush() = 0;
Stream() {_timeout=1000;}
// parsing methods
void setTimeout(unsigned long timeout); // sets maximum milliseconds to wait for stream data, default is 1 second
bool find(char *target); // reads data from the stream until the target string is found
// returns true if target string is found, false if timed out (see setTimeout)
bool find(char *target, size_t length); // reads data from the stream until the target string of given length is found
// returns true if target string is found, false if timed out
bool findUntil(char *target, char *terminator); // as find but search ends if the terminator string is found
bool findUntil(char *target, size_t targetLen, char *terminate, size_t termLen); // as above but search ends if the terminate string is found
long parseInt(); // returns the first valid (long) integer value from the current position.
// initial characters that are not digits (or the minus sign) are skipped
// integer is terminated by the first character that is not a digit.
float parseFloat(); // float version of parseInt
size_t readBytes( char *buffer, size_t length); // read chars from stream into buffer
// terminates if length characters have been read or timeout (see setTimeout)
// returns the number of characters placed in the buffer (0 means no valid data found)
size_t readBytesUntil( char terminator, char *buffer, size_t length); // as readBytes with terminator character
// terminates if length characters have been read, timeout, or if the terminator character detected
// returns the number of characters placed in the buffer (0 means no valid data found)
// Arduino String functions to be added here
String readString();
String readStringUntil(char terminator);
protected:
long parseInt(char skipChar); // as above but the given skipChar is ignored
// as above but the given skipChar is ignored
// this allows format characters (typically commas) in values to be ignored
float parseFloat(char skipChar); // as above but the given skipChar is ignored
};
#endif

View File

@@ -0,0 +1,616 @@
/* Tone.cpp
A Tone Generator Library
Written by Brett Hagman
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Version Modified By Date Comments
------- ----------- -------- --------
0001 B Hagman 09/08/02 Initial coding
0002 B Hagman 09/08/18 Multiple pins
0003 B Hagman 09/08/18 Moved initialization from constructor to begin()
0004 B Hagman 09/09/26 Fixed problems with ATmega8
0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers
09/11/25 Changed pin toggle method to XOR
09/11/25 Fixed timer0 from being excluded
0006 D Mellis 09/12/29 Replaced objects with functions
0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register
0008 S Kanemoto 12/06/22 Fixed for Leonardo by @maris_HY
*************************************************/
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include "Arduino.h"
#include "pins_arduino.h"
#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__)
#define TCCR2A TCCR2
#define TCCR2B TCCR2
#define COM2A1 COM21
#define COM2A0 COM20
#define OCR2A OCR2
#define TIMSK2 TIMSK
#define OCIE2A OCIE2
#define TIMER2_COMPA_vect TIMER2_COMP_vect
#define TIMSK1 TIMSK
#endif
// timerx_toggle_count:
// > 0 - duration specified
// = 0 - stopped
// < 0 - infinitely (until stop() method called, or new play() called)
#if !defined(__AVR_ATmega8__)
volatile long timer0_toggle_count;
volatile uint8_t *timer0_pin_port;
volatile uint8_t timer0_pin_mask;
#endif
volatile long timer1_toggle_count;
volatile uint8_t *timer1_pin_port;
volatile uint8_t timer1_pin_mask;
volatile long timer2_toggle_count;
volatile uint8_t *timer2_pin_port;
volatile uint8_t timer2_pin_mask;
#if defined(TIMSK3)
volatile long timer3_toggle_count;
volatile uint8_t *timer3_pin_port;
volatile uint8_t timer3_pin_mask;
#endif
#if defined(TIMSK4)
volatile long timer4_toggle_count;
volatile uint8_t *timer4_pin_port;
volatile uint8_t timer4_pin_mask;
#endif
#if defined(TIMSK5)
volatile long timer5_toggle_count;
volatile uint8_t *timer5_pin_port;
volatile uint8_t timer5_pin_mask;
#endif
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define AVAILABLE_TONE_PINS 1
#define USE_TIMER2
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ };
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ };
#elif defined(__AVR_ATmega8__)
#define AVAILABLE_TONE_PINS 1
#define USE_TIMER2
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ };
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ };
#elif defined(__AVR_ATmega32U4__)
#define AVAILABLE_TONE_PINS 1
#define USE_TIMER3
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 3 /*, 1 */ };
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ };
#else
#define AVAILABLE_TONE_PINS 1
#define USE_TIMER2
// Leave timer 0 to last.
const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ };
static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ };
#endif
static int8_t toneBegin(uint8_t _pin)
{
int8_t _timer = -1;
// if we're already using the pin, the timer should be configured.
for (int i = 0; i < AVAILABLE_TONE_PINS; i++) {
if (tone_pins[i] == _pin) {
return pgm_read_byte(tone_pin_to_timer_PGM + i);
}
}
// search for an unused timer.
for (int i = 0; i < AVAILABLE_TONE_PINS; i++) {
if (tone_pins[i] == 255) {
tone_pins[i] = _pin;
_timer = pgm_read_byte(tone_pin_to_timer_PGM + i);
break;
}
}
if (_timer != -1)
{
// Set timer specific stuff
// All timers in CTC mode
// 8 bit timers will require changing prescalar values,
// whereas 16 bit timers are set to either ck/1 or ck/64 prescalar
switch (_timer)
{
#if defined(TCCR0A) && defined(TCCR0B)
case 0:
// 8 bit timer
TCCR0A = 0;
TCCR0B = 0;
bitWrite(TCCR0A, WGM01, 1);
bitWrite(TCCR0B, CS00, 1);
timer0_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer0_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
#if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12)
case 1:
// 16 bit timer
TCCR1A = 0;
TCCR1B = 0;
bitWrite(TCCR1B, WGM12, 1);
bitWrite(TCCR1B, CS10, 1);
timer1_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer1_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
#if defined(TCCR2A) && defined(TCCR2B)
case 2:
// 8 bit timer
TCCR2A = 0;
TCCR2B = 0;
bitWrite(TCCR2A, WGM21, 1);
bitWrite(TCCR2B, CS20, 1);
timer2_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer2_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
#if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3)
case 3:
// 16 bit timer
TCCR3A = 0;
TCCR3B = 0;
bitWrite(TCCR3B, WGM32, 1);
bitWrite(TCCR3B, CS30, 1);
timer3_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer3_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
#if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4)
case 4:
// 16 bit timer
TCCR4A = 0;
TCCR4B = 0;
#if defined(WGM42)
bitWrite(TCCR4B, WGM42, 1);
#elif defined(CS43)
#warning this may not be correct
// atmega32u4
bitWrite(TCCR4B, CS43, 1);
#endif
bitWrite(TCCR4B, CS40, 1);
timer4_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer4_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
#if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5)
case 5:
// 16 bit timer
TCCR5A = 0;
TCCR5B = 0;
bitWrite(TCCR5B, WGM52, 1);
bitWrite(TCCR5B, CS50, 1);
timer5_pin_port = portOutputRegister(digitalPinToPort(_pin));
timer5_pin_mask = digitalPinToBitMask(_pin);
break;
#endif
}
}
return _timer;
}
// frequency (in hertz) and duration (in milliseconds).
void tone(uint8_t _pin, unsigned int frequency, unsigned long duration)
{
uint8_t prescalarbits = 0b001;
long toggle_count = 0;
uint32_t ocr = 0;
int8_t _timer;
_timer = toneBegin(_pin);
if (_timer >= 0)
{
// Set the pinMode as OUTPUT
pinMode(_pin, OUTPUT);
// if we are using an 8 bit timer, scan through prescalars to find the best fit
if (_timer == 0 || _timer == 2)
{
ocr = F_CPU / frequency / 2 - 1;
prescalarbits = 0b001; // ck/1: same for both timers
if (ocr > 255)
{
ocr = F_CPU / frequency / 2 / 8 - 1;
prescalarbits = 0b010; // ck/8: same for both timers
if (_timer == 2 && ocr > 255)
{
ocr = F_CPU / frequency / 2 / 32 - 1;
prescalarbits = 0b011;
}
if (ocr > 255)
{
ocr = F_CPU / frequency / 2 / 64 - 1;
prescalarbits = _timer == 0 ? 0b011 : 0b100;
if (_timer == 2 && ocr > 255)
{
ocr = F_CPU / frequency / 2 / 128 - 1;
prescalarbits = 0b101;
}
if (ocr > 255)
{
ocr = F_CPU / frequency / 2 / 256 - 1;
prescalarbits = _timer == 0 ? 0b100 : 0b110;
if (ocr > 255)
{
// can't do any better than /1024
ocr = F_CPU / frequency / 2 / 1024 - 1;
prescalarbits = _timer == 0 ? 0b101 : 0b111;
}
}
}
}
#if defined(TCCR0B)
if (_timer == 0)
{
TCCR0B = prescalarbits;
}
else
#endif
#if defined(TCCR2B)
{
TCCR2B = prescalarbits;
}
#else
{
// dummy place holder to make the above ifdefs work
}
#endif
}
else
{
// two choices for the 16 bit timers: ck/1 or ck/64
ocr = F_CPU / frequency / 2 - 1;
prescalarbits = 0b001;
if (ocr > 0xffff)
{
ocr = F_CPU / frequency / 2 / 64 - 1;
prescalarbits = 0b011;
}
if (_timer == 1)
{
#if defined(TCCR1B)
TCCR1B = (TCCR1B & 0b11111000) | prescalarbits;
#endif
}
#if defined(TCCR3B)
else if (_timer == 3)
TCCR3B = (TCCR3B & 0b11111000) | prescalarbits;
#endif
#if defined(TCCR4B)
else if (_timer == 4)
TCCR4B = (TCCR4B & 0b11111000) | prescalarbits;
#endif
#if defined(TCCR5B)
else if (_timer == 5)
TCCR5B = (TCCR5B & 0b11111000) | prescalarbits;
#endif
}
// Calculate the toggle count
if (duration > 0)
{
toggle_count = 2 * frequency * duration / 1000;
}
else
{
toggle_count = -1;
}
// Set the OCR for the given timer,
// set the toggle count,
// then turn on the interrupts
switch (_timer)
{
#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A)
case 0:
OCR0A = ocr;
timer0_toggle_count = toggle_count;
bitWrite(TIMSK0, OCIE0A, 1);
break;
#endif
case 1:
#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A)
OCR1A = ocr;
timer1_toggle_count = toggle_count;
bitWrite(TIMSK1, OCIE1A, 1);
#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A)
// this combination is for at least the ATmega32
OCR1A = ocr;
timer1_toggle_count = toggle_count;
bitWrite(TIMSK, OCIE1A, 1);
#endif
break;
#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A)
case 2:
OCR2A = ocr;
timer2_toggle_count = toggle_count;
bitWrite(TIMSK2, OCIE2A, 1);
break;
#endif
#if defined(TIMSK3)
case 3:
OCR3A = ocr;
timer3_toggle_count = toggle_count;
bitWrite(TIMSK3, OCIE3A, 1);
break;
#endif
#if defined(TIMSK4)
case 4:
OCR4A = ocr;
timer4_toggle_count = toggle_count;
bitWrite(TIMSK4, OCIE4A, 1);
break;
#endif
#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A)
case 5:
OCR5A = ocr;
timer5_toggle_count = toggle_count;
bitWrite(TIMSK5, OCIE5A, 1);
break;
#endif
}
}
}
// XXX: this function only works properly for timer 2 (the only one we use
// currently). for the others, it should end the tone, but won't restore
// proper PWM functionality for the timer.
void disableTimer(uint8_t _timer)
{
switch (_timer)
{
case 0:
#if defined(TIMSK0)
TIMSK0 = 0;
#elif defined(TIMSK)
TIMSK = 0; // atmega32
#endif
break;
#if defined(TIMSK1) && defined(OCIE1A)
case 1:
bitWrite(TIMSK1, OCIE1A, 0);
break;
#endif
case 2:
#if defined(TIMSK2) && defined(OCIE2A)
bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt
#endif
#if defined(TCCR2A) && defined(WGM20)
TCCR2A = (1 << WGM20);
#endif
#if defined(TCCR2B) && defined(CS22)
TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22);
#endif
#if defined(OCR2A)
OCR2A = 0;
#endif
break;
#if defined(TIMSK3)
case 3:
TIMSK3 = 0;
break;
#endif
#if defined(TIMSK4)
case 4:
TIMSK4 = 0;
break;
#endif
#if defined(TIMSK5)
case 5:
TIMSK5 = 0;
break;
#endif
}
}
void noTone(uint8_t _pin)
{
int8_t _timer = -1;
for (int i = 0; i < AVAILABLE_TONE_PINS; i++) {
if (tone_pins[i] == _pin) {
_timer = pgm_read_byte(tone_pin_to_timer_PGM + i);
tone_pins[i] = 255;
}
}
disableTimer(_timer);
digitalWrite(_pin, 0);
}
#ifdef USE_TIMER0
ISR(TIMER0_COMPA_vect)
{
if (timer0_toggle_count != 0)
{
// toggle the pin
*timer0_pin_port ^= timer0_pin_mask;
if (timer0_toggle_count > 0)
timer0_toggle_count--;
}
else
{
disableTimer(0);
*timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop
}
}
#endif
#ifdef USE_TIMER1
ISR(TIMER1_COMPA_vect)
{
if (timer1_toggle_count != 0)
{
// toggle the pin
*timer1_pin_port ^= timer1_pin_mask;
if (timer1_toggle_count > 0)
timer1_toggle_count--;
}
else
{
disableTimer(1);
*timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop
}
}
#endif
#ifdef USE_TIMER2
ISR(TIMER2_COMPA_vect)
{
if (timer2_toggle_count != 0)
{
// toggle the pin
*timer2_pin_port ^= timer2_pin_mask;
if (timer2_toggle_count > 0)
timer2_toggle_count--;
}
else
{
// need to call noTone() so that the tone_pins[] entry is reset, so the
// timer gets initialized next time we call tone().
// XXX: this assumes timer 2 is always the first one used.
noTone(tone_pins[0]);
// disableTimer(2);
// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop
}
}
#endif
#ifdef USE_TIMER3
ISR(TIMER3_COMPA_vect)
{
if (timer3_toggle_count != 0)
{
// toggle the pin
*timer3_pin_port ^= timer3_pin_mask;
if (timer3_toggle_count > 0)
timer3_toggle_count--;
}
else
{
disableTimer(3);
*timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop
}
}
#endif
#ifdef USE_TIMER4
ISR(TIMER4_COMPA_vect)
{
if (timer4_toggle_count != 0)
{
// toggle the pin
*timer4_pin_port ^= timer4_pin_mask;
if (timer4_toggle_count > 0)
timer4_toggle_count--;
}
else
{
disableTimer(4);
*timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop
}
}
#endif
#ifdef USE_TIMER5
ISR(TIMER5_COMPA_vect)
{
if (timer5_toggle_count != 0)
{
// toggle the pin
*timer5_pin_port ^= timer5_pin_mask;
if (timer5_toggle_count > 0)
timer5_toggle_count--;
}
else
{
disableTimer(5);
*timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop
}
}
#endif

View File

@@ -0,0 +1,196 @@
#ifndef __USBAPI__
#define __USBAPI__
#if defined(USBCON)
//================================================================================
//================================================================================
// USB
class USBDevice_
{
public:
USBDevice_();
bool configured();
void attach();
void detach(); // Serial port goes down too...
void poll();
};
extern USBDevice_ USBDevice;
//================================================================================
//================================================================================
// Serial over CDC (Serial1 is the physical port)
class Serial_ : public Stream
{
private:
ring_buffer *_cdc_rx_buffer;
public:
void begin(uint16_t baud_count);
void end(void);
virtual int available(void);
virtual void accept(void);
virtual int peek(void);
virtual int read(void);
virtual void flush(void);
virtual size_t write(uint8_t);
using Print::write; // pull in write(str) and write(buf, size) from Print
operator bool();
};
extern Serial_ Serial;
//================================================================================
//================================================================================
// Mouse
#define MOUSE_LEFT 1
#define MOUSE_RIGHT 2
#define MOUSE_MIDDLE 4
#define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE)
class Mouse_
{
private:
uint8_t _buttons;
void buttons(uint8_t b);
public:
Mouse_(void);
void begin(void);
void end(void);
void click(uint8_t b = MOUSE_LEFT);
void move(signed char x, signed char y, signed char wheel = 0);
void press(uint8_t b = MOUSE_LEFT); // press LEFT by default
void release(uint8_t b = MOUSE_LEFT); // release LEFT by default
bool isPressed(uint8_t b = MOUSE_LEFT); // check LEFT by default
};
extern Mouse_ Mouse;
//================================================================================
//================================================================================
// Keyboard
#define KEY_LEFT_CTRL 0x80
#define KEY_LEFT_SHIFT 0x81
#define KEY_LEFT_ALT 0x82
#define KEY_LEFT_GUI 0x83
#define KEY_RIGHT_CTRL 0x84
#define KEY_RIGHT_SHIFT 0x85
#define KEY_RIGHT_ALT 0x86
#define KEY_RIGHT_GUI 0x87
#define KEY_UP_ARROW 0xDA
#define KEY_DOWN_ARROW 0xD9
#define KEY_LEFT_ARROW 0xD8
#define KEY_RIGHT_ARROW 0xD7
#define KEY_BACKSPACE 0xB2
#define KEY_TAB 0xB3
#define KEY_RETURN 0xB0
#define KEY_ESC 0xB1
#define KEY_INSERT 0xD1
#define KEY_DELETE 0xD4
#define KEY_PAGE_UP 0xD3
#define KEY_PAGE_DOWN 0xD6
#define KEY_HOME 0xD2
#define KEY_END 0xD5
#define KEY_CAPS_LOCK 0xC1
#define KEY_F1 0xC2
#define KEY_F2 0xC3
#define KEY_F3 0xC4
#define KEY_F4 0xC5
#define KEY_F5 0xC6
#define KEY_F6 0xC7
#define KEY_F7 0xC8
#define KEY_F8 0xC9
#define KEY_F9 0xCA
#define KEY_F10 0xCB
#define KEY_F11 0xCC
#define KEY_F12 0xCD
// Low level key report: up to 6 keys and shift, ctrl etc at once
typedef struct
{
uint8_t modifiers;
uint8_t reserved;
uint8_t keys[6];
} KeyReport;
class Keyboard_ : public Print
{
private:
KeyReport _keyReport;
void sendReport(KeyReport* keys);
public:
Keyboard_(void);
void begin(void);
void end(void);
virtual size_t write(uint8_t k);
virtual size_t press(uint8_t k);
virtual size_t release(uint8_t k);
virtual void releaseAll(void);
};
extern Keyboard_ Keyboard;
//================================================================================
//================================================================================
// Low level API
typedef struct
{
uint8_t bmRequestType;
uint8_t bRequest;
uint8_t wValueL;
uint8_t wValueH;
uint16_t wIndex;
uint16_t wLength;
} Setup;
//================================================================================
//================================================================================
// HID 'Driver'
int HID_GetInterface(uint8_t* interfaceNum);
int HID_GetDescriptor(int i);
bool HID_Setup(Setup& setup);
void HID_SendReport(uint8_t id, const void* data, int len);
//================================================================================
//================================================================================
// MSC 'Driver'
int MSC_GetInterface(uint8_t* interfaceNum);
int MSC_GetDescriptor(int i);
bool MSC_Setup(Setup& setup);
bool MSC_Data(uint8_t rx,uint8_t tx);
//================================================================================
//================================================================================
// CSC 'Driver'
int CDC_GetInterface(uint8_t* interfaceNum);
int CDC_GetDescriptor(int i);
bool CDC_Setup(Setup& setup);
//================================================================================
//================================================================================
#define TRANSFER_PGM 0x80
#define TRANSFER_RELEASE 0x40
#define TRANSFER_ZERO 0x20
int USB_SendControl(uint8_t flags, const void* d, int len);
int USB_RecvControl(void* d, int len);
uint8_t USB_Available(uint8_t ep);
int USB_Send(uint8_t ep, const void* data, int len); // blocking
int USB_Recv(uint8_t ep, void* data, int len); // non-blocking
int USB_Recv(uint8_t ep); // non-blocking
void USB_Flush(uint8_t ep);
#endif
#endif /* if defined(USBCON) */

View File

@@ -0,0 +1,684 @@
/* Copyright (c) 2010, Peter Barrett
**
** Permission to use, copy, modify, and/or distribute this software for
** any purpose with or without fee is hereby granted, provided that the
** above copyright notice and this permission notice appear in all copies.
**
** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
** SOFTWARE.
*/
#include "Platform.h"
#include "USBAPI.h"
#include "USBDesc.h"
#if defined(USBCON)
#define EP_TYPE_CONTROL 0x00
#define EP_TYPE_BULK_IN 0x81
#define EP_TYPE_BULK_OUT 0x80
#define EP_TYPE_INTERRUPT_IN 0xC1
#define EP_TYPE_INTERRUPT_OUT 0xC0
#define EP_TYPE_ISOCHRONOUS_IN 0x41
#define EP_TYPE_ISOCHRONOUS_OUT 0x40
/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */
#define TX_RX_LED_PULSE_MS 100
volatile u8 TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */
volatile u8 RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */
//==================================================================
//==================================================================
extern const u16 STRING_LANGUAGE[] PROGMEM;
extern const u16 STRING_IPRODUCT[] PROGMEM;
extern const u16 STRING_IMANUFACTURER[] PROGMEM;
extern const DeviceDescriptor USB_DeviceDescriptor PROGMEM;
extern const DeviceDescriptor USB_DeviceDescriptorA PROGMEM;
const u16 STRING_LANGUAGE[2] = {
(3<<8) | (2+2),
0x0409 // English
};
const u16 STRING_IPRODUCT[17] = {
(3<<8) | (2+2*16),
#if USB_PID == 0x8036
'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o'
#elif USB_PID == 0x8037
'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ',' ',' '
#elif USB_PID == 0x803C
'A','r','d','u','i','n','o',' ','E','s','p','l','o','r','a',' '
#elif USB_PID == 0x9208
'L','i','l','y','P','a','d','U','S','B',' ',' ',' ',' ',' ',' '
#else
'U','S','B',' ','I','O',' ','B','o','a','r','d',' ',' ',' ',' '
#endif
};
const u16 STRING_IMANUFACTURER[12] = {
(3<<8) | (2+2*11),
#if USB_VID == 0x2341
'A','r','d','u','i','n','o',' ','L','L','C'
#elif USB_VID == 0x1b4f
'S','p','a','r','k','F','u','n',' ',' ',' '
#else
'U','n','k','n','o','w','n',' ',' ',' ',' '
#endif
};
#ifdef CDC_ENABLED
#define DEVICE_CLASS 0x02
#else
#define DEVICE_CLASS 0x00
#endif
// DEVICE DESCRIPTOR
const DeviceDescriptor USB_DeviceDescriptor =
D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1);
const DeviceDescriptor USB_DeviceDescriptorA =
D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1);
//==================================================================
//==================================================================
volatile u8 _usbConfiguration = 0;
static inline void WaitIN(void)
{
while (!(UEINTX & (1<<TXINI)));
}
static inline void ClearIN(void)
{
UEINTX = ~(1<<TXINI);
}
static inline void WaitOUT(void)
{
while (!(UEINTX & (1<<RXOUTI)))
;
}
static inline u8 WaitForINOrOUT()
{
while (!(UEINTX & ((1<<TXINI)|(1<<RXOUTI))))
;
return (UEINTX & (1<<RXOUTI)) == 0;
}
static inline void ClearOUT(void)
{
UEINTX = ~(1<<RXOUTI);
}
void Recv(volatile u8* data, u8 count)
{
while (count--)
*data++ = UEDATX;
RXLED1; // light the RX LED
RxLEDPulse = TX_RX_LED_PULSE_MS;
}
static inline u8 Recv8()
{
RXLED1; // light the RX LED
RxLEDPulse = TX_RX_LED_PULSE_MS;
return UEDATX;
}
static inline void Send8(u8 d)
{
UEDATX = d;
}
static inline void SetEP(u8 ep)
{
UENUM = ep;
}
static inline u8 FifoByteCount()
{
return UEBCLX;
}
static inline u8 ReceivedSetupInt()
{
return UEINTX & (1<<RXSTPI);
}
static inline void ClearSetupInt()
{
UEINTX = ~((1<<RXSTPI) | (1<<RXOUTI) | (1<<TXINI));
}
static inline void Stall()
{
UECONX = (1<<STALLRQ) | (1<<EPEN);
}
static inline u8 ReadWriteAllowed()
{
return UEINTX & (1<<RWAL);
}
static inline u8 Stalled()
{
return UEINTX & (1<<STALLEDI);
}
static inline u8 FifoFree()
{
return UEINTX & (1<<FIFOCON);
}
static inline void ReleaseRX()
{
UEINTX = 0x6B; // FIFOCON=0 NAKINI=1 RWAL=1 NAKOUTI=0 RXSTPI=1 RXOUTI=0 STALLEDI=1 TXINI=1
}
static inline void ReleaseTX()
{
UEINTX = 0x3A; // FIFOCON=0 NAKINI=0 RWAL=1 NAKOUTI=1 RXSTPI=1 RXOUTI=0 STALLEDI=1 TXINI=0
}
static inline u8 FrameNumber()
{
return UDFNUML;
}
//==================================================================
//==================================================================
u8 USBGetConfiguration(void)
{
return _usbConfiguration;
}
#define USB_RECV_TIMEOUT
class LockEP
{
u8 _sreg;
public:
LockEP(u8 ep) : _sreg(SREG)
{
cli();
SetEP(ep & 7);
}
~LockEP()
{
SREG = _sreg;
}
};
// Number of bytes, assumes a rx endpoint
u8 USB_Available(u8 ep)
{
LockEP lock(ep);
return FifoByteCount();
}
// Non Blocking receive
// Return number of bytes read
int USB_Recv(u8 ep, void* d, int len)
{
if (!_usbConfiguration || len < 0)
return -1;
LockEP lock(ep);
u8 n = FifoByteCount();
len = min(n,len);
n = len;
u8* dst = (u8*)d;
while (n--)
*dst++ = Recv8();
if (len && !FifoByteCount()) // release empty buffer
ReleaseRX();
return len;
}
// Recv 1 byte if ready
int USB_Recv(u8 ep)
{
u8 c;
if (USB_Recv(ep,&c,1) != 1)
return -1;
return c;
}
// Space in send EP
u8 USB_SendSpace(u8 ep)
{
LockEP lock(ep);
if (!ReadWriteAllowed())
return 0;
return 64 - FifoByteCount();
}
// Blocking Send of data to an endpoint
int USB_Send(u8 ep, const void* d, int len)
{
if (!_usbConfiguration)
return -1;
int r = len;
const u8* data = (const u8*)d;
u8 zero = ep & TRANSFER_ZERO;
u8 timeout = 250; // 250ms timeout on send? TODO
while (len)
{
u8 n = USB_SendSpace(ep);
if (n == 0)
{
if (!(--timeout))
return -1;
delay(1);
continue;
}
if (n > len)
n = len;
len -= n;
{
LockEP lock(ep);
if (ep & TRANSFER_ZERO)
{
while (n--)
Send8(0);
}
else if (ep & TRANSFER_PGM)
{
while (n--)
Send8(pgm_read_byte(data++));
}
else
{
while (n--)
Send8(*data++);
}
if (!ReadWriteAllowed() || ((len == 0) && (ep & TRANSFER_RELEASE))) // Release full buffer
ReleaseTX();
}
}
TXLED1; // light the TX LED
TxLEDPulse = TX_RX_LED_PULSE_MS;
return r;
}
extern const u8 _initEndpoints[] PROGMEM;
const u8 _initEndpoints[] =
{
0,
#ifdef CDC_ENABLED
EP_TYPE_INTERRUPT_IN, // CDC_ENDPOINT_ACM
EP_TYPE_BULK_OUT, // CDC_ENDPOINT_OUT
EP_TYPE_BULK_IN, // CDC_ENDPOINT_IN
#endif
#ifdef HID_ENABLED
EP_TYPE_INTERRUPT_IN // HID_ENDPOINT_INT
#endif
};
#define EP_SINGLE_64 0x32 // EP0
#define EP_DOUBLE_64 0x36 // Other endpoints
static
void InitEP(u8 index, u8 type, u8 size)
{
UENUM = index;
UECONX = 1;
UECFG0X = type;
UECFG1X = size;
}
static
void InitEndpoints()
{
for (u8 i = 1; i < sizeof(_initEndpoints); i++)
{
UENUM = i;
UECONX = 1;
UECFG0X = pgm_read_byte(_initEndpoints+i);
UECFG1X = EP_DOUBLE_64;
}
UERST = 0x7E; // And reset them
UERST = 0;
}
// Handle CLASS_INTERFACE requests
static
bool ClassInterfaceRequest(Setup& setup)
{
u8 i = setup.wIndex;
#ifdef CDC_ENABLED
if (CDC_ACM_INTERFACE == i)
return CDC_Setup(setup);
#endif
#ifdef HID_ENABLED
if (HID_INTERFACE == i)
return HID_Setup(setup);
#endif
return false;
}
int _cmark;
int _cend;
void InitControl(int end)
{
SetEP(0);
_cmark = 0;
_cend = end;
}
static
bool SendControl(u8 d)
{
if (_cmark < _cend)
{
if (!WaitForINOrOUT())
return false;
Send8(d);
if (!((_cmark + 1) & 0x3F))
ClearIN(); // Fifo is full, release this packet
}
_cmark++;
return true;
};
// Clipped by _cmark/_cend
int USB_SendControl(u8 flags, const void* d, int len)
{
int sent = len;
const u8* data = (const u8*)d;
bool pgm = flags & TRANSFER_PGM;
while (len--)
{
u8 c = pgm ? pgm_read_byte(data++) : *data++;
if (!SendControl(c))
return -1;
}
return sent;
}
// Does not timeout or cross fifo boundaries
// Will only work for transfers <= 64 bytes
// TODO
int USB_RecvControl(void* d, int len)
{
WaitOUT();
Recv((u8*)d,len);
ClearOUT();
return len;
}
int SendInterfaces()
{
int total = 0;
u8 interfaces = 0;
#ifdef CDC_ENABLED
total = CDC_GetInterface(&interfaces);
#endif
#ifdef HID_ENABLED
total += HID_GetInterface(&interfaces);
#endif
return interfaces;
}
// Construct a dynamic configuration descriptor
// This really needs dynamic endpoint allocation etc
// TODO
static
bool SendConfiguration(int maxlen)
{
// Count and measure interfaces
InitControl(0);
int interfaces = SendInterfaces();
ConfigDescriptor config = D_CONFIG(_cmark + sizeof(ConfigDescriptor),interfaces);
// Now send them
InitControl(maxlen);
USB_SendControl(0,&config,sizeof(ConfigDescriptor));
SendInterfaces();
return true;
}
u8 _cdcComposite = 0;
static
bool SendDescriptor(Setup& setup)
{
u8 t = setup.wValueH;
if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t)
return SendConfiguration(setup.wLength);
InitControl(setup.wLength);
#ifdef HID_ENABLED
if (HID_REPORT_DESCRIPTOR_TYPE == t)
return HID_GetDescriptor(t);
#endif
u8 desc_length = 0;
const u8* desc_addr = 0;
if (USB_DEVICE_DESCRIPTOR_TYPE == t)
{
if (setup.wLength == 8)
_cdcComposite = 1;
desc_addr = _cdcComposite ? (const u8*)&USB_DeviceDescriptorA : (const u8*)&USB_DeviceDescriptor;
}
else if (USB_STRING_DESCRIPTOR_TYPE == t)
{
if (setup.wValueL == 0)
desc_addr = (const u8*)&STRING_LANGUAGE;
else if (setup.wValueL == IPRODUCT)
desc_addr = (const u8*)&STRING_IPRODUCT;
else if (setup.wValueL == IMANUFACTURER)
desc_addr = (const u8*)&STRING_IMANUFACTURER;
else
return false;
}
if (desc_addr == 0)
return false;
if (desc_length == 0)
desc_length = pgm_read_byte(desc_addr);
USB_SendControl(TRANSFER_PGM,desc_addr,desc_length);
return true;
}
// Endpoint 0 interrupt
ISR(USB_COM_vect)
{
SetEP(0);
if (!ReceivedSetupInt())
return;
Setup setup;
Recv((u8*)&setup,8);
ClearSetupInt();
u8 requestType = setup.bmRequestType;
if (requestType & REQUEST_DEVICETOHOST)
WaitIN();
else
ClearIN();
bool ok = true;
if (REQUEST_STANDARD == (requestType & REQUEST_TYPE))
{
// Standard Requests
u8 r = setup.bRequest;
if (GET_STATUS == r)
{
Send8(0); // TODO
Send8(0);
}
else if (CLEAR_FEATURE == r)
{
}
else if (SET_FEATURE == r)
{
}
else if (SET_ADDRESS == r)
{
WaitIN();
UDADDR = setup.wValueL | (1<<ADDEN);
}
else if (GET_DESCRIPTOR == r)
{
ok = SendDescriptor(setup);
}
else if (SET_DESCRIPTOR == r)
{
ok = false;
}
else if (GET_CONFIGURATION == r)
{
Send8(1);
}
else if (SET_CONFIGURATION == r)
{
if (REQUEST_DEVICE == (requestType & REQUEST_RECIPIENT))
{
InitEndpoints();
_usbConfiguration = setup.wValueL;
} else
ok = false;
}
else if (GET_INTERFACE == r)
{
}
else if (SET_INTERFACE == r)
{
}
}
else
{
InitControl(setup.wLength); // Max length of transfer
ok = ClassInterfaceRequest(setup);
}
if (ok)
ClearIN();
else
{
Stall();
}
}
void USB_Flush(u8 ep)
{
SetEP(ep);
if (FifoByteCount())
ReleaseTX();
}
// General interrupt
ISR(USB_GEN_vect)
{
u8 udint = UDINT;
UDINT = 0;
// End of Reset
if (udint & (1<<EORSTI))
{
InitEP(0,EP_TYPE_CONTROL,EP_SINGLE_64); // init ep0
_usbConfiguration = 0; // not configured yet
UEIENX = 1 << RXSTPE; // Enable interrupts for ep0
}
// Start of Frame - happens every millisecond so we use it for TX and RX LED one-shot timing, too
if (udint & (1<<SOFI))
{
#ifdef CDC_ENABLED
USB_Flush(CDC_TX); // Send a tx frame if found
if (USB_Available(CDC_RX)) // Handle received bytes (if any)
Serial.accept();
#endif
// check whether the one-shot period has elapsed. if so, turn off the LED
if (TxLEDPulse && !(--TxLEDPulse))
TXLED0;
if (RxLEDPulse && !(--RxLEDPulse))
RXLED0;
}
}
// VBUS or counting frames
// Any frame counting?
u8 USBConnected()
{
u8 f = UDFNUML;
delay(3);
return f != UDFNUML;
}
//=======================================================================
//=======================================================================
USBDevice_ USBDevice;
USBDevice_::USBDevice_()
{
}
void USBDevice_::attach()
{
_usbConfiguration = 0;
UHWCON = 0x01; // power internal reg
USBCON = (1<<USBE)|(1<<FRZCLK); // clock frozen, usb enabled
#if F_CPU == 16000000UL
PLLCSR = 0x12; // Need 16 MHz xtal
#elif F_CPU == 8000000UL
PLLCSR = 0x02; // Need 8 MHz xtal
#endif
while (!(PLLCSR & (1<<PLOCK))) // wait for lock pll
;
// Some tests on specific versions of macosx (10.7.3), reported some
// strange behaviuors when the board is reset using the serial
// port touch at 1200 bps. This delay fixes this behaviour.
delay(1);
USBCON = ((1<<USBE)|(1<<OTGPADE)); // start USB clock
UDIEN = (1<<EORSTE)|(1<<SOFE); // Enable interrupts for EOR (End of Reset) and SOF (start of frame)
UDCON = 0; // enable attach resistor
TX_RX_LED_INIT;
}
void USBDevice_::detach()
{
}
// Check for interrupts
// TODO: VBUS detection
bool USBDevice_::configured()
{
return _usbConfiguration;
}
void USBDevice_::poll()
{
}
#endif /* if defined(USBCON) */

View File

@@ -0,0 +1,303 @@
// Copyright (c) 2010, Peter Barrett
/*
** Permission to use, copy, modify, and/or distribute this software for
** any purpose with or without fee is hereby granted, provided that the
** above copyright notice and this permission notice appear in all copies.
**
** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
** SOFTWARE.
*/
#ifndef __USBCORE_H__
#define __USBCORE_H__
// Standard requests
#define GET_STATUS 0
#define CLEAR_FEATURE 1
#define SET_FEATURE 3
#define SET_ADDRESS 5
#define GET_DESCRIPTOR 6
#define SET_DESCRIPTOR 7
#define GET_CONFIGURATION 8
#define SET_CONFIGURATION 9
#define GET_INTERFACE 10
#define SET_INTERFACE 11
// bmRequestType
#define REQUEST_HOSTTODEVICE 0x00
#define REQUEST_DEVICETOHOST 0x80
#define REQUEST_DIRECTION 0x80
#define REQUEST_STANDARD 0x00
#define REQUEST_CLASS 0x20
#define REQUEST_VENDOR 0x40
#define REQUEST_TYPE 0x60
#define REQUEST_DEVICE 0x00
#define REQUEST_INTERFACE 0x01
#define REQUEST_ENDPOINT 0x02
#define REQUEST_OTHER 0x03
#define REQUEST_RECIPIENT 0x03
#define REQUEST_DEVICETOHOST_CLASS_INTERFACE (REQUEST_DEVICETOHOST + REQUEST_CLASS + REQUEST_INTERFACE)
#define REQUEST_HOSTTODEVICE_CLASS_INTERFACE (REQUEST_HOSTTODEVICE + REQUEST_CLASS + REQUEST_INTERFACE)
// Class requests
#define CDC_SET_LINE_CODING 0x20
#define CDC_GET_LINE_CODING 0x21
#define CDC_SET_CONTROL_LINE_STATE 0x22
#define MSC_RESET 0xFF
#define MSC_GET_MAX_LUN 0xFE
#define HID_GET_REPORT 0x01
#define HID_GET_IDLE 0x02
#define HID_GET_PROTOCOL 0x03
#define HID_SET_REPORT 0x09
#define HID_SET_IDLE 0x0A
#define HID_SET_PROTOCOL 0x0B
// Descriptors
#define USB_DEVICE_DESC_SIZE 18
#define USB_CONFIGUARTION_DESC_SIZE 9
#define USB_INTERFACE_DESC_SIZE 9
#define USB_ENDPOINT_DESC_SIZE 7
#define USB_DEVICE_DESCRIPTOR_TYPE 1
#define USB_CONFIGURATION_DESCRIPTOR_TYPE 2
#define USB_STRING_DESCRIPTOR_TYPE 3
#define USB_INTERFACE_DESCRIPTOR_TYPE 4
#define USB_ENDPOINT_DESCRIPTOR_TYPE 5
#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02
#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03
#define USB_DEVICE_CLASS_STORAGE 0x08
#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF
#define USB_CONFIG_POWERED_MASK 0x40
#define USB_CONFIG_BUS_POWERED 0x80
#define USB_CONFIG_SELF_POWERED 0xC0
#define USB_CONFIG_REMOTE_WAKEUP 0x20
// bMaxPower in Configuration Descriptor
#define USB_CONFIG_POWER_MA(mA) ((mA)/2)
// bEndpointAddress in Endpoint Descriptor
#define USB_ENDPOINT_DIRECTION_MASK 0x80
#define USB_ENDPOINT_OUT(addr) ((addr) | 0x00)
#define USB_ENDPOINT_IN(addr) ((addr) | 0x80)
#define USB_ENDPOINT_TYPE_MASK 0x03
#define USB_ENDPOINT_TYPE_CONTROL 0x00
#define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01
#define USB_ENDPOINT_TYPE_BULK 0x02
#define USB_ENDPOINT_TYPE_INTERRUPT 0x03
#define TOBYTES(x) ((x) & 0xFF),(((x) >> 8) & 0xFF)
#define CDC_V1_10 0x0110
#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02
#define CDC_CALL_MANAGEMENT 0x01
#define CDC_ABSTRACT_CONTROL_MODEL 0x02
#define CDC_HEADER 0x00
#define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02
#define CDC_UNION 0x06
#define CDC_CS_INTERFACE 0x24
#define CDC_CS_ENDPOINT 0x25
#define CDC_DATA_INTERFACE_CLASS 0x0A
#define MSC_SUBCLASS_SCSI 0x06
#define MSC_PROTOCOL_BULK_ONLY 0x50
#define HID_HID_DESCRIPTOR_TYPE 0x21
#define HID_REPORT_DESCRIPTOR_TYPE 0x22
#define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23
// Device
typedef struct {
u8 len; // 18
u8 dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE
u16 usbVersion; // 0x200
u8 deviceClass;
u8 deviceSubClass;
u8 deviceProtocol;
u8 packetSize0; // Packet 0
u16 idVendor;
u16 idProduct;
u16 deviceVersion; // 0x100
u8 iManufacturer;
u8 iProduct;
u8 iSerialNumber;
u8 bNumConfigurations;
} DeviceDescriptor;
// Config
typedef struct {
u8 len; // 9
u8 dtype; // 2
u16 clen; // total length
u8 numInterfaces;
u8 config;
u8 iconfig;
u8 attributes;
u8 maxPower;
} ConfigDescriptor;
// String
// Interface
typedef struct
{
u8 len; // 9
u8 dtype; // 4
u8 number;
u8 alternate;
u8 numEndpoints;
u8 interfaceClass;
u8 interfaceSubClass;
u8 protocol;
u8 iInterface;
} InterfaceDescriptor;
// Endpoint
typedef struct
{
u8 len; // 7
u8 dtype; // 5
u8 addr;
u8 attr;
u16 packetSize;
u8 interval;
} EndpointDescriptor;
// Interface Association Descriptor
// Used to bind 2 interfaces together in CDC compostite device
typedef struct
{
u8 len; // 8
u8 dtype; // 11
u8 firstInterface;
u8 interfaceCount;
u8 functionClass;
u8 funtionSubClass;
u8 functionProtocol;
u8 iInterface;
} IADDescriptor;
// CDC CS interface descriptor
typedef struct
{
u8 len; // 5
u8 dtype; // 0x24
u8 subtype;
u8 d0;
u8 d1;
} CDCCSInterfaceDescriptor;
typedef struct
{
u8 len; // 4
u8 dtype; // 0x24
u8 subtype;
u8 d0;
} CDCCSInterfaceDescriptor4;
typedef struct
{
u8 len;
u8 dtype; // 0x24
u8 subtype; // 1
u8 bmCapabilities;
u8 bDataInterface;
} CMFunctionalDescriptor;
typedef struct
{
u8 len;
u8 dtype; // 0x24
u8 subtype; // 1
u8 bmCapabilities;
} ACMFunctionalDescriptor;
typedef struct
{
// IAD
IADDescriptor iad; // Only needed on compound device
// Control
InterfaceDescriptor cif; //
CDCCSInterfaceDescriptor header;
CMFunctionalDescriptor callManagement; // Call Management
ACMFunctionalDescriptor controlManagement; // ACM
CDCCSInterfaceDescriptor functionalDescriptor; // CDC_UNION
EndpointDescriptor cifin;
// Data
InterfaceDescriptor dif;
EndpointDescriptor in;
EndpointDescriptor out;
} CDCDescriptor;
typedef struct
{
InterfaceDescriptor msc;
EndpointDescriptor in;
EndpointDescriptor out;
} MSCDescriptor;
typedef struct
{
u8 len; // 9
u8 dtype; // 0x21
u8 addr;
u8 versionL; // 0x101
u8 versionH; // 0x101
u8 country;
u8 desctype; // 0x22 report
u8 descLenL;
u8 descLenH;
} HIDDescDescriptor;
typedef struct
{
InterfaceDescriptor hid;
HIDDescDescriptor desc;
EndpointDescriptor in;
} HIDDescriptor;
#define D_DEVICE(_class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs) \
{ 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs }
#define D_CONFIG(_totalLength,_interfaces) \
{ 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(500) }
#define D_INTERFACE(_n,_numEndpoints,_class,_subClass,_protocol) \
{ 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 }
#define D_ENDPOINT(_addr,_attr,_packetSize, _interval) \
{ 7, 5, _addr,_attr,_packetSize, _interval }
#define D_IAD(_firstInterface, _count, _class, _subClass, _protocol) \
{ 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 }
#define D_HIDREPORT(_descriptorLength) \
{ 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 }
#define D_CDCCS(_subtype,_d0,_d1) { 5, 0x24, _subtype, _d0, _d1 }
#define D_CDCCS4(_subtype,_d0) { 4, 0x24, _subtype, _d0 }
#endif

View File

@@ -0,0 +1,63 @@
/* Copyright (c) 2011, Peter Barrett
**
** Permission to use, copy, modify, and/or distribute this software for
** any purpose with or without fee is hereby granted, provided that the
** above copyright notice and this permission notice appear in all copies.
**
** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
** SOFTWARE.
*/
#define CDC_ENABLED
#define HID_ENABLED
#ifdef CDC_ENABLED
#define CDC_INTERFACE_COUNT 2
#define CDC_ENPOINT_COUNT 3
#else
#define CDC_INTERFACE_COUNT 0
#define CDC_ENPOINT_COUNT 0
#endif
#ifdef HID_ENABLED
#define HID_INTERFACE_COUNT 1
#define HID_ENPOINT_COUNT 1
#else
#define HID_INTERFACE_COUNT 0
#define HID_ENPOINT_COUNT 0
#endif
#define CDC_ACM_INTERFACE 0 // CDC ACM
#define CDC_DATA_INTERFACE 1 // CDC Data
#define CDC_FIRST_ENDPOINT 1
#define CDC_ENDPOINT_ACM (CDC_FIRST_ENDPOINT) // CDC First
#define CDC_ENDPOINT_OUT (CDC_FIRST_ENDPOINT+1)
#define CDC_ENDPOINT_IN (CDC_FIRST_ENDPOINT+2)
#define HID_INTERFACE (CDC_ACM_INTERFACE + CDC_INTERFACE_COUNT) // HID Interface
#define HID_FIRST_ENDPOINT (CDC_FIRST_ENDPOINT + CDC_ENPOINT_COUNT)
#define HID_ENDPOINT_INT (HID_FIRST_ENDPOINT)
#define INTERFACE_COUNT (MSC_INTERFACE + MSC_INTERFACE_COUNT)
#ifdef CDC_ENABLED
#define CDC_RX CDC_ENDPOINT_OUT
#define CDC_TX CDC_ENDPOINT_IN
#endif
#ifdef HID_ENABLED
#define HID_TX HID_ENDPOINT_INT
#endif
#define IMANUFACTURER 1
#define IPRODUCT 2

View File

@@ -0,0 +1,88 @@
/*
* Udp.cpp: Library to send/receive UDP packets.
*
* NOTE: UDP is fast, but has some important limitations (thanks to Warren Gray for mentioning these)
* 1) UDP does not guarantee the order in which assembled UDP packets are received. This
* might not happen often in practice, but in larger network topologies, a UDP
* packet can be received out of sequence.
* 2) UDP does not guard against lost packets - so packets *can* disappear without the sender being
* aware of it. Again, this may not be a concern in practice on small local networks.
* For more information, see http://www.cafeaulait.org/course/week12/35.html
*
* MIT License:
* Copyright (c) 2008 Bjoern Hartmann
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* bjoern@cs.stanford.edu 12/30/2008
*/
#ifndef udp_h
#define udp_h
#include <Stream.h>
#include <IPAddress.h>
class UDP : public Stream {
public:
virtual uint8_t begin(uint16_t) =0; // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use
virtual void stop() =0; // Finish with the UDP socket
// Sending UDP packets
// Start building up a packet to send to the remote host specific in ip and port
// Returns 1 if successful, 0 if there was a problem with the supplied IP address or port
virtual int beginPacket(IPAddress ip, uint16_t port) =0;
// Start building up a packet to send to the remote host specific in host and port
// Returns 1 if successful, 0 if there was a problem resolving the hostname or port
virtual int beginPacket(const char *host, uint16_t port) =0;
// Finish off this packet and send it
// Returns 1 if the packet was sent successfully, 0 if there was an error
virtual int endPacket() =0;
// Write a single byte into the packet
virtual size_t write(uint8_t) =0;
// Write size bytes from buffer into the packet
virtual size_t write(const uint8_t *buffer, size_t size) =0;
// Start processing the next available incoming packet
// Returns the size of the packet in bytes, or 0 if no packets are available
virtual int parsePacket() =0;
// Number of bytes remaining in the current packet
virtual int available() =0;
// Read a single byte from the current packet
virtual int read() =0;
// Read up to len bytes from the current packet and place them into buffer
// Returns the number of bytes read, or 0 if none are available
virtual int read(unsigned char* buffer, size_t len) =0;
// Read up to len characters from the current packet and place them into buffer
// Returns the number of characters read, or 0 if none are available
virtual int read(char* buffer, size_t len) =0;
// Return the next byte from the current packet without moving on to the next byte
virtual int peek() =0;
virtual void flush() =0; // Finish reading the current packet
// Return the IP address of the host who sent the current incoming packet
virtual IPAddress remoteIP() =0;
// Return the port of the host who sent the current incoming packet
virtual uint16_t remotePort() =0;
protected:
uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); };
};
#endif

View File

@@ -0,0 +1,168 @@
/*
WCharacter.h - Character utility functions for Wiring & Arduino
Copyright (c) 2010 Hernando Barragan. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef Character_h
#define Character_h
#include <ctype.h>
// WCharacter.h prototypes
inline boolean isAlphaNumeric(int c) __attribute__((always_inline));
inline boolean isAlpha(int c) __attribute__((always_inline));
inline boolean isAscii(int c) __attribute__((always_inline));
inline boolean isWhitespace(int c) __attribute__((always_inline));
inline boolean isControl(int c) __attribute__((always_inline));
inline boolean isDigit(int c) __attribute__((always_inline));
inline boolean isGraph(int c) __attribute__((always_inline));
inline boolean isLowerCase(int c) __attribute__((always_inline));
inline boolean isPrintable(int c) __attribute__((always_inline));
inline boolean isPunct(int c) __attribute__((always_inline));
inline boolean isSpace(int c) __attribute__((always_inline));
inline boolean isUpperCase(int c) __attribute__((always_inline));
inline boolean isHexadecimalDigit(int c) __attribute__((always_inline));
inline int toAscii(int c) __attribute__((always_inline));
inline int toLowerCase(int c) __attribute__((always_inline));
inline int toUpperCase(int c)__attribute__((always_inline));
// Checks for an alphanumeric character.
// It is equivalent to (isalpha(c) || isdigit(c)).
inline boolean isAlphaNumeric(int c)
{
return ( isalnum(c) == 0 ? false : true);
}
// Checks for an alphabetic character.
// It is equivalent to (isupper(c) || islower(c)).
inline boolean isAlpha(int c)
{
return ( isalpha(c) == 0 ? false : true);
}
// Checks whether c is a 7-bit unsigned char value
// that fits into the ASCII character set.
inline boolean isAscii(int c)
{
return ( isascii (c) == 0 ? false : true);
}
// Checks for a blank character, that is, a space or a tab.
inline boolean isWhitespace(int c)
{
return ( isblank (c) == 0 ? false : true);
}
// Checks for a control character.
inline boolean isControl(int c)
{
return ( iscntrl (c) == 0 ? false : true);
}
// Checks for a digit (0 through 9).
inline boolean isDigit(int c)
{
return ( isdigit (c) == 0 ? false : true);
}
// Checks for any printable character except space.
inline boolean isGraph(int c)
{
return ( isgraph (c) == 0 ? false : true);
}
// Checks for a lower-case character.
inline boolean isLowerCase(int c)
{
return (islower (c) == 0 ? false : true);
}
// Checks for any printable character including space.
inline boolean isPrintable(int c)
{
return ( isprint (c) == 0 ? false : true);
}
// Checks for any printable character which is not a space
// or an alphanumeric character.
inline boolean isPunct(int c)
{
return ( ispunct (c) == 0 ? false : true);
}
// Checks for white-space characters. For the avr-libc library,
// these are: space, formfeed ('\f'), newline ('\n'), carriage
// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v').
inline boolean isSpace(int c)
{
return ( isspace (c) == 0 ? false : true);
}
// Checks for an uppercase letter.
inline boolean isUpperCase(int c)
{
return ( isupper (c) == 0 ? false : true);
}
// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7
// 8 9 a b c d e f A B C D E F.
inline boolean isHexadecimalDigit(int c)
{
return ( isxdigit (c) == 0 ? false : true);
}
// Converts c to a 7-bit unsigned char value that fits into the
// ASCII character set, by clearing the high-order bits.
inline int toAscii(int c)
{
return toascii (c);
}
// Warning:
// Many people will be unhappy if you use this function.
// This function will convert accented letters into random
// characters.
// Converts the letter c to lower case, if possible.
inline int toLowerCase(int c)
{
return tolower (c);
}
// Converts the letter c to upper case, if possible.
inline int toUpperCase(int c)
{
return toupper (c);
}
#endif

View File

@@ -0,0 +1,322 @@
/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */
/*
Part of the Wiring project - http://wiring.uniandes.edu.co
Copyright (c) 2004-05 Hernando Barragan
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
Modified 24 November 2006 by David A. Mellis
Modified 1 August 2010 by Mark Sproul
*/
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <stdio.h>
#include "wiring_private.h"
static volatile voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS];
// volatile static voidFuncPtr twiIntFunc;
void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) {
if(interruptNum < EXTERNAL_NUM_INTERRUPTS) {
intFunc[interruptNum] = userFunc;
// Configure the interrupt mode (trigger on low input, any change, rising
// edge, or falling edge). The mode constants were chosen to correspond
// to the configuration bits in the hardware register, so we simply shift
// the mode into place.
// Enable the interrupt.
switch (interruptNum) {
#if defined(__AVR_ATmega32U4__)
// I hate doing this, but the register assignment differs between the 1280/2560
// and the 32U4. Since avrlib defines registers PCMSK1 and PCMSK2 that aren't
// even present on the 32U4 this is the only way to distinguish between them.
case 0:
EICRA = (EICRA & ~((1<<ISC00) | (1<<ISC01))) | (mode << ISC00);
EIMSK |= (1<<INT0);
break;
case 1:
EICRA = (EICRA & ~((1<<ISC10) | (1<<ISC11))) | (mode << ISC10);
EIMSK |= (1<<INT1);
break;
case 2:
EICRA = (EICRA & ~((1<<ISC20) | (1<<ISC21))) | (mode << ISC20);
EIMSK |= (1<<INT2);
break;
case 3:
EICRA = (EICRA & ~((1<<ISC30) | (1<<ISC31))) | (mode << ISC30);
EIMSK |= (1<<INT3);
break;
#elif defined(EICRA) && defined(EICRB) && defined(EIMSK)
case 2:
EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00);
EIMSK |= (1 << INT0);
break;
case 3:
EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10);
EIMSK |= (1 << INT1);
break;
case 4:
EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20);
EIMSK |= (1 << INT2);
break;
case 5:
EICRA = (EICRA & ~((1 << ISC30) | (1 << ISC31))) | (mode << ISC30);
EIMSK |= (1 << INT3);
break;
case 0:
EICRB = (EICRB & ~((1 << ISC40) | (1 << ISC41))) | (mode << ISC40);
EIMSK |= (1 << INT4);
break;
case 1:
EICRB = (EICRB & ~((1 << ISC50) | (1 << ISC51))) | (mode << ISC50);
EIMSK |= (1 << INT5);
break;
case 6:
EICRB = (EICRB & ~((1 << ISC60) | (1 << ISC61))) | (mode << ISC60);
EIMSK |= (1 << INT6);
break;
case 7:
EICRB = (EICRB & ~((1 << ISC70) | (1 << ISC71))) | (mode << ISC70);
EIMSK |= (1 << INT7);
break;
#else
case 0:
#if defined(EICRA) && defined(ISC00) && defined(EIMSK)
EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00);
EIMSK |= (1 << INT0);
#elif defined(MCUCR) && defined(ISC00) && defined(GICR)
MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00);
GICR |= (1 << INT0);
#elif defined(MCUCR) && defined(ISC00) && defined(GIMSK)
MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00);
GIMSK |= (1 << INT0);
#else
#error attachInterrupt not finished for this CPU (case 0)
#endif
break;
case 1:
#if defined(EICRA) && defined(ISC10) && defined(ISC11) && defined(EIMSK)
EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10);
EIMSK |= (1 << INT1);
#elif defined(MCUCR) && defined(ISC10) && defined(ISC11) && defined(GICR)
MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10);
GICR |= (1 << INT1);
#elif defined(MCUCR) && defined(ISC10) && defined(GIMSK) && defined(GIMSK)
MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10);
GIMSK |= (1 << INT1);
#else
#warning attachInterrupt may need some more work for this cpu (case 1)
#endif
break;
case 2:
#if defined(EICRA) && defined(ISC20) && defined(ISC21) && defined(EIMSK)
EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20);
EIMSK |= (1 << INT2);
#elif defined(MCUCR) && defined(ISC20) && defined(ISC21) && defined(GICR)
MCUCR = (MCUCR & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20);
GICR |= (1 << INT2);
#elif defined(MCUCR) && defined(ISC20) && defined(GIMSK) && defined(GIMSK)
MCUCR = (MCUCR & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20);
GIMSK |= (1 << INT2);
#endif
break;
#endif
}
}
}
void detachInterrupt(uint8_t interruptNum) {
if(interruptNum < EXTERNAL_NUM_INTERRUPTS) {
// Disable the interrupt. (We can't assume that interruptNum is equal
// to the number of the EIMSK bit to clear, as this isn't true on the
// ATmega8. There, INT0 is 6 and INT1 is 7.)
switch (interruptNum) {
#if defined(__AVR_ATmega32U4__)
case 0:
EIMSK &= ~(1<<INT0);
break;
case 1:
EIMSK &= ~(1<<INT1);
break;
case 2:
EIMSK &= ~(1<<INT2);
break;
case 3:
EIMSK &= ~(1<<INT3);
break;
#elif defined(EICRA) && defined(EICRB) && defined(EIMSK)
case 2:
EIMSK &= ~(1 << INT0);
break;
case 3:
EIMSK &= ~(1 << INT1);
break;
case 4:
EIMSK &= ~(1 << INT2);
break;
case 5:
EIMSK &= ~(1 << INT3);
break;
case 0:
EIMSK &= ~(1 << INT4);
break;
case 1:
EIMSK &= ~(1 << INT5);
break;
case 6:
EIMSK &= ~(1 << INT6);
break;
case 7:
EIMSK &= ~(1 << INT7);
break;
#else
case 0:
#if defined(EIMSK) && defined(INT0)
EIMSK &= ~(1 << INT0);
#elif defined(GICR) && defined(ISC00)
GICR &= ~(1 << INT0); // atmega32
#elif defined(GIMSK) && defined(INT0)
GIMSK &= ~(1 << INT0);
#else
#error detachInterrupt not finished for this cpu
#endif
break;
case 1:
#if defined(EIMSK) && defined(INT1)
EIMSK &= ~(1 << INT1);
#elif defined(GICR) && defined(INT1)
GICR &= ~(1 << INT1); // atmega32
#elif defined(GIMSK) && defined(INT1)
GIMSK &= ~(1 << INT1);
#else
#warning detachInterrupt may need some more work for this cpu (case 1)
#endif
break;
#endif
}
intFunc[interruptNum] = 0;
}
}
/*
void attachInterruptTwi(void (*userFunc)(void) ) {
twiIntFunc = userFunc;
}
*/
#if defined(__AVR_ATmega32U4__)
SIGNAL(INT0_vect) {
if(intFunc[EXTERNAL_INT_0])
intFunc[EXTERNAL_INT_0]();
}
SIGNAL(INT1_vect) {
if(intFunc[EXTERNAL_INT_1])
intFunc[EXTERNAL_INT_1]();
}
SIGNAL(INT2_vect) {
if(intFunc[EXTERNAL_INT_2])
intFunc[EXTERNAL_INT_2]();
}
SIGNAL(INT3_vect) {
if(intFunc[EXTERNAL_INT_3])
intFunc[EXTERNAL_INT_3]();
}
#elif defined(EICRA) && defined(EICRB)
SIGNAL(INT0_vect) {
if(intFunc[EXTERNAL_INT_2])
intFunc[EXTERNAL_INT_2]();
}
SIGNAL(INT1_vect) {
if(intFunc[EXTERNAL_INT_3])
intFunc[EXTERNAL_INT_3]();
}
SIGNAL(INT2_vect) {
if(intFunc[EXTERNAL_INT_4])
intFunc[EXTERNAL_INT_4]();
}
SIGNAL(INT3_vect) {
if(intFunc[EXTERNAL_INT_5])
intFunc[EXTERNAL_INT_5]();
}
SIGNAL(INT4_vect) {
if(intFunc[EXTERNAL_INT_0])
intFunc[EXTERNAL_INT_0]();
}
SIGNAL(INT5_vect) {
if(intFunc[EXTERNAL_INT_1])
intFunc[EXTERNAL_INT_1]();
}
SIGNAL(INT6_vect) {
if(intFunc[EXTERNAL_INT_6])
intFunc[EXTERNAL_INT_6]();
}
SIGNAL(INT7_vect) {
if(intFunc[EXTERNAL_INT_7])
intFunc[EXTERNAL_INT_7]();
}
#else
SIGNAL(INT0_vect) {
if(intFunc[EXTERNAL_INT_0])
intFunc[EXTERNAL_INT_0]();
}
SIGNAL(INT1_vect) {
if(intFunc[EXTERNAL_INT_1])
intFunc[EXTERNAL_INT_1]();
}
#if defined(EICRA) && defined(ISC20)
SIGNAL(INT2_vect) {
if(intFunc[EXTERNAL_INT_2])
intFunc[EXTERNAL_INT_2]();
}
#endif
#endif
/*
SIGNAL(SIG_2WIRE_SERIAL) {
if(twiIntFunc)
twiIntFunc();
}
*/

View File

@@ -0,0 +1,60 @@
/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */
/*
Part of the Wiring project - http://wiring.org.co
Copyright (c) 2004-06 Hernando Barragan
Modified 13 August 2006, David A. Mellis for Arduino - http://www.arduino.cc/
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
$Id$
*/
extern "C" {
#include "stdlib.h"
}
void randomSeed(unsigned int seed)
{
if (seed != 0) {
srandom(seed);
}
}
long random(long howbig)
{
if (howbig == 0) {
return 0;
}
return random() % howbig;
}
long random(long howsmall, long howbig)
{
if (howsmall >= howbig) {
return howsmall;
}
long diff = howbig - howsmall;
return random(diff) + howsmall;
}
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
unsigned int makeWord(unsigned int w) { return w; }
unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; }

View File

@@ -0,0 +1,645 @@
/*
WString.cpp - String library for Wiring & Arduino
...mostly rewritten by Paul Stoffregen...
Copyright (c) 2009-10 Hernando Barragan. All rights reserved.
Copyright 2011, Paul Stoffregen, paul@pjrc.com
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "WString.h"
/*********************************************/
/* Constructors */
/*********************************************/
String::String(const char *cstr)
{
init();
if (cstr) copy(cstr, strlen(cstr));
}
String::String(const String &value)
{
init();
*this = value;
}
#ifdef __GXX_EXPERIMENTAL_CXX0X__
String::String(String &&rval)
{
init();
move(rval);
}
String::String(StringSumHelper &&rval)
{
init();
move(rval);
}
#endif
String::String(char c)
{
init();
char buf[2];
buf[0] = c;
buf[1] = 0;
*this = buf;
}
String::String(unsigned char value, unsigned char base)
{
init();
char buf[9];
utoa(value, buf, base);
*this = buf;
}
String::String(int value, unsigned char base)
{
init();
char buf[18];
itoa(value, buf, base);
*this = buf;
}
String::String(unsigned int value, unsigned char base)
{
init();
char buf[17];
utoa(value, buf, base);
*this = buf;
}
String::String(long value, unsigned char base)
{
init();
char buf[34];
ltoa(value, buf, base);
*this = buf;
}
String::String(unsigned long value, unsigned char base)
{
init();
char buf[33];
ultoa(value, buf, base);
*this = buf;
}
String::~String()
{
free(buffer);
}
/*********************************************/
/* Memory Management */
/*********************************************/
inline void String::init(void)
{
buffer = NULL;
capacity = 0;
len = 0;
flags = 0;
}
void String::invalidate(void)
{
if (buffer) free(buffer);
buffer = NULL;
capacity = len = 0;
}
unsigned char String::reserve(unsigned int size)
{
if (buffer && capacity >= size) return 1;
if (changeBuffer(size)) {
if (len == 0) buffer[0] = 0;
return 1;
}
return 0;
}
unsigned char String::changeBuffer(unsigned int maxStrLen)
{
char *newbuffer = (char *)realloc(buffer, maxStrLen + 1);
if (newbuffer) {
buffer = newbuffer;
capacity = maxStrLen;
return 1;
}
return 0;
}
/*********************************************/
/* Copy and Move */
/*********************************************/
String & String::copy(const char *cstr, unsigned int length)
{
if (!reserve(length)) {
invalidate();
return *this;
}
len = length;
strcpy(buffer, cstr);
return *this;
}
#ifdef __GXX_EXPERIMENTAL_CXX0X__
void String::move(String &rhs)
{
if (buffer) {
if (capacity >= rhs.len) {
strcpy(buffer, rhs.buffer);
len = rhs.len;
rhs.len = 0;
return;
} else {
free(buffer);
}
}
buffer = rhs.buffer;
capacity = rhs.capacity;
len = rhs.len;
rhs.buffer = NULL;
rhs.capacity = 0;
rhs.len = 0;
}
#endif
String & String::operator = (const String &rhs)
{
if (this == &rhs) return *this;
if (rhs.buffer) copy(rhs.buffer, rhs.len);
else invalidate();
return *this;
}
#ifdef __GXX_EXPERIMENTAL_CXX0X__
String & String::operator = (String &&rval)
{
if (this != &rval) move(rval);
return *this;
}
String & String::operator = (StringSumHelper &&rval)
{
if (this != &rval) move(rval);
return *this;
}
#endif
String & String::operator = (const char *cstr)
{
if (cstr) copy(cstr, strlen(cstr));
else invalidate();
return *this;
}
/*********************************************/
/* concat */
/*********************************************/
unsigned char String::concat(const String &s)
{
return concat(s.buffer, s.len);
}
unsigned char String::concat(const char *cstr, unsigned int length)
{
unsigned int newlen = len + length;
if (!cstr) return 0;
if (length == 0) return 1;
if (!reserve(newlen)) return 0;
strcpy(buffer + len, cstr);
len = newlen;
return 1;
}
unsigned char String::concat(const char *cstr)
{
if (!cstr) return 0;
return concat(cstr, strlen(cstr));
}
unsigned char String::concat(char c)
{
char buf[2];
buf[0] = c;
buf[1] = 0;
return concat(buf, 1);
}
unsigned char String::concat(unsigned char num)
{
char buf[4];
itoa(num, buf, 10);
return concat(buf, strlen(buf));
}
unsigned char String::concat(int num)
{
char buf[7];
itoa(num, buf, 10);
return concat(buf, strlen(buf));
}
unsigned char String::concat(unsigned int num)
{
char buf[6];
utoa(num, buf, 10);
return concat(buf, strlen(buf));
}
unsigned char String::concat(long num)
{
char buf[12];
ltoa(num, buf, 10);
return concat(buf, strlen(buf));
}
unsigned char String::concat(unsigned long num)
{
char buf[11];
ultoa(num, buf, 10);
return concat(buf, strlen(buf));
}
/*********************************************/
/* Concatenate */
/*********************************************/
StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(rhs.buffer, rhs.len)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!cstr || !a.concat(cstr, strlen(cstr))) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, char c)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(c)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(num)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, int num)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(num)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(num)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, long num)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(num)) a.invalidate();
return a;
}
StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num)
{
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
if (!a.concat(num)) a.invalidate();
return a;
}
/*********************************************/
/* Comparison */
/*********************************************/
int String::compareTo(const String &s) const
{
if (!buffer || !s.buffer) {
if (s.buffer && s.len > 0) return 0 - *(unsigned char *)s.buffer;
if (buffer && len > 0) return *(unsigned char *)buffer;
return 0;
}
return strcmp(buffer, s.buffer);
}
unsigned char String::equals(const String &s2) const
{
return (len == s2.len && compareTo(s2) == 0);
}
unsigned char String::equals(const char *cstr) const
{
if (len == 0) return (cstr == NULL || *cstr == 0);
if (cstr == NULL) return buffer[0] == 0;
return strcmp(buffer, cstr) == 0;
}
unsigned char String::operator<(const String &rhs) const
{
return compareTo(rhs) < 0;
}
unsigned char String::operator>(const String &rhs) const
{
return compareTo(rhs) > 0;
}
unsigned char String::operator<=(const String &rhs) const
{
return compareTo(rhs) <= 0;
}
unsigned char String::operator>=(const String &rhs) const
{
return compareTo(rhs) >= 0;
}
unsigned char String::equalsIgnoreCase( const String &s2 ) const
{
if (this == &s2) return 1;
if (len != s2.len) return 0;
if (len == 0) return 1;
const char *p1 = buffer;
const char *p2 = s2.buffer;
while (*p1) {
if (tolower(*p1++) != tolower(*p2++)) return 0;
}
return 1;
}
unsigned char String::startsWith( const String &s2 ) const
{
if (len < s2.len) return 0;
return startsWith(s2, 0);
}
unsigned char String::startsWith( const String &s2, unsigned int offset ) const
{
if (offset > len - s2.len || !buffer || !s2.buffer) return 0;
return strncmp( &buffer[offset], s2.buffer, s2.len ) == 0;
}
unsigned char String::endsWith( const String &s2 ) const
{
if ( len < s2.len || !buffer || !s2.buffer) return 0;
return strcmp(&buffer[len - s2.len], s2.buffer) == 0;
}
/*********************************************/
/* Character Access */
/*********************************************/
char String::charAt(unsigned int loc) const
{
return operator[](loc);
}
void String::setCharAt(unsigned int loc, char c)
{
if (loc < len) buffer[loc] = c;
}
char & String::operator[](unsigned int index)
{
static char dummy_writable_char;
if (index >= len || !buffer) {
dummy_writable_char = 0;
return dummy_writable_char;
}
return buffer[index];
}
char String::operator[]( unsigned int index ) const
{
if (index >= len || !buffer) return 0;
return buffer[index];
}
void String::getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index) const
{
if (!bufsize || !buf) return;
if (index >= len) {
buf[0] = 0;
return;
}
unsigned int n = bufsize - 1;
if (n > len - index) n = len - index;
strncpy((char *)buf, buffer + index, n);
buf[n] = 0;
}
/*********************************************/
/* Search */
/*********************************************/
int String::indexOf(char c) const
{
return indexOf(c, 0);
}
int String::indexOf( char ch, unsigned int fromIndex ) const
{
if (fromIndex >= len) return -1;
const char* temp = strchr(buffer + fromIndex, ch);
if (temp == NULL) return -1;
return temp - buffer;
}
int String::indexOf(const String &s2) const
{
return indexOf(s2, 0);
}
int String::indexOf(const String &s2, unsigned int fromIndex) const
{
if (fromIndex >= len) return -1;
const char *found = strstr(buffer + fromIndex, s2.buffer);
if (found == NULL) return -1;
return found - buffer;
}
int String::lastIndexOf( char theChar ) const
{
return lastIndexOf(theChar, len - 1);
}
int String::lastIndexOf(char ch, unsigned int fromIndex) const
{
if (fromIndex >= len) return -1;
char tempchar = buffer[fromIndex + 1];
buffer[fromIndex + 1] = '\0';
char* temp = strrchr( buffer, ch );
buffer[fromIndex + 1] = tempchar;
if (temp == NULL) return -1;
return temp - buffer;
}
int String::lastIndexOf(const String &s2) const
{
return lastIndexOf(s2, len - s2.len);
}
int String::lastIndexOf(const String &s2, unsigned int fromIndex) const
{
if (s2.len == 0 || len == 0 || s2.len > len) return -1;
if (fromIndex >= len) fromIndex = len - 1;
int found = -1;
for (char *p = buffer; p <= buffer + fromIndex; p++) {
p = strstr(p, s2.buffer);
if (!p) break;
if ((unsigned int)(p - buffer) <= fromIndex) found = p - buffer;
}
return found;
}
String String::substring( unsigned int left ) const
{
return substring(left, len);
}
String String::substring(unsigned int left, unsigned int right) const
{
if (left > right) {
unsigned int temp = right;
right = left;
left = temp;
}
String out;
if (left > len) return out;
if (right > len) right = len;
char temp = buffer[right]; // save the replaced character
buffer[right] = '\0';
out = buffer + left; // pointer arithmetic
buffer[right] = temp; //restore character
return out;
}
/*********************************************/
/* Modification */
/*********************************************/
void String::replace(char find, char replace)
{
if (!buffer) return;
for (char *p = buffer; *p; p++) {
if (*p == find) *p = replace;
}
}
void String::replace(const String& find, const String& replace)
{
if (len == 0 || find.len == 0) return;
int diff = replace.len - find.len;
char *readFrom = buffer;
char *foundAt;
if (diff == 0) {
while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
memcpy(foundAt, replace.buffer, replace.len);
readFrom = foundAt + replace.len;
}
} else if (diff < 0) {
char *writeTo = buffer;
while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
unsigned int n = foundAt - readFrom;
memcpy(writeTo, readFrom, n);
writeTo += n;
memcpy(writeTo, replace.buffer, replace.len);
writeTo += replace.len;
readFrom = foundAt + find.len;
len += diff;
}
strcpy(writeTo, readFrom);
} else {
unsigned int size = len; // compute size needed for result
while ((foundAt = strstr(readFrom, find.buffer)) != NULL) {
readFrom = foundAt + find.len;
size += diff;
}
if (size == len) return;
if (size > capacity && !changeBuffer(size)) return; // XXX: tell user!
int index = len - 1;
while (index >= 0 && (index = lastIndexOf(find, index)) >= 0) {
readFrom = buffer + index + find.len;
memmove(readFrom + diff, readFrom, len - (readFrom - buffer));
len += diff;
buffer[len] = 0;
memcpy(buffer + index, replace.buffer, replace.len);
index--;
}
}
}
void String::toLowerCase(void)
{
if (!buffer) return;
for (char *p = buffer; *p; p++) {
*p = tolower(*p);
}
}
void String::toUpperCase(void)
{
if (!buffer) return;
for (char *p = buffer; *p; p++) {
*p = toupper(*p);
}
}
void String::trim(void)
{
if (!buffer || len == 0) return;
char *begin = buffer;
while (isspace(*begin)) begin++;
char *end = buffer + len - 1;
while (isspace(*end) && end >= begin) end--;
len = end + 1 - begin;
if (begin > buffer) memcpy(buffer, begin, len);
buffer[len] = 0;
}
/*********************************************/
/* Parsing / Conversion */
/*********************************************/
long String::toInt(void) const
{
if (buffer) return atol(buffer);
return 0;
}

View File

@@ -0,0 +1,205 @@
/*
WString.h - String library for Wiring & Arduino
...mostly rewritten by Paul Stoffregen...
Copyright (c) 2009-10 Hernando Barragan. All right reserved.
Copyright 2011, Paul Stoffregen, paul@pjrc.com
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef String_class_h
#define String_class_h
#ifdef __cplusplus
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <avr/pgmspace.h>
// When compiling programs with this class, the following gcc parameters
// dramatically increase performance and memory (RAM) efficiency, typically
// with little or no increase in code size.
// -felide-constructors
// -std=c++0x
class __FlashStringHelper;
#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
// An inherited class for holding the result of a concatenation. These
// result objects are assumed to be writable by subsequent concatenations.
class StringSumHelper;
// The string class
class String
{
// use a function pointer to allow for "if (s)" without the
// complications of an operator bool(). for more information, see:
// http://www.artima.com/cppsource/safebool.html
typedef void (String::*StringIfHelperType)() const;
void StringIfHelper() const {}
public:
// constructors
// creates a copy of the initial value.
// if the initial value is null or invalid, or if memory allocation
// fails, the string will be marked as invalid (i.e. "if (s)" will
// be false).
String(const char *cstr = "");
String(const String &str);
#ifdef __GXX_EXPERIMENTAL_CXX0X__
String(String &&rval);
String(StringSumHelper &&rval);
#endif
explicit String(char c);
explicit String(unsigned char, unsigned char base=10);
explicit String(int, unsigned char base=10);
explicit String(unsigned int, unsigned char base=10);
explicit String(long, unsigned char base=10);
explicit String(unsigned long, unsigned char base=10);
~String(void);
// memory management
// return true on success, false on failure (in which case, the string
// is left unchanged). reserve(0), if successful, will validate an
// invalid string (i.e., "if (s)" will be true afterwards)
unsigned char reserve(unsigned int size);
inline unsigned int length(void) const {return len;}
// creates a copy of the assigned value. if the value is null or
// invalid, or if the memory allocation fails, the string will be
// marked as invalid ("if (s)" will be false).
String & operator = (const String &rhs);
String & operator = (const char *cstr);
#ifdef __GXX_EXPERIMENTAL_CXX0X__
String & operator = (String &&rval);
String & operator = (StringSumHelper &&rval);
#endif
// concatenate (works w/ built-in types)
// returns true on success, false on failure (in which case, the string
// is left unchanged). if the argument is null or invalid, the
// concatenation is considered unsucessful.
unsigned char concat(const String &str);
unsigned char concat(const char *cstr);
unsigned char concat(char c);
unsigned char concat(unsigned char c);
unsigned char concat(int num);
unsigned char concat(unsigned int num);
unsigned char concat(long num);
unsigned char concat(unsigned long num);
// if there's not enough memory for the concatenated value, the string
// will be left unchanged (but this isn't signalled in any way)
String & operator += (const String &rhs) {concat(rhs); return (*this);}
String & operator += (const char *cstr) {concat(cstr); return (*this);}
String & operator += (char c) {concat(c); return (*this);}
String & operator += (unsigned char num) {concat(num); return (*this);}
String & operator += (int num) {concat(num); return (*this);}
String & operator += (unsigned int num) {concat(num); return (*this);}
String & operator += (long num) {concat(num); return (*this);}
String & operator += (unsigned long num) {concat(num); return (*this);}
friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs);
friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr);
friend StringSumHelper & operator + (const StringSumHelper &lhs, char c);
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, int num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, long num);
friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num);
// comparison (only works w/ Strings and "strings")
operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; }
int compareTo(const String &s) const;
unsigned char equals(const String &s) const;
unsigned char equals(const char *cstr) const;
unsigned char operator == (const String &rhs) const {return equals(rhs);}
unsigned char operator == (const char *cstr) const {return equals(cstr);}
unsigned char operator != (const String &rhs) const {return !equals(rhs);}
unsigned char operator != (const char *cstr) const {return !equals(cstr);}
unsigned char operator < (const String &rhs) const;
unsigned char operator > (const String &rhs) const;
unsigned char operator <= (const String &rhs) const;
unsigned char operator >= (const String &rhs) const;
unsigned char equalsIgnoreCase(const String &s) const;
unsigned char startsWith( const String &prefix) const;
unsigned char startsWith(const String &prefix, unsigned int offset) const;
unsigned char endsWith(const String &suffix) const;
// character acccess
char charAt(unsigned int index) const;
void setCharAt(unsigned int index, char c);
char operator [] (unsigned int index) const;
char& operator [] (unsigned int index);
void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const;
void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const
{getBytes((unsigned char *)buf, bufsize, index);}
// search
int indexOf( char ch ) const;
int indexOf( char ch, unsigned int fromIndex ) const;
int indexOf( const String &str ) const;
int indexOf( const String &str, unsigned int fromIndex ) const;
int lastIndexOf( char ch ) const;
int lastIndexOf( char ch, unsigned int fromIndex ) const;
int lastIndexOf( const String &str ) const;
int lastIndexOf( const String &str, unsigned int fromIndex ) const;
String substring( unsigned int beginIndex ) const;
String substring( unsigned int beginIndex, unsigned int endIndex ) const;
// modification
void replace(char find, char replace);
void replace(const String& find, const String& replace);
void toLowerCase(void);
void toUpperCase(void);
void trim(void);
// parsing/conversion
long toInt(void) const;
protected:
char *buffer; // the actual char array
unsigned int capacity; // the array length minus one (for the '\0')
unsigned int len; // the String length (not counting the '\0')
unsigned char flags; // unused, for future features
protected:
void init(void);
void invalidate(void);
unsigned char changeBuffer(unsigned int maxStrLen);
unsigned char concat(const char *cstr, unsigned int length);
// copy and move
String & copy(const char *cstr, unsigned int length);
#ifdef __GXX_EXPERIMENTAL_CXX0X__
void move(String &rhs);
#endif
};
class StringSumHelper : public String
{
public:
StringSumHelper(const String &s) : String(s) {}
StringSumHelper(const char *p) : String(p) {}
StringSumHelper(char c) : String(c) {}
StringSumHelper(unsigned char num) : String(num) {}
StringSumHelper(int num) : String(num) {}
StringSumHelper(unsigned int num) : String(num) {}
StringSumHelper(long num) : String(num) {}
StringSumHelper(unsigned long num) : String(num) {}
};
#endif // __cplusplus
#endif // String_class_h

View File

@@ -0,0 +1,515 @@
#ifndef Binary_h
#define Binary_h
#define B0 0
#define B00 0
#define B000 0
#define B0000 0
#define B00000 0
#define B000000 0
#define B0000000 0
#define B00000000 0
#define B1 1
#define B01 1
#define B001 1
#define B0001 1
#define B00001 1
#define B000001 1
#define B0000001 1
#define B00000001 1
#define B10 2
#define B010 2
#define B0010 2
#define B00010 2
#define B000010 2
#define B0000010 2
#define B00000010 2
#define B11 3
#define B011 3
#define B0011 3
#define B00011 3
#define B000011 3
#define B0000011 3
#define B00000011 3
#define B100 4
#define B0100 4
#define B00100 4
#define B000100 4
#define B0000100 4
#define B00000100 4
#define B101 5
#define B0101 5
#define B00101 5
#define B000101 5
#define B0000101 5
#define B00000101 5
#define B110 6
#define B0110 6
#define B00110 6
#define B000110 6
#define B0000110 6
#define B00000110 6
#define B111 7
#define B0111 7
#define B00111 7
#define B000111 7
#define B0000111 7
#define B00000111 7
#define B1000 8
#define B01000 8
#define B001000 8
#define B0001000 8
#define B00001000 8
#define B1001 9
#define B01001 9
#define B001001 9
#define B0001001 9
#define B00001001 9
#define B1010 10
#define B01010 10
#define B001010 10
#define B0001010 10
#define B00001010 10
#define B1011 11
#define B01011 11
#define B001011 11
#define B0001011 11
#define B00001011 11
#define B1100 12
#define B01100 12
#define B001100 12
#define B0001100 12
#define B00001100 12
#define B1101 13
#define B01101 13
#define B001101 13
#define B0001101 13
#define B00001101 13
#define B1110 14
#define B01110 14
#define B001110 14
#define B0001110 14
#define B00001110 14
#define B1111 15
#define B01111 15
#define B001111 15
#define B0001111 15
#define B00001111 15
#define B10000 16
#define B010000 16
#define B0010000 16
#define B00010000 16
#define B10001 17
#define B010001 17
#define B0010001 17
#define B00010001 17
#define B10010 18
#define B010010 18
#define B0010010 18
#define B00010010 18
#define B10011 19
#define B010011 19
#define B0010011 19
#define B00010011 19
#define B10100 20
#define B010100 20
#define B0010100 20
#define B00010100 20
#define B10101 21
#define B010101 21
#define B0010101 21
#define B00010101 21
#define B10110 22
#define B010110 22
#define B0010110 22
#define B00010110 22
#define B10111 23
#define B010111 23
#define B0010111 23
#define B00010111 23
#define B11000 24
#define B011000 24
#define B0011000 24
#define B00011000 24
#define B11001 25
#define B011001 25
#define B0011001 25
#define B00011001 25
#define B11010 26
#define B011010 26
#define B0011010 26
#define B00011010 26
#define B11011 27
#define B011011 27
#define B0011011 27
#define B00011011 27
#define B11100 28
#define B011100 28
#define B0011100 28
#define B00011100 28
#define B11101 29
#define B011101 29
#define B0011101 29
#define B00011101 29
#define B11110 30
#define B011110 30
#define B0011110 30
#define B00011110 30
#define B11111 31
#define B011111 31
#define B0011111 31
#define B00011111 31
#define B100000 32
#define B0100000 32
#define B00100000 32
#define B100001 33
#define B0100001 33
#define B00100001 33
#define B100010 34
#define B0100010 34
#define B00100010 34
#define B100011 35
#define B0100011 35
#define B00100011 35
#define B100100 36
#define B0100100 36
#define B00100100 36
#define B100101 37
#define B0100101 37
#define B00100101 37
#define B100110 38
#define B0100110 38
#define B00100110 38
#define B100111 39
#define B0100111 39
#define B00100111 39
#define B101000 40
#define B0101000 40
#define B00101000 40
#define B101001 41
#define B0101001 41
#define B00101001 41
#define B101010 42
#define B0101010 42
#define B00101010 42
#define B101011 43
#define B0101011 43
#define B00101011 43
#define B101100 44
#define B0101100 44
#define B00101100 44
#define B101101 45
#define B0101101 45
#define B00101101 45
#define B101110 46
#define B0101110 46
#define B00101110 46
#define B101111 47
#define B0101111 47
#define B00101111 47
#define B110000 48
#define B0110000 48
#define B00110000 48
#define B110001 49
#define B0110001 49
#define B00110001 49
#define B110010 50
#define B0110010 50
#define B00110010 50
#define B110011 51
#define B0110011 51
#define B00110011 51
#define B110100 52
#define B0110100 52
#define B00110100 52
#define B110101 53
#define B0110101 53
#define B00110101 53
#define B110110 54
#define B0110110 54
#define B00110110 54
#define B110111 55
#define B0110111 55
#define B00110111 55
#define B111000 56
#define B0111000 56
#define B00111000 56
#define B111001 57
#define B0111001 57
#define B00111001 57
#define B111010 58
#define B0111010 58
#define B00111010 58
#define B111011 59
#define B0111011 59
#define B00111011 59
#define B111100 60
#define B0111100 60
#define B00111100 60
#define B111101 61
#define B0111101 61
#define B00111101 61
#define B111110 62
#define B0111110 62
#define B00111110 62
#define B111111 63
#define B0111111 63
#define B00111111 63
#define B1000000 64
#define B01000000 64
#define B1000001 65
#define B01000001 65
#define B1000010 66
#define B01000010 66
#define B1000011 67
#define B01000011 67
#define B1000100 68
#define B01000100 68
#define B1000101 69
#define B01000101 69
#define B1000110 70
#define B01000110 70
#define B1000111 71
#define B01000111 71
#define B1001000 72
#define B01001000 72
#define B1001001 73
#define B01001001 73
#define B1001010 74
#define B01001010 74
#define B1001011 75
#define B01001011 75
#define B1001100 76
#define B01001100 76
#define B1001101 77
#define B01001101 77
#define B1001110 78
#define B01001110 78
#define B1001111 79
#define B01001111 79
#define B1010000 80
#define B01010000 80
#define B1010001 81
#define B01010001 81
#define B1010010 82
#define B01010010 82
#define B1010011 83
#define B01010011 83
#define B1010100 84
#define B01010100 84
#define B1010101 85
#define B01010101 85
#define B1010110 86
#define B01010110 86
#define B1010111 87
#define B01010111 87
#define B1011000 88
#define B01011000 88
#define B1011001 89
#define B01011001 89
#define B1011010 90
#define B01011010 90
#define B1011011 91
#define B01011011 91
#define B1011100 92
#define B01011100 92
#define B1011101 93
#define B01011101 93
#define B1011110 94
#define B01011110 94
#define B1011111 95
#define B01011111 95
#define B1100000 96
#define B01100000 96
#define B1100001 97
#define B01100001 97
#define B1100010 98
#define B01100010 98
#define B1100011 99
#define B01100011 99
#define B1100100 100
#define B01100100 100
#define B1100101 101
#define B01100101 101
#define B1100110 102
#define B01100110 102
#define B1100111 103
#define B01100111 103
#define B1101000 104
#define B01101000 104
#define B1101001 105
#define B01101001 105
#define B1101010 106
#define B01101010 106
#define B1101011 107
#define B01101011 107
#define B1101100 108
#define B01101100 108
#define B1101101 109
#define B01101101 109
#define B1101110 110
#define B01101110 110
#define B1101111 111
#define B01101111 111
#define B1110000 112
#define B01110000 112
#define B1110001 113
#define B01110001 113
#define B1110010 114
#define B01110010 114
#define B1110011 115
#define B01110011 115
#define B1110100 116
#define B01110100 116
#define B1110101 117
#define B01110101 117
#define B1110110 118
#define B01110110 118
#define B1110111 119
#define B01110111 119
#define B1111000 120
#define B01111000 120
#define B1111001 121
#define B01111001 121
#define B1111010 122
#define B01111010 122
#define B1111011 123
#define B01111011 123
#define B1111100 124
#define B01111100 124
#define B1111101 125
#define B01111101 125
#define B1111110 126
#define B01111110 126
#define B1111111 127
#define B01111111 127
#define B10000000 128
#define B10000001 129
#define B10000010 130
#define B10000011 131
#define B10000100 132
#define B10000101 133
#define B10000110 134
#define B10000111 135
#define B10001000 136
#define B10001001 137
#define B10001010 138
#define B10001011 139
#define B10001100 140
#define B10001101 141
#define B10001110 142
#define B10001111 143
#define B10010000 144
#define B10010001 145
#define B10010010 146
#define B10010011 147
#define B10010100 148
#define B10010101 149
#define B10010110 150
#define B10010111 151
#define B10011000 152
#define B10011001 153
#define B10011010 154
#define B10011011 155
#define B10011100 156
#define B10011101 157
#define B10011110 158
#define B10011111 159
#define B10100000 160
#define B10100001 161
#define B10100010 162
#define B10100011 163
#define B10100100 164
#define B10100101 165
#define B10100110 166
#define B10100111 167
#define B10101000 168
#define B10101001 169
#define B10101010 170
#define B10101011 171
#define B10101100 172
#define B10101101 173
#define B10101110 174
#define B10101111 175
#define B10110000 176
#define B10110001 177
#define B10110010 178
#define B10110011 179
#define B10110100 180
#define B10110101 181
#define B10110110 182
#define B10110111 183
#define B10111000 184
#define B10111001 185
#define B10111010 186
#define B10111011 187
#define B10111100 188
#define B10111101 189
#define B10111110 190
#define B10111111 191
#define B11000000 192
#define B11000001 193
#define B11000010 194
#define B11000011 195
#define B11000100 196
#define B11000101 197
#define B11000110 198
#define B11000111 199
#define B11001000 200
#define B11001001 201
#define B11001010 202
#define B11001011 203
#define B11001100 204
#define B11001101 205
#define B11001110 206
#define B11001111 207
#define B11010000 208
#define B11010001 209
#define B11010010 210
#define B11010011 211
#define B11010100 212
#define B11010101 213
#define B11010110 214
#define B11010111 215
#define B11011000 216
#define B11011001 217
#define B11011010 218
#define B11011011 219
#define B11011100 220
#define B11011101 221
#define B11011110 222
#define B11011111 223
#define B11100000 224
#define B11100001 225
#define B11100010 226
#define B11100011 227
#define B11100100 228
#define B11100101 229
#define B11100110 230
#define B11100111 231
#define B11101000 232
#define B11101001 233
#define B11101010 234
#define B11101011 235
#define B11101100 236
#define B11101101 237
#define B11101110 238
#define B11101111 239
#define B11110000 240
#define B11110001 241
#define B11110010 242
#define B11110011 243
#define B11110100 244
#define B11110101 245
#define B11110110 246
#define B11110111 247
#define B11111000 248
#define B11111001 249
#define B11111010 250
#define B11111011 251
#define B11111100 252
#define B11111101 253
#define B11111110 254
#define B11111111 255
#endif

View File

@@ -0,0 +1,20 @@
#include <Arduino.h>
int main(void)
{
init();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}

View File

@@ -0,0 +1,18 @@
#include <new.h>
void * operator new(size_t size)
{
return malloc(size);
}
void operator delete(void * ptr)
{
free(ptr);
}
int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);};
void __cxa_guard_release (__guard *g) {*(char *)g = 1;};
void __cxa_guard_abort (__guard *) {};
void __cxa_pure_virtual(void) {};

View File

@@ -0,0 +1,22 @@
/* Header to define new/delete operators as they aren't provided by avr-gcc by default
Taken from http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=59453
*/
#ifndef NEW_H
#define NEW_H
#include <stdlib.h>
void * operator new(size_t size);
void operator delete(void * ptr);
__extension__ typedef int __guard __attribute__((mode (__DI__)));
extern "C" int __cxa_guard_acquire(__guard *);
extern "C" void __cxa_guard_release (__guard *);
extern "C" void __cxa_guard_abort (__guard *);
extern "C" void __cxa_pure_virtual(void);
#endif

View File

@@ -0,0 +1,324 @@
/*
wiring.c - Partial implementation of the Wiring API for the ATmega8.
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2005-2006 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
$Id$
*/
#include "wiring_private.h"
// the prescaler is set so that timer0 ticks every 64 clock cycles, and the
// the overflow handler is called every 256 ticks.
#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256))
// the whole number of milliseconds per timer0 overflow
#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000)
// the fractional number of milliseconds per timer0 overflow. we shift right
// by three to fit these numbers into a byte. (for the clock speeds we care
// about - 8 and 16 MHz - this doesn't lose precision.)
#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3)
#define FRACT_MAX (1000 >> 3)
volatile unsigned long timer0_overflow_count = 0;
volatile unsigned long timer0_millis = 0;
static unsigned char timer0_fract = 0;
#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
SIGNAL(TIM0_OVF_vect)
#else
SIGNAL(TIMER0_OVF_vect)
#endif
{
// copy these to local variables so they can be stored in registers
// (volatile variables must be read from memory on every access)
unsigned long m = timer0_millis;
unsigned char f = timer0_fract;
m += MILLIS_INC;
f += FRACT_INC;
if (f >= FRACT_MAX) {
f -= FRACT_MAX;
m += 1;
}
timer0_fract = f;
timer0_millis = m;
timer0_overflow_count++;
}
unsigned long millis()
{
unsigned long m;
uint8_t oldSREG = SREG;
// disable interrupts while we read timer0_millis or we might get an
// inconsistent value (e.g. in the middle of a write to timer0_millis)
cli();
m = timer0_millis;
SREG = oldSREG;
return m;
}
unsigned long micros() {
unsigned long m;
uint8_t oldSREG = SREG, t;
cli();
m = timer0_overflow_count;
#if defined(TCNT0)
t = TCNT0;
#elif defined(TCNT0L)
t = TCNT0L;
#else
#error TIMER 0 not defined
#endif
#ifdef TIFR0
if ((TIFR0 & _BV(TOV0)) && (t < 255))
m++;
#else
if ((TIFR & _BV(TOV0)) && (t < 255))
m++;
#endif
SREG = oldSREG;
return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond());
}
void delay(unsigned long ms)
{
uint16_t start = (uint16_t)micros();
while (ms > 0) {
if (((uint16_t)micros() - start) >= 1000) {
ms--;
start += 1000;
}
}
}
/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */
void delayMicroseconds(unsigned int us)
{
// calling avrlib's delay_us() function with low values (e.g. 1 or
// 2 microseconds) gives delays longer than desired.
//delay_us(us);
#if F_CPU >= 20000000L
// for the 20 MHz clock on rare Arduino boards
// for a one-microsecond delay, simply wait 2 cycle and return. The overhead
// of the function call yields a delay of exactly a one microsecond.
__asm__ __volatile__ (
"nop" "\n\t"
"nop"); //just waiting 2 cycle
if (--us == 0)
return;
// the following loop takes a 1/5 of a microsecond (4 cycles)
// per iteration, so execute it five times for each microsecond of
// delay requested.
us = (us<<2) + us; // x5 us
// account for the time taken in the preceeding commands.
us -= 2;
#elif F_CPU >= 16000000L
// for the 16 MHz clock on most Arduino boards
// for a one-microsecond delay, simply return. the overhead
// of the function call yields a delay of approximately 1 1/8 us.
if (--us == 0)
return;
// the following loop takes a quarter of a microsecond (4 cycles)
// per iteration, so execute it four times for each microsecond of
// delay requested.
us <<= 2;
// account for the time taken in the preceeding commands.
us -= 2;
#else
// for the 8 MHz internal clock on the ATmega168
// for a one- or two-microsecond delay, simply return. the overhead of
// the function calls takes more than two microseconds. can't just
// subtract two, since us is unsigned; we'd overflow.
if (--us == 0)
return;
if (--us == 0)
return;
// the following loop takes half of a microsecond (4 cycles)
// per iteration, so execute it twice for each microsecond of
// delay requested.
us <<= 1;
// partially compensate for the time taken by the preceeding commands.
// we can't subtract any more than this or we'd overflow w/ small delays.
us--;
#endif
// busy wait
__asm__ __volatile__ (
"1: sbiw %0,1" "\n\t" // 2 cycles
"brne 1b" : "=w" (us) : "0" (us) // 2 cycles
);
}
void init()
{
// this needs to be called before setup() or some functions won't
// work there
sei();
// on the ATmega168, timer 0 is also used for fast hardware pwm
// (using phase-correct PWM would mean that timer 0 overflowed half as often
// resulting in different millis() behavior on the ATmega8 and ATmega168)
#if defined(TCCR0A) && defined(WGM01)
sbi(TCCR0A, WGM01);
sbi(TCCR0A, WGM00);
#endif
// set timer 0 prescale factor to 64
#if defined(__AVR_ATmega128__)
// CPU specific: different values for the ATmega128
sbi(TCCR0, CS02);
#elif defined(TCCR0) && defined(CS01) && defined(CS00)
// this combination is for the standard atmega8
sbi(TCCR0, CS01);
sbi(TCCR0, CS00);
#elif defined(TCCR0B) && defined(CS01) && defined(CS00)
// this combination is for the standard 168/328/1280/2560
sbi(TCCR0B, CS01);
sbi(TCCR0B, CS00);
#elif defined(TCCR0A) && defined(CS01) && defined(CS00)
// this combination is for the __AVR_ATmega645__ series
sbi(TCCR0A, CS01);
sbi(TCCR0A, CS00);
#else
#error Timer 0 prescale factor 64 not set correctly
#endif
// enable timer 0 overflow interrupt
#if defined(TIMSK) && defined(TOIE0)
sbi(TIMSK, TOIE0);
#elif defined(TIMSK0) && defined(TOIE0)
sbi(TIMSK0, TOIE0);
#else
#error Timer 0 overflow interrupt not set correctly
#endif
// timers 1 and 2 are used for phase-correct hardware pwm
// this is better for motors as it ensures an even waveform
// note, however, that fast pwm mode can achieve a frequency of up
// 8 MHz (with a 16 MHz clock) at 50% duty cycle
#if defined(TCCR1B) && defined(CS11) && defined(CS10)
TCCR1B = 0;
// set timer 1 prescale factor to 64
sbi(TCCR1B, CS11);
#if F_CPU >= 8000000L
sbi(TCCR1B, CS10);
#endif
#elif defined(TCCR1) && defined(CS11) && defined(CS10)
sbi(TCCR1, CS11);
#if F_CPU >= 8000000L
sbi(TCCR1, CS10);
#endif
#endif
// put timer 1 in 8-bit phase correct pwm mode
#if defined(TCCR1A) && defined(WGM10)
sbi(TCCR1A, WGM10);
#elif defined(TCCR1)
#warning this needs to be finished
#endif
// set timer 2 prescale factor to 64
#if defined(TCCR2) && defined(CS22)
sbi(TCCR2, CS22);
#elif defined(TCCR2B) && defined(CS22)
sbi(TCCR2B, CS22);
#else
#warning Timer 2 not finished (may not be present on this CPU)
#endif
// configure timer 2 for phase correct pwm (8-bit)
#if defined(TCCR2) && defined(WGM20)
sbi(TCCR2, WGM20);
#elif defined(TCCR2A) && defined(WGM20)
sbi(TCCR2A, WGM20);
#else
#warning Timer 2 not finished (may not be present on this CPU)
#endif
#if defined(TCCR3B) && defined(CS31) && defined(WGM30)
sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64
sbi(TCCR3B, CS30);
sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode
#endif
#if defined(TCCR4A) && defined(TCCR4B) && defined(TCCR4D) /* beginning of timer4 block for 32U4 and similar */
sbi(TCCR4B, CS42); // set timer4 prescale factor to 64
sbi(TCCR4B, CS41);
sbi(TCCR4B, CS40);
sbi(TCCR4D, WGM40); // put timer 4 in phase- and frequency-correct PWM mode
sbi(TCCR4A, PWM4A); // enable PWM mode for comparator OCR4A
sbi(TCCR4C, PWM4D); // enable PWM mode for comparator OCR4D
#else /* beginning of timer4 block for ATMEGA1280 and ATMEGA2560 */
#if defined(TCCR4B) && defined(CS41) && defined(WGM40)
sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64
sbi(TCCR4B, CS40);
sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode
#endif
#endif /* end timer4 block for ATMEGA1280/2560 and similar */
#if defined(TCCR5B) && defined(CS51) && defined(WGM50)
sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64
sbi(TCCR5B, CS50);
sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode
#endif
#if defined(ADCSRA)
// set a2d prescale factor to 128
// 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range.
// XXX: this will not work properly for other clock speeds, and
// this code should use F_CPU to determine the prescale factor.
sbi(ADCSRA, ADPS2);
sbi(ADCSRA, ADPS1);
sbi(ADCSRA, ADPS0);
// enable a2d conversions
sbi(ADCSRA, ADEN);
#endif
// the bootloader connects pins 0 and 1 to the USART; disconnect them
// here so they can be used as normal digital i/o; they will be
// reconnected in Serial.begin()
#if defined(UCSRB)
UCSRB = 0;
#elif defined(UCSR0B)
UCSR0B = 0;
#endif
}

View File

@@ -0,0 +1,282 @@
/*
wiring_analog.c - analog input and output
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2005-2006 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
Modified 28 September 2010 by Mark Sproul
$Id: wiring.c 248 2007-02-03 15:36:30Z mellis $
*/
#include "wiring_private.h"
#include "pins_arduino.h"
uint8_t analog_reference = DEFAULT;
void analogReference(uint8_t mode)
{
// can't actually set the register here because the default setting
// will connect AVCC and the AREF pin, which would cause a short if
// there's something connected to AREF.
analog_reference = mode;
}
int analogRead(uint8_t pin)
{
uint8_t low, high;
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
if (pin >= 54) pin -= 54; // allow for channel or pin numbers
#elif defined(__AVR_ATmega32U4__)
if (pin >= 18) pin -= 18; // allow for channel or pin numbers
#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__)
if (pin >= 24) pin -= 24; // allow for channel or pin numbers
#else
if (pin >= 14) pin -= 14; // allow for channel or pin numbers
#endif
#if defined(__AVR_ATmega32U4__)
pin = analogPinToChannel(pin);
ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5);
#elif defined(ADCSRB) && defined(MUX5)
// the MUX5 bit of ADCSRB selects whether we're reading from channels
// 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high).
ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5);
#endif
// set the analog reference (high two bits of ADMUX) and select the
// channel (low 4 bits). this also sets ADLAR (left-adjust result)
// to 0 (the default).
#if defined(ADMUX)
ADMUX = (analog_reference << 6) | (pin & 0x07);
#endif
// without a delay, we seem to read from the wrong channel
//delay(1);
#if defined(ADCSRA) && defined(ADCL)
// start the conversion
sbi(ADCSRA, ADSC);
// ADSC is cleared when the conversion finishes
while (bit_is_set(ADCSRA, ADSC));
// we have to read ADCL first; doing so locks both ADCL
// and ADCH until ADCH is read. reading ADCL second would
// cause the results of each conversion to be discarded,
// as ADCL and ADCH would be locked when it completed.
low = ADCL;
high = ADCH;
#else
// we dont have an ADC, return 0
low = 0;
high = 0;
#endif
// combine the two bytes
return (high << 8) | low;
}
// Right now, PWM output only works on the pins with
// hardware support. These are defined in the appropriate
// pins_*.c file. For the rest of the pins, we default
// to digital output.
void analogWrite(uint8_t pin, int val)
{
// We need to make sure the PWM output is enabled for those pins
// that support it, as we turn it off when digitally reading or
// writing with them. Also, make sure the pin is in output mode
// for consistenty with Wiring, which doesn't require a pinMode
// call for the analog output pins.
pinMode(pin, OUTPUT);
if (val == 0)
{
digitalWrite(pin, LOW);
}
else if (val == 255)
{
digitalWrite(pin, HIGH);
}
else
{
switch(digitalPinToTimer(pin))
{
// XXX fix needed for atmega8
#if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__)
case TIMER0A:
// connect pwm to pin on timer 0
sbi(TCCR0, COM00);
OCR0 = val; // set pwm duty
break;
#endif
#if defined(TCCR0A) && defined(COM0A1)
case TIMER0A:
// connect pwm to pin on timer 0, channel A
sbi(TCCR0A, COM0A1);
OCR0A = val; // set pwm duty
break;
#endif
#if defined(TCCR0A) && defined(COM0B1)
case TIMER0B:
// connect pwm to pin on timer 0, channel B
sbi(TCCR0A, COM0B1);
OCR0B = val; // set pwm duty
break;
#endif
#if defined(TCCR1A) && defined(COM1A1)
case TIMER1A:
// connect pwm to pin on timer 1, channel A
sbi(TCCR1A, COM1A1);
OCR1A = val; // set pwm duty
break;
#endif
#if defined(TCCR1A) && defined(COM1B1)
case TIMER1B:
// connect pwm to pin on timer 1, channel B
sbi(TCCR1A, COM1B1);
OCR1B = val; // set pwm duty
break;
#endif
#if defined(TCCR2) && defined(COM21)
case TIMER2:
// connect pwm to pin on timer 2
sbi(TCCR2, COM21);
OCR2 = val; // set pwm duty
break;
#endif
#if defined(TCCR2A) && defined(COM2A1)
case TIMER2A:
// connect pwm to pin on timer 2, channel A
sbi(TCCR2A, COM2A1);
OCR2A = val; // set pwm duty
break;
#endif
#if defined(TCCR2A) && defined(COM2B1)
case TIMER2B:
// connect pwm to pin on timer 2, channel B
sbi(TCCR2A, COM2B1);
OCR2B = val; // set pwm duty
break;
#endif
#if defined(TCCR3A) && defined(COM3A1)
case TIMER3A:
// connect pwm to pin on timer 3, channel A
sbi(TCCR3A, COM3A1);
OCR3A = val; // set pwm duty
break;
#endif
#if defined(TCCR3A) && defined(COM3B1)
case TIMER3B:
// connect pwm to pin on timer 3, channel B
sbi(TCCR3A, COM3B1);
OCR3B = val; // set pwm duty
break;
#endif
#if defined(TCCR3A) && defined(COM3C1)
case TIMER3C:
// connect pwm to pin on timer 3, channel C
sbi(TCCR3A, COM3C1);
OCR3C = val; // set pwm duty
break;
#endif
#if defined(TCCR4A)
case TIMER4A:
//connect pwm to pin on timer 4, channel A
sbi(TCCR4A, COM4A1);
#if defined(COM4A0) // only used on 32U4
cbi(TCCR4A, COM4A0);
#endif
OCR4A = val; // set pwm duty
break;
#endif
#if defined(TCCR4A) && defined(COM4B1)
case TIMER4B:
// connect pwm to pin on timer 4, channel B
sbi(TCCR4A, COM4B1);
OCR4B = val; // set pwm duty
break;
#endif
#if defined(TCCR4A) && defined(COM4C1)
case TIMER4C:
// connect pwm to pin on timer 4, channel C
sbi(TCCR4A, COM4C1);
OCR4C = val; // set pwm duty
break;
#endif
#if defined(TCCR4C) && defined(COM4D1)
case TIMER4D:
// connect pwm to pin on timer 4, channel D
sbi(TCCR4C, COM4D1);
#if defined(COM4D0) // only used on 32U4
cbi(TCCR4C, COM4D0);
#endif
OCR4D = val; // set pwm duty
break;
#endif
#if defined(TCCR5A) && defined(COM5A1)
case TIMER5A:
// connect pwm to pin on timer 5, channel A
sbi(TCCR5A, COM5A1);
OCR5A = val; // set pwm duty
break;
#endif
#if defined(TCCR5A) && defined(COM5B1)
case TIMER5B:
// connect pwm to pin on timer 5, channel B
sbi(TCCR5A, COM5B1);
OCR5B = val; // set pwm duty
break;
#endif
#if defined(TCCR5A) && defined(COM5C1)
case TIMER5C:
// connect pwm to pin on timer 5, channel C
sbi(TCCR5A, COM5C1);
OCR5C = val; // set pwm duty
break;
#endif
case NOT_ON_TIMER:
default:
if (val < 128) {
digitalWrite(pin, LOW);
} else {
digitalWrite(pin, HIGH);
}
}
}
}

View File

@@ -0,0 +1,178 @@
/*
wiring_digital.c - digital input and output functions
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2005-2006 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
Modified 28 September 2010 by Mark Sproul
$Id: wiring.c 248 2007-02-03 15:36:30Z mellis $
*/
#define ARDUINO_MAIN
#include "wiring_private.h"
#include "pins_arduino.h"
void pinMode(uint8_t pin, uint8_t mode)
{
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
volatile uint8_t *reg, *out;
if (port == NOT_A_PIN) return;
// JWS: can I let the optimizer do this?
reg = portModeRegister(port);
out = portOutputRegister(port);
if (mode == INPUT) {
uint8_t oldSREG = SREG;
cli();
*reg &= ~bit;
*out &= ~bit;
SREG = oldSREG;
} else if (mode == INPUT_PULLUP) {
uint8_t oldSREG = SREG;
cli();
*reg &= ~bit;
*out |= bit;
SREG = oldSREG;
} else {
uint8_t oldSREG = SREG;
cli();
*reg |= bit;
SREG = oldSREG;
}
}
// Forcing this inline keeps the callers from having to push their own stuff
// on the stack. It is a good performance win and only takes 1 more byte per
// user than calling. (It will take more bytes on the 168.)
//
// But shouldn't this be moved into pinMode? Seems silly to check and do on
// each digitalread or write.
//
// Mark Sproul:
// - Removed inline. Save 170 bytes on atmega1280
// - changed to a switch statment; added 32 bytes but much easier to read and maintain.
// - Added more #ifdefs, now compiles for atmega645
//
//static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline));
//static inline void turnOffPWM(uint8_t timer)
static void turnOffPWM(uint8_t timer)
{
switch (timer)
{
#if defined(TCCR1A) && defined(COM1A1)
case TIMER1A: cbi(TCCR1A, COM1A1); break;
#endif
#if defined(TCCR1A) && defined(COM1B1)
case TIMER1B: cbi(TCCR1A, COM1B1); break;
#endif
#if defined(TCCR2) && defined(COM21)
case TIMER2: cbi(TCCR2, COM21); break;
#endif
#if defined(TCCR0A) && defined(COM0A1)
case TIMER0A: cbi(TCCR0A, COM0A1); break;
#endif
#if defined(TIMER0B) && defined(COM0B1)
case TIMER0B: cbi(TCCR0A, COM0B1); break;
#endif
#if defined(TCCR2A) && defined(COM2A1)
case TIMER2A: cbi(TCCR2A, COM2A1); break;
#endif
#if defined(TCCR2A) && defined(COM2B1)
case TIMER2B: cbi(TCCR2A, COM2B1); break;
#endif
#if defined(TCCR3A) && defined(COM3A1)
case TIMER3A: cbi(TCCR3A, COM3A1); break;
#endif
#if defined(TCCR3A) && defined(COM3B1)
case TIMER3B: cbi(TCCR3A, COM3B1); break;
#endif
#if defined(TCCR3A) && defined(COM3C1)
case TIMER3C: cbi(TCCR3A, COM3C1); break;
#endif
#if defined(TCCR4A) && defined(COM4A1)
case TIMER4A: cbi(TCCR4A, COM4A1); break;
#endif
#if defined(TCCR4A) && defined(COM4B1)
case TIMER4B: cbi(TCCR4A, COM4B1); break;
#endif
#if defined(TCCR4A) && defined(COM4C1)
case TIMER4C: cbi(TCCR4A, COM4C1); break;
#endif
#if defined(TCCR4C) && defined(COM4D1)
case TIMER4D: cbi(TCCR4C, COM4D1); break;
#endif
#if defined(TCCR5A)
case TIMER5A: cbi(TCCR5A, COM5A1); break;
case TIMER5B: cbi(TCCR5A, COM5B1); break;
case TIMER5C: cbi(TCCR5A, COM5C1); break;
#endif
}
}
void digitalWrite(uint8_t pin, uint8_t val)
{
uint8_t timer = digitalPinToTimer(pin);
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
volatile uint8_t *out;
if (port == NOT_A_PIN) return;
// If the pin that support PWM output, we need to turn it off
// before doing a digital write.
if (timer != NOT_ON_TIMER) turnOffPWM(timer);
out = portOutputRegister(port);
uint8_t oldSREG = SREG;
cli();
if (val == LOW) {
*out &= ~bit;
} else {
*out |= bit;
}
SREG = oldSREG;
}
int digitalRead(uint8_t pin)
{
uint8_t timer = digitalPinToTimer(pin);
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
if (port == NOT_A_PIN) return LOW;
// If the pin that support PWM output, we need to turn it off
// before getting a digital reading.
if (timer != NOT_ON_TIMER) turnOffPWM(timer);
if (*portInputRegister(port) & bit) return HIGH;
return LOW;
}

View File

@@ -0,0 +1,71 @@
/*
wiring_private.h - Internal header file.
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2005-2006 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
$Id: wiring.h 239 2007-01-12 17:58:39Z mellis $
*/
#ifndef WiringPrivate_h
#define WiringPrivate_h
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include <stdarg.h>
#include "Arduino.h"
#ifdef __cplusplus
extern "C"{
#endif
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
#define EXTERNAL_INT_0 0
#define EXTERNAL_INT_1 1
#define EXTERNAL_INT_2 2
#define EXTERNAL_INT_3 3
#define EXTERNAL_INT_4 4
#define EXTERNAL_INT_5 5
#define EXTERNAL_INT_6 6
#define EXTERNAL_INT_7 7
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define EXTERNAL_NUM_INTERRUPTS 8
#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__)
#define EXTERNAL_NUM_INTERRUPTS 3
#elif defined(__AVR_ATmega32U4__)
#define EXTERNAL_NUM_INTERRUPTS 4
#else
#define EXTERNAL_NUM_INTERRUPTS 2
#endif
typedef void (*voidFuncPtr)(void);
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View File

@@ -0,0 +1,69 @@
/*
wiring_pulse.c - pulseIn() function
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2005-2006 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
$Id: wiring.c 248 2007-02-03 15:36:30Z mellis $
*/
#include "wiring_private.h"
#include "pins_arduino.h"
/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH
* or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds
* to 3 minutes in length, but must be called at least a few dozen microseconds
* before the start of the pulse. */
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout)
{
// cache the port and bit of the pin in order to speed up the
// pulse width measuring loop and achieve finer resolution. calling
// digitalRead() instead yields much coarser resolution.
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
uint8_t stateMask = (state ? bit : 0);
unsigned long width = 0; // keep initialization out of time critical area
// convert the timeout from microseconds to a number of times through
// the initial loop; it takes 16 clock cycles per iteration.
unsigned long numloops = 0;
unsigned long maxloops = microsecondsToClockCycles(timeout) / 16;
// wait for any previous pulse to end
while ((*portInputRegister(port) & bit) == stateMask)
if (numloops++ == maxloops)
return 0;
// wait for the pulse to start
while ((*portInputRegister(port) & bit) != stateMask)
if (numloops++ == maxloops)
return 0;
// wait for the pulse to stop
while ((*portInputRegister(port) & bit) == stateMask) {
if (numloops++ == maxloops)
return 0;
width++;
}
// convert the reading to microseconds. The loop has been determined
// to be 20 clock cycles long and have about 16 clocks between the edge
// and the start of the loop. There will be some error introduced by
// the interrupt handlers.
return clockCyclesToMicroseconds(width * 21 + 16);
}

View File

@@ -0,0 +1,55 @@
/*
wiring_shift.c - shiftOut() function
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2005-2006 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
$Id: wiring.c 248 2007-02-03 15:36:30Z mellis $
*/
#include "wiring_private.h"
uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) {
uint8_t value = 0;
uint8_t i;
for (i = 0; i < 8; ++i) {
digitalWrite(clockPin, HIGH);
if (bitOrder == LSBFIRST)
value |= digitalRead(dataPin) << i;
else
value |= digitalRead(dataPin) << (7 - i);
digitalWrite(clockPin, LOW);
}
return value;
}
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val)
{
uint8_t i;
for (i = 0; i < 8; i++) {
if (bitOrder == LSBFIRST)
digitalWrite(dataPin, !!(val & (1 << i)));
else
digitalWrite(dataPin, !!(val & (1 << (7 - i))));
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}
}

View File

@@ -0,0 +1,411 @@
/*
pins_arduino.h - Pin definition functions for Arduino
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2007 David A. Mellis
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
$Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
*/
#ifndef Pins_Arduino_h
#define Pins_Arduino_h
#include <avr/pgmspace.h>
#define NUM_DIGITAL_PINS 82
#define NUM_ANALOG_INPUTS 16
#define analogInputToDigitalPin(p) ((p < 16) ? (p) + 54 : -1)
#define digitalPinHasPWM(p) (((p) >= 2 && (p) <= 13) || ((p) >= 44 && (p)<= 46))
static const uint8_t SS = 53;
static const uint8_t MOSI = 51;
static const uint8_t MISO = 50;
static const uint8_t SCK = 52;
static const uint8_t SDA = 20;
static const uint8_t SCL = 21;
static const uint8_t LED_BUILTIN = 13;
static const uint8_t A0 = 54;
static const uint8_t A1 = 55;
static const uint8_t A2 = 56;
static const uint8_t A3 = 57;
static const uint8_t A4 = 58;
static const uint8_t A5 = 59;
static const uint8_t A6 = 60;
static const uint8_t A7 = 61;
static const uint8_t A8 = 62;
static const uint8_t A9 = 63;
static const uint8_t A10 = 64;
static const uint8_t A11 = 65;
static const uint8_t A12 = 66;
static const uint8_t A13 = 67;
static const uint8_t A14 = 68;
static const uint8_t A15 = 69;
// A majority of the pins are NOT PCINTs, SO BE WARNED (i.e. you cannot use them as receive pins)
// Only pins available for RECEIVE (TRANSMIT can be on any pin):
// (I've deliberately left out pin mapping to the Hardware USARTs - seems senseless to me)
// Pins: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
#define digitalPinToPCICR(p) ( (((p) >= 10) && ((p) <= 13)) || \
(((p) >= 50) && ((p) <= 53)) || \
(((p) >= 62) && ((p) <= 69)) ? (&PCICR) : ((uint8_t *)0) )
#define digitalPinToPCICRbit(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? 0 : \
( (((p) >= 62) && ((p) <= 69)) ? 2 : \
0 ) )
#define digitalPinToPCMSK(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? (&PCMSK0) : \
( (((p) >= 62) && ((p) <= 69)) ? (&PCMSK2) : \
((uint8_t *)0) ) )
#define digitalPinToPCMSKbit(p) ( (((p) >= 10) && ((p) <= 13)) ? ((p) - 6) : \
( ((p) == 50) ? 3 : \
( ((p) == 51) ? 2 : \
( ((p) == 52) ? 1 : \
( ((p) == 53) ? 0 : \
( (((p) >= 62) && ((p) <= 69)) ? ((p) - 62) : \
0 ) ) ) ) ) )
#ifdef ARDUINO_MAIN
const uint16_t PROGMEM port_to_mode_PGM[] = {
NOT_A_PORT,
(uint16_t) &DDRA,
(uint16_t) &DDRB,
(uint16_t) &DDRC,
(uint16_t) &DDRD,
(uint16_t) &DDRE,
(uint16_t) &DDRF,
(uint16_t) &DDRG,
(uint16_t) &DDRH,
NOT_A_PORT,
(uint16_t) &DDRJ,
(uint16_t) &DDRK,
(uint16_t) &DDRL,
};
const uint16_t PROGMEM port_to_output_PGM[] = {
NOT_A_PORT,
(uint16_t) &PORTA,
(uint16_t) &PORTB,
(uint16_t) &PORTC,
(uint16_t) &PORTD,
(uint16_t) &PORTE,
(uint16_t) &PORTF,
(uint16_t) &PORTG,
(uint16_t) &PORTH,
NOT_A_PORT,
(uint16_t) &PORTJ,
(uint16_t) &PORTK,
(uint16_t) &PORTL,
};
const uint16_t PROGMEM port_to_input_PGM[] = {
NOT_A_PIN,
(uint16_t) &PINA,
(uint16_t) &PINB,
(uint16_t) &PINC,
(uint16_t) &PIND,
(uint16_t) &PINE,
(uint16_t) &PINF,
(uint16_t) &PING,
(uint16_t) &PINH,
NOT_A_PIN,
(uint16_t) &PINJ,
(uint16_t) &PINK,
(uint16_t) &PINL,
};
const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
// PORTLIST
// -------------------------------------------
PE , // PE 0 ** 0 ** USART0_RX
PE , // PE 1 ** 1 ** USART0_TX
PE , // PE 4 ** 2 ** PWM2
PE , // PE 5 ** 3 ** PWM3
PG , // PG 5 ** 4 ** PWM4
PE , // PE 3 ** 5 ** PWM5
PH , // PH 3 ** 6 ** PWM6
PH , // PH 4 ** 7 ** PWM7
PH , // PH 5 ** 8 ** PWM8
PH , // PH 6 ** 9 ** PWM9
PB , // PB 4 ** 10 ** PWM10
PB , // PB 5 ** 11 ** PWM11
PB , // PB 6 ** 12 ** PWM12
PB , // PB 7 ** 13 ** PWM13
PJ , // PJ 1 ** 14 ** USART3_TX
PJ , // PJ 0 ** 15 ** USART3_RX
PH , // PH 1 ** 16 ** USART2_TX
PH , // PH 0 ** 17 ** USART2_RX
PD , // PD 3 ** 18 ** USART1_TX
PD , // PD 2 ** 19 ** USART1_RX
PD , // PD 1 ** 20 ** I2C_SDA
PD , // PD 0 ** 21 ** I2C_SCL
PA , // PA 0 ** 22 ** D22
PA , // PA 1 ** 23 ** D23
PA , // PA 2 ** 24 ** D24
PA , // PA 3 ** 25 ** D25
PA , // PA 4 ** 26 ** D26
PA , // PA 5 ** 27 ** D27
PA , // PA 6 ** 28 ** D28
PA , // PA 7 ** 29 ** D29
PC , // PC 7 ** 30 ** D30
PC , // PC 6 ** 31 ** D31
PC , // PC 5 ** 32 ** D32
PC , // PC 4 ** 33 ** D33
PC , // PC 3 ** 34 ** D34
PC , // PC 2 ** 35 ** D35
PC , // PC 1 ** 36 ** D36
PC , // PC 0 ** 37 ** D37
PD , // PD 7 ** 38 ** D38
PG , // PG 2 ** 39 ** D39
PG , // PG 1 ** 40 ** D40
PG , // PG 0 ** 41 ** D41
PL , // PL 7 ** 42 ** D42
PL , // PL 6 ** 43 ** D43
PL , // PL 5 ** 44 ** D44
PL , // PL 4 ** 45 ** D45
PL , // PL 3 ** 46 ** D46
PL , // PL 2 ** 47 ** D47
PL , // PL 1 ** 48 ** D48
PL , // PL 0 ** 49 ** D49
PB , // PB 3 ** 50 ** SPI_MISO
PB , // PB 2 ** 51 ** SPI_MOSI
PB , // PB 1 ** 52 ** SPI_SCK
PB , // PB 0 ** 53 ** SPI_SS
PF , // PF 0 ** 54 ** A0
PF , // PF 1 ** 55 ** A1
PF , // PF 2 ** 56 ** A2
PF , // PF 3 ** 57 ** A3
PF , // PF 4 ** 58 ** A4
PF , // PF 5 ** 59 ** A5
PF , // PF 6 ** 60 ** A6
PF , // PF 7 ** 61 ** A7
PK , // PK 0 ** 62 ** A8
PK , // PK 1 ** 63 ** A9
PK , // PK 2 ** 64 ** A10
PK , // PK 3 ** 65 ** A11
PK , // PK 4 ** 66 ** A12
PK , // PK 5 ** 67 ** A13
PK , // PK 6 ** 68 ** A14
PK , // PK 7 ** 69 ** A15
PG , // PG 4 ** 70 ** D70
PG , // PG 3 ** 71 ** D71
PJ , // PJ 2 ** 72 ** D72
PJ , // PJ 3 ** 73 ** D73
PJ , // PJ 7 ** 74 ** D74
PJ , // PJ 4 ** 75 ** D75
PJ , // PJ 5 ** 76 ** D76
PJ , // PJ 6 ** 77 ** D77
PE , // PE 2 ** 78 ** D78
PE , // PE 6 ** 79 ** D79
PE , // PE 7 ** 80 ** D80
PD , // PD 4 ** 81 ** D81
PD , // PD 5 ** 82 ** D82
PD , // PD 6 ** 83 ** D83
PH , // PH 2 ** 84 ** D84
PH , // PH 7 ** 85 ** D85
};
const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
// PIN IN PORT
// -------------------------------------------
_BV( 0 ) , // PE 0 ** 0 ** USART0_RX
_BV( 1 ) , // PE 1 ** 1 ** USART0_TX
_BV( 4 ) , // PE 4 ** 2 ** PWM2
_BV( 5 ) , // PE 5 ** 3 ** PWM3
_BV( 5 ) , // PG 5 ** 4 ** PWM4
_BV( 3 ) , // PE 3 ** 5 ** PWM5
_BV( 3 ) , // PH 3 ** 6 ** PWM6
_BV( 4 ) , // PH 4 ** 7 ** PWM7
_BV( 5 ) , // PH 5 ** 8 ** PWM8
_BV( 6 ) , // PH 6 ** 9 ** PWM9
_BV( 4 ) , // PB 4 ** 10 ** PWM10
_BV( 5 ) , // PB 5 ** 11 ** PWM11
_BV( 6 ) , // PB 6 ** 12 ** PWM12
_BV( 7 ) , // PB 7 ** 13 ** PWM13
_BV( 1 ) , // PJ 1 ** 14 ** USART3_TX
_BV( 0 ) , // PJ 0 ** 15 ** USART3_RX
_BV( 1 ) , // PH 1 ** 16 ** USART2_TX
_BV( 0 ) , // PH 0 ** 17 ** USART2_RX
_BV( 3 ) , // PD 3 ** 18 ** USART1_TX
_BV( 2 ) , // PD 2 ** 19 ** USART1_RX
_BV( 1 ) , // PD 1 ** 20 ** I2C_SDA
_BV( 0 ) , // PD 0 ** 21 ** I2C_SCL
_BV( 0 ) , // PA 0 ** 22 ** D22
_BV( 1 ) , // PA 1 ** 23 ** D23
_BV( 2 ) , // PA 2 ** 24 ** D24
_BV( 3 ) , // PA 3 ** 25 ** D25
_BV( 4 ) , // PA 4 ** 26 ** D26
_BV( 5 ) , // PA 5 ** 27 ** D27
_BV( 6 ) , // PA 6 ** 28 ** D28
_BV( 7 ) , // PA 7 ** 29 ** D29
_BV( 7 ) , // PC 7 ** 30 ** D30
_BV( 6 ) , // PC 6 ** 31 ** D31
_BV( 5 ) , // PC 5 ** 32 ** D32
_BV( 4 ) , // PC 4 ** 33 ** D33
_BV( 3 ) , // PC 3 ** 34 ** D34
_BV( 2 ) , // PC 2 ** 35 ** D35
_BV( 1 ) , // PC 1 ** 36 ** D36
_BV( 0 ) , // PC 0 ** 37 ** D37
_BV( 7 ) , // PD 7 ** 38 ** D38
_BV( 2 ) , // PG 2 ** 39 ** D39
_BV( 1 ) , // PG 1 ** 40 ** D40
_BV( 0 ) , // PG 0 ** 41 ** D41
_BV( 7 ) , // PL 7 ** 42 ** D42
_BV( 6 ) , // PL 6 ** 43 ** D43
_BV( 5 ) , // PL 5 ** 44 ** D44
_BV( 4 ) , // PL 4 ** 45 ** D45
_BV( 3 ) , // PL 3 ** 46 ** D46
_BV( 2 ) , // PL 2 ** 47 ** D47
_BV( 1 ) , // PL 1 ** 48 ** D48
_BV( 0 ) , // PL 0 ** 49 ** D49
_BV( 3 ) , // PB 3 ** 50 ** SPI_MISO
_BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI
_BV( 1 ) , // PB 1 ** 52 ** SPI_SCK
_BV( 0 ) , // PB 0 ** 53 ** SPI_SS
_BV( 0 ) , // PF 0 ** 54 ** A0
_BV( 1 ) , // PF 1 ** 55 ** A1
_BV( 2 ) , // PF 2 ** 56 ** A2
_BV( 3 ) , // PF 3 ** 57 ** A3
_BV( 4 ) , // PF 4 ** 58 ** A4
_BV( 5 ) , // PF 5 ** 59 ** A5
_BV( 6 ) , // PF 6 ** 60 ** A6
_BV( 7 ) , // PF 7 ** 61 ** A7
_BV( 0 ) , // PK 0 ** 62 ** A8
_BV( 1 ) , // PK 1 ** 63 ** A9
_BV( 2 ) , // PK 2 ** 64 ** A10
_BV( 3 ) , // PK 3 ** 65 ** A11
_BV( 4 ) , // PK 4 ** 66 ** A12
_BV( 5 ) , // PK 5 ** 67 ** A13
_BV( 6 ) , // PK 6 ** 68 ** A14
_BV( 7 ) , // PK 7 ** 69 ** A15
_BV( 4 ) , // PG 4 ** 70 ** D70
_BV( 3 ) , // PG 3 ** 71 ** D71
_BV( 2 ) , // PJ 2 ** 72 ** D72
_BV( 3 ) , // PJ 3 ** 73 ** D73
_BV( 7 ) , // PJ 7 ** 74 ** D74
_BV( 4 ) , // PJ 4 ** 75 ** D75
_BV( 5 ) , // PJ 5 ** 76 ** D76
_BV( 6 ) , // PJ 6 ** 77 ** D77
_BV( 2 ) , // PE 2 ** 78 ** D78
_BV( 6 ) , // PE 6 ** 79 ** D79
_BV( 7 ) , // PE 7 ** 80 ** D80
_BV( 4 ) , // PD 4 ** 81 ** D81
_BV( 5 ) , // PD 5 ** 82 ** D82
_BV( 6 ) , // PD 6 ** 83 ** D83
_BV( 2 ) , // PH 2 ** 84 ** D84
_BV( 7 ) , // PH 7 ** 85 ** D85
};
const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
// TIMERS
// -------------------------------------------
NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX
NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX
TIMER3B , // PE 4 ** 2 ** PWM2
TIMER3C , // PE 5 ** 3 ** PWM3
TIMER0B , // PG 5 ** 4 ** PWM4
TIMER3A , // PE 3 ** 5 ** PWM5
TIMER4A , // PH 3 ** 6 ** PWM6
TIMER4B , // PH 4 ** 7 ** PWM7
TIMER4C , // PH 5 ** 8 ** PWM8
TIMER2B , // PH 6 ** 9 ** PWM9
TIMER2A , // PB 4 ** 10 ** PWM10
TIMER1A , // PB 5 ** 11 ** PWM11
TIMER1B , // PB 6 ** 12 ** PWM12
TIMER0A , // PB 7 ** 13 ** PWM13
NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX
NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX
NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX
NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX
NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX
NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX
NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA
NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL
NOT_ON_TIMER , // PA 0 ** 22 ** D22
NOT_ON_TIMER , // PA 1 ** 23 ** D23
NOT_ON_TIMER , // PA 2 ** 24 ** D24
NOT_ON_TIMER , // PA 3 ** 25 ** D25
NOT_ON_TIMER , // PA 4 ** 26 ** D26
NOT_ON_TIMER , // PA 5 ** 27 ** D27
NOT_ON_TIMER , // PA 6 ** 28 ** D28
NOT_ON_TIMER , // PA 7 ** 29 ** D29
NOT_ON_TIMER , // PC 7 ** 30 ** D30
NOT_ON_TIMER , // PC 6 ** 31 ** D31
NOT_ON_TIMER , // PC 5 ** 32 ** D32
NOT_ON_TIMER , // PC 4 ** 33 ** D33
NOT_ON_TIMER , // PC 3 ** 34 ** D34
NOT_ON_TIMER , // PC 2 ** 35 ** D35
NOT_ON_TIMER , // PC 1 ** 36 ** D36
NOT_ON_TIMER , // PC 0 ** 37 ** D37
NOT_ON_TIMER , // PD 7 ** 38 ** D38
NOT_ON_TIMER , // PG 2 ** 39 ** D39
NOT_ON_TIMER , // PG 1 ** 40 ** D40
NOT_ON_TIMER , // PG 0 ** 41 ** D41
NOT_ON_TIMER , // PL 7 ** 42 ** D42
NOT_ON_TIMER , // PL 6 ** 43 ** D43
TIMER5C , // PL 5 ** 44 ** D44
TIMER5B , // PL 4 ** 45 ** D45
TIMER5A , // PL 3 ** 46 ** D46
NOT_ON_TIMER , // PL 2 ** 47 ** D47
NOT_ON_TIMER , // PL 1 ** 48 ** D48
NOT_ON_TIMER , // PL 0 ** 49 ** D49
NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO
NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI
NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK
NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS
NOT_ON_TIMER , // PF 0 ** 54 ** A0
NOT_ON_TIMER , // PF 1 ** 55 ** A1
NOT_ON_TIMER , // PF 2 ** 56 ** A2
NOT_ON_TIMER , // PF 3 ** 57 ** A3
NOT_ON_TIMER , // PF 4 ** 58 ** A4
NOT_ON_TIMER , // PF 5 ** 59 ** A5
NOT_ON_TIMER , // PF 6 ** 60 ** A6
NOT_ON_TIMER , // PF 7 ** 61 ** A7
NOT_ON_TIMER , // PK 0 ** 62 ** A8
NOT_ON_TIMER , // PK 1 ** 63 ** A9
NOT_ON_TIMER , // PK 2 ** 64 ** A10
NOT_ON_TIMER , // PK 3 ** 65 ** A11
NOT_ON_TIMER , // PK 4 ** 66 ** A12
NOT_ON_TIMER , // PK 5 ** 67 ** A13
NOT_ON_TIMER , // PK 6 ** 68 ** A14
NOT_ON_TIMER , // PK 7 ** 69 ** A15
NOT_ON_TIMER , // PG 4 ** 70 ** D70
NOT_ON_TIMER , // PG 3 ** 71 ** D71
NOT_ON_TIMER , // PJ 2 ** 72 ** D72
NOT_ON_TIMER , // PJ 3 ** 73 ** D73
NOT_ON_TIMER , // PJ 7 ** 74 ** D74
NOT_ON_TIMER , // PJ 4 ** 75 ** D75
NOT_ON_TIMER , // PJ 5 ** 76 ** D76
NOT_ON_TIMER , // PJ 6 ** 77 ** D77
NOT_ON_TIMER , // PE 2 ** 78 ** D78
NOT_ON_TIMER , // PE 6 ** 79 ** D79
NOT_ON_TIMER , // PE 7 ** 80 ** D80
NOT_ON_TIMER , // PD 4 ** 81 ** D81
NOT_ON_TIMER , // PD 5 ** 82 ** D82
NOT_ON_TIMER , // PD 6 ** 83 ** D83
NOT_ON_TIMER , // PH 2 ** 84 ** D84
NOT_ON_TIMER , // PH 7 ** 85 ** D85
};
#endif
#endif

View File

@@ -0,0 +1,310 @@
#include "LiquidCrystal.h"
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include "Arduino.h"
// When the display powers up, it is configured as follows:
//
// 1. Display clear
// 2. Function set:
// DL = 1; 8-bit interface data
// N = 0; 1-line display
// F = 0; 5x8 dot character font
// 3. Display on/off control:
// D = 0; Display off
// C = 0; Cursor off
// B = 0; Blinking off
// 4. Entry mode set:
// I/D = 1; Increment by 1
// S = 0; No shift
//
// Note, however, that resetting the Arduino doesn't reset the LCD, so we
// can't assume that it's in that state when a sketch starts (and the
// LiquidCrystal constructor is called).
LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
{
init(0, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7);
}
LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable,
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
{
init(0, rs, 255, enable, d0, d1, d2, d3, d4, d5, d6, d7);
}
LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
{
init(1, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0);
}
LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable,
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
{
init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0);
}
void LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
{
_rs_pin = rs;
_rw_pin = rw;
_enable_pin = enable;
_data_pins[0] = d0;
_data_pins[1] = d1;
_data_pins[2] = d2;
_data_pins[3] = d3;
_data_pins[4] = d4;
_data_pins[5] = d5;
_data_pins[6] = d6;
_data_pins[7] = d7;
pinMode(_rs_pin, OUTPUT);
// we can save 1 pin by not using RW. Indicate by passing 255 instead of pin#
if (_rw_pin != 255) {
pinMode(_rw_pin, OUTPUT);
}
pinMode(_enable_pin, OUTPUT);
if (fourbitmode)
_displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;
else
_displayfunction = LCD_8BITMODE | LCD_1LINE | LCD_5x8DOTS;
begin(16, 1);
}
void LiquidCrystal::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {
if (lines > 1) {
_displayfunction |= LCD_2LINE;
}
_numlines = lines;
_currline = 0;
// for some 1 line displays you can select a 10 pixel high font
if ((dotsize != 0) && (lines == 1)) {
_displayfunction |= LCD_5x10DOTS;
}
// SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!
// according to datasheet, we need at least 40ms after power rises above 2.7V
// before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50
delayMicroseconds(50000);
// Now we pull both RS and R/W low to begin commands
digitalWrite(_rs_pin, LOW);
digitalWrite(_enable_pin, LOW);
if (_rw_pin != 255) {
digitalWrite(_rw_pin, LOW);
}
//put the LCD into 4 bit or 8 bit mode
if (! (_displayfunction & LCD_8BITMODE)) {
// this is according to the hitachi HD44780 datasheet
// figure 24, pg 46
// we start in 8bit mode, try to set 4 bit mode
write4bits(0x03);
delayMicroseconds(4500); // wait min 4.1ms
// second try
write4bits(0x03);
delayMicroseconds(4500); // wait min 4.1ms
// third go!
write4bits(0x03);
delayMicroseconds(150);
// finally, set to 4-bit interface
write4bits(0x02);
} else {
// this is according to the hitachi HD44780 datasheet
// page 45 figure 23
// Send function set command sequence
command(LCD_FUNCTIONSET | _displayfunction);
delayMicroseconds(4500); // wait more than 4.1ms
// second try
command(LCD_FUNCTIONSET | _displayfunction);
delayMicroseconds(150);
// third go
command(LCD_FUNCTIONSET | _displayfunction);
}
// finally, set # lines, font size, etc.
command(LCD_FUNCTIONSET | _displayfunction);
// turn the display on with no cursor or blinking default
_displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF;
display();
// clear it off
clear();
// Initialize to default text direction (for romance languages)
_displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT;
// set the entry mode
command(LCD_ENTRYMODESET | _displaymode);
}
/********** high level commands, for the user! */
void LiquidCrystal::clear()
{
command(LCD_CLEARDISPLAY); // clear display, set cursor position to zero
delayMicroseconds(2000); // this command takes a long time!
}
void LiquidCrystal::home()
{
command(LCD_RETURNHOME); // set cursor position to zero
delayMicroseconds(2000); // this command takes a long time!
}
void LiquidCrystal::setCursor(uint8_t col, uint8_t row)
{
int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };
if ( row >= _numlines ) {
row = _numlines-1; // we count rows starting w/0
}
command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
}
// Turn the display on/off (quickly)
void LiquidCrystal::noDisplay() {
_displaycontrol &= ~LCD_DISPLAYON;
command(LCD_DISPLAYCONTROL | _displaycontrol);
}
void LiquidCrystal::display() {
_displaycontrol |= LCD_DISPLAYON;
command(LCD_DISPLAYCONTROL | _displaycontrol);
}
// Turns the underline cursor on/off
void LiquidCrystal::noCursor() {
_displaycontrol &= ~LCD_CURSORON;
command(LCD_DISPLAYCONTROL | _displaycontrol);
}
void LiquidCrystal::cursor() {
_displaycontrol |= LCD_CURSORON;
command(LCD_DISPLAYCONTROL | _displaycontrol);
}
// Turn on and off the blinking cursor
void LiquidCrystal::noBlink() {
_displaycontrol &= ~LCD_BLINKON;
command(LCD_DISPLAYCONTROL | _displaycontrol);
}
void LiquidCrystal::blink() {
_displaycontrol |= LCD_BLINKON;
command(LCD_DISPLAYCONTROL | _displaycontrol);
}
// These commands scroll the display without changing the RAM
void LiquidCrystal::scrollDisplayLeft(void) {
command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT);
}
void LiquidCrystal::scrollDisplayRight(void) {
command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT);
}
// This is for text that flows Left to Right
void LiquidCrystal::leftToRight(void) {
_displaymode |= LCD_ENTRYLEFT;
command(LCD_ENTRYMODESET | _displaymode);
}
// This is for text that flows Right to Left
void LiquidCrystal::rightToLeft(void) {
_displaymode &= ~LCD_ENTRYLEFT;
command(LCD_ENTRYMODESET | _displaymode);
}
// This will 'right justify' text from the cursor
void LiquidCrystal::autoscroll(void) {
_displaymode |= LCD_ENTRYSHIFTINCREMENT;
command(LCD_ENTRYMODESET | _displaymode);
}
// This will 'left justify' text from the cursor
void LiquidCrystal::noAutoscroll(void) {
_displaymode &= ~LCD_ENTRYSHIFTINCREMENT;
command(LCD_ENTRYMODESET | _displaymode);
}
// Allows us to fill the first 8 CGRAM locations
// with custom characters
void LiquidCrystal::createChar(uint8_t location, uint8_t charmap[]) {
location &= 0x7; // we only have 8 locations 0-7
command(LCD_SETCGRAMADDR | (location << 3));
for (int i=0; i<8; i++) {
write(charmap[i]);
}
}
/*********** mid level commands, for sending data/cmds */
inline void LiquidCrystal::command(uint8_t value) {
send(value, LOW);
}
inline size_t LiquidCrystal::write(uint8_t value) {
send(value, HIGH);
return 1; // assume sucess
}
/************ low level data pushing commands **********/
// write either command or data, with automatic 4/8-bit selection
void LiquidCrystal::send(uint8_t value, uint8_t mode) {
digitalWrite(_rs_pin, mode);
// if there is a RW pin indicated, set it low to Write
if (_rw_pin != 255) {
digitalWrite(_rw_pin, LOW);
}
if (_displayfunction & LCD_8BITMODE) {
write8bits(value);
} else {
write4bits(value>>4);
write4bits(value);
}
}
void LiquidCrystal::pulseEnable(void) {
digitalWrite(_enable_pin, LOW);
delayMicroseconds(1);
digitalWrite(_enable_pin, HIGH);
delayMicroseconds(1); // enable pulse must be >450ns
digitalWrite(_enable_pin, LOW);
delayMicroseconds(100); // commands need > 37us to settle
}
void LiquidCrystal::write4bits(uint8_t value) {
for (int i = 0; i < 4; i++) {
pinMode(_data_pins[i], OUTPUT);
digitalWrite(_data_pins[i], (value >> i) & 0x01);
}
pulseEnable();
}
void LiquidCrystal::write8bits(uint8_t value) {
for (int i = 0; i < 8; i++) {
pinMode(_data_pins[i], OUTPUT);
digitalWrite(_data_pins[i], (value >> i) & 0x01);
}
pulseEnable();
}

Some files were not shown because too many files have changed in this diff Show More