Compare commits

...

2006 Commits

Author SHA1 Message Date
Scott Lahteine
845cda367d Keep "astyled" elements in qr_solve.* - plus code reduction 2015-10-02 23:22:58 -07:00
Scott Lahteine
80aa05b944 Keep "astyled" elements in misc files - small changes 2015-10-02 23:21:52 -07:00
Scott Lahteine
7c84ba64a1 Keep "astyled" elements in M100_*.cpp 2015-10-02 23:21:19 -07:00
Scott Lahteine
2973e2a504 Keep "astyled" elements in speed_lookuptable.h 2015-10-02 23:20:40 -07:00
Scott Lahteine
8d97d17055 Keep "astyled" elements in configuration_store.cpp 2015-10-02 23:20:02 -07:00
Scott Lahteine
c2d4a1db58 Keep "astyled" elements in vector_3.* 2015-10-02 23:19:13 -07:00
Scott Lahteine
7909c6e4dd Keep "astyled" elements in dogm_bitmaps.h 2015-10-02 23:18:55 -07:00
Scott Lahteine
e6d77b540a Keep "astyled" elements in Conditionals.h 2015-10-02 23:18:40 -07:00
Scott Lahteine
de2e9fe687 Keep "astyled" elements in fastio.h 2015-10-02 23:17:46 -07:00
Scott Lahteine
9b00ffe37b Keep "astyled" elements in SanityCheck.h 2015-10-02 23:17:28 -07:00
Scott Lahteine
a99ac86c19 Latest style in thermistortables.h 2015-10-02 23:16:30 -07:00
Scott Lahteine
dbf1a98d13 Keep "astyled" elements in mesh_bed_leveling.h 2015-10-02 23:16:00 -07:00
Scott Lahteine
f11586b517 Keep "astyled" elements in planner.* 2015-10-02 23:15:36 -07:00
Scott Lahteine
4c99327329 Keep "astyled" elements in SD-related files 2015-10-02 23:15:24 -07:00
Scott Lahteine
2bffd12ebd Keep "astyled" elements in servo.* 2015-10-02 23:14:39 -07:00
Scott Lahteine
9cb7f3fafd Keep "astyled" elements in stepper_indirection.* 2015-10-02 23:14:19 -07:00
Scott Lahteine
38f626d7a2 Keep "astyled" elements in stepper.* 2015-10-02 23:13:44 -07:00
Scott Lahteine
2c42dc5121 Keep "astyled" elements in temperature.* 2015-10-02 23:13:23 -07:00
Scott Lahteine
e272cc7fc7 Keep "astyled" elements in pins files 2015-10-02 23:12:48 -07:00
Scott Lahteine
9ab5401df3 Keep "astyled" elements in MarlinSerial.* 2015-10-02 23:12:16 -07:00
Scott Lahteine
f844d18724 Keep "astyled" elements in Marlin_main.cpp, Marlin.h 2015-10-02 23:12:03 -07:00
Scott Lahteine
d99a4acd4b Keep "astyled" elements in cardreader.* 2015-10-02 23:11:34 -07:00
Scott Lahteine
2016ed48c0 Keep "astyled" elements in ultralcd-related files 2015-10-02 23:11:05 -07:00
Scott Lahteine
b90ec2cf8f Match indentation for language files 2015-10-02 23:10:31 -07:00
Scott Lahteine
34ec34e741 Keep "astyled" elements in dogm files 2015-10-02 23:08:58 -07: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
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
Wurstnase
5de8cce7bf Merge pull request #2 from MarlinFirmware/development
Dev-Pull
2015-01-06 21:07:47 +01:00
odewdney
652895d656 try different proproc for CI failure 2015-01-04 11:15:23 +00:00
odewdney
39fae9e3a3 Fix progmem warning
Borrow code from https://github.com/arduino/Arduino/issues/1793
2015-01-03 21:30:16 +00:00
872 changed files with 193396 additions and 64547 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

9
.gitignore vendored
View File

@@ -1,3 +1,12 @@
// 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/
*~

View File

@@ -2,99 +2,123 @@
language: c
before_install:
- pwd
- wget https://bootstrap.pypa.io/get-pip.py
- wget https://bintray.com/artifact/download/olikraus/u8glib/u8glib_arduino_v1.17.zip
# 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:
- sudo python get-pip.py
- sudo pip install ino
# add ppa for newer version of Arduino than available in ubuntu 12.04
- sudo add-apt-repository ppa:michael-gruz/elektronik -y
- sudo apt-get update -q
- sudo apt-get install arduino
# 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
# Install astyle
- wget https://github.com/timonwong/astyle-mirror/archive/master.zip
- unzip master.zip
- cd astyle-mirror-master/build/gcc/
- make prefix=$HOME astyle install
before_script:
# add U8glib, LiquidCrystal_I2C & LiquidTWI2 libraries
- sudo unzip u8glib_arduino_v1.17.zip -d /usr/share/arduino/libraries/
- cd /usr/share/arduino/libraries/
- sudo git clone https://github.com/kiyoshigawa/LiquidCrystal_I2C.git
- ls -la
- ls -la LiquidCrystal_I2C/
- sudo git clone https://github.com/lincomatic/LiquidTWI2.git
# remove Robot_Control library to stop compile error!
- sudo rm -rf /usr/share/arduino/libraries/Robot_Control
# 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
# ino needs files in src directory
- ln -s Marlin src
# remove Marlin.pde as it confuses ino after it finds Marlin.ino
- rm Marlin/Marlin.pde
# Check style
# ~/bin/astyle --recursive --options=.astylerc "Marlin/*.h" "Marlin/*.cpp"
script:
# Abort on style errors
# if [ "0" != `find . -name "*.orig" | wc -l` ] ; then echo "Improperly styled source -- run astyle" ; exit -999; fi
# Relaxed Travis check
# if [ "0" != `find . -name "*.orig" | wc -l` ] ; then echo "Improperly styled source -- run astyle" ; fi
# build default config
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# backup configuration.h
- cp Marlin/Configuration.h Marlin/Configuration.h.backup
- cp Marlin/Configuration_adv.h Marlin/Configuration_adv.h.backup
- cp Marlin/pins_RAMPS_13.h Marlin/pins_RAMPS_13.h.backup
# add sensor for bed
- sed -i 's/#define TEMP_SENSOR_BED 0/#define TEMP_SENSOR_BED 1/g' Marlin/Configuration.h
- rm -rf .build/
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# change extruder numbers from 1 to 2
# commented out for the moment fails build but compiles fine in Arduino
#- sed -i 's/#define EXTRUDERS 1/#define EXTRUDERS 2/g' Marlin/Configuration.h
#- rm -rf .build/
#- ino build -m mega2560
- sed -i 's/#define MOTHERBOARD BOARD_RAMPS_13_EFB/#define MOTHERBOARD BOARD_RAMPS_13_EEB/g' Marlin/Configuration.h
- sed -i 's/#define EXTRUDERS 1/#define EXTRUDERS 2/g' Marlin/Configuration.h
- sed -i 's/#define TEMP_SENSOR_1 0/#define TEMP_SENSOR_1 1/g' Marlin/Configuration.h
#- cat Marlin/Configuration.h
- rm -rf .build/
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# change extruder numbers from 2 to 3, needs to be a board with 3 extruders defined in pins.h
#- sed -i 's/#define MOTHERBOARD BOARD_ULTIMAKER/#define MOTHERBOARD BOARD_AZTEEG_X3_PRO/g' Marlin/Configuration.h
#- sed -i 's/#define EXTRUDERS 2/#define EXTRUDERS 3/g' Marlin/Configuration.h
#- rm -rf .build/
#- ino build -m mega2560
- sed -i 's/#define MOTHERBOARD BOARD_RAMPS_13_EEB/#define MOTHERBOARD BOARD_RUMBA/g' Marlin/Configuration.h
- sed -i 's/#define EXTRUDERS 2/#define EXTRUDERS 3/g' Marlin/Configuration.h
- sed -i 's/#define TEMP_SENSOR_2 0/#define TEMP_SENSOR_2 1/g' Marlin/Configuration.h
- rm -rf .build/
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# enable PIDTEMPBED
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define PIDTEMPBED/#define PIDTEMPBED/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
# enable THERMAL RUNAWAY PROTECTION for extruders & bed
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_PERIOD/#define THERMAL_RUNAWAY_PROTECTION_PERIOD/g' Marlin/Configuration.h
- sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS/#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS/g' Marlin/Configuration.h
- sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD/#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD/g' Marlin/Configuration.h
- sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS/#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# enable AUTO_BED_LEVELING
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define ENABLE_AUTO_BED_LEVELING/#define ENABLE_AUTO_BED_LEVELING/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# enable AUTO_BED_LEVELING with servos
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define ENABLE_AUTO_BED_LEVELING/#define ENABLE_AUTO_BED_LEVELING/g' Marlin/Configuration.h
- sed -i 's/\/\/#define NUM_SERVOS/#define NUM_SERVOS/g' Marlin/Configuration.h
- sed -i 's/\/\/#define Z_ENDSTOP_SERVO_NR/#define Z_ENDSTOP_SERVO_NR/g' Marlin/Configuration.h
- sed -i 's/\/\/#define SERVO_ENDSTOP_ANGLES/#define SERVO_ENDSTOP_ANGLES/g' Marlin/Configuration.h
- sed -i 's/\/\/#define DEACTIVATE_SERVOS_AFTER_MOVE/#define DEACTIVATE_SERVOS_AFTER_MOVE/g' Marlin/Configuration.h
- rm -rf .build/
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# enable EEPROM_SETTINGS & EEPROM_CHITCHAT
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define EEPROM_SETTINGS/#define EEPROM_SETTINGS/g' Marlin/Configuration.h
- sed -i 's/\/\/#define EEPROM_CHITCHAT/#define EEPROM_CHITCHAT/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
### LCDS ###
# ULTIMAKERCONTROLLER
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define ULTIMAKERCONTROLLER/#define ULTIMAKERCONTROLLER/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# MAKRPANEL
# Needs to use melzi and sanguino hardware
#- cp Marlin/Configuration.h.backup Marlin/Configuration.h
#- sed -i 's/\/\/#define MAKRPANEL/#define MAKRPANEL/g' Marlin/Configuration.h
#- rm -rf .build/
#- ino build -m mega2560
#- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# REPRAP_DISCOUNT_SMART_CONTROLLER
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define REPRAP_DISCOUNT_SMART_CONTROLLER/#define REPRAP_DISCOUNT_SMART_CONTROLLER/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# G3D_PANE
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define G3D_PANEL/#define G3D_PANEL/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER/#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# REPRAPWORLD_KEYPAD
# Cant find configuration details to get it to compile
#- cp Marlin/Configuration.h.backup Marlin/Configuration.h
@@ -102,59 +126,81 @@ script:
#- sed -i 's/\/\/#define REPRAPWORLD_KEYPAD/#define REPRAPWORLD_KEYPAD/g' Marlin/Configuration.h
#- sed -i 's/\/\/#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0/#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0/g' Marlin/Configuration.h
#- rm -rf .build/
#- ino build -m mega2560
#- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# RA_CONTROL_PANEL
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define RA_CONTROL_PANEL/#define RA_CONTROL_PANEL/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
### I2C PANELS ###
# LCD_I2C_SAINSMART_YWROBOT
# Failing at the moment needs different library
#- cp Marlin/Configuration.h.backup Marlin/Configuration.h
#- sed -i 's/\/\/#define LCD_I2C_SAINSMART_YWROBOT/#define LCD_I2C_SAINSMART_YWROBOT/g' Marlin/Configuration.h
#- rm -rf .build/
#- ino build -m mega2560
#- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# LCD_I2C_PANELOLU2
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define LCD_I2C_PANELOLU2/#define LCD_I2C_PANELOLU2/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# LCD_I2C_VIKI
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define LCD_I2C_VIKI/#define LCD_I2C_VIKI/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# Enable filament sensor
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define FILAMENT_SENSOR/#define FILAMENT_SENSOR/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# Enable filament sensor with LCD display
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define ULTIMAKERCONTROLLER/#define ULTIMAKERCONTROLLER/g' Marlin/Configuration.h
- sed -i 's/\/\/#define FILAMENT_SENSOR/#define FILAMENT_SENSOR/g' Marlin/Configuration.h
- sed -i 's/\/\/#define FILAMENT_LCD_DISPLAY/#define FILAMENT_LCD_DISPLAY/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
######## Example Configurations ##############
# Delta Config
- cp Marlin/example_configurations/delta/Configuration* Marlin/
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# Enable COREXY
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define COREXY/#define COREXY/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# Enable COREXZ
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define COREXZ/#define COREXZ/g' Marlin/Configuration.h
- rm -rf .build/
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# Enable Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- sed -i 's/\/\/#define Z_DUAL_STEPPER_DRIVERS/#define Z_DUAL_STEPPER_DRIVERS/g' Marlin/Configuration_adv.h
- sed -i 's/\ \ \/\/\ \#define Z_DUAL_ENDSTOPS/#define Z_DUAL_ENDSTOPS/g' Marlin/Configuration_adv.h
- sed -i 's/#define X_MAX_PIN 2/#define X_MAX_PIN -1/g' Marlin/pins_RAMPS_13.h
- sed -i 's/\ \ \ \ \#define Z2_MAX_PIN 36/#define Z2_MAX_PIN 2/g' Marlin/Configuration_adv.h
- rm -rf .build/
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
- cp Marlin/Configuration.h.backup Marlin/Configuration.h
- cp Marlin/Configuration_adv.h.backup Marlin/Configuration_adv.h
- cp Marlin/pins_RAMPS_13.h.backup Marlin/pins_RAMPS_13.h
######## Example Configurations ##############
# Delta Config (generic)
- cp Marlin/example_configurations/delta/generic/Configuration* Marlin/
- rm -rf .build/
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# Delta Config (Mini Kossel)
- cp Marlin/example_configurations/delta/kossel_mini/Configuration* Marlin/
- rm -rf .build/
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# Makibox Config need to check board type for Teensy++ 2.0
#- cp Marlin/example_configurations/makibox/Configuration* Marlin/
#- rm -rf .build/
#- ino build -m mega2560
#- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# SCARA Config
- cp Marlin/example_configurations/SCARA/Configuration* Marlin/
- rm -rf .build/
- ino build -m mega2560
- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
# tvrrug Config need to check board type for sanguino atmega644p
#- cp Marlin/example_configurations/tvrrug/Round2/Configuration* Marlin/
#- rm -rf .build/
#- ino build -m mega2560
#- DISPLAY=:1.0 ~/bin/arduino --verify --board marlin:avr:mega Marlin/Marlin.ino
######## Board Types #############
- sed -i 's/#define MOTHERBOARD BOARD_RAMPS_13_EFB/#define MOTHERBOARD BOARD_DUEMILANOVE_328P/g' Marlin/Configuration.h
- rm -rf .build/
- ino build -m atmega328

View File

@@ -1,35 +0,0 @@
##############################################################
Generation_Series.name=Gen6 & Gen6 Deluxe
Generation_Series.upload.protocol=stk500
Generation_Series.upload.maximum_size=63488
Generation_Series.upload.speed=38400
Generation_Series.bootloader.low_fuses=0xFF
Generation_Series.bootloader.high_fuses=0xDC
Generation_Series.bootloader.extended_fuses=0xFD
Generation_Series.bootloader.path=atmega644p
Generation_Series.bootloader.file=ATmegaBOOT_644P.hex
Generation_Series.bootloader.unlock_bits=0x3F
Generation_Series.bootloader.lock_bits=0x0F
Generation_Series.build.mcu=atmega644p
Generation_Series.build.f_cpu=16000000L
Generation_Series.build.core=arduino
##############################################################
Sanguinololu.name=Sanguinololu 1.2 and above
Sanguinololu.upload.protocol=stk500
Sanguinololu.upload.maximum_size=63488
Sanguinololu.upload.speed=38400
Sanguinololu.bootloader.low_fuses=0xFF
Sanguinololu.bootloader.high_fuses=0xDC
Sanguinololu.bootloader.extended_fuses=0xFD
Sanguinololu.bootloader.path=atmega644p
Sanguinololu.bootloader.file=ATmegaBOOT_644P.hex
Sanguinololu.bootloader.unlock_bits=0x3F
Sanguinololu.bootloader.lock_bits=0x0F
Sanguinololu.build.mcu=atmega644p
Sanguinololu.build.f_cpu=16000000L
Sanguinololu.build.core=arduino

View File

@@ -1,713 +0,0 @@
/**********************************************************/
/* 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_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

@@ -1,121 +0,0 @@
:10F800000C943E7C0C945B7C0C945B7C0C945B7C39
:10F810000C945B7C0C945B7C0C945B7C0C945B7C0C
:10F820000C945B7C0C945B7C0C945B7C0C945B7CFC
:10F830000C945B7C0C945B7C0C945B7C0C945B7CEC
:10F840000C945B7C0C945B7C0C945B7C0C945B7CDC
:10F850000C945B7C0C945B7C0C945B7C0C945B7CCC
:10F860000C945B7C0C945B7C0C945B7C0C945B7CBC
:10F870000C945B7C0C945B7C0C945B7C11241FBE11
:10F88000CFEFD8E0DEBFCDBF11E0A0E0B1E0E6E60B
:10F89000FFEF02C005900D92A030B107D9F712E03A
:10F8A000A0E0B1E001C01D92A930B107E1F70E94CC
:10F8B000537D0C94B27F0C94007CCF93DF93CDB733
:10F8C000DEB724970FB6F894DEBF0FBECDBF8823F6
:10F8D00009F481E020E0482F55274115510509F42E
:10F8E0003DC0289A19821A821B821C820BC0898112
:10F8F0009A81AB81BC810196A11DB11D89839A8338
:10F90000AB83BC8389819A81AB81BC8180589E4343
:10F91000A040B04060F3289819821A821B821C8292
:10F920000BC089819A81AB81BC810196A11DB11D5B
:10F9300089839A83AB83BC8389819A81AB81BC81A3
:10F9400080509A4FA040B04060F32F5F822F9927DC
:10F9500087FD9095841795070CF4C3CF19821A82FE
:10F960001B821C8289819A81AB81BC818050914726
:10F97000A240B040A0F489819A81AB81BC810196FC
:10F98000A11DB11D89839A83AB83BC8389819A8130
:10F99000AB81BC8180509147A240B04060F3249677
:10F9A0000FB6F894DEBF0FBECDBFDF91CF910895A3
:10F9B000EF92FF920F931F93EE24FF248701289864
:10F9C0008091C00087FD17C00894E11CF11C011D47
:10F9D000111D81E0E81689E0F8068DE3080780E054
:10F9E000180770F3E0910001F091010109958091F1
:10F9F000C00087FFE9CF289A8091C600992787FD2C
:10FA000090951F910F91FF90EF900895982F8091FE
:10FA1000C00085FFFCCF9093C60008950E94D87C5B
:10FA2000803271F0809102018F5F809302018530F6
:10FA300009F00895E0910001F09101010995089500
:10FA400084E10E94067D80E10E94067D0895CF93A7
:10FA5000C82F0E94D87C803241F0809102018F5FD4
:10FA600080930201853081F40AC084E10E94067D02
:10FA70008C2F0E94067D80E10E94067D05C0E091EA
:10FA80000001F09101010995CF910895282F90E090
:10FA900007C08091C0008823E4F78091C6009F5F73
:10FAA0009217B8F30895CFEFD8E0DEBFCDBF0000C6
:10FAB00094B714BE809160008861809360001092BA
:10FAC000600091FF74C189E18093C4001092C50069
:10FAD00088E18093C10086E08093C2005098589AD4
:10FAE000209A83E00E945D7C81E00E945D7C0E9400
:10FAF000D87C8033B9F18133C1F1803409F456C028
:10FB0000813409F45CC0823409F46EC0853409F490
:10FB100071C0803539F1813509F4F3C0823511F1B6
:10FB2000853509F4D3C0863509F4CBC0843609F491
:10FB300065C0843709F4EBC0853709F4D2C0863735
:10FB400009F44AC0809102018F5F809302018530E1
:10FB500071F6E0910001F091010109950E94D87CB5
:10FB6000803349F60E940E7DC2CF0E94D87CC82FF8
:10FB7000803241F784E10E94067D81E40E94067D87
:10FB800086E50E94067D82E50E94067D8C2F0E94FC
:10FB9000067D89E40E94067D83E50E94067D80E55E
:10FBA0000E94067D80E10E94067DA1CF0E94D87C44
:10FBB0008638C0F20E94D87C0E940E7D98CF0E94A9
:10FBC000D87C803809F407C1813809F400C1823833
:10FBD00009F4F9C0883921F080E00E94277D87CFA1
:10FBE00083E00E94277D83CF84E10E94467D0E94AE
:10FBF0000E7D7DCF85E00E94467DF9CF0E94D87CA6
:10FC0000809306020E94D87C8093050280910802AE
:10FC10008E7F809308020E94D87C853409F44BC003
:10FC2000E5E0F1E0119281E0E438F807D9F3D0F390
:10FC3000C0E0D0E0809105029091060218161906E6
:10FC400078F405E011E00E94D87CF80181938F01DF
:10FC500021968091050290910602C817D90798F362
:10FC60000E94D87C803209F06DCF8091080280FF1D
:10FC7000B6C0C0E0D0E02091050230910602121615
:10FC80001306B8F4E0910301F0910401A5E0B1E09E
:10FC9000F999FECFF2BDE1BD8D9180BDFA9AF99A36
:10FCA00031962196C217D30798F3F0930401E0939D
:10FCB000030184E175CF809108028160809308027E
:10FCC000AFCF84E00E94467D80E087CF0E94D87C41
:10FCD000809303010E94D87C809304010E940E7DD2
:10FCE00006CF0E94D87C803209F02CCF84E10E949C
:10FCF000067D8EE10E94067D85E90E94067D88E0F2
:10FD00004FCF0E940E7D88E080936000FFCF0E945D
:10FD1000D87C809306020E94D87C809305020E94C2
:10FD2000D87C853409F449C0809108028E7F809385
:10FD300008028091030190910401880F991F90930C
:10FD40000401809303010E94D87C803209F0CFCE59
:10FD500084E10E94067DC0E0D0E020910502309150
:10FD600006021216130608F01DCFE0910301F09170
:10FD700004018091080280FF96C0F999FECFF2BD80
:10FD8000E1BDF89A80B50E94067DE0910301F091F3
:10FD900004013196F0930401E093030120910502E0
:10FDA000309106022196C217D30718F3FBCEE091DB
:10FDB0000001F0910101099586CE809108028160D1
:10FDC00080930802C0CF80E10E94277D90CE81E021
:10FDD0000E94277D8CCE82E00E94277D88CE809174
:10FDE000030190910401880F991F9093040180935F
:10FDF00003018091050280FF09C080910502909166
:10FE0000060201969093060280930502F999FECFAF
:10FE10001127E0910301F0910401C5E0D1E0809148
:10FE2000050290910602103091F400915700017084
:10FE30000130D9F303E000935700E8950091570093
:10FE400001700130D9F301E100935700E895099062
:10FE500019900091570001700130D9F301E000932F
:10FE60005700E8951395103898F011270091570026
:10FE700001700130D9F305E000935700E895009137
:10FE8000570001700130D9F301E100935700E89564
:10FE90003296029709F0C7CF103011F00296E5CFE5
:10FEA000112484E17DCE869580FF06C03196F093C3
:10FEB0000401E093030176CF84910E94067D209196
:10FEC000050230910602E0910301F0910401EECFAA
:10FED0001F93CF930E94D87CC82F0E94067D0E945A
:10FEE000D87C182F0E94067DC1362CF0C7551136DC
:10FEF0003CF0175508C0C033D4F3C0531136CCF7CB
:10FF000010330CF01053C295C07FC10F8C2F99276E
:10FF100087FD9095CF911F910895CF93282F992712
:10FF200087FD9095807F907095958795959587959D
:10FF300095958795959587958A303CF0895AC22F7B
:10FF4000CF70CA303CF0C95A06C0805DC22FCF7056
:10FF5000CA30CCF7C05D0E94067D8C2F0E94067DC2
:06FF6000CF910895FFCFD0
:040000030000F80001
:00000001FF

View File

@@ -1,120 +0,0 @@
:10F800000C94387C0C94557C0C94557C0C94557C51
:10F810000C94557C0C94557C0C94557C0C94557C24
:10F820000C94557C0C94557C0C94557C0C94557C14
:10F830000C94557C0C94557C0C94557C0C94557C04
:10F840000C94557C0C94557C0C94557C0C94557CF4
:10F850000C94557C0C94557C0C94557C0C94557CE4
:10F860000C94557C0C94557C0C94557C0C94557CD4
:10F8700011241FBECFEFD0E1DEBFCDBF11E0A0E06D
:10F88000B1E0EAE5FFEF02C005900D92A030B107AC
:10F89000D9F712E0A0E0B1E001C01D92A930B10794
:10F8A000E1F70E944D7D0C94AC7F0C94007CCF93CB
:10F8B000DF93CDB7DEB724970FB6F894DEBF0FBE47
:10F8C000CDBF882309F481E020E0482F552741155A
:10F8D000510509F43DC0289A19821A821B821C82A4
:10F8E0000BC089819A81AB81BC810196A11DB11D9C
:10F8F00089839A83AB83BC8389819A81AB81BC81E4
:10F9000080589E43A040B04060F3289819821A8224
:10F910001B821C820BC089819A81AB81BC810196BC
:10F92000A11DB11D89839A83AB83BC8389819A8190
:10F93000AB81BC8180509A4FA040B04060F32F5FF4
:10F94000822F992787FD9095841795070CF4C3CFD4
:10F9500019821A821B821C8289819A81AB81BC81A7
:10F9600080509147A240B040A0F489819A81AB8138
:10F97000BC810196A11DB11D89839A83AB83BC8391
:10F9800089819A81AB81BC8180509147A240B0406F
:10F9900060F324960FB6F894DEBF0FBECDBFDF91A3
:10F9A000CF910895EF92FF920F931F93EE24FF24BF
:10F9B000870128988091C00087FD17C00894E11C3A
:10F9C000F11C011D111D81E0E81689E0F8068DE3A8
:10F9D000080780E0180770F3E0910001F091010141
:10F9E00009958091C00087FFE9CF289A8091C600D1
:10F9F000992787FD90951F910F91FF90EF900895A3
:10FA0000982F8091C00085FFFCCF9093C600089589
:10FA10000E94D27C803271F0809102018F5F8093CE
:10FA20000201853009F00895E0910001F091010193
:10FA30000995089584E10E94007D80E10E94007D87
:10FA40000895CF93C82F0E94D27C803241F08091DC
:10FA500002018F5F80930201853081F40AC084E146
:10FA60000E94007D8C2F0E94007D80E10E94007D1D
:10FA700005C0E0910001F09101010995CF91089531
:10FA8000282F90E007C08091C0008823E4F7809180
:10FA9000C6009F5F9217B8F30895CFEFD0E1DEBFA5
:10FAA000CDBF000094B714BE809160008861809340
:10FAB00060001092600091FF74C189E18093C400DE
:10FAC0001092C50088E18093C10086E08093C20057
:10FAD0005098589A209A83E00E94577C81E00E94B7
:10FAE000577C0E94D27C8033B9F18133C1F18034DC
:10FAF00009F456C0813409F45CC0823409F46EC044
:10FB0000853409F471C0803539F1813509F4F3C0C9
:10FB1000823511F1853509F4D3C0863509F4CBC09F
:10FB2000843609F465C0843709F4EBC0853709F4DD
:10FB3000D2C0863709F44AC0809102018F5F80935A
:10FB40000201853071F6E0910001F0910101099503
:10FB50000E94D27C803349F60E94087DC2CF0E9469
:10FB6000D27CC82F803241F784E10E94007D81E47D
:10FB70000E94007D86E50E94007D82E50E94007D56
:10FB80008C2F0E94007D89E40E94007D83E50E9405
:10FB9000007D80E50E94007D80E10E94007DA1CF74
:10FBA0000E94D27C8638C0F20E94D27C0E94087DDE
:10FBB00098CF0E94D27C803809F407C1813809F4BB
:10FBC00000C1823809F4F9C0883921F080E00E9430
:10FBD000217D87CF83E00E94217D83CF84E10E9435
:10FBE000407D0E94087D7DCF85E00E94407DF9CF59
:10FBF0000E94D27C809306020E94D27C80930502F0
:10FC0000809108028E7F809308020E94D27C853406
:10FC100009F44BC0E5E0F1E0119281E0E438F80727
:10FC2000D9F3D0F3C0E0D0E08091050290910602B4
:10FC30001816190678F405E011E00E94D27CF8014C
:10FC400081938F0121968091050290910602C81739
:10FC5000D90798F30E94D27C803209F06DCF809151
:10FC6000080280FFB6C0C0E0D0E0209105023091CC
:10FC7000060212161306B8F4E0910301F091040194
:10FC8000A5E0B1E0F999FECFF2BDE1BD8D9180BD57
:10FC9000FA9AF99A31962196C217D30798F3F093FE
:10FCA0000401E093030184E175CF80910802816033
:10FCB00080930802AFCF84E00E94407D80E087CF30
:10FCC0000E94D27C809303010E94D27C8093040125
:10FCD0000E94087D06CF0E94D27C803209F02CCF92
:10FCE00084E10E94007D8EE10E94007D86E90E94F1
:10FCF000007D89E04FCF0E94087D88E080936000FE
:10FD0000FFCF0E94D27C809306020E94D27C809317
:10FD100005020E94D27C853409F449C08091080212
:10FD20008E7F809308028091030190910401880FD7
:10FD3000991F90930401809303010E94D27C80322A
:10FD400009F0CFCE84E10E94007DC0E0D0E0209198
:10FD50000502309106021216130608F01DCFE0913D
:10FD60000301F09104018091080280FF96C0F99987
:10FD7000FECFF2BDE1BDF89A80B50E94007DE09112
:10FD80000301F09104013196F0930401E093030123
:10FD900020910502309106022196C217D30718F36D
:10FDA000FBCEE0910001F0910101099586CE809192
:10FDB0000802816080930802C0CF80E10E94217D0B
:10FDC00090CE81E00E94217D8CCE82E00E94217D38
:10FDD00088CE8091030190910401880F991F909320
:10FDE0000401809303018091050280FF09C0809186
:10FDF00005029091060201969093060280930502F7
:10FE0000F999FECF1127E0910301F0910401C5E0BB
:10FE1000D1E08091050290910602103091F400919A
:10FE2000570001700130D9F303E000935700E895C3
:10FE30000091570001700130D9F301E100935700A0
:10FE4000E895099019900091570001700130D9F39D
:10FE500001E000935700E8951395103898F01127AA
:10FE60000091570001700130D9F305E0009357006D
:10FE7000E8950091570001700130D9F301E100933A
:10FE80005700E8953296029709F0C7CF103011F06D
:10FE90000296E5CF112484E17DCE869580FF06C0D1
:10FEA0003196F0930401E093030176CF84910E9490
:10FEB000007D2091050230910602E0910301F0914E
:10FEC0000401EECF1F93CF930E94D27CC82F0E94D3
:10FED000007D0E94D27C182F0E94007DC1362CF03C
:10FEE000C75511363CF0175508C0C033D4F3C05382
:10FEF0001136CCF710330CF01053C295C07FC10FF0
:10FF00008C2F992787FD9095CF911F910895CF93BE
:10FF1000282F992787FD9095807F907095958795DC
:10FF20009595879595958795959587958A303CF019
:10FF3000895AC22FCF70CA303CF0C95A06C0805DC2
:10FF4000C22FCF70CA30CCF7C05D0E94007D8C2FCD
:0AFF50000E94007DCF910895FFCFBD
:040000030000F80001
:00000001FF

View File

@@ -1,121 +0,0 @@
:10F800000C943E7C0C945B7C0C945B7C0C945B7C39
:10F810000C945B7C0C945B7C0C945B7C0C945B7C0C
:10F820000C945B7C0C945B7C0C945B7C0C945B7CFC
:10F830000C945B7C0C945B7C0C945B7C0C945B7CEC
:10F840000C945B7C0C945B7C0C945B7C0C945B7CDC
:10F850000C945B7C0C945B7C0C945B7C0C945B7CCC
:10F860000C945B7C0C945B7C0C945B7C0C945B7CBC
:10F870000C945B7C0C945B7C0C945B7C11241FBE11
:10F88000CFEFD0E1DEBFCDBF11E0A0E0B1E0E6E612
:10F89000FFEF02C005900D92A030B107D9F712E03A
:10F8A000A0E0B1E001C01D92A930B107E1F70E94CC
:10F8B000537D0C94B27F0C94007CCF93DF93CDB733
:10F8C000DEB724970FB6F894DEBF0FBECDBF8823F6
:10F8D00009F481E020E0482F55274115510509F42E
:10F8E0003DC0289A19821A821B821C820BC0898112
:10F8F0009A81AB81BC810196A11DB11D89839A8338
:10F90000AB83BC8389819A81AB81BC8180589E4343
:10F91000A040B04060F3289819821A821B821C8292
:10F920000BC089819A81AB81BC810196A11DB11D5B
:10F9300089839A83AB83BC8389819A81AB81BC81A3
:10F9400080509A4FA040B04060F32F5F822F9927DC
:10F9500087FD9095841795070CF4C3CF19821A82FE
:10F960001B821C8289819A81AB81BC818050914726
:10F97000A240B040A0F489819A81AB81BC810196FC
:10F98000A11DB11D89839A83AB83BC8389819A8130
:10F99000AB81BC8180509147A240B04060F3249677
:10F9A0000FB6F894DEBF0FBECDBFDF91CF910895A3
:10F9B000EF92FF920F931F93EE24FF248701289864
:10F9C0008091C00087FD17C00894E11CF11C011D47
:10F9D000111D81E0E81689E0F8068DE3080780E054
:10F9E000180770F3E0910001F091010109958091F1
:10F9F000C00087FFE9CF289A8091C600992787FD2C
:10FA000090951F910F91FF90EF900895982F8091FE
:10FA1000C00085FFFCCF9093C60008950E94D87C5B
:10FA2000803271F0809102018F5F809302018530F6
:10FA300009F00895E0910001F09101010995089500
:10FA400084E10E94067D80E10E94067D0895CF93A7
:10FA5000C82F0E94D87C803241F0809102018F5FD4
:10FA600080930201853081F40AC084E10E94067D02
:10FA70008C2F0E94067D80E10E94067D05C0E091EA
:10FA80000001F09101010995CF910895282F90E090
:10FA900007C08091C0008823E4F78091C6009F5F73
:10FAA0009217B8F30895CFEFD0E1DEBFCDBF0000CD
:10FAB00094B714BE809160008861809360001092BA
:10FAC000600091FF74C189E18093C4001092C50069
:10FAD00088E18093C10086E08093C2005098589AD4
:10FAE000209A83E00E945D7C81E00E945D7C0E9400
:10FAF000D87C8033B9F18133C1F1803409F456C028
:10FB0000813409F45CC0823409F46EC0853409F490
:10FB100071C0803539F1813509F4F3C0823511F1B6
:10FB2000853509F4D3C0863509F4CBC0843609F491
:10FB300065C0843709F4EBC0853709F4D2C0863735
:10FB400009F44AC0809102018F5F809302018530E1
:10FB500071F6E0910001F091010109950E94D87CB5
:10FB6000803349F60E940E7DC2CF0E94D87CC82FF8
:10FB7000803241F784E10E94067D81E40E94067D87
:10FB800086E50E94067D82E50E94067D8C2F0E94FC
:10FB9000067D89E40E94067D83E50E94067D80E55E
:10FBA0000E94067D80E10E94067DA1CF0E94D87C44
:10FBB0008638C0F20E94D87C0E940E7D98CF0E94A9
:10FBC000D87C803809F407C1813809F400C1823833
:10FBD00009F4F9C0883921F080E00E94277D87CFA1
:10FBE00083E00E94277D83CF84E10E94467D0E94AE
:10FBF0000E7D7DCF85E00E94467DF9CF0E94D87CA6
:10FC0000809306020E94D87C8093050280910802AE
:10FC10008E7F809308020E94D87C853409F44BC003
:10FC2000E5E0F1E0119281E0E438F807D9F3D0F390
:10FC3000C0E0D0E0809105029091060218161906E6
:10FC400078F405E011E00E94D87CF80181938F01DF
:10FC500021968091050290910602C817D90798F362
:10FC60000E94D87C803209F06DCF8091080280FF1D
:10FC7000B6C0C0E0D0E02091050230910602121615
:10FC80001306B8F4E0910301F0910401A5E0B1E09E
:10FC9000F999FECFF2BDE1BD8D9180BDFA9AF99A36
:10FCA00031962196C217D30798F3F0930401E0939D
:10FCB000030184E175CF809108028160809308027E
:10FCC000AFCF84E00E94467D80E087CF0E94D87C41
:10FCD000809303010E94D87C809304010E940E7DD2
:10FCE00006CF0E94D87C803209F02CCF84E10E949C
:10FCF000067D8EE10E94067D86E90E94067D8AE0EF
:10FD00004FCF0E940E7D88E080936000FFCF0E945D
:10FD1000D87C809306020E94D87C809305020E94C2
:10FD2000D87C853409F449C0809108028E7F809385
:10FD300008028091030190910401880F991F90930C
:10FD40000401809303010E94D87C803209F0CFCE59
:10FD500084E10E94067DC0E0D0E020910502309150
:10FD600006021216130608F01DCFE0910301F09170
:10FD700004018091080280FF96C0F999FECFF2BD80
:10FD8000E1BDF89A80B50E94067DE0910301F091F3
:10FD900004013196F0930401E093030120910502E0
:10FDA000309106022196C217D30718F3FBCEE091DB
:10FDB0000001F0910101099586CE809108028160D1
:10FDC00080930802C0CF80E10E94277D90CE81E021
:10FDD0000E94277D8CCE82E00E94277D88CE809174
:10FDE000030190910401880F991F9093040180935F
:10FDF00003018091050280FF09C080910502909166
:10FE0000060201969093060280930502F999FECFAF
:10FE10001127E0910301F0910401C5E0D1E0809148
:10FE2000050290910602103091F400915700017084
:10FE30000130D9F303E000935700E8950091570093
:10FE400001700130D9F301E100935700E895099062
:10FE500019900091570001700130D9F301E000932F
:10FE60005700E8951395103898F011270091570026
:10FE700001700130D9F305E000935700E895009137
:10FE8000570001700130D9F301E100935700E89564
:10FE90003296029709F0C7CF103011F00296E5CFE5
:10FEA000112484E17DCE869580FF06C03196F093C3
:10FEB0000401E093030176CF84910E94067D209196
:10FEC000050230910602E0910301F0910401EECFAA
:10FED0001F93CF930E94D87CC82F0E94067D0E945A
:10FEE000D87C182F0E94067DC1362CF0C7551136DC
:10FEF0003CF0175508C0C033D4F3C0531136CCF7CB
:10FF000010330CF01053C295C07FC10F8C2F99276E
:10FF100087FD9095CF911F910895CF93282F992712
:10FF200087FD9095807F907095958795959587959D
:10FF300095958795959587958A303CF0895AC22F7B
:10FF4000CF70CA303CF0C95A06C0805DC22FCF7056
:10FF5000CA30CCF7C05D0E94067D8C2F0E94067DC2
:06FF6000CF910895FFCFD0
:040000030000F80001
:00000001FF

View File

@@ -1,56 +0,0 @@
# 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=0xF800
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: 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 -O2 -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

@@ -1,3 +0,0 @@
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

@@ -1 +0,0 @@
#include "WProgram.h"

View File

@@ -1,202 +0,0 @@
/*
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
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include "wiring.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"
// Define constants and variables for buffering incoming serial data. We're
// using a ring buffer (I think), in which rx_buffer_head is the index of the
// location to which to write the next incoming character and rx_buffer_tail
// is the index of the location from which to read.
#define RX_BUFFER_SIZE 128
struct ring_buffer
{
unsigned char buffer[RX_BUFFER_SIZE];
int head;
int tail;
};
ring_buffer rx_buffer = { { 0 }, 0, 0 };
inline void store_char(unsigned char c, ring_buffer *rx_buffer)
{
int i = (unsigned int)(rx_buffer->head + 1) & (RX_BUFFER_SIZE -1);
// 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 != rx_buffer->tail) {
rx_buffer->buffer[rx_buffer->head] = c;
rx_buffer->head = i;
}
}
// fixed by Mark Sproul this is on the 644/644p
//SIGNAL(SIG_USART_RECV)
SIGNAL(USART0_RX_vect)
{
unsigned char c = UDR0;
store_char(c, &rx_buffer);
}
// Constructors ////////////////////////////////////////////////////////////////
HardwareSerial::HardwareSerial(ring_buffer *rx_buffer,
volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
volatile uint8_t *udr,
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x)
{
_rx_buffer = rx_buffer;
_ubrrh = ubrrh;
_ubrrl = ubrrl;
_ucsra = ucsra;
_ucsrb = ucsrb;
_udr = udr;
_rxen = rxen;
_txen = txen;
_rxcie = rxcie;
_udre = udre;
_u2x = u2x;
}
// Public Methods //////////////////////////////////////////////////////////////
void HardwareSerial::begin(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
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;
}
// assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register)
*_ubrrh = baud_setting >> 8;
*_ubrrl = baud_setting;
sbi(*_ucsrb, _rxen);
sbi(*_ucsrb, _txen);
sbi(*_ucsrb, _rxcie);
}
void HardwareSerial::end()
{
cbi(*_ucsrb, _rxen);
cbi(*_ucsrb, _txen);
cbi(*_ucsrb, _rxcie);
}
int HardwareSerial::available(void)
{
return (unsigned int)(RX_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) & (RX_BUFFER_SIZE-1);
}
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) & (RX_BUFFER_SIZE-1);
return c;
}
}
void HardwareSerial::flush()
{
// don't reverse this or there may be problems if the RX interrupt
// occurs after reading the value of rx_buffer_head but before writing
// the value to rx_buffer_tail; the previous value of rx_buffer_head
// may be written to rx_buffer_tail, making it appear as if the buffer
// don't reverse this or there may be problems if the RX interrupt
// occurs after reading the value of rx_buffer_head but before writing
// the value to rx_buffer_tail; the previous value of rx_buffer_head
// may be written to rx_buffer_tail, making it appear as if the buffer
// were full, not empty.
_rx_buffer->head = _rx_buffer->tail;
}
//
// Drakelive 2012-09-04
//
#if ARDUINO >= 100
size_t HardwareSerial::write(uint8_t c)
{
while (!((*_ucsra) & (1 << _udre)))
;
*_udr = c;
}
#else
void HardwareSerial::write(uint8_t c)
{
while (!((*_ucsra) & (1 << _udre)))
;
*_udr = c;
}
#endif
// Drakelive 2012-09-04
// Preinstantiate Objects //////////////////////////////////////////////////////
HardwareSerial Serial(&rx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRE0, U2X0);
#endif // whole file

View File

@@ -1,220 +0,0 @@
/*
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 "wiring.h"
#include "Print.h"
// Public Methods //////////////////////////////////////////////////////////////
/* default implementation: may be overridden */
void Print::write(const char *str)
{
while (*str)
write(*str++);
}
/* default implementation: may be overridden */
void Print::write(const uint8_t *buffer, size_t size)
{
while (size--)
write(*buffer++);
}
void Print::print(const String &s)
{
for (int i = 0; i < s.length(); i++) {
write(s[i]);
}
}
void Print::print(const char str[])
{
write(str);
}
void Print::print(char c, int base)
{
print((long) c, base);
}
void Print::print(unsigned char b, int base)
{
print((unsigned long) b, base);
}
void Print::print(int n, int base)
{
print((long) n, base);
}
void Print::print(unsigned int n, int base)
{
print((unsigned long) n, base);
}
void Print::print(long n, int base)
{
if (base == 0) {
write(n);
} else if (base == 10) {
if (n < 0) {
print('-');
n = -n;
}
printNumber(n, 10);
} else {
printNumber(n, base);
}
}
void Print::print(unsigned long n, int base)
{
if (base == 0) write(n);
else printNumber(n, base);
}
void Print::print(double n, int digits)
{
printFloat(n, digits);
}
void Print::println(void)
{
print('\r');
print('\n');
}
void Print::println(const String &s)
{
print(s);
println();
}
void Print::println(const char c[])
{
print(c);
println();
}
void Print::println(char c, int base)
{
print(c, base);
println();
}
void Print::println(unsigned char b, int base)
{
print(b, base);
println();
}
void Print::println(int n, int base)
{
print(n, base);
println();
}
void Print::println(unsigned int n, int base)
{
print(n, base);
println();
}
void Print::println(long n, int base)
{
print(n, base);
println();
}
void Print::println(unsigned long n, int base)
{
print(n, base);
println();
}
void Print::println(double n, int digits)
{
print(n, digits);
println();
}
// Private Methods /////////////////////////////////////////////////////////////
void Print::printNumber(unsigned long n, uint8_t base)
{
unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars.
unsigned long i = 0;
if (n == 0) {
print('0');
return;
}
while (n > 0) {
buf[i++] = n % base;
n /= base;
}
for (; i > 0; i--)
print((char) (buf[i - 1] < 10 ?
'0' + buf[i - 1] :
'A' + buf[i - 1] - 10));
}
void Print::printFloat(double number, uint8_t digits)
{
// Handle negative numbers
if (number < 0.0)
{
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;
print(int_part);
// Print the decimal point, but only if there are digits beyond
if (digits > 0)
print(".");
// Extract digits from the remainder one at a time
while (digits-- > 0)
{
remainder *= 10.0;
int toPrint = int(remainder);
print(toPrint);
remainder -= toPrint;
}
}

View File

@@ -1,77 +0,0 @@
/*
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"
#define DEC 10
#define HEX 16
#define OCT 8
#define BIN 2
#define BYTE 0
class Print
{
private:
void printNumber(unsigned long, uint8_t);
void printFloat(double, uint8_t);
public:
//
// Drakelive 2012-09-04
//
#if ARDUINO >= 100
virtual size_t write(uint8_t) = 0;
#else
virtual void write(uint8_t) = 0;
#endif
// Drakelive 2012-09-04
virtual void write(const char *str);
virtual void write(const uint8_t *buffer, size_t size);
void print(const String &);
void print(const char[]);
void print(char, int = BYTE);
void print(unsigned char, int = BYTE);
void print(int, int = DEC);
void print(unsigned int, int = DEC);
void print(long, int = DEC);
void print(unsigned long, int = DEC);
void print(double, int = 2);
void println(const String &s);
void println(const char[]);
void println(char, int = BYTE);
void println(unsigned char, int = BYTE);
void println(int, int = DEC);
void println(unsigned int, int = DEC);
void println(long, int = DEC);
void println(unsigned long, int = DEC);
void println(double, int = 2);
void println(void);
};
#endif

View File

@@ -1 +0,0 @@
#include "wiring.h"

View File

@@ -1,63 +0,0 @@
#ifndef WProgram_h
#define WProgram_h
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <avr/interrupt.h>
#include "wiring.h"
#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);
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
const static uint8_t A0 = 54;
const static uint8_t A1 = 55;
const static uint8_t A2 = 56;
const static uint8_t A3 = 57;
const static uint8_t A4 = 58;
const static uint8_t A5 = 59;
const static uint8_t A6 = 60;
const static uint8_t A7 = 61;
const static uint8_t A8 = 62;
const static uint8_t A9 = 63;
const static uint8_t A10 = 64;
const static uint8_t A11 = 65;
const static uint8_t A12 = 66;
const static uint8_t A13 = 67;
const static uint8_t A14 = 68;
const static uint8_t A15 = 69;
#else
const static uint8_t A0 = 14;
const static uint8_t A1 = 15;
const static uint8_t A2 = 16;
const static uint8_t A3 = 17;
const static uint8_t A4 = 18;
const static uint8_t A5 = 19;
const static uint8_t A6 = 20;
const static uint8_t A7 = 21;
#endif
#endif
#endif

View File

@@ -1,443 +0,0 @@
/*
WString.cpp - String library for Wiring & Arduino
Copyright (c) 2009-10 Hernando Barragan. All rights 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
*/
#include <stdlib.h>
#include "WProgram.h"
#include "WString.h"
String::String( const char *value )
{
if ( value == NULL )
value = "";
getBuffer( _length = strlen( value ) );
if ( _buffer != NULL )
strcpy( _buffer, value );
}
String::String( const String &value )
{
getBuffer( _length = value._length );
if ( _buffer != NULL )
strcpy( _buffer, value._buffer );
}
String::String( const char value )
{
_length = 1;
getBuffer(1);
if ( _buffer != NULL ) {
_buffer[0] = value;
_buffer[1] = 0;
}
}
String::String( const unsigned char value )
{
_length = 1;
getBuffer(1);
if ( _buffer != NULL) {
_buffer[0] = value;
_buffer[1] = 0;
}
}
String::String( const int value, const int base )
{
char buf[33];
itoa((signed long)value, buf, base);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
String::String( const unsigned int value, const int base )
{
char buf[33];
ultoa((unsigned long)value, buf, base);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
String::String( const long value, const int base )
{
char buf[33];
ltoa(value, buf, base);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
String::String( const unsigned long value, const int base )
{
char buf[33];
ultoa(value, buf, 10);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
char String::charAt( unsigned int loc ) const
{
return operator[]( loc );
}
void String::setCharAt( unsigned int loc, const char aChar )
{
if(_buffer == NULL) return;
if(_length > loc) {
_buffer[loc] = aChar;
}
}
int String::compareTo( const String &s2 ) const
{
return strcmp( _buffer, s2._buffer );
}
const String & String::concat( const String &s2 )
{
return (*this) += s2;
}
const String & String::operator=( const String &rhs )
{
if ( this == &rhs )
return *this;
if ( rhs._length > _length )
{
free(_buffer);
getBuffer( rhs._length );
}
if ( _buffer != NULL ) {
_length = rhs._length;
strcpy( _buffer, rhs._buffer );
}
return *this;
}
//const String & String::operator+=( const char aChar )
//{
// if ( _length == _capacity )
// doubleBuffer();
//
// _buffer[ _length++ ] = aChar;
// _buffer[ _length ] = '\0';
// return *this;
//}
const String & String::operator+=( const String &other )
{
_length += other._length;
if ( _length > _capacity )
{
char *temp = (char *)realloc(_buffer, _length + 1);
if ( temp != NULL ) {
_buffer = temp;
_capacity = _length;
} else {
_length -= other._length;
return *this;
}
}
strcat( _buffer, other._buffer );
return *this;
}
int String::operator==( const String &rhs ) const
{
return ( _length == rhs._length && strcmp( _buffer, rhs._buffer ) == 0 );
}
int String::operator!=( const String &rhs ) const
{
return ( _length != rhs.length() || strcmp( _buffer, rhs._buffer ) != 0 );
}
int String::operator<( const String &rhs ) const
{
return strcmp( _buffer, rhs._buffer ) < 0;
}
int String::operator>( const String &rhs ) const
{
return strcmp( _buffer, rhs._buffer ) > 0;
}
int String::operator<=( const String &rhs ) const
{
return strcmp( _buffer, rhs._buffer ) <= 0;
}
int String::operator>=( const String & rhs ) const
{
return strcmp( _buffer, rhs._buffer ) >= 0;
}
char & String::operator[]( unsigned int index )
{
static char dummy_writable_char;
if (index >= _length || !_buffer) {
dummy_writable_char = 0;
return dummy_writable_char;
}
return _buffer[ index ];
}
char String::operator[]( unsigned int index ) const
{
// need to check for valid index, to do later
return _buffer[ index ];
}
boolean String::endsWith( const String &s2 ) const
{
if ( _length < s2._length )
return 0;
return strcmp( &_buffer[ _length - s2._length], s2._buffer ) == 0;
}
boolean String::equals( const String &s2 ) const
{
return ( _length == s2._length && strcmp( _buffer,s2._buffer ) == 0 );
}
boolean String::equalsIgnoreCase( const String &s2 ) const
{
if ( this == &s2 )
return true; //1;
else if ( _length != s2._length )
return false; //0;
return strcmp(toLowerCase()._buffer, s2.toLowerCase()._buffer) == 0;
}
String String::replace( char findChar, char replaceChar )
{
if ( _buffer == NULL ) return *this;
String theReturn = _buffer;
char* temp = theReturn._buffer;
while( (temp = strchr( temp, findChar )) != 0 )
*temp = replaceChar;
return theReturn;
}
String String::replace( const String& match, const String& replace )
{
if ( _buffer == NULL ) return *this;
String temp = _buffer, newString;
int loc;
while ( (loc = temp.indexOf( match )) != -1 )
{
newString += temp.substring( 0, loc );
newString += replace;
temp = temp.substring( loc + match._length );
}
newString += temp;
return newString;
}
int String::indexOf( char temp ) const
{
return indexOf( temp, 0 );
}
int String::indexOf( char ch, unsigned int fromIndex ) const
{
if ( fromIndex >= _length )
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 >= _length )
return -1;
const char *theFind = strstr( &_buffer[ fromIndex ], s2._buffer );
if ( theFind == NULL )
return -1;
return theFind - _buffer; // pointer subtraction
}
int String::lastIndexOf( char theChar ) const
{
return lastIndexOf( theChar, _length - 1 );
}
int String::lastIndexOf( char ch, unsigned int fromIndex ) const
{
if ( fromIndex >= _length )
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, _length - s2._length );
}
int String::lastIndexOf( const String &s2, unsigned int fromIndex ) const
{
// check for empty strings
if ( s2._length == 0 || s2._length - 1 > fromIndex || fromIndex >= _length )
return -1;
// matching first character
char temp = s2[ 0 ];
for ( int i = fromIndex; i >= 0; i-- )
{
if ( _buffer[ i ] == temp && (*this).substring( i, i + s2._length ).equals( s2 ) )
return i;
}
return -1;
}
boolean String::startsWith( const String &s2 ) const
{
if ( _length < s2._length )
return 0;
return startsWith( s2, 0 );
}
boolean String::startsWith( const String &s2, unsigned int offset ) const
{
if ( offset > _length - s2._length )
return 0;
return strncmp( &_buffer[offset], s2._buffer, s2._length ) == 0;
}
String String::substring( unsigned int left ) const
{
return substring( left, _length );
}
String String::substring( unsigned int left, unsigned int right ) const
{
if ( left > right )
{
int temp = right;
right = left;
left = temp;
}
if ( right > _length )
{
right = _length;
}
char temp = _buffer[ right ]; // save the replaced character
_buffer[ right ] = '\0';
String outPut = ( _buffer + left ); // pointer arithmetic
_buffer[ right ] = temp; //restore character
return outPut;
}
String String::toLowerCase() const
{
String temp = _buffer;
for ( unsigned int i = 0; i < _length; i++ )
temp._buffer[ i ] = (char)tolower( temp._buffer[ i ] );
return temp;
}
String String::toUpperCase() const
{
String temp = _buffer;
for ( unsigned int i = 0; i < _length; i++ )
temp._buffer[ i ] = (char)toupper( temp._buffer[ i ] );
return temp;
}
String String::trim() const
{
if ( _buffer == NULL ) return *this;
String temp = _buffer;
unsigned int i,j;
for ( i = 0; i < _length; i++ )
{
if ( !isspace(_buffer[i]) )
break;
}
for ( j = temp._length - 1; j > i; j-- )
{
if ( !isspace(_buffer[j]) )
break;
}
return temp.substring( i, j + 1);
}
void String::getBytes(unsigned char *buf, unsigned int bufsize)
{
if (!bufsize || !buf) return;
unsigned int len = bufsize - 1;
if (len > _length) len = _length;
strncpy((char *)buf, _buffer, len);
buf[len] = 0;
}
void String::toCharArray(char *buf, unsigned int bufsize)
{
if (!bufsize || !buf) return;
unsigned int len = bufsize - 1;
if (len > _length) len = _length;
strncpy(buf, _buffer, len);
buf[len] = 0;
}
long String::toInt() {
return atol(_buffer);
}

View File

@@ -1,112 +0,0 @@
/*
WString.h - String library for Wiring & Arduino
Copyright (c) 2009-10 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 String_h
#define String_h
//#include "WProgram.h"
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
class String
{
public:
// constructors
String( const char *value = "" );
String( const String &value );
String( const char );
String( const unsigned char );
String( const int, const int base=10);
String( const unsigned int, const int base=10 );
String( const long, const int base=10 );
String( const unsigned long, const int base=10 );
~String() { free(_buffer); _length = _capacity = 0;} //added _length = _capacity = 0;
// operators
const String & operator = ( const String &rhs );
const String & operator +=( const String &rhs );
//const String & operator +=( const char );
int operator ==( const String &rhs ) const;
int operator !=( const String &rhs ) const;
int operator < ( const String &rhs ) const;
int operator > ( const String &rhs ) const;
int operator <=( const String &rhs ) const;
int operator >=( const String &rhs ) const;
char operator []( unsigned int index ) const;
char& operator []( unsigned int index );
//operator const char *() const { return _buffer; }
// general methods
char charAt( unsigned int index ) const;
int compareTo( const String &anotherString ) const;
unsigned char endsWith( const String &suffix ) const;
unsigned char equals( const String &anObject ) const;
unsigned char equalsIgnoreCase( const String &anotherString ) const;
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;
const unsigned int length( ) const { return _length; }
void setCharAt(unsigned int index, const char ch);
unsigned char startsWith( const String &prefix ) const;
unsigned char startsWith( const String &prefix, unsigned int toffset ) const;
String substring( unsigned int beginIndex ) const;
String substring( unsigned int beginIndex, unsigned int endIndex ) const;
String toLowerCase( ) const;
String toUpperCase( ) const;
String trim( ) const;
void getBytes(unsigned char *buf, unsigned int bufsize);
void toCharArray(char *buf, unsigned int bufsize);
long toInt( );
const String& concat( const String &str );
String replace( char oldChar, char newChar );
String replace( const String& match, const String& replace );
friend String operator + ( String lhs, const String &rhs );
protected:
char *_buffer; // the actual char array
unsigned int _capacity; // the array length minus one (for the '\0')
unsigned int _length; // the String length (not counting the '\0')
void getBuffer(unsigned int maxStrLen);
private:
};
// allocate buffer space
inline void String::getBuffer(unsigned int maxStrLen)
{
_capacity = maxStrLen;
_buffer = (char *) malloc(_capacity + 1);
if (_buffer == NULL) _length = _capacity = 0;
}
inline String operator+( String lhs, const String &rhs )
{
return lhs += rhs;
}
#endif

View File

@@ -1,14 +0,0 @@
#include <WProgram.h>
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}

View File

@@ -1,200 +0,0 @@
/*
pins_arduino.c - pin definitions for the Arduino board
Part of Arduino / Wiring Lite
Copyright (c) 2005 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: pins_arduino.c 254 2007-04-20 23:17:38Z mellis $
*/
#include <avr/io.h>
#include "wiring_private.h"
#include "pins_arduino.h"
// On the Sanguino board, digital pins are also used
// for the analog output (software PWM). Analog input
// pins are a separate set.
// 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 PA 1
#define PB 2
#define PC 3
#define PD 4
// these arrays map port names (e.g. port B) to the
// appropriate addresses for various functions (e.g. reading
// and writing)
const uint8_t PROGMEM port_to_mode_PGM[] =
{
NOT_A_PORT,
(uint8_t) (uint16_t) &DDRA,
(uint8_t) (uint16_t) &DDRB,
(uint8_t) (uint16_t) &DDRC,
(uint8_t) (uint16_t) &DDRD,
};
const uint8_t PROGMEM port_to_output_PGM[] =
{
NOT_A_PORT,
(uint8_t) (uint16_t) &PORTA,
(uint8_t) (uint16_t) &PORTB,
(uint8_t) (uint16_t) &PORTC,
(uint8_t) (uint16_t) &PORTD,
};
const uint8_t PROGMEM port_to_input_PGM[] =
{
NOT_A_PORT,
(uint8_t) (uint16_t) &PINA,
(uint8_t) (uint16_t) &PINB,
(uint8_t) (uint16_t) &PINC,
(uint8_t) (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 */
};

View File

@@ -1,65 +0,0 @@
/*
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 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
extern const uint8_t PROGMEM port_to_mode_PGM[];
extern const uint8_t PROGMEM port_to_input_PGM[];
extern const uint8_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 *)( (uint16_t) pgm_read_byte( port_to_output_PGM + (P))) )
#define portInputRegister(P) ( (volatile uint8_t *)( (uint16_t) pgm_read_byte( port_to_input_PGM + (P))) )
#define portModeRegister(P) ( (volatile uint8_t *)( (uint16_t) pgm_read_byte( port_to_mode_PGM + (P))) )
#endif

View File

@@ -1,136 +0,0 @@
/*
wiring.h - 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$
*/
#ifndef Wiring_h
#define Wiring_h
#include <math.h>
#include <avr/io.h>
#include <stdlib.h>
#include "binary.h"
#ifdef __cplusplus
extern "C"{
#endif
#define HIGH 0x1
#define LOW 0x0
#define INPUT 0x0
#define OUTPUT 0x1
#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_ATmega1280__) || defined(__AVR_ATmega2560__)
#define INTERNAL1V1 2
#define INTERNAL2V56 3
#else
#define INTERNAL 3
#endif
#define DEFAULT 1
#define EXTERNAL 0
// 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) * 1000L) / (F_CPU / 1000L) )
#define microsecondsToClockCycles(a) ( ((a) * (F_CPU / 1000L)) / 1000L )
#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);
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View File

@@ -1,101 +0,0 @@
##############################################################
Gen7-644-16.name=Gen7 with ATmega644 and 16 MHz
Gen7-644-16.upload.protocol=stk500v2
Gen7-644-16.upload.maximum_size=63488
Gen7-644-16.upload.speed=115200
Gen7-644-16.bootloader.low_fuses=0xF7
Gen7-644-16.bootloader.high_fuses=0xD4
Gen7-644-16.bootloader.extended_fuses=0xFD
Gen7-644-16.bootloader.path=Gen7
Gen7-644-16.bootloader.file=bootloader-644-16MHz.hex
Gen7-644-16.bootloader.unlock_bits=0x3F
Gen7-644-16.bootloader.lock_bits=0x0F
Gen7-644-16.build.mcu=atmega644
Gen7-644-16.build.f_cpu=16000000L
Gen7-644-16.build.core=arduino
##############################################################
Gen7-644-20.name=Gen7 with ATmega644 and 20 MHz
Gen7-644-20.upload.protocol=stk500v2
Gen7-644-20.upload.maximum_size=63488
Gen7-644-20.upload.speed=115200
Gen7-644-20.bootloader.low_fuses=0xF7
Gen7-644-20.bootloader.high_fuses=0xD4
Gen7-644-20.bootloader.extended_fuses=0xFD
Gen7-644-20.bootloader.path=Gen7
Gen7-644-20.bootloader.file=bootloader-644-20MHz.hex
Gen7-644-20.bootloader.unlock_bits=0x3F
Gen7-644-20.bootloader.lock_bits=0x0F
Gen7-644-20.build.mcu=atmega644
Gen7-644-20.build.f_cpu=20000000L
Gen7-644-20.build.core=arduino
##############################################################
Gen7-644P-16.name=Gen7 with ATmega644P and 16 MHz
Gen7-644P-16.upload.protocol=stk500v2
Gen7-644P-16.upload.maximum_size=63488
Gen7-644P-16.upload.speed=115200
Gen7-644P-16.bootloader.low_fuses=0xF7
Gen7-644P-16.bootloader.high_fuses=0xD4
Gen7-644P-16.bootloader.extended_fuses=0xFD
Gen7-644P-16.bootloader.path=Gen7
Gen7-644P-16.bootloader.file=bootloader-644P-16MHz.hex
Gen7-644P-16.bootloader.unlock_bits=0x3F
Gen7-644P-16.bootloader.lock_bits=0x0F
Gen7-644P-16.build.mcu=atmega644p
Gen7-644P-16.build.f_cpu=16000000L
Gen7-644P-16.build.core=arduino
##############################################################
Gen7-644P-20.name=Gen7 with ATmega644P and 20 MHz
Gen7-644P-20.upload.protocol=stk500v2
Gen7-644P-20.upload.maximum_size=63488
Gen7-644P-20.upload.speed=115200
Gen7-644P-20.bootloader.low_fuses=0xF7
Gen7-644P-20.bootloader.high_fuses=0xD4
Gen7-644P-20.bootloader.extended_fuses=0xFD
Gen7-644P-20.bootloader.path=Gen7
Gen7-644P-20.bootloader.file=bootloader-644P-20MHz.hex
Gen7-644P-20.bootloader.unlock_bits=0x3F
Gen7-644P-20.bootloader.lock_bits=0x0F
Gen7-644P-20.build.mcu=atmega644p
Gen7-644P-20.build.f_cpu=20000000L
Gen7-644P-20.build.core=arduino
##############################################################
Gen7-1284p-16.name=Gen7 with ATmega1284 and 16 MHz
Gen7-1284p-16.upload.protocol=stk500v2
Gen7-1284p-16.upload.maximum_size=129024
Gen7-1284p-16.upload.speed=115200
Gen7-1284p-16.bootloader.low_fuses=0xF7
Gen7-1284p-16.bootloader.high_fuses=0xD4
Gen7-1284p-16.bootloader.extended_fuses=0xFD
Gen7-1284p-16.bootloader.path=Gen7
Gen7-1284p-16.bootloader.file=bootloader-1284P-16MHz.hex
Gen7-1284p-16.bootloader.unlock_bits=0x3F
Gen7-1284p-16.bootloader.lock_bits=0x2F
Gen7-1284p-16.build.mcu=atmega1284p
Gen7-1284p-16.build.f_cpu=16000000L
Gen7-1284p-16.build.core=arduino
##############################################################
Gen7-1284p-20.name=Gen7 with ATmega1284 and 20 MHz
Gen7-1284p-20.upload.protocol=stk500v2
Gen7-1284p-20.upload.maximum_size=129024
Gen7-1284p-20.upload.speed=115200
Gen7-1284p-20.bootloader.low_fuses=0xF7
Gen7-1284p-20.bootloader.high_fuses=0xD4
Gen7-1284p-20.bootloader.extended_fuses=0xFD
Gen7-1284p-20.bootloader.path=Gen7
Gen7-1284p-20.bootloader.file=bootloader-1284P-16MHz.hex
Gen7-1284p-20.bootloader.unlock_bits=0x3F
Gen7-1284p-20.bootloader.lock_bits=0x2F
Gen7-1284p-20.build.mcu=atmega1284p
Gen7-1284p-20.build.f_cpu=20000000L
Gen7-1284p-20.build.core=arduino

View File

@@ -1,113 +0,0 @@
:020000021000EC
:10F8000011241FBE8FEF90E49EBF8DBF01C32F92C6
:10F810003F924F925F926F927F928F929F92AF92A0
:10F82000BF92CF92DF92EF92FF920F931F93DF93DD
:10F83000CF93CDB7DEB7C252D1400FB6F894DEBF3A
:10F840000FBECDBF44245524DD24C25EDE4F188296
:10F85000CE51D1408824992454013AC20E9428FFF5
:10F86000282F133059F1143028F4113081F0123060
:10F8700000F507C0153081F1153030F1163071F701
:10F880003DC08B3159F711E05BE1D52EE7CF8130D8
:10F8900041F0C25EDE4F3881CE51D140831709F06E
:10F8A00019C2D226C25EDE4F2883CE51D14012E06B
:10F8B000D5CFF82EEE24D82613E0D0CF90E0E82A5A
:10F8C000F92AD22614E0CACF8E3009F003C2D82616
:10F8D00015E044245524C2CFE1E0F0E0EC0FFD1F19
:10F8E000E40DF51D80830894411C511CD8264E144C
:10F8F0005F0409F0B3CF720116E0B0CF8D1509F0A7
:10F90000E9C1EAC1CC2447C08D81803311F090E079
:10F910000AC08F81882311F49EE105C0813011F067
:10F9200095E001C097E91A821B828D818C838E81BC
:10F930008D839E831F8247E0E42EF12C88C11A82BA
:10F9400068E06B8383E58C8394E59D83EBE4EE8331
:10F9500085E38F8380E3888789878FE58A8782E3C1
:10F960008B873BE0E32EF12C72C18A81813941F013
:10F97000823941F0803911F48FE005C080E003C086
:10F9800082E001C08AE01A828B8323E0E22EF12C10
:10F990005EC1CC24C3941A8292E0E92EF12C58C1A6
:10F9A0008D81882311F48EE128C0813011F085E02B
:10F9B00024C087E922C01A8229E0E1E0F0E0209328
:10F9C000570084911BC08B81803589F48C818830ED
:10F9D00039F439E0E2E0F0E03093570084910DC053
:10F9E00069E0E0E0F0E060935700849106C099E0A0
:10F9F000E3E0F0E09093570084911A828B831C829D
:10FA000084E0E82EF12C23C18A8190E0A0E0B0E0F0
:10FA1000B82EAA24992488248B8190E0A0E0B0E03D
:10FA2000DC0199278827882A992AAA2ABB2A8D814E
:10FA300090E0A0E0B0E0882A992AAA2ABB2A8C810B
:10FA400090E0A0E0B0E0BA2FA92F982F8827882A4D
:10FA5000992AAA2ABB2A88C0EA81C05EDE4FE883C1
:10FA6000C052D140C15EDE4F1882CF51D1408B8150
:10FA7000A82FB0E0C15EDE4F28813981CF51D1403F
:10FA8000A22BB32B933109F042C075016401CC0C59
:10FA9000DD1CEE1CFF1C33E0F601E0925B003093AE
:10FAA0005700E89507B600FCFDCF8E01055F1F4F9C
:10FAB000F801808161810E5F1F4FA5019401220F23
:10FAC000331F441F551F362E222490E0822993298C
:10FAD00061E00C01F90140935B0060935700E895E9
:10FAE00011240894811C911CA11CB11C129701F7D0
:10FAF00085E0F601E0925B0080935700E89507B639
:10FB000000FCFDCF81E180935700E8952DC0FE01F8
:10FB10003B9620E030E040E050E011977D0100E0AE
:10FB200010E00894E11CF11C011D111D6081F99980
:10FB3000FECF1FBAC901880D991D92BD81BD60BD60
:10FB40000FB6F894FA9AF99A0FBE2F5F3F4F4F4FB6
:10FB50005F4F2E153F054007510711F03196E6CF54
:10FB6000820E931EA41EB51E1A826EC09A81CE5DAF
:10FB7000DE4F9883C252D140CF5DDE4F1882C15212
:10FB8000D1408B81C82EDD24CF5DDE4FE881F98125
:10FB9000C152D140CE2ADF2A1A8289818431E1F410
:10FBA0009601BE016D5F7F4FD501C401880F991F7B
:10FBB000AA1FBB1FABBFFC0187919691FB018083FD
:10FBC00091836E5F7F4F0894811C911CA11CB11C16
:10FBD0002250304049F72EC0BE016D5F7F4F20E0BC
:10FBE00030E040E050E00894C108D108760100E020
:10FBF00010E00894C11CD11C0894E11CF11C011DEB
:10FC0000111DF999FECFC901880D991D92BD81BDC5
:10FC1000F89A80B5FB018193BF012F5F3F4F4F4F93
:10FC20005F4F2E153F054007510759F7820E931E6F
:10FC3000A41EB51E23E0E22EF12CEC0CFD1CFB01F2
:10FC4000108205C080EC8A8392E0E92EF12CCC244E
:10FC50008BE10E94C7FEC25EDE4F8881CE51D1404B
:10FC60000E94C7FE8F2D0E94C7FE8E2D0E94C7FEE8
:10FC70008EE00E94C7FE85E1D82EC25EDE4FF8817D
:10FC8000CE51D140DF26DE24DF243E010894611CE2
:10FC9000711C0AC0F30111913F01812F0E94C7FE20
:10FCA000D1260894E108F108E114F10499F78D2DAB
:10FCB0000E94C7FECC2009F044C0C25EDE4FF8812E
:10FCC000CE51D140FF5FC25EDE4FF883CE51D140AE
:10FCD000EE24FF2410E0C2CD9981933109F4BCCE0B
:10FCE0009431B0F4933009F440CE943038F491302C
:10FCF00009F425CE923009F0A5CF04CE903109F455
:10FD000001CE913109F445CE963009F09BCF7CCEDF
:10FD1000983109F458CE993150F4953109F49CCEBC
:10FD2000953108F423CF963109F08CCF1FCF9B314A
:10FD300009F436CE9D3109F4E7CD9A3109F082CF2E
:10FD40003ACECE5DDE4F0FB6F894DEBF0FBECDBF0C
:10FD5000CF91DF911F910F91FF90EF90DF90CF90A7
:10FD6000BF90AF909F908F907F906F905F904F90DB
:10FD70003F902F9008958091C00087FFFCCF089599
:10FD80008091C00087FFFCCF8091C6000895982F16
:10FD90008091C00085FFFCCF9093C60008959B0121
:10FDA000AC0197FF11C08091C00082608093C000B9
:10FDB00050954095309521953F4F4F4F5F4F60E0F4
:10FDC00074E284EF90E009C08091C0008D7F809341
:10FDD000C00060E072E18AE790E00E9447FF2C5F7C
:10FDE0003F4F4F4F5F4F83E0569547953795279587
:10FDF0008A95D1F7215030403093C5002093C4003C
:10FE0000089518B817B81F921F921F920895FFCF38
:10FE100084B714BE90E083709070892B39F418B8C1
:10FE200017B81F921F921F920895FFCF88E1809309
:10FE3000C10060E07EE38EEF9FEF0E94CFFE0E9444
:10FE400007FC18B817B81F921F921F920895FFCF92
:10FE500020E030E040E050E013C02F5F3F4F4F4FB5
:10FE60005F4F21308AE6380788E1480780E058076D
:10FE700039F418B817B81F921F921F920895FFCF38
:10FE80008091C00087FFE9CF0E94C0FE0895A1E2E3
:10FE90001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F04
:10FEA000FF1FA217B307E407F50720F0A21BB30B4F
:10FEB000E40BF50B661F771F881F991F1A9469F7CB
:10FEC00060957095809590959B01AC01BD01CF0127
:02FED000089593
:040000031000F800F1
:00000001FF

View File

@@ -1,75 +0,0 @@
:10F800008FEF90E19EBF8DBF11241FBE5A9A00C09A
:10F81000CDB7DEB7CD51D140DEBFCDBF1092C50010
:10F8200088E08093C40088E18093C100EE24FF2427
:10F8300020E0552400E010E039E0432E9BE0292E23
:10F84000312C2C0E3D1ECFC14150504060407040C5
:10F8500011F43FE206C08091C00087FFF5CF3091E0
:10F86000C600933021F1943028F4913099F0923011
:10F87000C8F407C0953049F1953000F19630D1F5C4
:10F8800035C03B3119F491E02BE134C03F3291F5A2
:10F890003983BBC1313011F0351559F52327532E6B
:10F8A00092E028C0B32FA0E0232793E023C0832F4A
:10F8B00090E0A82BB92B232794E01CC03E30C9F45C
:10F8C000232795E0EE24FF2415C0E1E0F0E0EC0FE3
:10F8D000FD1FEE0DFF1D30830894E11CF11C232752
:10F8E000EA16FB0639F4D70196E004C0321709F492
:10F8F0008CC190E044E755E962E470E0ACCF90E061
: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
:10FBE000992349F4539444E755E962E470E090E0C6
:10FBF000A0E0B0E030CE5A9881E180935700E895BC
:10FC000011241F921F920895FFCF9981933109F417
:10FC1000FACE9431C8F4963009F4EACE973050F415
:10FC2000923009F46CCE933009F49BCE913009F0F8
:10FC300072CF81CE913109F4A7CE923108F0E1CE96
:10FC4000903109F068CF5BCE983109F4B4CE993188
:10FC500050F4953109F4D7CE953108F426CF96317A
:10FC600009F059CF22CF9B3109F493CE9C3120F477
:10FC70009A3109F050CF98CE9D3109F442CE9F328F
:06FC800009F049CFB8CFE6
:040000030000F80001
:00000001FF

View File

@@ -1,75 +0,0 @@
: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

@@ -1,75 +0,0 @@
:10F800008FEF90E19EBF8DBF11241FBE5A9A00C09A
:10F81000CDB7DEB7CD51D140DEBFCDBF1092C50010
:10F8200088E08093C40088E18093C100EE24FF2427
:10F8300020E0552400E010E039E0432E93E0292E2B
:10F84000312C2C0E3D1ECDC14150504060407040C7
:10F8500011F43FE206C08091C00087FFF5CF3091E0
:10F86000C600933021F1943028F4913099F0923011
:10F87000C8F407C0953049F1953000F19630D1F5C4
:10F8800035C03B3119F491E02BE134C03F3291F5A2
:10F890003983B9C1313011F0351559F52327532E6D
:10F8A00092E028C0B32FA0E0232793E023C0832F4A
:10F8B00090E0A82BB92B232794E01CC03E30C9F45C
:10F8C000232795E0EE24FF2415C0E1E0F0E0EC0FE3
:10F8D000FD1FEE0DFF1D30830894E11CF11C232752
:10F8E000EA16FB0639F4D70196E004C0321709F492
:10F8F0008AC190E044E755E962E470E0ACCF90E063
:10F9000044C08D81803311F090E00AC08F8188233C
:10F9100011F49EE105C0813011F09AE001C096E932
:10F920001A821B828D818C838E818D839E831F82A0
:10F9300047E050E0F2C01A8288E08B8381E48C8338
:10F9400086E58D8382E58E8389E48F8383E58887CE
:10F9500080E589878FE58A8782E38B874BE050E0DB
:10F96000DCC08A81813941F0823941F0803911F45B
:10F970008FE005C080E003C082E001C08AE01A8207
:10F980008B8343E050E0C9C091E01A8242E050E02E
:10F99000C5C08D81882311F48EE124C0813011F01F
:10F9A0008AE020C086E91EC01A82E1E0F0E04092C1
:10F9B0005700849118C08B81803579F48C81883010
:10F9C00031F4E2E0F0E04092570084910BC0E0E0B7
:10F9D000F0E040925700849105C0E3E0F0E04092EF
:10F9E000570084911A828B831C8244E050E095C0BA
:10F9F000BC80AA248D81082F10E00A291B29000F42
:10FA0000111F1A8288C09A8088248B81682F70E029
:10FA100068297929933109F034C0F7EF0F3F1F07A8
:10FA200010F0A80141C023E0F80120935700E895A9
:10FA300007B600FCFDCFA801DE011B968C91119644
:10FA40002C9111971296D22ECC2490E08C299D29CE
:10FA500021E0FA010C0120935700E89511244E5F34
:10FA60005F4F6250704051F725E0F8012093570036
:10FA7000E89507B600FCFDCF81E180935700E8953B
:10FA800013C0A801FB01DE011B9641BD52BD4F5FB3
:10FA90005F4F8D9180BDFA9AF99AF999FECF31970F
:10FAA000A1F7A801460F571F1A828A0134C07A8035
:10FAB00066248B81A82FB0E0A629B7291A828981F4
:10FAC000843181F4BD019101F80185919491F9018E
:10FAD000808391832E5F3F4F0E5F1F4F62507040B7
:10FAE00099F711C0A801BD01910141BD52BD4F5F01
:10FAF0005F4FF89A80B5F90181939F016150704082
:10FB0000A1F70A0F1B1FAD014D5F5F4FF901108276
:10FB100004C080EC8A8342E050E090E0FBE1F09387
:10FB2000C6008091C00086FFFCCF8091C000806439
:10FB30008093C0005092C6008091C00086FFFCCF29
:10FB40008091C00080648093C000652F5093C600F0
:10FB50008091C00086FFFCCF8091C00080648093BC
:10FB6000C000342F4093C6008091C00086FFFCCFB8
:10FB70008091C00080648093C0008EE08093C600B6
:10FB80008091C00086FFFCCF8091C000806480938C
:10FB9000C00025E1252523272627FE01319610C028
:10FBA00030813093C6008091C00086FFFCCF319633
:10FBB0008091C00080648093C00023274150504052
:10FBC0004115510569F72093C6008091C00086FF5A
:10FBD000FCCF8091C00080648093C000992349F4D9
:10FBE000539444E755E962E470E090E0A0E0B0E0AF
:10FBF00032CE5A9881E180935700E89511241F92E4
:10FC00001F920895FFCF9981933109F4FCCE94316E
:10FC1000C8F4963009F4ECCE973050F4923009F4E1
:10FC20006ECE933009F49DCE913009F072CF83CE21
:10FC3000913109F4A9CE923108F0E3CE903109F068
:10FC400068CF5DCE983109F4B6CE993150F4953134
:10FC500009F4D9CE953108F42ACF963109F059CF5D
:10FC600026CF9B3109F495CE9C3120F49A3109F0CE
:10FC700050CF9ACE9D3109F444CE9F3209F049CF3E
:02FC8000B8CFFB
:040000030000F80001
:00000001FF

View File

@@ -1,75 +0,0 @@
:10F800008FEF90E19EBF8DBF11241FBE5A9A00C09A
:10F81000CDB7DEB7CD51D140DEBFCDBF1092C50010
:10F820008AE08093C40088E18093C100EE24FF2425
:10F8300020E0552400E010E039E0432E93E0292E2B
:10F84000312C2C0E3D1ECDC14150504060407040C7
:10F8500011F43FE206C08091C00087FFF5CF3091E0
:10F86000C600933021F1943028F4913099F0923011
:10F87000C8F407C0953049F1953000F19630D1F5C4
:10F8800035C03B3119F491E02BE134C03F3291F5A2
:10F890003983B9C1313011F0351559F52327532E6D
:10F8A00092E028C0B32FA0E0232793E023C0832F4A
:10F8B00090E0A82BB92B232794E01CC03E30C9F45C
:10F8C000232795E0EE24FF2415C0E1E0F0E0EC0FE3
:10F8D000FD1FEE0DFF1D30830894E11CF11C232752
:10F8E000EA16FB0639F4D70196E004C0321709F492
:10F8F0008AC190E041ED5AE363E570E0ACCF90E05F
:10F9000044C08D81803311F090E00AC08F8188233C
:10F9100011F49EE105C0813011F09AE001C096E932
:10F920001A821B828D818C838E818D839E831F82A0
:10F9300047E050E0F2C01A8288E08B8381E48C8338
:10F9400086E58D8382E58E8389E48F8383E58887CE
:10F9500080E589878FE58A8782E38B874BE050E0DB
:10F96000DCC08A81813941F0823941F0803911F45B
:10F970008FE005C080E003C082E001C08AE01A8207
:10F980008B8343E050E0C9C091E01A8242E050E02E
:10F99000C5C08D81882311F48EE124C0813011F01F
:10F9A0008AE020C086E91EC01A82E1E0F0E04092C1
:10F9B0005700849118C08B81803579F48C81883010
:10F9C00031F4E2E0F0E04092570084910BC0E0E0B7
:10F9D000F0E040925700849105C0E3E0F0E04092EF
:10F9E000570084911A828B831C8244E050E095C0BA
:10F9F000BC80AA248D81082F10E00A291B29000F42
:10FA0000111F1A8288C09A8088248B81682F70E029
:10FA100068297929933109F034C0F7EF0F3F1F07A8
:10FA200010F0A80141C023E0F80120935700E895A9
:10FA300007B600FCFDCFA801DE011B968C91119644
:10FA40002C9111971296D22ECC2490E08C299D29CE
:10FA500021E0FA010C0120935700E89511244E5F34
:10FA60005F4F6250704051F725E0F8012093570036
:10FA7000E89507B600FCFDCF81E180935700E8953B
:10FA800013C0A801FB01DE011B9641BD52BD4F5FB3
:10FA90005F4F8D9180BDFA9AF99AF999FECF31970F
:10FAA000A1F7A801460F571F1A828A0134C07A8035
:10FAB00066248B81A82FB0E0A629B7291A828981F4
:10FAC000843181F4BD019101F80185919491F9018E
:10FAD000808391832E5F3F4F0E5F1F4F62507040B7
:10FAE00099F711C0A801BD01910141BD52BD4F5F01
:10FAF0005F4FF89A80B5F90181939F016150704082
:10FB0000A1F70A0F1B1FAD014D5F5F4FF901108276
:10FB100004C080EC8A8342E050E090E0FBE1F09387
:10FB2000C6008091C00086FFFCCF8091C000806439
:10FB30008093C0005092C6008091C00086FFFCCF29
:10FB40008091C00080648093C000652F5093C600F0
:10FB50008091C00086FFFCCF8091C00080648093BC
:10FB6000C000342F4093C6008091C00086FFFCCFB8
:10FB70008091C00080648093C0008EE08093C600B6
:10FB80008091C00086FFFCCF8091C000806480938C
:10FB9000C00025E1252523272627FE01319610C028
:10FBA00030813093C6008091C00086FFFCCF319633
:10FBB0008091C00080648093C00023274150504052
:10FBC0004115510569F72093C6008091C00086FF5A
:10FBD000FCCF8091C00080648093C000992349F4D9
:10FBE000539441ED5AE363E570E090E0A0E0B0E0AB
:10FBF00032CE5A9881E180935700E89511241F92E4
:10FC00001F920895FFCF9981933109F4FCCE94316E
:10FC1000C8F4963009F4ECCE973050F4923009F4E1
:10FC20006ECE933009F49DCE913009F072CF83CE21
:10FC3000913109F4A9CE923108F0E3CE903109F068
:10FC400068CF5DCE983109F4B6CE993150F4953134
:10FC500009F4D9CE953108F42ACF963109F059CF5D
:10FC600026CF9B3109F495CE9C3120F49A3109F0CE
:10FC700050CF9ACE9D3109F444CE9F3209F049CF3E
:02FC8000B8CFFB
:040000030000F80001
:00000001FF

View File

@@ -1,239 +0,0 @@
/*
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
*/
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include "wiring.h"
#include "wiring_private.h"
#include "HardwareSerial.h"
// Define constants and variables for buffering incoming serial data. We're
// using a ring buffer (I think), in which rx_buffer_head is the index of the
// location to which to write the next incoming character and rx_buffer_tail
// is the index of the location from which to read.
#define RX_BUFFER_SIZE 128
struct ring_buffer {
unsigned char buffer[RX_BUFFER_SIZE];
int head;
int tail;
};
ring_buffer rx_buffer = { { 0 }, 0, 0 };
#ifdef UDR1
ring_buffer rx_buffer1 = { { 0 }, 0, 0 };
#endif
#ifdef UDR2
ring_buffer rx_buffer2 = { { 0 }, 0, 0 };
#endif
#ifdef UDR3
ring_buffer rx_buffer3 = { { 0 }, 0, 0 };
#endif
inline void store_char(unsigned char c, ring_buffer *rx_buffer)
{
int i = (rx_buffer->head + 1) % RX_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 != rx_buffer->tail) {
rx_buffer->buffer[rx_buffer->head] = c;
rx_buffer->head = i;
}
}
ISR(USART0_RX_vect)
{
unsigned char c = UDR0;
store_char(c, &rx_buffer);
}
#ifdef UDR1
ISR(USART1_RX_vect)
{
unsigned char c = UDR1;
store_char(c, &rx_buffer1);
}
#ifdef UDR2
ISR(USART2_RX_vect)
{
unsigned char c = UDR2;
store_char(c, &rx_buffer2);
}
#ifdef UDR2
ISR(USART3_RX_vect)
{
unsigned char c = UDR3;
store_char(c, &rx_buffer3);
}
#endif
#endif
#else
#if defined(__AVR_ATmega8__)
SIGNAL(SIG_UART_RECV)
#else
SIGNAL(USART_RX_vect)
#endif
{
#if defined(__AVR_ATmega8__)
unsigned char c = UDR;
#else
unsigned char c = UDR0;
#endif
store_char(c, &rx_buffer);
}
#endif
// Constructors ////////////////////////////////////////////////////////////////
HardwareSerial::HardwareSerial(ring_buffer *rx_buffer,
volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
volatile uint8_t *udr,
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x)
{
_rx_buffer = rx_buffer;
_ubrrh = ubrrh;
_ubrrl = ubrrl;
_ucsra = ucsra;
_ucsrb = ucsrb;
_udr = udr;
_rxen = rxen;
_txen = txen;
_rxcie = rxcie;
_udre = udre;
_u2x = u2x;
}
// Public Methods //////////////////////////////////////////////////////////////
void HardwareSerial::begin(long baud)
{
uint16_t baud_setting;
bool use_u2x;
// U2X mode is needed for baud rates higher than (CPU Hz / 16)
if (baud > F_CPU / 16) {
use_u2x = true;
} else {
// figure out if U2X mode would allow for a better connection
// calculate the percent difference between the baud-rate specified and
// the real baud rate for both U2X and non-U2X mode (0-255 error percent)
uint8_t nonu2x_baud_error = abs((int)(255-((F_CPU/(16*(((F_CPU/8/baud-1)/2)+1))*255)/baud)));
uint8_t u2x_baud_error = abs((int)(255-((F_CPU/(8*(((F_CPU/4/baud-1)/2)+1))*255)/baud)));
// prefer non-U2X mode because it handles clock skew better
use_u2x = (nonu2x_baud_error > u2x_baud_error);
}
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;
}
// assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register)
*_ubrrh = baud_setting >> 8;
*_ubrrl = baud_setting;
sbi(*_ucsrb, _rxen);
sbi(*_ucsrb, _txen);
sbi(*_ucsrb, _rxcie);
}
void HardwareSerial::end()
{
cbi(*_ucsrb, _rxen);
cbi(*_ucsrb, _txen);
cbi(*_ucsrb, _rxcie);
}
uint8_t HardwareSerial::available(void)
{
return (RX_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % RX_BUFFER_SIZE;
}
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 = (_rx_buffer->tail + 1) % RX_BUFFER_SIZE;
return c;
}
}
void HardwareSerial::flush()
{
// don't reverse this or there may be problems if the RX interrupt
// occurs after reading the value of rx_buffer_head but before writing
// the value to rx_buffer_tail; the previous value of rx_buffer_head
// may be written to rx_buffer_tail, making it appear as if the buffer
// don't reverse this or there may be problems if the RX interrupt
// occurs after reading the value of rx_buffer_head but before writing
// the value to rx_buffer_tail; the previous value of rx_buffer_head
// may be written to rx_buffer_tail, making it appear as if the buffer
// were full, not empty.
_rx_buffer->head = _rx_buffer->tail;
}
void HardwareSerial::write(uint8_t c)
{
while (!((*_ucsra) & (1 << _udre)))
;
*_udr = c;
}
// Preinstantiate Objects //////////////////////////////////////////////////////
#if defined(__AVR_ATmega8__)
HardwareSerial Serial(&rx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UDR, RXEN, TXEN, RXCIE, UDRE, U2X);
#else
HardwareSerial Serial(&rx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRE0, U2X0);
#endif
#ifdef UDR1
HardwareSerial Serial1(&rx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UDR1, RXEN1, TXEN1, RXCIE1, UDRE1, U2X1);
#endif
#ifdef UDR2
HardwareSerial Serial2(&rx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UDR2, RXEN2, TXEN2, RXCIE2, UDRE2, U2X2);
#endif
#ifdef UDR3
HardwareSerial Serial3(&rx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UDR3, RXEN3, TXEN3, RXCIE3, UDRE3, U2X3);
#endif

View File

@@ -1,69 +0,0 @@
/*
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
*/
#ifndef HardwareSerial_h
#define HardwareSerial_h
#include <inttypes.h>
#include "Print.h"
struct ring_buffer;
class HardwareSerial : public Print
{
private:
ring_buffer *_rx_buffer;
volatile uint8_t *_ubrrh;
volatile uint8_t *_ubrrl;
volatile uint8_t *_ucsra;
volatile uint8_t *_ucsrb;
volatile uint8_t *_udr;
uint8_t _rxen;
uint8_t _txen;
uint8_t _rxcie;
uint8_t _udre;
uint8_t _u2x;
public:
HardwareSerial(ring_buffer *rx_buffer,
volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
volatile uint8_t *udr,
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x);
void begin(long);
void end();
uint8_t available(void);
int read(void);
void flush(void);
virtual void write(uint8_t);
using Print::write; // pull in write(str) and write(buf, size) from Print
};
extern HardwareSerial Serial;
#if defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1280__)
extern HardwareSerial Serial1;
#endif
#if defined(__AVR_ATmega1280__)
extern HardwareSerial Serial2;
extern HardwareSerial Serial3;
#endif
#endif

View File

@@ -1,243 +0,0 @@
# Arduino 0011 Makefile
# Arduino adaptation by mellis, eighthave, oli.keller
#
# This makefile allows you to build sketches from the command line
# without the Arduino environment (or Java).
#
# Detailed instructions for using the makefile:
#
# 1. Copy this file into the folder with your sketch. There should be a
# file with the same name as the folder and with the extension .pde
# (e.g. foo.pde in the foo/ folder).
#
# 2. Modify the line containg "INSTALL_DIR" to point to the directory that
# contains the Arduino installation (for example, under Mac OS X, this
# might be /Applications/arduino-0012).
#
# 3. Modify the line containing "PORT" to refer to the filename
# representing the USB or serial connection to your Arduino board
# (e.g. PORT = /dev/tty.USB0). If the exact name of this file
# changes, you can use * as a wildcard (e.g. PORT = /dev/tty.usb*).
#
# 4. Set the line containing "MCU" to match your board's processor.
# Older one's are atmega8 based, newer ones like Arduino Mini, Bluetooth
# or Diecimila have the atmega168. If you're using a LilyPad Arduino,
# change F_CPU to 8000000.
#
# 5. At the command line, change to the directory containing your
# program's file and the makefile.
#
# 6. Type "make" and press enter to compile/verify your program.
#
# 7. Type "make upload", reset your Arduino board, and press enter to
# upload your program to the Arduino board.
#
# $Id$
TARGET = $(notdir $(CURDIR))
INSTALL_DIR = /Users/dmellis/Source/arduino/trunk/build/macosx/build/work
PORT = /dev/tty.usb*
UPLOAD_RATE = 19200
AVRDUDE_PROGRAMMER = stk500v1
MCU = atmega168
F_CPU = 16000000
############################################################################
# Below here nothing should be changed...
ARDUINO = $(INSTALL_DIR)/hardware/cores/arduino
AVR_TOOLS_PATH = $(INSTALL_DIR)/hardware/tools/avr/bin
SRC = $(ARDUINO)/pins_arduino.c $(ARDUINO)/wiring.c \
$(ARDUINO)/wiring_analog.c $(ARDUINO)/wiring_digital.c \
$(ARDUINO)/wiring_pulse.c $(ARDUINO)/wiring_serial.c \
$(ARDUINO)/wiring_shift.c $(ARDUINO)/WInterrupts.c
CXXSRC = $(ARDUINO)/HardwareSerial.cpp $(ARDUINO)/WMath.cpp
FORMAT = ihex
# Name of this Makefile (used for "make depend").
MAKEFILE = Makefile
# Debugging format.
# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
# AVR (extended) COFF requires stabs, plus an avr-objcopy run.
DEBUG = stabs
OPT = s
# Place -D or -U options here
CDEFS = -DF_CPU=$(F_CPU)
CXXDEFS = -DF_CPU=$(F_CPU)
# Place -I options here
CINCS = -I$(ARDUINO)
CXXINCS = -I$(ARDUINO)
# Compiler flag to set the C Standard level.
# c89 - "ANSI" C
# gnu89 - c89 plus GCC extensions
# c99 - ISO C99 standard (not yet fully implemented)
# gnu99 - c99 plus GCC extensions
CSTANDARD = -std=gnu99
CDEBUG = -g$(DEBUG)
CWARN = -Wall -Wstrict-prototypes
CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
#CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD) $(CEXTRA)
CXXFLAGS = $(CDEFS) $(CINCS) -O$(OPT)
#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
LDFLAGS = -lm
# Programming support using avrdude. Settings and variables.
AVRDUDE_PORT = $(PORT)
AVRDUDE_WRITE_FLASH = -U flash:w:applet/$(TARGET).hex
AVRDUDE_FLAGS = -V -F -C $(INSTALL_DIR)/hardware/tools/avr/etc/avrdude.conf \
-p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \
-b $(UPLOAD_RATE)
# Program settings
CC = $(AVR_TOOLS_PATH)/avr-gcc
CXX = $(AVR_TOOLS_PATH)/avr-g++
OBJCOPY = $(AVR_TOOLS_PATH)/avr-objcopy
OBJDUMP = $(AVR_TOOLS_PATH)/avr-objdump
AR = $(AVR_TOOLS_PATH)/avr-ar
SIZE = $(AVR_TOOLS_PATH)/avr-size
NM = $(AVR_TOOLS_PATH)/avr-nm
AVRDUDE = $(AVR_TOOLS_PATH)/avrdude
REMOVE = rm -f
MV = mv -f
# Define all object files.
OBJ = $(SRC:.c=.o) $(CXXSRC:.cpp=.o) $(ASRC:.S=.o)
# Define all listing files.
LST = $(ASRC:.S=.lst) $(CXXSRC:.cpp=.lst) $(SRC:.c=.lst)
# Combine all necessary flags and optional flags.
# Add target processor to flags.
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
ALL_CXXFLAGS = -mmcu=$(MCU) -I. $(CXXFLAGS)
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
# Default target.
all: applet_files build sizeafter
build: elf hex
applet_files: $(TARGET).pde
# Here is the "preprocessing".
# It creates a .cpp file based with the same name as the .pde file.
# On top of the new .cpp file comes the WProgram.h header.
# At the end there is a generic main() function attached.
# Then the .cpp file will be compiled. Errors during compile will
# refer to this new, automatically generated, file.
# Not the original .pde file you actually edit...
test -d applet || mkdir applet
echo '#include "WProgram.h"' > applet/$(TARGET).cpp
cat $(TARGET).pde >> applet/$(TARGET).cpp
cat $(ARDUINO)/main.cxx >> applet/$(TARGET).cpp
elf: applet/$(TARGET).elf
hex: applet/$(TARGET).hex
eep: applet/$(TARGET).eep
lss: applet/$(TARGET).lss
sym: applet/$(TARGET).sym
# Program the device.
upload: applet/$(TARGET).hex
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH)
# Display size of file.
HEXSIZE = $(SIZE) --target=$(FORMAT) applet/$(TARGET).hex
ELFSIZE = $(SIZE) applet/$(TARGET).elf
sizebefore:
@if [ -f applet/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(HEXSIZE); echo; fi
sizeafter:
@if [ -f applet/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(HEXSIZE); echo; fi
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
COFFCONVERT=$(OBJCOPY) --debugging \
--change-section-address .data-0x800000 \
--change-section-address .bss-0x800000 \
--change-section-address .noinit-0x800000 \
--change-section-address .eeprom-0x810000
coff: applet/$(TARGET).elf
$(COFFCONVERT) -O coff-avr applet/$(TARGET).elf $(TARGET).cof
extcoff: $(TARGET).elf
$(COFFCONVERT) -O coff-ext-avr applet/$(TARGET).elf $(TARGET).cof
.SUFFIXES: .elf .hex .eep .lss .sym
.elf.hex:
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
.elf.eep:
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
# Create extended listing file from ELF output file.
.elf.lss:
$(OBJDUMP) -h -S $< > $@
# Create a symbol table from ELF output file.
.elf.sym:
$(NM) -n $< > $@
# Link: create ELF output file from library.
applet/$(TARGET).elf: $(TARGET).pde applet/core.a
$(CC) $(ALL_CFLAGS) -o $@ applet/$(TARGET).cpp -L. applet/core.a $(LDFLAGS)
applet/core.a: $(OBJ)
@for i in $(OBJ); do echo $(AR) rcs applet/core.a $$i; $(AR) rcs applet/core.a $$i; done
# Compile: create object files from C++ source files.
.cpp.o:
$(CXX) -c $(ALL_CXXFLAGS) $< -o $@
# Compile: create object files from C source files.
.c.o:
$(CC) -c $(ALL_CFLAGS) $< -o $@
# Compile: create assembler files from C source files.
.c.s:
$(CC) -S $(ALL_CFLAGS) $< -o $@
# Assemble: create object files from assembler source files.
.S.o:
$(CC) -c $(ALL_ASFLAGS) $< -o $@
# Target: clean project.
clean:
$(REMOVE) applet/$(TARGET).hex applet/$(TARGET).eep applet/$(TARGET).cof applet/$(TARGET).elf \
applet/$(TARGET).map applet/$(TARGET).sym applet/$(TARGET).lss applet/core.a \
$(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) $(CXXSRC:.cpp=.s) $(CXXSRC:.cpp=.d)
depend:
if grep '^# DO NOT DELETE' $(MAKEFILE) >/dev/null; \
then \
sed -e '/^# DO NOT DELETE/,$$d' $(MAKEFILE) > \
$(MAKEFILE).$$$$ && \
$(MV) $(MAKEFILE).$$$$ $(MAKEFILE); \
fi
echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' \
>> $(MAKEFILE); \
$(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $(SRC) $(ASRC) >> $(MAKEFILE)
.PHONY: all build elf hex eep lss sym program coff extcoff clean depend applet_files sizebefore sizeafter

View File

@@ -1,203 +0,0 @@
/*
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 <stdio.h>
#include <string.h>
#include <inttypes.h>
#include <math.h>
#include "wiring.h"
#include "Print.h"
// Public Methods //////////////////////////////////////////////////////////////
void Print::print(uint8_t b)
{
this->write(b);
}
void Print::print(char c)
{
print((byte) c);
}
void Print::print(const char c[])
{
while (*c)
print(*c++);
}
void Print::print(int n)
{
print((long) n);
}
void Print::print(unsigned int n)
{
print((unsigned long) n);
}
void Print::print(long n)
{
if (n < 0) {
print('-');
n = -n;
}
printNumber(n, 10);
}
void Print::print(unsigned long n)
{
printNumber(n, 10);
}
void Print::print(long n, int base)
{
if (base == 0)
print((char) n);
else if (base == 10)
print(n);
else
printNumber(n, base);
}
void Print::print(double n)
{
printFloat(n, 2);
}
void Print::println(void)
{
print('\r');
print('\n');
}
void Print::println(char c)
{
print(c);
println();
}
void Print::println(const char c[])
{
print(c);
println();
}
void Print::println(uint8_t b)
{
print(b);
println();
}
void Print::println(int n)
{
print(n);
println();
}
void Print::println(unsigned int n)
{
print(n);
println();
}
void Print::println(long n)
{
print(n);
println();
}
void Print::println(unsigned long n)
{
print(n);
println();
}
void Print::println(long n, int base)
{
print(n, base);
println();
}
void Print::println(double n)
{
print(n);
println();
}
// Private Methods /////////////////////////////////////////////////////////////
void Print::printNumber(unsigned long n, uint8_t base)
{
unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars.
unsigned long i = 0;
if (n == 0) {
print('0');
return;
}
while (n > 0) {
buf[i++] = n % base;
n /= base;
}
for (; i > 0; i--)
print((char) (buf[i - 1] < 10 ?
'0' + buf[i - 1] :
'A' + buf[i - 1] - 10));
}
void Print::printFloat(double number, uint8_t digits)
{
// Handle negative numbers
if (number < 0.0)
{
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;
print(int_part);
// Print the decimal point, but only if there are digits beyond
if (digits > 0)
print(".");
// Extract digits from the remainder one at a time
while (digits-- > 0)
{
remainder *= 10.0;
int toPrint = int(remainder);
print(toPrint);
remainder -= toPrint;
}
}

View File

@@ -1,59 +0,0 @@
/*
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>
#define DEC 10
#define HEX 16
#define OCT 8
#define BIN 2
#define BYTE 0
class Print
{
private:
void printNumber(unsigned long, uint8_t);
void printFloat(double, uint8_t);
public:
virtual void write(uint8_t);
void print(char);
void print(const char[]);
void print(uint8_t);
void print(int);
void print(unsigned int);
void print(long);
void print(unsigned long);
void print(long, int);
void print(double);
void println(void);
void println(char);
void println(const char[]);
void println(uint8_t);
void println(int);
void println(unsigned int);
void println(long);
void println(unsigned long);
void println(long, int);
void println(double);
};
#endif

View File

@@ -1 +0,0 @@
#include "wiring.h"

View File

@@ -1,87 +0,0 @@
/* -*- 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
*/
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <stdio.h>
#include "WConstants.h"
#include "wiring_private.h"
volatile static 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;
//clear the config for the change settings
EICRA &= ~(B00000011 << (interruptNum * 2));
//set our mode.
EICRA |= (mode << (interruptNum * 2));
// Enable the interrupt.
EIMSK |= (1 << interruptNum);
}
}
void detachInterrupt(uint8_t interruptNum)
{
if(interruptNum < EXTERNAL_NUM_INTERRUPTS)
{
// Disable the interrupt.
EIMSK &= ~(1 << interruptNum);
intFunc[interruptNum] = 0;
}
}
ISR(INT0_vect) {
if(intFunc[EXTERNAL_INT_0])
intFunc[EXTERNAL_INT_0]();
}
ISR(INT1_vect) {
if(intFunc[EXTERNAL_INT_1])
intFunc[EXTERNAL_INT_1]();
}
ISR(INT2_vect) {
if(intFunc[EXTERNAL_INT_2])
intFunc[EXTERNAL_INT_2]();
}
/*
SIGNAL(SIG_2WIRE_SERIAL) {
if(twiIntFunc)
twiIntFunc();
}
*/

View File

@@ -1,34 +0,0 @@
#ifndef WProgram_h
#define WProgram_h
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <avr/interrupt.h>
#include "wiring.h"
#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
#endif

View File

@@ -1,443 +0,0 @@
/*
WString.cpp - String library for Wiring & Arduino
Copyright (c) 2009-10 Hernando Barragan. All rights 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
*/
#include <stdlib.h>
#include "WProgram.h"
#include "WString.h"
String::String( const char *value )
{
if ( value == NULL )
value = "";
getBuffer( _length = strlen( value ) );
if ( _buffer != NULL )
strcpy( _buffer, value );
}
String::String( const String &value )
{
getBuffer( _length = value._length );
if ( _buffer != NULL )
strcpy( _buffer, value._buffer );
}
String::String( const char value )
{
_length = 1;
getBuffer(1);
if ( _buffer != NULL ) {
_buffer[0] = value;
_buffer[1] = 0;
}
}
String::String( const unsigned char value )
{
_length = 1;
getBuffer(1);
if ( _buffer != NULL) {
_buffer[0] = value;
_buffer[1] = 0;
}
}
String::String( const int value, const int base )
{
char buf[33];
itoa((signed long)value, buf, base);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
String::String( const unsigned int value, const int base )
{
char buf[33];
ultoa((unsigned long)value, buf, base);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
String::String( const long value, const int base )
{
char buf[33];
ltoa(value, buf, base);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
String::String( const unsigned long value, const int base )
{
char buf[33];
ultoa(value, buf, 10);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
char String::charAt( unsigned int loc ) const
{
return operator[]( loc );
}
void String::setCharAt( unsigned int loc, const char aChar )
{
if(_buffer == NULL) return;
if(_length > loc) {
_buffer[loc] = aChar;
}
}
int String::compareTo( const String &s2 ) const
{
return strcmp( _buffer, s2._buffer );
}
const String & String::concat( const String &s2 )
{
return (*this) += s2;
}
const String & String::operator=( const String &rhs )
{
if ( this == &rhs )
return *this;
if ( rhs._length > _length )
{
free(_buffer);
getBuffer( rhs._length );
}
if ( _buffer != NULL ) {
_length = rhs._length;
strcpy( _buffer, rhs._buffer );
}
return *this;
}
//const String & String::operator+=( const char aChar )
//{
// if ( _length == _capacity )
// doubleBuffer();
//
// _buffer[ _length++ ] = aChar;
// _buffer[ _length ] = '\0';
// return *this;
//}
const String & String::operator+=( const String &other )
{
_length += other._length;
if ( _length > _capacity )
{
char *temp = (char *)realloc(_buffer, _length + 1);
if ( temp != NULL ) {
_buffer = temp;
_capacity = _length;
} else {
_length -= other._length;
return *this;
}
}
strcat( _buffer, other._buffer );
return *this;
}
int String::operator==( const String &rhs ) const
{
return ( _length == rhs._length && strcmp( _buffer, rhs._buffer ) == 0 );
}
int String::operator!=( const String &rhs ) const
{
return ( _length != rhs.length() || strcmp( _buffer, rhs._buffer ) != 0 );
}
int String::operator<( const String &rhs ) const
{
return strcmp( _buffer, rhs._buffer ) < 0;
}
int String::operator>( const String &rhs ) const
{
return strcmp( _buffer, rhs._buffer ) > 0;
}
int String::operator<=( const String &rhs ) const
{
return strcmp( _buffer, rhs._buffer ) <= 0;
}
int String::operator>=( const String & rhs ) const
{
return strcmp( _buffer, rhs._buffer ) >= 0;
}
char & String::operator[]( unsigned int index )
{
static char dummy_writable_char;
if (index >= _length || !_buffer) {
dummy_writable_char = 0;
return dummy_writable_char;
}
return _buffer[ index ];
}
char String::operator[]( unsigned int index ) const
{
// need to check for valid index, to do later
return _buffer[ index ];
}
boolean String::endsWith( const String &s2 ) const
{
if ( _length < s2._length )
return 0;
return strcmp( &_buffer[ _length - s2._length], s2._buffer ) == 0;
}
boolean String::equals( const String &s2 ) const
{
return ( _length == s2._length && strcmp( _buffer,s2._buffer ) == 0 );
}
boolean String::equalsIgnoreCase( const String &s2 ) const
{
if ( this == &s2 )
return true; //1;
else if ( _length != s2._length )
return false; //0;
return strcmp(toLowerCase()._buffer, s2.toLowerCase()._buffer) == 0;
}
String String::replace( char findChar, char replaceChar )
{
if ( _buffer == NULL ) return *this;
String theReturn = _buffer;
char* temp = theReturn._buffer;
while( (temp = strchr( temp, findChar )) != 0 )
*temp = replaceChar;
return theReturn;
}
String String::replace( const String& match, const String& replace )
{
if ( _buffer == NULL ) return *this;
String temp = _buffer, newString;
int loc;
while ( (loc = temp.indexOf( match )) != -1 )
{
newString += temp.substring( 0, loc );
newString += replace;
temp = temp.substring( loc + match._length );
}
newString += temp;
return newString;
}
int String::indexOf( char temp ) const
{
return indexOf( temp, 0 );
}
int String::indexOf( char ch, unsigned int fromIndex ) const
{
if ( fromIndex >= _length )
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 >= _length )
return -1;
const char *theFind = strstr( &_buffer[ fromIndex ], s2._buffer );
if ( theFind == NULL )
return -1;
return theFind - _buffer; // pointer subtraction
}
int String::lastIndexOf( char theChar ) const
{
return lastIndexOf( theChar, _length - 1 );
}
int String::lastIndexOf( char ch, unsigned int fromIndex ) const
{
if ( fromIndex >= _length )
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, _length - s2._length );
}
int String::lastIndexOf( const String &s2, unsigned int fromIndex ) const
{
// check for empty strings
if ( s2._length == 0 || s2._length - 1 > fromIndex || fromIndex >= _length )
return -1;
// matching first character
char temp = s2[ 0 ];
for ( int i = fromIndex; i >= 0; i-- )
{
if ( _buffer[ i ] == temp && (*this).substring( i, i + s2._length ).equals( s2 ) )
return i;
}
return -1;
}
boolean String::startsWith( const String &s2 ) const
{
if ( _length < s2._length )
return 0;
return startsWith( s2, 0 );
}
boolean String::startsWith( const String &s2, unsigned int offset ) const
{
if ( offset > _length - s2._length )
return 0;
return strncmp( &_buffer[offset], s2._buffer, s2._length ) == 0;
}
String String::substring( unsigned int left ) const
{
return substring( left, _length );
}
String String::substring( unsigned int left, unsigned int right ) const
{
if ( left > right )
{
int temp = right;
right = left;
left = temp;
}
if ( right > _length )
{
right = _length;
}
char temp = _buffer[ right ]; // save the replaced character
_buffer[ right ] = '\0';
String outPut = ( _buffer + left ); // pointer arithmetic
_buffer[ right ] = temp; //restore character
return outPut;
}
String String::toLowerCase() const
{
String temp = _buffer;
for ( unsigned int i = 0; i < _length; i++ )
temp._buffer[ i ] = (char)tolower( temp._buffer[ i ] );
return temp;
}
String String::toUpperCase() const
{
String temp = _buffer;
for ( unsigned int i = 0; i < _length; i++ )
temp._buffer[ i ] = (char)toupper( temp._buffer[ i ] );
return temp;
}
String String::trim() const
{
if ( _buffer == NULL ) return *this;
String temp = _buffer;
unsigned int i,j;
for ( i = 0; i < _length; i++ )
{
if ( !isspace(_buffer[i]) )
break;
}
for ( j = temp._length - 1; j > i; j-- )
{
if ( !isspace(_buffer[j]) )
break;
}
return temp.substring( i, j + 1);
}
void String::getBytes(unsigned char *buf, unsigned int bufsize)
{
if (!bufsize || !buf) return;
unsigned int len = bufsize - 1;
if (len > _length) len = _length;
strncpy((char *)buf, _buffer, len);
buf[len] = 0;
}
void String::toCharArray(char *buf, unsigned int bufsize)
{
if (!bufsize || !buf) return;
unsigned int len = bufsize - 1;
if (len > _length) len = _length;
strncpy(buf, _buffer, len);
buf[len] = 0;
}
long String::toInt() {
return atol(_buffer);
}

View File

@@ -1,112 +0,0 @@
/*
WString.h - String library for Wiring & Arduino
Copyright (c) 2009-10 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 String_h
#define String_h
//#include "WProgram.h"
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
class String
{
public:
// constructors
String( const char *value = "" );
String( const String &value );
String( const char );
String( const unsigned char );
String( const int, const int base=10);
String( const unsigned int, const int base=10 );
String( const long, const int base=10 );
String( const unsigned long, const int base=10 );
~String() { free(_buffer); _length = _capacity = 0;} //added _length = _capacity = 0;
// operators
const String & operator = ( const String &rhs );
const String & operator +=( const String &rhs );
//const String & operator +=( const char );
int operator ==( const String &rhs ) const;
int operator !=( const String &rhs ) const;
int operator < ( const String &rhs ) const;
int operator > ( const String &rhs ) const;
int operator <=( const String &rhs ) const;
int operator >=( const String &rhs ) const;
char operator []( unsigned int index ) const;
char& operator []( unsigned int index );
//operator const char *() const { return _buffer; }
// general methods
char charAt( unsigned int index ) const;
int compareTo( const String &anotherString ) const;
unsigned char endsWith( const String &suffix ) const;
unsigned char equals( const String &anObject ) const;
unsigned char equalsIgnoreCase( const String &anotherString ) const;
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;
const unsigned int length( ) const { return _length; }
void setCharAt(unsigned int index, const char ch);
unsigned char startsWith( const String &prefix ) const;
unsigned char startsWith( const String &prefix, unsigned int toffset ) const;
String substring( unsigned int beginIndex ) const;
String substring( unsigned int beginIndex, unsigned int endIndex ) const;
String toLowerCase( ) const;
String toUpperCase( ) const;
String trim( ) const;
void getBytes(unsigned char *buf, unsigned int bufsize);
void toCharArray(char *buf, unsigned int bufsize);
long toInt( );
const String& concat( const String &str );
String replace( char oldChar, char newChar );
String replace( const String& match, const String& replace );
friend String operator + ( String lhs, const String &rhs );
protected:
char *_buffer; // the actual char array
unsigned int _capacity; // the array length minus one (for the '\0')
unsigned int _length; // the String length (not counting the '\0')
void getBuffer(unsigned int maxStrLen);
private:
};
// allocate buffer space
inline void String::getBuffer(unsigned int maxStrLen)
{
_capacity = maxStrLen;
_buffer = (char *) malloc(_capacity + 1);
if (_buffer == NULL) _length = _capacity = 0;
}
inline String operator+( String lhs, const String &rhs )
{
return lhs += rhs;
}
#endif

View File

@@ -1,14 +0,0 @@
#include <WProgram.h>
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}

View File

@@ -1,12 +0,0 @@
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}

View File

@@ -1,200 +0,0 @@
/*
pins_arduino.c - pin definitions for the Arduino board
Part of Arduino / Wiring Lite
Copyright (c) 2005 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: pins_arduino.c 254 2007-04-20 23:17:38Z mellis $
*/
#include <avr/io.h>
#include "wiring_private.h"
#include "pins_arduino.h"
// On the Sanguino board, digital pins are also used
// for the analog output (software PWM). Analog input
// pins are a separate set.
// 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 PA 1
#define PB 2
#define PC 3
#define PD 4
// these arrays map port names (e.g. port B) to the
// appropriate addresses for various functions (e.g. reading
// and writing)
const uint8_t PROGMEM port_to_mode_PGM[] =
{
NOT_A_PORT,
(uint8_t) &DDRA,
(uint8_t) &DDRB,
(uint8_t) &DDRC,
(uint8_t) &DDRD,
};
const uint8_t PROGMEM port_to_output_PGM[] =
{
NOT_A_PORT,
(uint8_t) &PORTA,
(uint8_t) &PORTB,
(uint8_t) &PORTC,
(uint8_t) &PORTD,
};
const uint8_t PROGMEM port_to_input_PGM[] =
{
NOT_A_PORT,
(uint8_t) &PINA,
(uint8_t) &PINB,
(uint8_t) &PINC,
(uint8_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 */
};

View File

@@ -1,65 +0,0 @@
/*
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 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
extern const uint8_t PROGMEM port_to_mode_PGM[];
extern const uint8_t PROGMEM port_to_input_PGM[];
extern const uint8_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_byte( port_to_output_PGM + (P))) )
#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_input_PGM + (P))) )
#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_mode_PGM + (P))) )
#endif

View File

@@ -1,203 +0,0 @@
/*
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: wiring.c 388 2008-03-08 22:05:23Z mellis $
*/
#include "wiring_private.h"
volatile unsigned long timer0_overflow_count = 0;
volatile unsigned long timer0_clock_cycles = 0;
volatile unsigned long timer0_millis = 0;
SIGNAL(TIMER0_OVF_vect)
{
timer0_overflow_count++;
// timer 0 prescale factor is 64 and the timer overflows at 256
timer0_clock_cycles += 64UL * 256UL;
while (timer0_clock_cycles > clockCyclesPerMicrosecond() * 1000UL) {
timer0_clock_cycles -= clockCyclesPerMicrosecond() * 1000UL;
timer0_millis++;
}
}
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 the timer0_millis++)
cli();
m = timer0_millis;
SREG = oldSREG;
return m;
}
unsigned long micros() {
unsigned long m, t;
uint8_t oldSREG = SREG;
cli();
t = TCNT0;
#ifdef TIFR0
if ((TIFR0 & _BV(TOV0)) && (t == 0))
t = 256;
#else
if ((TIFR & _BV(TOV0)) && (t == 0))
t = 256;
#endif
m = timer0_overflow_count;
SREG = oldSREG;
return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond());
}
void delay(unsigned long ms)
{
unsigned long start = millis();
while (millis() - start <= ms)
;
}
/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock.
* Disables interrupts, which will disrupt the millis() function if used
* too frequently. */
void delayMicroseconds(unsigned int us)
{
uint8_t oldSREG;
// 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 >= 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
// disable interrupts, otherwise the timer 0 overflow interrupt that
// tracks milliseconds will make us delay longer than we want.
oldSREG = SREG;
cli();
// busy wait
__asm__ __volatile__ (
"1: sbiw %0,1" "\n\t" // 2 cycles
"brne 1b" : "=w" (us) : "0" (us) // 2 cycles
);
// reenable interrupts.
SREG = oldSREG;
}
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)
sbi(TCCR0A, WGM01);
sbi(TCCR0A, WGM00);
// set timer 0 prescale factor to 64
sbi(TCCR0B, CS01);
sbi(TCCR0B, CS00);
// enable timer 0 overflow interrupt
sbi(TIMSK0, TOIE0);
// 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
// set timer 1 prescale factor to 64
sbi(TCCR1B, CS11);
sbi(TCCR1B, CS10);
// put timer 1 in 8-bit phase correct pwm mode
sbi(TCCR1A, WGM10);
// set timer 2 prescale factor to 64
sbi(TCCR2B, CS22);
// configure timer 2 for phase correct pwm (8-bit)
sbi(TCCR2A, WGM20);
// 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);
// 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()
UCSR0B = 0;
#if defined(__AVR_ATmega644P__)
//TODO: test to see if disabling this helps?
//UCSR1B = 0;
#endif
}

View File

@@ -1,135 +0,0 @@
/*
wiring.h - 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: wiring.h 387 2008-03-08 21:30:00Z mellis $
*/
#ifndef Wiring_h
#define Wiring_h
#include <avr/io.h>
#include "binary.h"
#ifdef __cplusplus
extern "C"{
#endif
#define HIGH 0x1
#define LOW 0x0
#define INPUT 0x0
#define OUTPUT 0x1
#define true 0x1
#define false 0x0
#define PI 3.14159265
#define HALF_PI 1.57079
#define TWO_PI 6.283185
#define DEG_TO_RAD 0.01745329
#define RAD_TO_DEG 57.2957786
#define SERIAL 0x0
#define DISPLAY 0x1
#define LSBFIRST 0
#define MSBFIRST 1
#define CHANGE 1
#define FALLING 2
#define RISING 3
#define INTERNAL 3
#define DEFAULT 1
#define EXTERNAL 0
// 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)))
#if __AVR_LIBC_VERSION__ < 10701UL
#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
#endif
#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) ((w) & 0xff)
#define highByte(w) ((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) (1 << (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);
void beginSerial(uint8_t, long);
void serialWrite(uint8_t, unsigned char);
int serialAvailable(uint8_t);
int serialRead(uint8_t);
void serialFlush(uint8_t);
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, byte val);
void attachInterrupt(uint8_t, void (*)(void), int mode);
void detachInterrupt(uint8_t);
void setup(void);
void loop(void);
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View File

@@ -1,116 +0,0 @@
/*
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
$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, ch = analogInPinToBit(pin);
// 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).
// the final AND is to clear the pos/neg reference bits
ADMUX = ((analog_reference << 6) | (pin & 0x0f)) & B11000111;
// without a delay, we seem to read from the wrong channel
//delay(1);
// 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;
// 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 (digitalPinToTimer(pin) == TIMER1A) {
// connect pwm to pin on timer 1, channel A
sbi(TCCR1A, COM1A1);
// set pwm duty
OCR1A = val;
} else if (digitalPinToTimer(pin) == TIMER1B) {
// connect pwm to pin on timer 1, channel B
sbi(TCCR1A, COM1B1);
// set pwm duty
OCR1B = val;
} else if (digitalPinToTimer(pin) == TIMER0A) {
// connect pwm to pin on timer 0, channel A
sbi(TCCR0A, COM0A1);
// set pwm duty
OCR0A = val;
} else if (digitalPinToTimer(pin) == TIMER0B) {
// connect pwm to pin on timer 0, channel B
sbi(TCCR0A, COM0B1);
// set pwm duty
OCR0B = val;
} else if (digitalPinToTimer(pin) == TIMER2A) {
// connect pwm to pin on timer 2, channel A
sbi(TCCR2A, COM2A1);
// set pwm duty
OCR2A = val;
} else if (digitalPinToTimer(pin) == TIMER2B) {
// connect pwm to pin on timer 2, channel B
sbi(TCCR2A, COM2B1);
// set pwm duty
OCR2B = val;
} else if (val < 128)
//fail semi-intelligently
digitalWrite(pin, LOW);
else
digitalWrite(pin, HIGH);
}

View File

@@ -1,95 +0,0 @@
/*
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
$Id: wiring.c 248 2007-02-03 15:36:30Z mellis $
*/
#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;
if (port == NOT_A_PIN) return;
// JWS: can I let the optimizer do this?
reg = portModeRegister(port);
if (mode == INPUT) *reg &= ~bit;
else *reg |= bit;
}
// 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.
//
static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline));
static inline void turnOffPWM(uint8_t timer)
{
if (timer == TIMER0A) cbi(TCCR0A, COM0A1);
if (timer == TIMER0B) cbi(TCCR0A, COM0B1);
if (timer == TIMER1A) cbi(TCCR1A, COM1A1);
if (timer == TIMER1B) cbi(TCCR1A, COM1B1);
if (timer == TIMER2A) cbi(TCCR2A, COM2A1);
if (timer == TIMER2B) cbi(TCCR2A, COM2B1);
}
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);
if (val == LOW) *out &= ~bit;
else *out |= bit;
}
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

@@ -1,138 +0,0 @@
/*
wiring_serial.c - serial functions.
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2005-2006 David A. Mellis
Modified 29 January 2009, Marius Kintel for Sanguino - http://www.sanguino.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: wiring.c 248 2007-02-03 15:36:30Z mellis $
*/
#include "wiring_private.h"
// Define constants and variables for buffering incoming serial data. We're
// using a ring buffer (I think), in which rx_buffer_head is the index of the
// location to which to write the next incoming character and rx_buffer_tail
// is the index of the location from which to read.
#define RX_BUFFER_SIZE 128
#if defined(__AVR_ATmega644P__)
unsigned char rx_buffer[2][RX_BUFFER_SIZE];
int rx_buffer_head[2] = {0, 0};
int rx_buffer_tail[2] = {0, 0};
#else
unsigned char rx_buffer[1][RX_BUFFER_SIZE];
int rx_buffer_head[1] = {0};
int rx_buffer_tail[1] = {0};
#endif
#define BEGIN_SERIAL(uart_, baud_) \
{ \
UBRR##uart_##H = ((F_CPU / 16 + baud / 2) / baud - 1) >> 8; \
UBRR##uart_##L = ((F_CPU / 16 + baud / 2) / baud - 1); \
\
/* reset config for UART */ \
UCSR##uart_##A = 0; \
UCSR##uart_##B = 0; \
UCSR##uart_##C = 0; \
\
/* enable rx and tx */ \
sbi(UCSR##uart_##B, RXEN##uart_);\
sbi(UCSR##uart_##B, TXEN##uart_);\
\
/* enable interrupt on complete reception of a byte */ \
sbi(UCSR##uart_##B, RXCIE##uart_); \
UCSR##uart_##C = _BV(UCSZ##uart_##1)|_BV(UCSZ##uart_##0); \
/* defaults to 8-bit, no parity, 1 stop bit */ \
}
void beginSerial(uint8_t uart, long baud)
{
if (uart == 0) BEGIN_SERIAL(0, baud)
#if defined(__AVR_ATmega644P__)
else BEGIN_SERIAL(1, baud)
#endif
}
#define SERIAL_WRITE(uart_, c_) \
while (!(UCSR##uart_##A & (1 << UDRE##uart_))) \
; \
UDR##uart_ = c
void serialWrite(uint8_t uart, unsigned char c)
{
if (uart == 0) {
SERIAL_WRITE(0, c);
}
#if defined(__AVR_ATmega644P__)
else {
SERIAL_WRITE(1, c);
}
#endif
}
int serialAvailable(uint8_t uart)
{
return (RX_BUFFER_SIZE + rx_buffer_head[uart] - rx_buffer_tail[uart]) % RX_BUFFER_SIZE;
}
int serialRead(uint8_t uart)
{
// if the head isn't ahead of the tail, we don't have any characters
if (rx_buffer_head[uart] == rx_buffer_tail[uart]) {
return -1;
} else {
unsigned char c = rx_buffer[uart][rx_buffer_tail[uart]];
rx_buffer_tail[uart] = (rx_buffer_tail[uart] + 1) % RX_BUFFER_SIZE;
return c;
}
}
void serialFlush(uint8_t uart)
{
// don't reverse this or there may be problems if the RX interrupt
// occurs after reading the value of rx_buffer_head but before writing
// the value to rx_buffer_tail; the previous value of rx_buffer_head
// may be written to rx_buffer_tail, making it appear as if the buffer
// were full, not empty.
rx_buffer_head[uart] = rx_buffer_tail[uart];
}
#define UART_ISR(uart_) \
ISR(USART##uart_##_RX_vect) \
{ \
unsigned char c = UDR##uart_; \
\
int i = (rx_buffer_head[uart_] + 1) % RX_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 != rx_buffer_tail[uart_]) { \
rx_buffer[uart_][rx_buffer_head[uart_]] = c; \
rx_buffer_head[uart_] = i; \
} \
}
UART_ISR(0)
#if defined(__AVR_ATmega644P__)
UART_ISR(1)
#endif

View File

@@ -1,99 +0,0 @@
##############################################################
sanguino.name=Sanguino
sanguino.upload.protocol=stk500
sanguino.upload.maximum_size=63488
sanguino.upload.speed=38400
sanguino.bootloader.low_fuses=0xFF
sanguino.bootloader.high_fuses=0xDC
sanguino.bootloader.extended_fuses=0xFD
sanguino.bootloader.path=atmega644p
sanguino.bootloader.file=ATmegaBOOT_644P.hex
sanguino.bootloader.unlock_bits=0x3F
sanguino.bootloader.lock_bits=0x0F
sanguino.build.mcu=atmega644p
sanguino.build.f_cpu=16000000L
sanguino.build.core=arduino
##############################################################
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
##############################################################
atmega12848m.name=Sanguino W/ ATmega1284p 8mhz
atmega12848m.upload.protocol=stk500
atmega12848m.upload.maximum_size=131072
atmega12848m.upload.speed=19200
atmega12848m.bootloader.low_fuses=0xD6
atmega12848m.bootloader.high_fuses=0xDA
atmega12848m.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
##############################################################
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
##############################################################
atmega1284s.name=Sanguino W/ ATmega1284p 20mhz
atmega1284s.upload.protocol=stk500
atmega1284s.upload.maximum_size=131072
atmega1284s.upload.speed=57600
atmega1284s.bootloader.low_fuses=0xD6
atmega1284s.bootloader.high_fuses=0xDA
atmega1284s.bootloader.extended_fuses=0xFD
atmega1284s.bootloader.path=atmega
atmega1284s.bootloader.file=ATmegaBOOT_168_atmega1284p.hex
atmega1284s.bootloader.unlock_bits=0x3F
atmega1284s.bootloader.lock_bits=0x0F
atmega1284s.build.mcu=atmega1284p
atmega1284s.build.f_cpu=20000000L
atmega1284s.build.core=arduino
#

View File

@@ -1,470 +0,0 @@
# 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 = optiboot
# The default behavior is to build using tools that are in the users
# current path variables, but we can also build using an installed
# Arduino user IDE setup, or the Arduino source tree.
# Uncomment this next lines to build within the arduino environment,
# using the arduino-included avrgcc toolset (mac and pc)
# ENV ?= arduino
# ENV ?= arduinodev
# OS ?= macosx
# OS ?= windows
# enter the parameters for the avrdude isp tool
ISPTOOL = stk500v2
ISPPORT = usb
ISPSPEED = -b 115200
MCU_TARGET = atmega168
LDSECTIONS = -Wl,--section-start=.text=0x3e00 -Wl,--section-start=.version=0x3ffe
# Build environments
# Start of some ugly makefile-isms to allow optiboot to be built
# in several different environments. See the README.TXT file for
# details.
# default
fixpath = $(1)
ifeq ($(ENV), arduino)
# For Arduino, we assume that we're connected to the optiboot directory
# included with the arduino distribution, which means that the full set
# of avr-tools are "right up there" in standard places.
TOOLROOT = ../../../tools
GCCROOT = $(TOOLROOT)/avr/bin/
AVRDUDE_CONF = -C$(TOOLROOT)/avr/etc/avrdude.conf
ifeq ($(OS), windows)
# On windows, SOME of the tool paths will need to have backslashes instead
# of forward slashes (because they use windows cmd.exe for execution instead
# of a unix/mingw shell?) We also have to ensure that a consistent shell
# is used even if a unix shell is installed (ie as part of WINAVR)
fixpath = $(subst /,\,$1)
SHELL = cmd.exe
endif
else ifeq ($(ENV), arduinodev)
# Arduino IDE source code environment. Use the unpacked compilers created
# by the build (you'll need to do "ant build" first.)
ifeq ($(OS), macosx)
TOOLROOT = ../../../../build/macosx/work/Arduino.app/Contents/Resources/Java/hardware/tools
endif
ifeq ($(OS), windows)
TOOLROOT = ../../../../build/windows/work/hardware/tools
endif
GCCROOT = $(TOOLROOT)/avr/bin/
AVRDUDE_CONF = -C$(TOOLROOT)/avr/etc/avrdude.conf
else
GCCROOT =
AVRDUDE_CONF =
endif
#
# End of build environment code.
# 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 0x2f (to
# lock it), but since the high two bits of the lock byte are
# unused, avrdude would get confused.
ISPFUSES = $(GCCROOT)avrdude $(AVRDUDE_CONF) -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 = $(GCCROOT)avrdude $(AVRDUDE_CONF) -c $(ISPTOOL) \
-p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \
-U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x2f: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 = -Os -fno-inline-small-functions -fno-split-wide-types -mshort-calls
DEFS =
LIBS =
CC = $(GCCROOT)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 = $(LDSECTIONS) -Wl,--relax -Wl,--gc-sections -nostartfiles -nostdlib
OBJCOPY = $(GCCROOT)avr-objcopy
OBJDUMP = $(call fixpath,$(GCCROOT)avr-objdump)
SIZE = $(GCCROOT)avr-size
# Test platforms
# Virtual boot block test
virboot328: TARGET = atmega328
virboot328: MCU_TARGET = atmega328p
virboot328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DVIRTUAL_BOOT'
virboot328: AVR_FREQ = 16000000L
virboot328: LDSECTIONS = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe
virboot328: $(PROGRAM)_atmega328.hex
virboot328: $(PROGRAM)_atmega328.lst
# 20MHz clocked platforms
#
# These are capable of 230400 baud, or 115200 baud on PC (Arduino Avrdude issue)
#
pro20: TARGET = pro_20mhz
pro20: MCU_TARGET = atmega168
pro20: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
pro20: AVR_FREQ = 20000000L
pro20: $(PROGRAM)_pro_20mhz.hex
pro20: $(PROGRAM)_pro_20mhz.lst
pro20_isp: pro20
pro20_isp: TARGET = pro_20mhz
# 2.7V brownout
pro20_isp: HFUSE = DD
# Full swing xtal (20MHz) 258CK/14CK+4.1ms
pro20_isp: LFUSE = C6
# 512 byte boot
pro20_isp: EFUSE = 04
pro20_isp: isp
# 16MHz clocked platforms
#
# These are capable of 230400 baud, or 115200 baud on PC (Arduino Avrdude issue)
#
pro16: TARGET = pro_16MHz
pro16: MCU_TARGET = atmega168
pro16: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
pro16: AVR_FREQ = 16000000L
pro16: $(PROGRAM)_pro_16MHz.hex
pro16: $(PROGRAM)_pro_16MHz.lst
pro16_isp: pro16
pro16_isp: TARGET = pro_16MHz
# 2.7V brownout
pro16_isp: HFUSE = DD
# Full swing xtal (20MHz) 258CK/14CK+4.1ms
pro16_isp: LFUSE = C6
# 512 byte boot
pro16_isp: EFUSE = 04
pro16_isp: isp
# Diecimila, Duemilanove with m168, and NG use identical bootloaders
# Call it "atmega168" for generality and clarity, keep "diecimila" for
# backward compatibility of makefile
#
atmega168: TARGET = atmega168
atmega168: MCU_TARGET = atmega168
atmega168: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
atmega168: AVR_FREQ = 16000000L
atmega168: $(PROGRAM)_atmega168.hex
atmega168: $(PROGRAM)_atmega168.lst
atmega168_isp: atmega168
atmega168_isp: TARGET = atmega168
# 2.7V brownout
atmega168_isp: HFUSE = DD
# Low power xtal (16MHz) 16KCK/14CK+65ms
atmega168_isp: LFUSE = FF
# 512 byte boot
atmega168_isp: EFUSE = 04
atmega168_isp: isp
diecimila: TARGET = diecimila
diecimila: MCU_TARGET = atmega168
diecimila: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
diecimila: AVR_FREQ = 16000000L
diecimila: $(PROGRAM)_diecimila.hex
diecimila: $(PROGRAM)_diecimila.lst
diecimila_isp: diecimila
diecimila_isp: TARGET = diecimila
# 2.7V brownout
diecimila_isp: HFUSE = DD
# Low power xtal (16MHz) 16KCK/14CK+65ms
diecimila_isp: LFUSE = FF
# 512 byte boot
diecimila_isp: EFUSE = 04
diecimila_isp: isp
atmega328: TARGET = atmega328
atmega328: MCU_TARGET = atmega328p
atmega328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
atmega328: AVR_FREQ = 16000000L
atmega328: LDSECTIONS = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe
atmega328: $(PROGRAM)_atmega328.hex
atmega328: $(PROGRAM)_atmega328.lst
atmega328_isp: atmega328
atmega328_isp: TARGET = atmega328
atmega328_isp: MCU_TARGET = atmega328p
# 512 byte boot, SPIEN
atmega328_isp: HFUSE = DE
# Low power xtal (16MHz) 16KCK/14CK+65ms
atmega328_isp: LFUSE = FF
# 2.7V brownout
atmega328_isp: EFUSE = 05
atmega328_isp: isp
atmega1284: TARGET = atmega1284p
atmega1284: MCU_TARGET = atmega1284p
atmega1284: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DBIGBOOT'
atmega1284: AVR_FREQ = 16000000L
atmega1284: LDSECTIONS = -Wl,--section-start=.text=0x1fc00
atmega1284: $(PROGRAM)_atmega1284p.hex
atmega1284: $(PROGRAM)_atmega1284p.lst
atmega1284_isp: atmega1284
atmega1284_isp: TARGET = atmega1284p
atmega1284_isp: MCU_TARGET = atmega1284p
# 1024 byte boot
atmega1284_isp: HFUSE = DE
# Low power xtal (16MHz) 16KCK/14CK+65ms
atmega1284_isp: LFUSE = FF
# 2.7V brownout
atmega1284_isp: EFUSE = FD
atmega1284_isp: isp
# Sanguino has a minimum boot size of 1024 bytes, so enable extra functions
#
sanguino: TARGET = atmega644p
sanguino: MCU_TARGET = atmega644p
sanguino: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DBIGBOOT'
sanguino: AVR_FREQ = 16000000L
sanguino: LDSECTIONS = -Wl,--section-start=.text=0xfc00
sanguino: $(PROGRAM)_atmega644p.hex
sanguino: $(PROGRAM)_atmega644p.lst
sanguino_isp: sanguino
sanguino_isp: TARGET = atmega644p
sanguino_isp: MCU_TARGET = atmega644p
# 1024 byte boot
sanguino_isp: HFUSE = DE
# Low power xtal (16MHz) 16KCK/14CK+65ms
sanguino_isp: LFUSE = FF
# 2.7V brownout
sanguino_isp: EFUSE = 05
sanguino_isp: isp
# Mega has a minimum boot size of 1024 bytes, so enable extra functions
#mega: TARGET = atmega1280
mega: MCU_TARGET = atmega1280
mega: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DBIGBOOT'
mega: AVR_FREQ = 16000000L
mega: LDSECTIONS = -Wl,--section-start=.text=0x1fc00
mega: $(PROGRAM)_atmega1280.hex
mega: $(PROGRAM)_atmega1280.lst
mega_isp: mega
mega_isp: TARGET = atmega1280
mega_isp: MCU_TARGET = atmega1280
# 1024 byte boot
mega_isp: HFUSE = DE
# Low power xtal (16MHz) 16KCK/14CK+65ms
mega_isp: LFUSE = FF
# 2.7V brownout
mega_isp: EFUSE = 05
mega_isp: isp
# ATmega8
#
atmega8: TARGET = atmega8
atmega8: MCU_TARGET = atmega8
atmega8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
atmega8: AVR_FREQ = 16000000L
atmega8: LDSECTIONS = -Wl,--section-start=.text=0x1e00 -Wl,--section-start=.version=0x1ffe
atmega8: $(PROGRAM)_atmega8.hex
atmega8: $(PROGRAM)_atmega8.lst
atmega8_isp: atmega8
atmega8_isp: TARGET = atmega8
atmega8_isp: MCU_TARGET = atmega8
# SPIEN, CKOPT, Bootsize=512B
atmega8_isp: HFUSE = CC
# 2.7V brownout, Low power xtal (16MHz) 16KCK/14CK+65ms
atmega8_isp: LFUSE = BF
atmega8_isp: isp
# ATmega88
#
atmega88: TARGET = atmega88
atmega88: MCU_TARGET = atmega88
atmega88: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
atmega88: AVR_FREQ = 16000000L
atmega88: LDSECTIONS = -Wl,--section-start=.text=0x1e00 -Wl,--section-start=.version=0x1ffe
atmega88: $(PROGRAM)_atmega88.hex
atmega88: $(PROGRAM)_atmega88.lst
atmega88_isp: atmega88
atmega88_isp: TARGET = atmega88
atmega88_isp: MCU_TARGET = atmega88
# 2.7V brownout
atmega88_isp: HFUSE = DD
# Low power xtal (16MHz) 16KCK/14CK+65ms
atemga88_isp: LFUSE = FF
# 512 byte boot
atmega88_isp: EFUSE = 04
atmega88_isp: isp
# 8MHz clocked platforms
#
# These are capable of 115200 baud
#
lilypad: TARGET = lilypad
lilypad: MCU_TARGET = atmega168
lilypad: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
lilypad: AVR_FREQ = 8000000L
lilypad: $(PROGRAM)_lilypad.hex
lilypad: $(PROGRAM)_lilypad.lst
lilypad_isp: lilypad
lilypad_isp: TARGET = lilypad
# 2.7V brownout
lilypad_isp: HFUSE = DD
# Internal 8MHz osc (8MHz) Slow rising power
lilypad_isp: LFUSE = E2
# 512 byte boot
lilypad_isp: EFUSE = 04
lilypad_isp: isp
lilypad_resonator: TARGET = lilypad_resonator
lilypad_resonator: MCU_TARGET = atmega168
lilypad_resonator: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
lilypad_resonator: AVR_FREQ = 8000000L
lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex
lilypad_resonator: $(PROGRAM)_lilypad_resonator.lst
lilypad_resonator_isp: lilypad_resonator
lilypad_resonator_isp: TARGET = lilypad_resonator
# 2.7V brownout
lilypad_resonator_isp: HFUSE = DD
# Full swing xtal (20MHz) 258CK/14CK+4.1ms
lilypad_resonator_isp: LFUSE = C6
# 512 byte boot
lilypad_resonator_isp: EFUSE = 04
lilypad_resonator_isp: isp
pro8: TARGET = pro_8MHz
pro8: MCU_TARGET = atmega168
pro8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
pro8: AVR_FREQ = 8000000L
pro8: $(PROGRAM)_pro_8MHz.hex
pro8: $(PROGRAM)_pro_8MHz.lst
pro8_isp: pro8
pro8_isp: TARGET = pro_8MHz
# 2.7V brownout
pro8_isp: HFUSE = DD
# Full swing xtal (20MHz) 258CK/14CK+4.1ms
pro8_isp: LFUSE = C6
# 512 byte boot
pro8_isp: EFUSE = 04
pro8_isp: isp
atmega328_pro8: TARGET = atmega328_pro_8MHz
atmega328_pro8: MCU_TARGET = atmega328p
atmega328_pro8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
atmega328_pro8: AVR_FREQ = 8000000L
atmega328_pro8: LDSECTIONS = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe
atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.hex
atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.lst
atmega328_pro8_isp: atmega328_pro8
atmega328_pro8_isp: TARGET = atmega328_pro_8MHz
atmega328_pro8_isp: MCU_TARGET = atmega328p
# 512 byte boot, SPIEN
atmega328_pro8_isp: HFUSE = DE
# Low power xtal (16MHz) 16KCK/14CK+65ms
atmega328_pro8_isp: LFUSE = FF
# 2.7V brownout
atmega328_pro8_isp: EFUSE = 05
atmega328_pro8_isp: isp
# 1MHz clocked platforms
#
# These are capable of 9600 baud
#
luminet: TARGET = luminet
luminet: MCU_TARGET = attiny84
luminet: CFLAGS += '-DLED_START_FLASHES=3' '-DSOFT_UART' '-DBAUD_RATE=9600'
luminet: CFLAGS += '-DVIRTUAL_BOOT_PARTITION'
luminet: AVR_FREQ = 1000000L
luminet: LDSECTIONS = -Wl,--section-start=.text=0x1d00 -Wl,--section-start=.version=0x1efe
luminet: $(PROGRAM)_luminet.hex
luminet: $(PROGRAM)_luminet.lst
luminet_isp: luminet
luminet_isp: TARGET = luminet
luminet_isp: MCU_TARGET = attiny84
# Brownout disabled
luminet_isp: HFUSE = DF
# 1MHz internal oscillator, slowly rising power
luminet_isp: LFUSE = 62
# Self-programming enable
luminet_isp: EFUSE = FE
luminet_isp: isp
#
# Generic build instructions
#
#
isp: $(TARGET)
$(ISPFUSES)
$(ISPFLASH)
isp-stk500: $(PROGRAM)_$(TARGET).hex
$(STK500-1)
$(STK500-2)
%.elf: $(OBJ)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
$(SIZE) $@
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 -j .version --set-section-flags .version=alloc,load -O ihex $< $@
%.srec: %.elf
$(OBJCOPY) -j .text -j .data -j .version --set-section-flags .version=alloc,load -O srec $< $@
%.bin: %.elf
$(OBJCOPY) -j .text -j .data -j .version --set-section-flags .version=alloc,load -O binary $< $@

View File

@@ -1,848 +0,0 @@
/* Modified to use out for SPM access
** Peter Knight, Optiboot project http://optiboot.googlecode.com
**
** Todo: Tidy up
**
** "_short" routines execute 1 cycle faster and use 1 less word of flash
** by using "out" instruction instead of "sts".
**
** Additional elpm variants that trust the value of RAMPZ
*/
/* Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007 Eric B. Weddington
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of the copyright holders nor the names of
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. */
/* $Id: boot.h,v 1.27.2.3 2008/09/30 13:58:48 arcanum Exp $ */
#ifndef _AVR_BOOT_H_
#define _AVR_BOOT_H_ 1
/** \file */
/** \defgroup avr_boot <avr/boot.h>: Bootloader Support Utilities
\code
#include <avr/io.h>
#include <avr/boot.h>
\endcode
The macros in this module provide a C language interface to the
bootloader support functionality of certain AVR processors. These
macros are designed to work with all sizes of flash memory.
Global interrupts are not automatically disabled for these macros. It
is left up to the programmer to do this. See the code example below.
Also see the processor datasheet for caveats on having global interrupts
enabled during writing of the Flash.
\note Not all AVR processors provide bootloader support. See your
processor datasheet to see if it provides bootloader support.
\todo From email with Marek: On smaller devices (all except ATmega64/128),
__SPM_REG is in the I/O space, accessible with the shorter "in" and "out"
instructions - since the boot loader has a limited size, this could be an
important optimization.
\par API Usage Example
The following code shows typical usage of the boot API.
\code
#include <inttypes.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
void boot_program_page (uint32_t page, uint8_t *buf)
{
uint16_t i;
uint8_t sreg;
// Disable interrupts.
sreg = SREG;
cli();
eeprom_busy_wait ();
boot_page_erase (page);
boot_spm_busy_wait (); // Wait until the memory is erased.
for (i=0; i<SPM_PAGESIZE; i+=2)
{
// Set up little-endian word.
uint16_t w = *buf++;
w += (*buf++) << 8;
boot_page_fill (page + i, w);
}
boot_page_write (page); // Store buffer in flash page.
boot_spm_busy_wait(); // Wait until the memory is written.
// Reenable RWW-section again. We need this if we want to jump back
// to the application after bootloading.
boot_rww_enable ();
// Re-enable interrupts (if they were ever enabled).
SREG = sreg;
}\endcode */
#include <avr/eeprom.h>
#include <avr/io.h>
#include <inttypes.h>
#include <limits.h>
/* Check for SPM Control Register in processor. */
#if defined (SPMCSR)
# define __SPM_REG SPMCSR
#elif defined (SPMCR)
# define __SPM_REG SPMCR
#else
# error AVR processor does not provide bootloader support!
#endif
/* Check for SPM Enable bit. */
#if defined(SPMEN)
# define __SPM_ENABLE SPMEN
#elif defined(SELFPRGEN)
# define __SPM_ENABLE SELFPRGEN
#else
# error Cannot find SPM Enable bit definition!
#endif
/** \ingroup avr_boot
\def BOOTLOADER_SECTION
Used to declare a function or variable to be placed into a
new section called .bootloader. This section and its contents
can then be relocated to any address (such as the bootloader
NRWW area) at link-time. */
#define BOOTLOADER_SECTION __attribute__ ((section (".bootloader")))
/* Create common bit definitions. */
#ifdef ASB
#define __COMMON_ASB ASB
#else
#define __COMMON_ASB RWWSB
#endif
#ifdef ASRE
#define __COMMON_ASRE ASRE
#else
#define __COMMON_ASRE RWWSRE
#endif
/* Define the bit positions of the Boot Lock Bits. */
#define BLB12 5
#define BLB11 4
#define BLB02 3
#define BLB01 2
/** \ingroup avr_boot
\def boot_spm_interrupt_enable()
Enable the SPM interrupt. */
#define boot_spm_interrupt_enable() (__SPM_REG |= (uint8_t)_BV(SPMIE))
/** \ingroup avr_boot
\def boot_spm_interrupt_disable()
Disable the SPM interrupt. */
#define boot_spm_interrupt_disable() (__SPM_REG &= (uint8_t)~_BV(SPMIE))
/** \ingroup avr_boot
\def boot_is_spm_interrupt()
Check if the SPM interrupt is enabled. */
#define boot_is_spm_interrupt() (__SPM_REG & (uint8_t)_BV(SPMIE))
/** \ingroup avr_boot
\def boot_rww_busy()
Check if the RWW section is busy. */
#define boot_rww_busy() (__SPM_REG & (uint8_t)_BV(__COMMON_ASB))
/** \ingroup avr_boot
\def boot_spm_busy()
Check if the SPM instruction is busy. */
#define boot_spm_busy() (__SPM_REG & (uint8_t)_BV(__SPM_ENABLE))
/** \ingroup avr_boot
\def boot_spm_busy_wait()
Wait while the SPM instruction is busy. */
#define boot_spm_busy_wait() do{}while(boot_spm_busy())
#define __BOOT_PAGE_ERASE (_BV(__SPM_ENABLE) | _BV(PGERS))
#define __BOOT_PAGE_WRITE (_BV(__SPM_ENABLE) | _BV(PGWRT))
#define __BOOT_PAGE_FILL _BV(__SPM_ENABLE)
#define __BOOT_RWW_ENABLE (_BV(__SPM_ENABLE) | _BV(__COMMON_ASRE))
#define __BOOT_LOCK_BITS_SET (_BV(__SPM_ENABLE) | _BV(BLBSET))
#define __boot_page_fill_short(address, data) \
(__extension__({ \
__asm__ __volatile__ \
( \
"movw r0, %3\n\t" \
"out %0, %1\n\t" \
"spm\n\t" \
"clr r1\n\t" \
: \
: "i" (_SFR_IO_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_PAGE_FILL), \
"z" ((uint16_t)address), \
"r" ((uint16_t)data) \
: "r0" \
); \
}))
#define __boot_page_fill_normal(address, data) \
(__extension__({ \
__asm__ __volatile__ \
( \
"movw r0, %3\n\t" \
"sts %0, %1\n\t" \
"spm\n\t" \
"clr r1\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_PAGE_FILL), \
"z" ((uint16_t)address), \
"r" ((uint16_t)data) \
: "r0" \
); \
}))
#define __boot_page_fill_alternate(address, data)\
(__extension__({ \
__asm__ __volatile__ \
( \
"movw r0, %3\n\t" \
"sts %0, %1\n\t" \
"spm\n\t" \
".word 0xffff\n\t" \
"nop\n\t" \
"clr r1\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_PAGE_FILL), \
"z" ((uint16_t)address), \
"r" ((uint16_t)data) \
: "r0" \
); \
}))
#define __boot_page_fill_extended(address, data) \
(__extension__({ \
__asm__ __volatile__ \
( \
"movw r0, %4\n\t" \
"movw r30, %A3\n\t" \
"sts %1, %C3\n\t" \
"sts %0, %2\n\t" \
"spm\n\t" \
"clr r1\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"i" (_SFR_MEM_ADDR(RAMPZ)), \
"r" ((uint8_t)__BOOT_PAGE_FILL), \
"r" ((uint32_t)address), \
"r" ((uint16_t)data) \
: "r0", "r30", "r31" \
); \
}))
#define __boot_page_fill_extended_short(address, data) \
(__extension__({ \
__asm__ __volatile__ \
( \
"movw r0, %4\n\t" \
"movw r30, %A3\n\t" \
"out %1, %C3\n\t" \
"out %0, %2\n\t" \
"spm\n\t" \
"clr r1\n\t" \
: \
: "i" (_SFR_IO_ADDR(__SPM_REG)), \
"i" (_SFR_IO_ADDR(RAMPZ)), \
"r" ((uint8_t)__BOOT_PAGE_FILL), \
"r" ((uint32_t)address), \
"r" ((uint16_t)data) \
: "r0", "r30", "r31" \
); \
}))
#define __boot_page_erase_short(address) \
(__extension__({ \
__asm__ __volatile__ \
( \
"out %0, %1\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_IO_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_PAGE_ERASE), \
"z" ((uint16_t)address) \
); \
}))
#define __boot_page_erase_normal(address) \
(__extension__({ \
__asm__ __volatile__ \
( \
"sts %0, %1\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_PAGE_ERASE), \
"z" ((uint16_t)address) \
); \
}))
#define __boot_page_erase_alternate(address) \
(__extension__({ \
__asm__ __volatile__ \
( \
"sts %0, %1\n\t" \
"spm\n\t" \
".word 0xffff\n\t" \
"nop\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_PAGE_ERASE), \
"z" ((uint16_t)address) \
); \
}))
#define __boot_page_erase_extended(address) \
(__extension__({ \
__asm__ __volatile__ \
( \
"movw r30, %A3\n\t" \
"sts %1, %C3\n\t" \
"sts %0, %2\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"i" (_SFR_MEM_ADDR(RAMPZ)), \
"r" ((uint8_t)__BOOT_PAGE_ERASE), \
"r" ((uint32_t)address) \
: "r30", "r31" \
); \
}))
#define __boot_page_erase_extended_short(address) \
(__extension__({ \
__asm__ __volatile__ \
( \
"movw r30, %A3\n\t" \
"out %1, %C3\n\t" \
"out %0, %2\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_IO_ADDR(__SPM_REG)), \
"i" (_SFR_IO_ADDR(RAMPZ)), \
"r" ((uint8_t)__BOOT_PAGE_ERASE), \
"r" ((uint32_t)address) \
: "r30", "r31" \
); \
}))
#define __boot_page_write_short(address) \
(__extension__({ \
__asm__ __volatile__ \
( \
"out %0, %1\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_IO_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_PAGE_WRITE), \
"z" ((uint16_t)address) \
); \
}))
#define __boot_page_write_normal(address) \
(__extension__({ \
__asm__ __volatile__ \
( \
"sts %0, %1\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_PAGE_WRITE), \
"z" ((uint16_t)address) \
); \
}))
#define __boot_page_write_alternate(address) \
(__extension__({ \
__asm__ __volatile__ \
( \
"sts %0, %1\n\t" \
"spm\n\t" \
".word 0xffff\n\t" \
"nop\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_PAGE_WRITE), \
"z" ((uint16_t)address) \
); \
}))
#define __boot_page_write_extended(address) \
(__extension__({ \
__asm__ __volatile__ \
( \
"movw r30, %A3\n\t" \
"sts %1, %C3\n\t" \
"sts %0, %2\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"i" (_SFR_MEM_ADDR(RAMPZ)), \
"r" ((uint8_t)__BOOT_PAGE_WRITE), \
"r" ((uint32_t)address) \
: "r30", "r31" \
); \
}))
#define __boot_page_write_extended_short(address) \
(__extension__({ \
__asm__ __volatile__ \
( \
"movw r30, %A3\n\t" \
"out %1, %C3\n\t" \
"out %0, %2\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_IO_ADDR(__SPM_REG)), \
"i" (_SFR_IO_ADDR(RAMPZ)), \
"r" ((uint8_t)__BOOT_PAGE_WRITE), \
"r" ((uint32_t)address) \
: "r30", "r31" \
); \
}))
#define __boot_rww_enable_short() \
(__extension__({ \
__asm__ __volatile__ \
( \
"out %0, %1\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_IO_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_RWW_ENABLE) \
); \
}))
#define __boot_rww_enable() \
(__extension__({ \
__asm__ __volatile__ \
( \
"sts %0, %1\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_RWW_ENABLE) \
); \
}))
#define __boot_rww_enable_alternate() \
(__extension__({ \
__asm__ __volatile__ \
( \
"sts %0, %1\n\t" \
"spm\n\t" \
".word 0xffff\n\t" \
"nop\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_RWW_ENABLE) \
); \
}))
/* From the mega16/mega128 data sheets (maybe others):
Bits by SPM To set the Boot Loader Lock bits, write the desired data to
R0, write "X0001001" to SPMCR and execute SPM within four clock cycles
after writing SPMCR. The only accessible Lock bits are the Boot Lock bits
that may prevent the Application and Boot Loader section from any
software update by the MCU.
If bits 5..2 in R0 are cleared (zero), the corresponding Boot Lock bit
will be programmed if an SPM instruction is executed within four cycles
after BLBSET and SPMEN (or SELFPRGEN) are set in SPMCR. The Z-pointer is
don't care during this operation, but for future compatibility it is
recommended to load the Z-pointer with $0001 (same as used for reading the
Lock bits). For future compatibility It is also recommended to set bits 7,
6, 1, and 0 in R0 to 1 when writing the Lock bits. When programming the
Lock bits the entire Flash can be read during the operation. */
#define __boot_lock_bits_set_short(lock_bits) \
(__extension__({ \
uint8_t value = (uint8_t)(~(lock_bits)); \
__asm__ __volatile__ \
( \
"ldi r30, 1\n\t" \
"ldi r31, 0\n\t" \
"mov r0, %2\n\t" \
"out %0, %1\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_IO_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_LOCK_BITS_SET), \
"r" (value) \
: "r0", "r30", "r31" \
); \
}))
#define __boot_lock_bits_set(lock_bits) \
(__extension__({ \
uint8_t value = (uint8_t)(~(lock_bits)); \
__asm__ __volatile__ \
( \
"ldi r30, 1\n\t" \
"ldi r31, 0\n\t" \
"mov r0, %2\n\t" \
"sts %0, %1\n\t" \
"spm\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_LOCK_BITS_SET), \
"r" (value) \
: "r0", "r30", "r31" \
); \
}))
#define __boot_lock_bits_set_alternate(lock_bits) \
(__extension__({ \
uint8_t value = (uint8_t)(~(lock_bits)); \
__asm__ __volatile__ \
( \
"ldi r30, 1\n\t" \
"ldi r31, 0\n\t" \
"mov r0, %2\n\t" \
"sts %0, %1\n\t" \
"spm\n\t" \
".word 0xffff\n\t" \
"nop\n\t" \
: \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_LOCK_BITS_SET), \
"r" (value) \
: "r0", "r30", "r31" \
); \
}))
/*
Reading lock and fuse bits:
Similarly to writing the lock bits above, set BLBSET and SPMEN (or
SELFPRGEN) bits in __SPMREG, and then (within four clock cycles) issue an
LPM instruction.
Z address: contents:
0x0000 low fuse bits
0x0001 lock bits
0x0002 extended fuse bits
0x0003 high fuse bits
Sounds confusing, doesn't it?
Unlike the macros in pgmspace.h, no need to care for non-enhanced
cores here as these old cores do not provide SPM support anyway.
*/
/** \ingroup avr_boot
\def GET_LOW_FUSE_BITS
address to read the low fuse bits, using boot_lock_fuse_bits_get
*/
#define GET_LOW_FUSE_BITS (0x0000)
/** \ingroup avr_boot
\def GET_LOCK_BITS
address to read the lock bits, using boot_lock_fuse_bits_get
*/
#define GET_LOCK_BITS (0x0001)
/** \ingroup avr_boot
\def GET_EXTENDED_FUSE_BITS
address to read the extended fuse bits, using boot_lock_fuse_bits_get
*/
#define GET_EXTENDED_FUSE_BITS (0x0002)
/** \ingroup avr_boot
\def GET_HIGH_FUSE_BITS
address to read the high fuse bits, using boot_lock_fuse_bits_get
*/
#define GET_HIGH_FUSE_BITS (0x0003)
/** \ingroup avr_boot
\def boot_lock_fuse_bits_get(address)
Read the lock or fuse bits at \c address.
Parameter \c address can be any of GET_LOW_FUSE_BITS,
GET_LOCK_BITS, GET_EXTENDED_FUSE_BITS, or GET_HIGH_FUSE_BITS.
\note The lock and fuse bits returned are the physical values,
i.e. a bit returned as 0 means the corresponding fuse or lock bit
is programmed.
*/
#define boot_lock_fuse_bits_get_short(address) \
(__extension__({ \
uint8_t __result; \
__asm__ __volatile__ \
( \
"ldi r30, %3\n\t" \
"ldi r31, 0\n\t" \
"out %1, %2\n\t" \
"lpm %0, Z\n\t" \
: "=r" (__result) \
: "i" (_SFR_IO_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_LOCK_BITS_SET), \
"M" (address) \
: "r0", "r30", "r31" \
); \
__result; \
}))
#define boot_lock_fuse_bits_get(address) \
(__extension__({ \
uint8_t __result; \
__asm__ __volatile__ \
( \
"ldi r30, %3\n\t" \
"ldi r31, 0\n\t" \
"sts %1, %2\n\t" \
"lpm %0, Z\n\t" \
: "=r" (__result) \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t)__BOOT_LOCK_BITS_SET), \
"M" (address) \
: "r0", "r30", "r31" \
); \
__result; \
}))
/** \ingroup avr_boot
\def boot_signature_byte_get(address)
Read the Signature Row byte at \c address. For some MCU types,
this function can also retrieve the factory-stored oscillator
calibration bytes.
Parameter \c address can be 0-0x1f as documented by the datasheet.
\note The values are MCU type dependent.
*/
#define __BOOT_SIGROW_READ (_BV(__SPM_ENABLE) | _BV(SIGRD))
#define boot_signature_byte_get_short(addr) \
(__extension__({ \
uint16_t __addr16 = (uint16_t)(addr); \
uint8_t __result; \
__asm__ __volatile__ \
( \
"out %1, %2\n\t" \
"lpm %0, Z" "\n\t" \
: "=r" (__result) \
: "i" (_SFR_IO_ADDR(__SPM_REG)), \
"r" ((uint8_t) __BOOT_SIGROW_READ), \
"z" (__addr16) \
); \
__result; \
}))
#define boot_signature_byte_get(addr) \
(__extension__({ \
uint16_t __addr16 = (uint16_t)(addr); \
uint8_t __result; \
__asm__ __volatile__ \
( \
"sts %1, %2\n\t" \
"lpm %0, Z" "\n\t" \
: "=r" (__result) \
: "i" (_SFR_MEM_ADDR(__SPM_REG)), \
"r" ((uint8_t) __BOOT_SIGROW_READ), \
"z" (__addr16) \
); \
__result; \
}))
/** \ingroup avr_boot
\def boot_page_fill(address, data)
Fill the bootloader temporary page buffer for flash
address with data word.
\note The address is a byte address. The data is a word. The AVR
writes data to the buffer a word at a time, but addresses the buffer
per byte! So, increment your address by 2 between calls, and send 2
data bytes in a word format! The LSB of the data is written to the lower
address; the MSB of the data is written to the higher address.*/
/** \ingroup avr_boot
\def boot_page_erase(address)
Erase the flash page that contains address.
\note address is a byte address in flash, not a word address. */
/** \ingroup avr_boot
\def boot_page_write(address)
Write the bootloader temporary page buffer
to flash page that contains address.
\note address is a byte address in flash, not a word address. */
/** \ingroup avr_boot
\def boot_rww_enable()
Enable the Read-While-Write memory section. */
/** \ingroup avr_boot
\def boot_lock_bits_set(lock_bits)
Set the bootloader lock bits.
\param lock_bits A mask of which Boot Loader Lock Bits to set.
\note In this context, a 'set bit' will be written to a zero value.
Note also that only BLBxx bits can be programmed by this command.
For example, to disallow the SPM instruction from writing to the Boot
Loader memory section of flash, you would use this macro as such:
\code
boot_lock_bits_set (_BV (BLB11));
\endcode
\note Like any lock bits, the Boot Loader Lock Bits, once set,
cannot be cleared again except by a chip erase which will in turn
also erase the boot loader itself. */
/* Normal versions of the macros use 16-bit addresses.
Extended versions of the macros use 32-bit addresses.
Alternate versions of the macros use 16-bit addresses and require special
instruction sequences after LPM.
FLASHEND is defined in the ioXXXX.h file.
USHRT_MAX is defined in <limits.h>. */
#if defined(__AVR_ATmega161__) || defined(__AVR_ATmega163__) \
|| defined(__AVR_ATmega323__)
/* Alternate: ATmega161/163/323 and 16 bit address */
#define boot_page_fill(address, data) __boot_page_fill_alternate(address, data)
#define boot_page_erase(address) __boot_page_erase_alternate(address)
#define boot_page_write(address) __boot_page_write_alternate(address)
#define boot_rww_enable() __boot_rww_enable_alternate()
#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set_alternate(lock_bits)
#elif (FLASHEND > USHRT_MAX)
/* Extended: >16 bit address */
#define boot_page_fill(address, data) __boot_page_fill_extended_short(address, data)
#define boot_page_erase(address) __boot_page_erase_extended_short(address)
#define boot_page_write(address) __boot_page_write_extended_short(address)
#define boot_rww_enable() __boot_rww_enable_short()
#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set_short(lock_bits)
#else
/* Normal: 16 bit address */
#define boot_page_fill(address, data) __boot_page_fill_short(address, data)
#define boot_page_erase(address) __boot_page_erase_short(address)
#define boot_page_write(address) __boot_page_write_short(address)
#define boot_rww_enable() __boot_rww_enable_short()
#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set_short(lock_bits)
#endif
/** \ingroup avr_boot
Same as boot_page_fill() except it waits for eeprom and spm operations to
complete before filling the page. */
#define boot_page_fill_safe(address, data) \
do { \
boot_spm_busy_wait(); \
eeprom_busy_wait(); \
boot_page_fill(address, data); \
} while (0)
/** \ingroup avr_boot
Same as boot_page_erase() except it waits for eeprom and spm operations to
complete before erasing the page. */
#define boot_page_erase_safe(address) \
do { \
boot_spm_busy_wait(); \
eeprom_busy_wait(); \
boot_page_erase (address); \
} while (0)
/** \ingroup avr_boot
Same as boot_page_write() except it waits for eeprom and spm operations to
complete before writing the page. */
#define boot_page_write_safe(address) \
do { \
boot_spm_busy_wait(); \
eeprom_busy_wait(); \
boot_page_write (address); \
} while (0)
/** \ingroup avr_boot
Same as boot_rww_enable() except waits for eeprom and spm operations to
complete before enabling the RWW mameory. */
#define boot_rww_enable_safe() \
do { \
boot_spm_busy_wait(); \
eeprom_busy_wait(); \
boot_rww_enable(); \
} while (0)
/** \ingroup avr_boot
Same as boot_lock_bits_set() except waits for eeprom and spm operations to
complete before setting the lock bits. */
#define boot_lock_bits_set_safe(lock_bits) \
do { \
boot_spm_busy_wait(); \
eeprom_busy_wait(); \
boot_lock_bits_set (lock_bits); \
} while (0)
#endif /* _AVR_BOOT_H_ */

View File

@@ -1,724 +0,0 @@
/**********************************************************/
/* -Wl,-section-start=bootloader=0x1fc00 */
/* Optiboot bootloader for Arduino */
/* */
/* http://optiboot.googlecode.com */
/* */
/* Arduino-maintained version : See README.TXT */
/* http://code.google.com/p/arduino/ */
/* */
/* Heavily optimised bootloader that is faster and */
/* smaller than the Arduino standard bootloader */
/* */
/* Enhancements: */
/* Fits in 512 bytes, saving 1.5K of code space */
/* Background page erasing speeds up programming */
/* Higher baud rate speeds up programming */
/* Written almost entirely in C */
/* Customisable timeout with accurate timeconstant */
/* Optional virtual UART. No hardware UART required. */
/* Optional virtual boot partition for devices without. */
/* */
/* What you lose: */
/* Implements a skeleton STK500 protocol which is */
/* missing several features including EEPROM */
/* programming and non-page-aligned writes */
/* High baud rate breaks compatibility with standard */
/* Arduino flash settings */
/* */
/* Fully supported: */
/* ATmega168 based devices (Diecimila etc) */
/* ATmega328P based devices (Duemilanove etc) */
/* */
/* Alpha test */
/* ATmega1280 based devices (Arduino Mega) */
/* */
/* Work in progress: */
/* ATmega644P based devices (Sanguino) */
/* ATtiny84 based devices (Luminet) */
/* */
/* Does not support: */
/* USB based devices (eg. Teensy) */
/* */
/* Assumptions: */
/* The code makes several assumptions that reduce the */
/* code size. They are all true after a hardware reset, */
/* but may not be true if the bootloader is called by */
/* other means or on other hardware. */
/* No interrupts can occur */
/* UART and Timer 1 are set to their reset state */
/* SP points to RAMEND */
/* */
/* Code builds on code, libraries and optimisations from: */
/* stk500boot.c by Jason P. Kyle */
/* Arduino bootloader http://arduino.cc */
/* Spiff's 1K bootloader http://spiffie.org/know/arduino_1k_bootloader/bootloader.shtml */
/* avr-libc project http://nongnu.org/avr-libc */
/* Adaboot http://www.ladyada.net/library/arduino/bootloader.html */
/* AVR305 Atmel Application Note */
/* */
/* 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 */
/* */
/**********************************************************/
/**********************************************************/
/* */
/* Optional defines: */
/* */
/**********************************************************/
/* */
/* BIG_BOOT: */
/* Build a 1k bootloader, not 512 bytes. This turns on */
/* extra functionality. */
/* */
/* BAUD_RATE: */
/* Set bootloader baud rate. */
/* */
/* LUDICROUS_SPEED: */
/* 230400 baud :-) */
/* */
/* SOFT_UART: */
/* Use AVR305 soft-UART instead of hardware UART. */
/* */
/* LED_START_FLASHES: */
/* Number of LED flashes on bootup. */
/* */
/* LED_DATA_FLASH: */
/* Flash LED when transferring data. For boards without */
/* TX or RX LEDs, or for people who like blinky lights. */
/* */
/* SUPPORT_EEPROM: */
/* Support reading and writing from EEPROM. This is not */
/* used by Arduino, so off by default. */
/* */
/* TIMEOUT_MS: */
/* Bootloader timeout period, in milliseconds. */
/* 500,1000,2000,4000,8000 supported. */
/* */
/**********************************************************/
/**********************************************************/
/* Version Numbers! */
/* */
/* Arduino Optiboot now includes this Version number in */
/* the source and object code. */
/* */
/* Version 3 was released as zip from the optiboot */
/* repository and was distributed with Arduino 0022. */
/* Version 4 starts with the arduino repository commit */
/* that brought the arduino repository up-to-date with */
/* the optiboot source tree changes since v3. */
/* */
/**********************************************************/
/**********************************************************/
/* Edit History: */
/* */
/* Jan 2012: */
/* 4.5 WestfW: fix NRWW value for m1284. */
/* 4.4 WestfW: use attribute OS_main instead of naked for */
/* main(). This allows optimizations that we */
/* count on, which are prohibited in naked */
/* functions due to PR42240. (keeps us less */
/* than 512 bytes when compiler is gcc4.5 */
/* (code from 4.3.2 remains the same.) */
/* 4.4 WestfW and Maniacbug: Add m1284 support. This */
/* does not change the 328 binary, so the */
/* version number didn't change either. (?) */
/* June 2011: */
/* 4.4 WestfW: remove automatic soft_uart detect (didn't */
/* know what it was doing or why.) Added a */
/* check of the calculated BRG value instead. */
/* Version stays 4.4; existing binaries are */
/* not changed. */
/* 4.4 WestfW: add initialization of address to keep */
/* the compiler happy. Change SC'ed targets. */
/* Return the SW version via READ PARAM */
/* 4.3 WestfW: catch framing errors in getch(), so that */
/* AVRISP works without HW kludges. */
/* http://code.google.com/p/arduino/issues/detail?id=368n*/
/* 4.2 WestfW: reduce code size, fix timeouts, change */
/* verifySpace to use WDT instead of appstart */
/* 4.1 WestfW: put version number in binary. */
/**********************************************************/
#define OPTIBOOT_MAJVER 4
#define OPTIBOOT_MINVER 5
#define MAKESTR(a) #a
#define MAKEVER(a, b) MAKESTR(a*256+b)
asm(" .section .version\n"
"optiboot_version: .word " MAKEVER(OPTIBOOT_MAJVER, OPTIBOOT_MINVER) "\n"
" .section .text\n");
#include <inttypes.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
// <avr/boot.h> uses sts instructions, but this version uses out instructions
// This saves cycles and program memory.
#include "boot.h"
// We don't use <avr/wdt.h> as those routines have interrupt overhead we don't need.
#include "pin_defs.h"
#include "stk500.h"
#ifndef LED_START_FLASHES
#define LED_START_FLASHES 0
#endif
#ifdef LUDICROUS_SPEED
#define BAUD_RATE 230400L
#endif
/* set the UART baud rate defaults */
#ifndef BAUD_RATE
#if F_CPU >= 8000000L
#define BAUD_RATE 115200L // Highest rate Avrdude win32 will support
#elsif F_CPU >= 1000000L
#define BAUD_RATE 9600L // 19200 also supported, but with significant error
#elsif F_CPU >= 128000L
#define BAUD_RATE 4800L // Good for 128kHz internal RC
#else
#define BAUD_RATE 1200L // Good even at 32768Hz
#endif
#endif
#if 0
/* Switch in soft UART for hard baud rates */
/*
* I don't understand what this was supposed to accomplish, where the
* constant "280" came from, or why automatically (and perhaps unexpectedly)
* switching to a soft uart is a good thing, so I'm undoing this in favor
* of a range check using the same calc used to config the BRG...
*/
#if (F_CPU/BAUD_RATE) > 280 // > 57600 for 16MHz
#ifndef SOFT_UART
#define SOFT_UART
#endif
#endif
#else // 0
#if (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 > 250
#error Unachievable baud rate (too slow) BAUD_RATE
#endif // baud rate slow check
#if (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 < 3
#error Unachievable baud rate (too fast) BAUD_RATE
#endif // baud rate fastn check
#endif
/* Watchdog settings */
#define WATCHDOG_OFF (0)
#define WATCHDOG_16MS (_BV(WDE))
#define WATCHDOG_32MS (_BV(WDP0) | _BV(WDE))
#define WATCHDOG_64MS (_BV(WDP1) | _BV(WDE))
#define WATCHDOG_125MS (_BV(WDP1) | _BV(WDP0) | _BV(WDE))
#define WATCHDOG_250MS (_BV(WDP2) | _BV(WDE))
#define WATCHDOG_500MS (_BV(WDP2) | _BV(WDP0) | _BV(WDE))
#define WATCHDOG_1S (_BV(WDP2) | _BV(WDP1) | _BV(WDE))
#define WATCHDOG_2S (_BV(WDP2) | _BV(WDP1) | _BV(WDP0) | _BV(WDE))
#ifndef __AVR_ATmega8__
#define WATCHDOG_4S (_BV(WDP3) | _BV(WDE))
#define WATCHDOG_8S (_BV(WDP3) | _BV(WDP0) | _BV(WDE))
#endif
/* Function Prototypes */
/* The main function is in init9, which removes the interrupt vector table */
/* we don't need. It is also 'naked', which means the compiler does not */
/* generate any entry or exit code itself. */
int main(void) __attribute__ ((OS_main)) __attribute__ ((section (".init9")));
void putch(char);
uint8_t getch(void);
static inline void getNch(uint8_t); /* "static inline" is a compiler hint to reduce code size */
void verifySpace();
static inline void flash_led(uint8_t);
uint8_t getLen();
static inline void watchdogReset();
void watchdogConfig(uint8_t x);
#ifdef SOFT_UART
void uartDelay() __attribute__ ((naked));
#endif
void appStart() __attribute__ ((naked));
/*
* NRWW memory
* Addresses below NRWW (Non-Read-While-Write) can be programmed while
* continuing to run code from flash, slightly speeding up programming
* time. Beware that Atmel data sheets specify this as a WORD address,
* while optiboot will be comparing against a 16-bit byte address. This
* means that on a part with 128kB of memory, the upper part of the lower
* 64k will get NRWW processing as well, even though it doesn't need it.
* That's OK. In fact, you can disable the overlapping processing for
* a part entirely by setting NRWWSTART to zero. This reduces code
* space a bit, at the expense of being slightly slower, overall.
*
* RAMSTART should be self-explanatory. It's bigger on parts with a
* lot of peripheral registers.
*/
#if defined(__AVR_ATmega168__)
#define RAMSTART (0x100)
#define NRWWSTART (0x3800)
#elif defined(__AVR_ATmega328P__)
#define RAMSTART (0x100)
#define NRWWSTART (0x7000)
#elif defined (__AVR_ATmega644P__)
#define RAMSTART (0x100)
#define NRWWSTART (0xE000)
#elif defined (__AVR_ATmega1284P__)
#define RAMSTART (0x100)
#define NRWWSTART (0xE000)
#elif defined(__AVR_ATtiny84__)
#define RAMSTART (0x100)
#define NRWWSTART (0x0000)
#elif defined(__AVR_ATmega1280__)
#define RAMSTART (0x200)
#define NRWWSTART (0xE000)
#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega88__)
#define RAMSTART (0x100)
#define NRWWSTART (0x1800)
#endif
/* C zero initialises all global variables. However, that requires */
/* These definitions are NOT zero initialised, but that doesn't matter */
/* This allows us to drop the zero init code, saving us memory */
#define buff ((uint8_t*)(RAMSTART))
#ifdef VIRTUAL_BOOT_PARTITION
#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4))
#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6))
#endif
/* main program starts here */
int main(void) {
uint8_t ch;
/*
* Making these local and in registers prevents the need for initializing
* them, and also saves space because code no longer stores to memory.
* (initializing address keeps the compiler happy, but isn't really
* necessary, and uses 4 bytes of flash.)
*/
register uint16_t address = 0;
register uint8_t length;
// After the zero init loop, this is the first code to run.
//
// This code makes the following assumptions:
// No interrupts will execute
// SP points to RAMEND
// r1 contains zero
//
// If not, uncomment the following instructions:
// cli();
asm volatile ("clr __zero_reg__");
#ifdef __AVR_ATmega8__
SP=RAMEND; // This is done by hardware reset
#endif
// Adaboot no-wait mod
ch = MCUSR;
MCUSR = 0;
if (!(ch & _BV(EXTRF))) appStart();
#if LED_START_FLASHES > 0
// Set up Timer 1 for timeout counter
TCCR1B = _BV(CS12) | _BV(CS10); // div 1024
#endif
#ifndef SOFT_UART
#ifdef __AVR_ATmega8__
UCSRA = _BV(U2X); //Double speed mode USART
UCSRB = _BV(RXEN) | _BV(TXEN); // enable Rx & Tx
UCSRC = _BV(URSEL) | _BV(UCSZ1) | _BV(UCSZ0); // config USART; 8N1
UBRRL = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 );
#else
UCSR0A = _BV(U2X0); //Double speed mode USART0
UCSR0B = _BV(RXEN0) | _BV(TXEN0);
UCSR0C = _BV(UCSZ00) | _BV(UCSZ01);
UBRR0L = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 );
#endif
#endif
// Set up watchdog to trigger after 500ms
watchdogConfig(WATCHDOG_1S);
/* Set LED pin as output */
LED_DDR |= _BV(LED);
#ifdef SOFT_UART
/* Set TX pin as output */
UART_DDR |= _BV(UART_TX_BIT);
#endif
#if LED_START_FLASHES > 0
/* Flash onboard LED to signal entering of bootloader */
flash_led(LED_START_FLASHES * 2);
#endif
/* Forever loop */
for (;;) {
/* get character from UART */
ch = getch();
if(ch == STK_GET_PARAMETER) {
unsigned char which = getch();
verifySpace();
if (which == 0x82) {
/*
* Send optiboot version as "minor SW version"
*/
putch(OPTIBOOT_MINVER);
} else if (which == 0x81) {
putch(OPTIBOOT_MAJVER);
} else {
/*
* GET PARAMETER returns a generic 0x03 reply for
* other parameters - enough to keep Avrdude happy
*/
putch(0x03);
}
}
else if(ch == STK_SET_DEVICE) {
// SET DEVICE is ignored
getNch(20);
}
else if(ch == STK_SET_DEVICE_EXT) {
// SET DEVICE EXT is ignored
getNch(5);
}
else if(ch == STK_LOAD_ADDRESS) {
// LOAD ADDRESS
uint16_t newAddress;
newAddress = getch();
newAddress = (newAddress & 0xff) | (getch() << 8);
#ifdef RAMPZ
// Transfer top bit to RAMPZ
RAMPZ = (newAddress & 0x8000) ? 1 : 0;
#endif
newAddress += newAddress; // Convert from word address to byte address
address = newAddress;
verifySpace();
}
else if(ch == STK_UNIVERSAL) {
// UNIVERSAL command is ignored
getNch(4);
putch(0x00);
}
/* Write memory, length is big endian and is in bytes */
else if(ch == STK_PROG_PAGE) {
// PROGRAM PAGE - we support flash programming only, not EEPROM
uint8_t *bufPtr;
uint16_t addrPtr;
getch(); /* getlen() */
length = getch();
getch();
// If we are in RWW section, immediately start page erase
if (address < NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address);
// While that is going on, read in page contents
bufPtr = buff;
do *bufPtr++ = getch();
while (--length);
// If we are in NRWW section, page erase has to be delayed until now.
// Todo: Take RAMPZ into account
if (address >= NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address);
// Read command terminator, start reply
verifySpace();
// If only a partial page is to be programmed, the erase might not be complete.
// So check that here
boot_spm_busy_wait();
#ifdef VIRTUAL_BOOT_PARTITION
if ((uint16_t)(void*)address == 0) {
// This is the reset vector page. We need to live-patch the code so the
// bootloader runs.
//
// Move RESET vector to WDT vector
uint16_t vect = buff[0] | (buff[1]<<8);
rstVect = vect;
wdtVect = buff[8] | (buff[9]<<8);
vect -= 4; // Instruction is a relative jump (rjmp), so recalculate.
buff[8] = vect & 0xff;
buff[9] = vect >> 8;
// Add jump to bootloader at RESET vector
buff[0] = 0x7f;
buff[1] = 0xce; // rjmp 0x1d00 instruction
}
#endif
// Copy buffer into programming buffer
bufPtr = buff;
addrPtr = (uint16_t)(void*)address;
ch = SPM_PAGESIZE / 2;
do {
uint16_t a;
a = *bufPtr++;
a |= (*bufPtr++) << 8;
__boot_page_fill_short((uint16_t)(void*)addrPtr,a);
addrPtr += 2;
} while (--ch);
// Write from programming buffer
__boot_page_write_short((uint16_t)(void*)address);
boot_spm_busy_wait();
#if defined(RWWSRE)
// Reenable read access to flash
boot_rww_enable();
#endif
}
/* Read memory block mode, length is big endian. */
else if(ch == STK_READ_PAGE) {
// READ PAGE - we only read flash
getch(); /* getlen() */
length = getch();
getch();
verifySpace();
#ifdef VIRTUAL_BOOT_PARTITION
do {
// Undo vector patch in bottom page so verify passes
if (address == 0) ch=rstVect & 0xff;
else if (address == 1) ch=rstVect >> 8;
else if (address == 8) ch=wdtVect & 0xff;
else if (address == 9) ch=wdtVect >> 8;
else ch = pgm_read_byte_near(address);
address++;
putch(ch);
} while (--length);
#else
#ifdef RAMPZ
// Since RAMPZ should already be set, we need to use EPLM directly.
// do putch(pgm_read_byte_near(address++));
// while (--length);
do {
uint8_t result;
__asm__ ("elpm %0,Z\n":"=r"(result):"z"(address));
putch(result);
address++;
}
while (--length);
#else
do putch(pgm_read_byte_near(address++));
while (--length);
#endif
#endif
}
/* Get device signature bytes */
else if(ch == STK_READ_SIGN) {
// READ SIGN - return what Avrdude wants to hear
verifySpace();
putch(SIGNATURE_0);
putch(SIGNATURE_1);
putch(SIGNATURE_2);
}
else if (ch == STK_LEAVE_PROGMODE) { /* 'Q' */
// Adaboot no-wait mod
watchdogConfig(WATCHDOG_16MS);
verifySpace();
}
else {
// This covers the response to commands like STK_ENTER_PROGMODE
verifySpace();
}
putch(STK_OK);
}
}
void putch(char ch) {
#ifndef SOFT_UART
while (!(UCSR0A & _BV(UDRE0)));
UDR0 = ch;
#else
__asm__ __volatile__ (
" com %[ch]\n" // ones complement, carry set
" sec\n"
"1: brcc 2f\n"
" cbi %[uartPort],%[uartBit]\n"
" rjmp 3f\n"
"2: sbi %[uartPort],%[uartBit]\n"
" nop\n"
"3: rcall uartDelay\n"
" rcall uartDelay\n"
" lsr %[ch]\n"
" dec %[bitcnt]\n"
" brne 1b\n"
:
:
[bitcnt] "d" (10),
[ch] "r" (ch),
[uartPort] "I" (_SFR_IO_ADDR(UART_PORT)),
[uartBit] "I" (UART_TX_BIT)
:
"r25"
);
#endif
}
uint8_t getch(void) {
uint8_t ch;
#ifdef LED_DATA_FLASH
#ifdef __AVR_ATmega8__
LED_PORT ^= _BV(LED);
#else
LED_PIN |= _BV(LED);
#endif
#endif
#ifdef SOFT_UART
__asm__ __volatile__ (
"1: sbic %[uartPin],%[uartBit]\n" // Wait for start edge
" rjmp 1b\n"
" rcall uartDelay\n" // Get to middle of start bit
"2: rcall uartDelay\n" // Wait 1 bit period
" rcall uartDelay\n" // Wait 1 bit period
" clc\n"
" sbic %[uartPin],%[uartBit]\n"
" sec\n"
" dec %[bitCnt]\n"
" breq 3f\n"
" ror %[ch]\n"
" rjmp 2b\n"
"3:\n"
:
[ch] "=r" (ch)
:
[bitCnt] "d" (9),
[uartPin] "I" (_SFR_IO_ADDR(UART_PIN)),
[uartBit] "I" (UART_RX_BIT)
:
"r25"
);
#else
while(!(UCSR0A & _BV(RXC0)))
;
if (!(UCSR0A & _BV(FE0))) {
/*
* A Framing Error indicates (probably) that something is talking
* to us at the wrong bit rate. Assume that this is because it
* expects to be talking to the application, and DON'T reset the
* watchdog. This should cause the bootloader to abort and run
* the application "soon", if it keeps happening. (Note that we
* don't care that an invalid char is returned...)
*/
watchdogReset();
}
ch = UDR0;
#endif
#ifdef LED_DATA_FLASH
#ifdef __AVR_ATmega8__
LED_PORT ^= _BV(LED);
#else
LED_PIN |= _BV(LED);
#endif
#endif
return ch;
}
#ifdef SOFT_UART
// AVR305 equation: #define UART_B_VALUE (((F_CPU/BAUD_RATE)-23)/6)
// Adding 3 to numerator simulates nearest rounding for more accurate baud rates
#define UART_B_VALUE (((F_CPU/BAUD_RATE)-20)/6)
#if UART_B_VALUE > 255
#error Baud rate too slow for soft UART
#endif
void uartDelay() {
__asm__ __volatile__ (
"ldi r25,%[count]\n"
"1:dec r25\n"
"brne 1b\n"
"ret\n"
::[count] "M" (UART_B_VALUE)
);
}
#endif
void getNch(uint8_t count) {
do getch(); while (--count);
verifySpace();
}
void verifySpace() {
if (getch() != CRC_EOP) {
watchdogConfig(WATCHDOG_16MS); // shorten WD timeout
while (1) // and busy-loop so that WD causes
; // a reset and app start.
}
putch(STK_INSYNC);
}
#if LED_START_FLASHES > 0
void flash_led(uint8_t count) {
do {
TCNT1 = -(F_CPU/(1024*16));
TIFR1 = _BV(TOV1);
while(!(TIFR1 & _BV(TOV1)));
#ifdef __AVR_ATmega8__
LED_PORT ^= _BV(LED);
#else
LED_PIN |= _BV(LED);
#endif
watchdogReset();
} while (--count);
}
#endif
// Watchdog functions. These are only safe with interrupts turned off.
void watchdogReset() {
__asm__ __volatile__ (
"wdr\n"
);
}
void watchdogConfig(uint8_t x) {
WDTCSR = _BV(WDCE) | _BV(WDE);
WDTCSR = x;
}
void appStart() {
watchdogConfig(WATCHDOG_OFF);
__asm__ __volatile__ (
#ifdef VIRTUAL_BOOT_PARTITION
// Jump to WDT vector
"ldi r30,4\n"
"clr r31\n"
#else
// Jump to RST vector
"clr r30\n"
"clr r31\n"
#endif
"ijmp\n"
);
}

View File

@@ -1,33 +0,0 @@
:020000021000EC
:10FE00000F92CDB7DEB7112484B714BE81FFDFD0C7
:10FE100082E08093C00088E18093C10086E08093F7
:10FE2000C2008AE28093C4008EE0BBD0209A00E03A
:10FE300010E0EE24E394E1E1DE2EF3E0FF2EA5D006
:10FE4000813471F4A2D08983B2D08981823809F4D7
:10FE50008BC0813811F484E001C083E08FD08BC067
:10FE6000823411F484E103C0853419F485E0A7D00D
:10FE700082C0853591F489D0A82EBB2486D0082F66
:10FE800010E0102F00270A291B29812F881F88279F
:10FE9000881F8BBF000F111F6DC0863521F484E0D1
:10FEA0008ED080E0DBCF843609F040C06ED06DD0BC
:10FEB000C82E6BD080EE0030180718F4F801F7BE9A
:10FEC000E895A12C51E0B52E60D0F50181935F013A
:10FED000CE16D1F7F0EE00301F0718F0F801F7BE8C
:10FEE000E89565D007B600FCFDCFF801A0E0B1E0D1
:10FEF0002C9130E011968C91119790E0982F8827E3
:10FF0000822B932B12960C01E7BEE89511243296B2
:10FF100082E0A030B80761F785E0F80187BFE89577
:10FF200007B600FCFDCFD7BEE89525C08437A9F4FD
:10FF30002CD02BD0B82E29D03AD0CB2C4801F401AC
:10FF400086911CD00894811C911CCA94C1F70F5F44
:10FF50001F4FBA940B0D111D0EC0853739F427D0F1
:10FF60008EE10CD087E90AD085E078CF813511F495
:10FF700088E017D01CD080E101D061CF9091C00003
:10FF800095FFFCCF8093C60008958091C00087FF45
:10FF9000FCCF8091C00084FD01C0A8958091C6006F
:10FFA0000895E0E6F0E098E1908380830895EDDF26
:10FFB000803219F088E0F5DFFFCF84E1DFCFCF9307
:10FFC000C82FE3DFC150E9F7F2DFCF91089580E059
:08FFD000E8DFEE27FF2709948A
:040000031000FE00EB
:00000001FF

View File

@@ -1,81 +0,0 @@
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega88) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega88__)
/* Onboard LED is connected to pin PB5 in Arduino NG, Diecimila, and Duemilanove */
#define LED_DDR DDRB
#define LED_PORT PORTB
#define LED_PIN PINB
#define LED PINB5
/* Ports for soft UART */
#ifdef SOFT_UART
#define UART_PORT PORTD
#define UART_PIN PIND
#define UART_DDR DDRD
#define UART_TX_BIT 1
#define UART_RX_BIT 0
#endif
#endif
#if defined(__AVR_ATmega8__)
//Name conversion R.Wiersma
#define UCSR0A UCSRA
#define UDR0 UDR
#define UDRE0 UDRE
#define RXC0 RXC
#define FE0 FE
#define TIFR1 TIFR
#define WDTCSR WDTCR
#endif
/* Luminet support */
#if defined(__AVR_ATtiny84__)
/* Red LED is connected to pin PA4 */
#define LED_DDR DDRA
#define LED_PORT PORTA
#define LED_PIN PINA
#define LED PINA4
/* Ports for soft UART - left port only for now. TX/RX on PA2/PA3 */
#ifdef SOFT_UART
#define UART_PORT PORTA
#define UART_PIN PINA
#define UART_DDR DDRA
#define UART_TX_BIT 2
#define UART_RX_BIT 3
#endif
#endif
/* Sanguino support */
#if defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__)
/* Onboard LED is connected to pin PB0 on Sanguino */
#define LED_DDR DDRB
#define LED_PORT PORTB
#define LED_PIN PINB
#define LED PINB0
/* Ports for soft UART */
#ifdef SOFT_UART
#define UART_PORT PORTD
#define UART_PIN PIND
#define UART_DDR DDRD
#define UART_TX_BIT 1
#define UART_RX_BIT 0
#endif
#endif
/* Mega support */
#if defined(__AVR_ATmega1280__)
/* Onboard LED is connected to pin PB7 on Arduino Mega */
#define LED_DDR DDRB
#define LED_PORT PORTB
#define LED_PIN PINB
#define LED PINB7
/* Ports for soft UART */
#ifdef SOFT_UART
#define UART_PORT PORTE
#define UART_PIN PINE
#define UART_DDR DDRE
#define UART_TX_BIT 1
#define UART_RX_BIT 0
#endif
#endif

View File

@@ -1,39 +0,0 @@
/* STK500 constants list, from AVRDUDE */
#define STK_OK 0x10
#define STK_FAILED 0x11 // Not used
#define STK_UNKNOWN 0x12 // Not used
#define STK_NODEVICE 0x13 // Not used
#define STK_INSYNC 0x14 // ' '
#define STK_NOSYNC 0x15 // Not used
#define ADC_CHANNEL_ERROR 0x16 // Not used
#define ADC_MEASURE_OK 0x17 // Not used
#define PWM_CHANNEL_ERROR 0x18 // Not used
#define PWM_ADJUST_OK 0x19 // Not used
#define CRC_EOP 0x20 // 'SPACE'
#define STK_GET_SYNC 0x30 // '0'
#define STK_GET_SIGN_ON 0x31 // '1'
#define STK_SET_PARAMETER 0x40 // '@'
#define STK_GET_PARAMETER 0x41 // 'A'
#define STK_SET_DEVICE 0x42 // 'B'
#define STK_SET_DEVICE_EXT 0x45 // 'E'
#define STK_ENTER_PROGMODE 0x50 // 'P'
#define STK_LEAVE_PROGMODE 0x51 // 'Q'
#define STK_CHIP_ERASE 0x52 // 'R'
#define STK_CHECK_AUTOINC 0x53 // 'S'
#define STK_LOAD_ADDRESS 0x55 // 'U'
#define STK_UNIVERSAL 0x56 // 'V'
#define STK_PROG_FLASH 0x60 // '`'
#define STK_PROG_DATA 0x61 // 'a'
#define STK_PROG_FUSE 0x62 // 'b'
#define STK_PROG_LOCK 0x63 // 'c'
#define STK_PROG_PAGE 0x64 // 'd'
#define STK_PROG_FUSE_EXT 0x65 // 'e'
#define STK_READ_FLASH 0x70 // 'p'
#define STK_READ_DATA 0x71 // 'q'
#define STK_READ_FUSE 0x72 // 'r'
#define STK_READ_LOCK 0x73 // 's'
#define STK_READ_PAGE 0x74 // 't'
#define STK_READ_SIGN 0x75 // 'u'
#define STK_READ_OSCCAL 0x76 // 'v'
#define STK_READ_FUSE_EXT 0x77 // 'w'
#define STK_READ_OSCCAL_EXT 0x78 // 'x'

View File

@@ -1,713 +0,0 @@
/**********************************************************/
/* 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_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

@@ -1,121 +0,0 @@
:10F800000C943E7C0C945B7C0C945B7C0C945B7C39
:10F810000C945B7C0C945B7C0C945B7C0C945B7C0C
:10F820000C945B7C0C945B7C0C945B7C0C945B7CFC
:10F830000C945B7C0C945B7C0C945B7C0C945B7CEC
:10F840000C945B7C0C945B7C0C945B7C0C945B7CDC
:10F850000C945B7C0C945B7C0C945B7C0C945B7CCC
:10F860000C945B7C0C945B7C0C945B7C0C945B7CBC
:10F870000C945B7C0C945B7C0C945B7C11241FBE11
:10F88000CFEFD8E0DEBFCDBF11E0A0E0B1E0E6E60B
:10F89000FFEF02C005900D92A030B107D9F712E03A
:10F8A000A0E0B1E001C01D92A930B107E1F70E94CC
:10F8B000537D0C94B27F0C94007CCF93DF93CDB733
:10F8C000DEB724970FB6F894DEBF0FBECDBF8823F6
:10F8D00009F481E020E0482F55274115510509F42E
:10F8E0003DC0289A19821A821B821C820BC0898112
:10F8F0009A81AB81BC810196A11DB11D89839A8338
:10F90000AB83BC8389819A81AB81BC8180589E4343
:10F91000A040B04060F3289819821A821B821C8292
:10F920000BC089819A81AB81BC810196A11DB11D5B
:10F9300089839A83AB83BC8389819A81AB81BC81A3
:10F9400080509A4FA040B04060F32F5F822F9927DC
:10F9500087FD9095841795070CF4C3CF19821A82FE
:10F960001B821C8289819A81AB81BC818050914726
:10F97000A240B040A0F489819A81AB81BC810196FC
:10F98000A11DB11D89839A83AB83BC8389819A8130
:10F99000AB81BC8180509147A240B04060F3249677
:10F9A0000FB6F894DEBF0FBECDBFDF91CF910895A3
:10F9B000EF92FF920F931F93EE24FF248701289864
:10F9C0008091C00087FD17C00894E11CF11C011D47
:10F9D000111D81E0E81689E0F8068DE3080780E054
:10F9E000180770F3E0910001F091010109958091F1
:10F9F000C00087FFE9CF289A8091C600992787FD2C
:10FA000090951F910F91FF90EF900895982F8091FE
:10FA1000C00085FFFCCF9093C60008950E94D87C5B
:10FA2000803271F0809102018F5F809302018530F6
:10FA300009F00895E0910001F09101010995089500
:10FA400084E10E94067D80E10E94067D0895CF93A7
:10FA5000C82F0E94D87C803241F0809102018F5FD4
:10FA600080930201853081F40AC084E10E94067D02
:10FA70008C2F0E94067D80E10E94067D05C0E091EA
:10FA80000001F09101010995CF910895282F90E090
:10FA900007C08091C0008823E4F78091C6009F5F73
:10FAA0009217B8F30895CFEFD8E0DEBFCDBF0000C6
:10FAB00094B714BE809160008861809360001092BA
:10FAC000600091FF74C189E18093C4001092C50069
:10FAD00088E18093C10086E08093C2005098589AD4
:10FAE000209A83E00E945D7C81E00E945D7C0E9400
:10FAF000D87C8033B9F18133C1F1803409F456C028
:10FB0000813409F45CC0823409F46EC0853409F490
:10FB100071C0803539F1813509F4F3C0823511F1B6
:10FB2000853509F4D3C0863509F4CBC0843609F491
:10FB300065C0843709F4EBC0853709F4D2C0863735
:10FB400009F44AC0809102018F5F809302018530E1
:10FB500071F6E0910001F091010109950E94D87CB5
:10FB6000803349F60E940E7DC2CF0E94D87CC82FF8
:10FB7000803241F784E10E94067D81E40E94067D87
:10FB800086E50E94067D82E50E94067D8C2F0E94FC
:10FB9000067D89E40E94067D83E50E94067D80E55E
:10FBA0000E94067D80E10E94067DA1CF0E94D87C44
:10FBB0008638C0F20E94D87C0E940E7D98CF0E94A9
:10FBC000D87C803809F407C1813809F400C1823833
:10FBD00009F4F9C0883921F080E00E94277D87CFA1
:10FBE00083E00E94277D83CF84E10E94467D0E94AE
:10FBF0000E7D7DCF85E00E94467DF9CF0E94D87CA6
:10FC0000809306020E94D87C8093050280910802AE
:10FC10008E7F809308020E94D87C853409F44BC003
:10FC2000E5E0F1E0119281E0E438F807D9F3D0F390
:10FC3000C0E0D0E0809105029091060218161906E6
:10FC400078F405E011E00E94D87CF80181938F01DF
:10FC500021968091050290910602C817D90798F362
:10FC60000E94D87C803209F06DCF8091080280FF1D
:10FC7000B6C0C0E0D0E02091050230910602121615
:10FC80001306B8F4E0910301F0910401A5E0B1E09E
:10FC9000F999FECFF2BDE1BD8D9180BDFA9AF99A36
:10FCA00031962196C217D30798F3F0930401E0939D
:10FCB000030184E175CF809108028160809308027E
:10FCC000AFCF84E00E94467D80E087CF0E94D87C41
:10FCD000809303010E94D87C809304010E940E7DD2
:10FCE00006CF0E94D87C803209F02CCF84E10E949C
:10FCF000067D8EE10E94067D85E90E94067D88E0F2
:10FD00004FCF0E940E7D88E080936000FFCF0E945D
:10FD1000D87C809306020E94D87C809305020E94C2
:10FD2000D87C853409F449C0809108028E7F809385
:10FD300008028091030190910401880F991F90930C
:10FD40000401809303010E94D87C803209F0CFCE59
:10FD500084E10E94067DC0E0D0E020910502309150
:10FD600006021216130608F01DCFE0910301F09170
:10FD700004018091080280FF96C0F999FECFF2BD80
:10FD8000E1BDF89A80B50E94067DE0910301F091F3
:10FD900004013196F0930401E093030120910502E0
:10FDA000309106022196C217D30718F3FBCEE091DB
:10FDB0000001F0910101099586CE809108028160D1
:10FDC00080930802C0CF80E10E94277D90CE81E021
:10FDD0000E94277D8CCE82E00E94277D88CE809174
:10FDE000030190910401880F991F9093040180935F
:10FDF00003018091050280FF09C080910502909166
:10FE0000060201969093060280930502F999FECFAF
:10FE10001127E0910301F0910401C5E0D1E0809148
:10FE2000050290910602103091F400915700017084
:10FE30000130D9F303E000935700E8950091570093
:10FE400001700130D9F301E100935700E895099062
:10FE500019900091570001700130D9F301E000932F
:10FE60005700E8951395103898F011270091570026
:10FE700001700130D9F305E000935700E895009137
:10FE8000570001700130D9F301E100935700E89564
:10FE90003296029709F0C7CF103011F00296E5CFE5
:10FEA000112484E17DCE869580FF06C03196F093C3
:10FEB0000401E093030176CF84910E94067D209196
:10FEC000050230910602E0910301F0910401EECFAA
:10FED0001F93CF930E94D87CC82F0E94067D0E945A
:10FEE000D87C182F0E94067DC1362CF0C7551136DC
:10FEF0003CF0175508C0C033D4F3C0531136CCF7CB
:10FF000010330CF01053C295C07FC10F8C2F99276E
:10FF100087FD9095CF911F910895CF93282F992712
:10FF200087FD9095807F907095958795959587959D
:10FF300095958795959587958A303CF0895AC22F7B
:10FF4000CF70CA303CF0C95A06C0805DC22FCF7056
:10FF5000CA30CCF7C05D0E94067D8C2F0E94067DC2
:06FF6000CF910895FFCFD0
:040000030000F80001
:00000001FF

View File

@@ -1,120 +0,0 @@
:10F800000C94387C0C94557C0C94557C0C94557C51
:10F810000C94557C0C94557C0C94557C0C94557C24
:10F820000C94557C0C94557C0C94557C0C94557C14
:10F830000C94557C0C94557C0C94557C0C94557C04
:10F840000C94557C0C94557C0C94557C0C94557CF4
:10F850000C94557C0C94557C0C94557C0C94557CE4
:10F860000C94557C0C94557C0C94557C0C94557CD4
:10F8700011241FBECFEFD0E1DEBFCDBF11E0A0E06D
:10F88000B1E0EAE5FFEF02C005900D92A030B107AC
:10F89000D9F712E0A0E0B1E001C01D92A930B10794
:10F8A000E1F70E944D7D0C94AC7F0C94007CCF93CB
:10F8B000DF93CDB7DEB724970FB6F894DEBF0FBE47
:10F8C000CDBF882309F481E020E0482F552741155A
:10F8D000510509F43DC0289A19821A821B821C82A4
:10F8E0000BC089819A81AB81BC810196A11DB11D9C
:10F8F00089839A83AB83BC8389819A81AB81BC81E4
:10F9000080589E43A040B04060F3289819821A8224
:10F910001B821C820BC089819A81AB81BC810196BC
:10F92000A11DB11D89839A83AB83BC8389819A8190
:10F93000AB81BC8180509A4FA040B04060F32F5FF4
:10F94000822F992787FD9095841795070CF4C3CFD4
:10F9500019821A821B821C8289819A81AB81BC81A7
:10F9600080509147A240B040A0F489819A81AB8138
:10F97000BC810196A11DB11D89839A83AB83BC8391
:10F9800089819A81AB81BC8180509147A240B0406F
:10F9900060F324960FB6F894DEBF0FBECDBFDF91A3
:10F9A000CF910895EF92FF920F931F93EE24FF24BF
:10F9B000870128988091C00087FD17C00894E11C3A
:10F9C000F11C011D111D81E0E81689E0F8068DE3A8
:10F9D000080780E0180770F3E0910001F091010141
:10F9E00009958091C00087FFE9CF289A8091C600D1
:10F9F000992787FD90951F910F91FF90EF900895A3
:10FA0000982F8091C00085FFFCCF9093C600089589
:10FA10000E94D27C803271F0809102018F5F8093CE
:10FA20000201853009F00895E0910001F091010193
:10FA30000995089584E10E94007D80E10E94007D87
:10FA40000895CF93C82F0E94D27C803241F08091DC
:10FA500002018F5F80930201853081F40AC084E146
:10FA60000E94007D8C2F0E94007D80E10E94007D1D
:10FA700005C0E0910001F09101010995CF91089531
:10FA8000282F90E007C08091C0008823E4F7809180
:10FA9000C6009F5F9217B8F30895CFEFD0E1DEBFA5
:10FAA000CDBF000094B714BE809160008861809340
:10FAB00060001092600091FF74C189E18093C400DE
:10FAC0001092C50088E18093C10086E08093C20057
:10FAD0005098589A209A83E00E94577C81E00E94B7
:10FAE000577C0E94D27C8033B9F18133C1F18034DC
:10FAF00009F456C0813409F45CC0823409F46EC044
:10FB0000853409F471C0803539F1813509F4F3C0C9
:10FB1000823511F1853509F4D3C0863509F4CBC09F
:10FB2000843609F465C0843709F4EBC0853709F4DD
:10FB3000D2C0863709F44AC0809102018F5F80935A
:10FB40000201853071F6E0910001F0910101099503
:10FB50000E94D27C803349F60E94087DC2CF0E9469
:10FB6000D27CC82F803241F784E10E94007D81E47D
:10FB70000E94007D86E50E94007D82E50E94007D56
:10FB80008C2F0E94007D89E40E94007D83E50E9405
:10FB9000007D80E50E94007D80E10E94007DA1CF74
:10FBA0000E94D27C8638C0F20E94D27C0E94087DDE
:10FBB00098CF0E94D27C803809F407C1813809F4BB
:10FBC00000C1823809F4F9C0883921F080E00E9430
:10FBD000217D87CF83E00E94217D83CF84E10E9435
:10FBE000407D0E94087D7DCF85E00E94407DF9CF59
:10FBF0000E94D27C809306020E94D27C80930502F0
:10FC0000809108028E7F809308020E94D27C853406
:10FC100009F44BC0E5E0F1E0119281E0E438F80727
:10FC2000D9F3D0F3C0E0D0E08091050290910602B4
:10FC30001816190678F405E011E00E94D27CF8014C
:10FC400081938F0121968091050290910602C81739
:10FC5000D90798F30E94D27C803209F06DCF809151
:10FC6000080280FFB6C0C0E0D0E0209105023091CC
:10FC7000060212161306B8F4E0910301F091040194
:10FC8000A5E0B1E0F999FECFF2BDE1BD8D9180BD57
:10FC9000FA9AF99A31962196C217D30798F3F093FE
:10FCA0000401E093030184E175CF80910802816033
:10FCB00080930802AFCF84E00E94407D80E087CF30
:10FCC0000E94D27C809303010E94D27C8093040125
:10FCD0000E94087D06CF0E94D27C803209F02CCF92
:10FCE00084E10E94007D8EE10E94007D86E90E94F1
:10FCF000007D89E04FCF0E94087D88E080936000FE
:10FD0000FFCF0E94D27C809306020E94D27C809317
:10FD100005020E94D27C853409F449C08091080212
:10FD20008E7F809308028091030190910401880FD7
:10FD3000991F90930401809303010E94D27C80322A
:10FD400009F0CFCE84E10E94007DC0E0D0E0209198
:10FD50000502309106021216130608F01DCFE0913D
:10FD60000301F09104018091080280FF96C0F99987
:10FD7000FECFF2BDE1BDF89A80B50E94007DE09112
:10FD80000301F09104013196F0930401E093030123
:10FD900020910502309106022196C217D30718F36D
:10FDA000FBCEE0910001F0910101099586CE809192
:10FDB0000802816080930802C0CF80E10E94217D0B
:10FDC00090CE81E00E94217D8CCE82E00E94217D38
:10FDD00088CE8091030190910401880F991F909320
:10FDE0000401809303018091050280FF09C0809186
:10FDF00005029091060201969093060280930502F7
:10FE0000F999FECF1127E0910301F0910401C5E0BB
:10FE1000D1E08091050290910602103091F400919A
:10FE2000570001700130D9F303E000935700E895C3
:10FE30000091570001700130D9F301E100935700A0
:10FE4000E895099019900091570001700130D9F39D
:10FE500001E000935700E8951395103898F01127AA
:10FE60000091570001700130D9F305E0009357006D
:10FE7000E8950091570001700130D9F301E100933A
:10FE80005700E8953296029709F0C7CF103011F06D
:10FE90000296E5CF112484E17DCE869580FF06C0D1
:10FEA0003196F0930401E093030176CF84910E9490
:10FEB000007D2091050230910602E0910301F0914E
:10FEC0000401EECF1F93CF930E94D27CC82F0E94D3
:10FED000007D0E94D27C182F0E94007DC1362CF03C
:10FEE000C75511363CF0175508C0C033D4F3C05382
:10FEF0001136CCF710330CF01053C295C07FC10FF0
:10FF00008C2F992787FD9095CF911F910895CF93BE
:10FF1000282F992787FD9095807F907095958795DC
:10FF20009595879595958795959587958A303CF019
:10FF3000895AC22FCF70CA303CF0C95A06C0805DC2
:10FF4000C22FCF70CA30CCF7C05D0E94007D8C2FCD
:0AFF50000E94007DCF910895FFCFBD
:040000030000F80001
:00000001FF

View File

@@ -1,121 +0,0 @@
:10F800000C943E7C0C945B7C0C945B7C0C945B7C39
:10F810000C945B7C0C945B7C0C945B7C0C945B7C0C
:10F820000C945B7C0C945B7C0C945B7C0C945B7CFC
:10F830000C945B7C0C945B7C0C945B7C0C945B7CEC
:10F840000C945B7C0C945B7C0C945B7C0C945B7CDC
:10F850000C945B7C0C945B7C0C945B7C0C945B7CCC
:10F860000C945B7C0C945B7C0C945B7C0C945B7CBC
:10F870000C945B7C0C945B7C0C945B7C11241FBE11
:10F88000CFEFD0E1DEBFCDBF11E0A0E0B1E0E6E612
:10F89000FFEF02C005900D92A030B107D9F712E03A
:10F8A000A0E0B1E001C01D92A930B107E1F70E94CC
:10F8B000537D0C94B27F0C94007CCF93DF93CDB733
:10F8C000DEB724970FB6F894DEBF0FBECDBF8823F6
:10F8D00009F481E020E0482F55274115510509F42E
:10F8E0003DC0289A19821A821B821C820BC0898112
:10F8F0009A81AB81BC810196A11DB11D89839A8338
:10F90000AB83BC8389819A81AB81BC8180589E4343
:10F91000A040B04060F3289819821A821B821C8292
:10F920000BC089819A81AB81BC810196A11DB11D5B
:10F9300089839A83AB83BC8389819A81AB81BC81A3
:10F9400080509A4FA040B04060F32F5F822F9927DC
:10F9500087FD9095841795070CF4C3CF19821A82FE
:10F960001B821C8289819A81AB81BC818050914726
:10F97000A240B040A0F489819A81AB81BC810196FC
:10F98000A11DB11D89839A83AB83BC8389819A8130
:10F99000AB81BC8180509147A240B04060F3249677
:10F9A0000FB6F894DEBF0FBECDBFDF91CF910895A3
:10F9B000EF92FF920F931F93EE24FF248701289864
:10F9C0008091C00087FD17C00894E11CF11C011D47
:10F9D000111D81E0E81689E0F8068DE3080780E054
:10F9E000180770F3E0910001F091010109958091F1
:10F9F000C00087FFE9CF289A8091C600992787FD2C
:10FA000090951F910F91FF90EF900895982F8091FE
:10FA1000C00085FFFCCF9093C60008950E94D87C5B
:10FA2000803271F0809102018F5F809302018530F6
:10FA300009F00895E0910001F09101010995089500
:10FA400084E10E94067D80E10E94067D0895CF93A7
:10FA5000C82F0E94D87C803241F0809102018F5FD4
:10FA600080930201853081F40AC084E10E94067D02
:10FA70008C2F0E94067D80E10E94067D05C0E091EA
:10FA80000001F09101010995CF910895282F90E090
:10FA900007C08091C0008823E4F78091C6009F5F73
:10FAA0009217B8F30895CFEFD0E1DEBFCDBF0000CD
:10FAB00094B714BE809160008861809360001092BA
:10FAC000600091FF74C189E18093C4001092C50069
:10FAD00088E18093C10086E08093C2005098589AD4
:10FAE000209A83E00E945D7C81E00E945D7C0E9400
:10FAF000D87C8033B9F18133C1F1803409F456C028
:10FB0000813409F45CC0823409F46EC0853409F490
:10FB100071C0803539F1813509F4F3C0823511F1B6
:10FB2000853509F4D3C0863509F4CBC0843609F491
:10FB300065C0843709F4EBC0853709F4D2C0863735
:10FB400009F44AC0809102018F5F809302018530E1
:10FB500071F6E0910001F091010109950E94D87CB5
:10FB6000803349F60E940E7DC2CF0E94D87CC82FF8
:10FB7000803241F784E10E94067D81E40E94067D87
:10FB800086E50E94067D82E50E94067D8C2F0E94FC
:10FB9000067D89E40E94067D83E50E94067D80E55E
:10FBA0000E94067D80E10E94067DA1CF0E94D87C44
:10FBB0008638C0F20E94D87C0E940E7D98CF0E94A9
:10FBC000D87C803809F407C1813809F400C1823833
:10FBD00009F4F9C0883921F080E00E94277D87CFA1
:10FBE00083E00E94277D83CF84E10E94467D0E94AE
:10FBF0000E7D7DCF85E00E94467DF9CF0E94D87CA6
:10FC0000809306020E94D87C8093050280910802AE
:10FC10008E7F809308020E94D87C853409F44BC003
:10FC2000E5E0F1E0119281E0E438F807D9F3D0F390
:10FC3000C0E0D0E0809105029091060218161906E6
:10FC400078F405E011E00E94D87CF80181938F01DF
:10FC500021968091050290910602C817D90798F362
:10FC60000E94D87C803209F06DCF8091080280FF1D
:10FC7000B6C0C0E0D0E02091050230910602121615
:10FC80001306B8F4E0910301F0910401A5E0B1E09E
:10FC9000F999FECFF2BDE1BD8D9180BDFA9AF99A36
:10FCA00031962196C217D30798F3F0930401E0939D
:10FCB000030184E175CF809108028160809308027E
:10FCC000AFCF84E00E94467D80E087CF0E94D87C41
:10FCD000809303010E94D87C809304010E940E7DD2
:10FCE00006CF0E94D87C803209F02CCF84E10E949C
:10FCF000067D8EE10E94067D86E90E94067D8AE0EF
:10FD00004FCF0E940E7D88E080936000FFCF0E945D
:10FD1000D87C809306020E94D87C809305020E94C2
:10FD2000D87C853409F449C0809108028E7F809385
:10FD300008028091030190910401880F991F90930C
:10FD40000401809303010E94D87C803209F0CFCE59
:10FD500084E10E94067DC0E0D0E020910502309150
:10FD600006021216130608F01DCFE0910301F09170
:10FD700004018091080280FF96C0F999FECFF2BD80
:10FD8000E1BDF89A80B50E94067DE0910301F091F3
:10FD900004013196F0930401E093030120910502E0
:10FDA000309106022196C217D30718F3FBCEE091DB
:10FDB0000001F0910101099586CE809108028160D1
:10FDC00080930802C0CF80E10E94277D90CE81E021
:10FDD0000E94277D8CCE82E00E94277D88CE809174
:10FDE000030190910401880F991F9093040180935F
:10FDF00003018091050280FF09C080910502909166
:10FE0000060201969093060280930502F999FECFAF
:10FE10001127E0910301F0910401C5E0D1E0809148
:10FE2000050290910602103091F400915700017084
:10FE30000130D9F303E000935700E8950091570093
:10FE400001700130D9F301E100935700E895099062
:10FE500019900091570001700130D9F301E000932F
:10FE60005700E8951395103898F011270091570026
:10FE700001700130D9F305E000935700E895009137
:10FE8000570001700130D9F301E100935700E89564
:10FE90003296029709F0C7CF103011F00296E5CFE5
:10FEA000112484E17DCE869580FF06C03196F093C3
:10FEB0000401E093030176CF84910E94067D209196
:10FEC000050230910602E0910301F0910401EECFAA
:10FED0001F93CF930E94D87CC82F0E94067D0E945A
:10FEE000D87C182F0E94067DC1362CF0C7551136DC
:10FEF0003CF0175508C0C033D4F3C0531136CCF7CB
:10FF000010330CF01053C295C07FC10F8C2F99276E
:10FF100087FD9095CF911F910895CF93282F992712
:10FF200087FD9095807F907095958795959587959D
:10FF300095958795959587958A303CF0895AC22F7B
:10FF4000CF70CA303CF0C95A06C0805DC22FCF7056
:10FF5000CA30CCF7C05D0E94067D8C2F0E94067DC2
:06FF6000CF910895FFCFD0
:040000030000F80001
:00000001FF

View File

@@ -1,56 +0,0 @@
# 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=0xF800
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: 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 -O2 -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

@@ -1,3 +0,0 @@
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

@@ -1,303 +0,0 @@
/*
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
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include "wiring.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"
// Define constants and variables for buffering incoming serial data. We're
// using a ring buffer (I think), in which rx_buffer_head is the index of the
// location to which to write the next incoming character and rx_buffer_tail
// is the index of the location from which to read.
#if (RAMEND < 1000)
#define RX_BUFFER_SIZE 32
#else
#define RX_BUFFER_SIZE 128
#endif
struct ring_buffer
{
unsigned char buffer[RX_BUFFER_SIZE];
int head;
int tail;
};
#if defined(UBRRH) || defined(UBRR0H)
ring_buffer rx_buffer = { { 0 }, 0, 0 };
#endif
#if defined(UBRR1H)
ring_buffer rx_buffer1 = { { 0 }, 0, 0 };
#endif
#if defined(UBRR2H)
ring_buffer rx_buffer2 = { { 0 }, 0, 0 };
#endif
#if defined(UBRR3H)
ring_buffer rx_buffer3 = { { 0 }, 0, 0 };
#endif
inline void store_char(unsigned char c, ring_buffer *rx_buffer)
{
int i = (unsigned int)(rx_buffer->head + 1) % RX_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 != rx_buffer->tail) {
rx_buffer->buffer[rx_buffer->head] = c;
rx_buffer->head = i;
}
}
#if defined(USART_RX_vect)
SIGNAL(USART_RX_vect)
{
#if defined(UDR0)
unsigned char c = UDR0;
#elif defined(UDR)
unsigned char c = UDR; // atmega8535
#else
#error UDR not defined
#endif
store_char(c, &rx_buffer);
}
#elif defined(SIG_USART0_RECV) && defined(UDR0)
SIGNAL(SIG_USART0_RECV)
{
unsigned char c = UDR0;
store_char(c, &rx_buffer);
}
#elif defined(SIG_UART0_RECV) && defined(UDR0)
SIGNAL(SIG_UART0_RECV)
{
unsigned char c = UDR0;
store_char(c, &rx_buffer);
}
//#elif defined(SIG_USART_RECV)
#elif defined(USART0_RX_vect)
// fixed by Mark Sproul this is on the 644/644p
//SIGNAL(SIG_USART_RECV)
SIGNAL(USART0_RX_vect)
{
#if defined(UDR0)
unsigned char c = UDR0;
#elif defined(UDR)
unsigned char c = UDR; // atmega8, atmega32
#else
#error UDR not defined
#endif
store_char(c, &rx_buffer);
}
#elif defined(SIG_UART_RECV)
// this is for atmega8
SIGNAL(SIG_UART_RECV)
{
#if defined(UDR0)
unsigned char c = UDR0; // atmega645
#elif defined(UDR)
unsigned char c = UDR; // atmega8
#endif
store_char(c, &rx_buffer);
}
#elif defined(USBCON)
#warning No interrupt handler for usart 0
#warning Serial(0) is on USB interface
#else
#error No interrupt handler for usart 0
#endif
//#if defined(SIG_USART1_RECV)
#if defined(USART1_RX_vect)
//SIGNAL(SIG_USART1_RECV)
SIGNAL(USART1_RX_vect)
{
unsigned char c = UDR1;
store_char(c, &rx_buffer1);
}
#elif defined(SIG_USART1_RECV)
#error SIG_USART1_RECV
#endif
#if defined(USART2_RX_vect) && defined(UDR2)
SIGNAL(USART2_RX_vect)
{
unsigned char c = UDR2;
store_char(c, &rx_buffer2);
}
#elif defined(SIG_USART2_RECV)
#error SIG_USART2_RECV
#endif
#if defined(USART3_RX_vect) && defined(UDR3)
SIGNAL(USART3_RX_vect)
{
unsigned char c = UDR3;
store_char(c, &rx_buffer3);
}
#elif defined(SIG_USART3_RECV)
#error SIG_USART3_RECV
#endif
// Constructors ////////////////////////////////////////////////////////////////
HardwareSerial::HardwareSerial(ring_buffer *rx_buffer,
volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
volatile uint8_t *udr,
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x)
{
_rx_buffer = rx_buffer;
_ubrrh = ubrrh;
_ubrrl = ubrrl;
_ucsra = ucsra;
_ucsrb = ucsrb;
_udr = udr;
_rxen = rxen;
_txen = txen;
_rxcie = rxcie;
_udre = udre;
_u2x = u2x;
}
// Public Methods //////////////////////////////////////////////////////////////
void HardwareSerial::begin(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
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;
}
// assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register)
*_ubrrh = baud_setting >> 8;
*_ubrrl = baud_setting;
sbi(*_ucsrb, _rxen);
sbi(*_ucsrb, _txen);
sbi(*_ucsrb, _rxcie);
}
void HardwareSerial::end()
{
cbi(*_ucsrb, _rxen);
cbi(*_ucsrb, _txen);
cbi(*_ucsrb, _rxcie);
}
int HardwareSerial::available(void)
{
return (unsigned int)(RX_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % RX_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) % RX_BUFFER_SIZE;
return c;
}
}
void HardwareSerial::flush()
{
// don't reverse this or there may be problems if the RX interrupt
// occurs after reading the value of rx_buffer_head but before writing
// the value to rx_buffer_tail; the previous value of rx_buffer_head
// may be written to rx_buffer_tail, making it appear as if the buffer
// don't reverse this or there may be problems if the RX interrupt
// occurs after reading the value of rx_buffer_head but before writing
// the value to rx_buffer_tail; the previous value of rx_buffer_head
// may be written to rx_buffer_tail, making it appear as if the buffer
// were full, not empty.
_rx_buffer->head = _rx_buffer->tail;
}
void HardwareSerial::write(uint8_t c)
{
while (!((*_ucsra) & (1 << _udre)))
;
*_udr = c;
}
// Preinstantiate Objects //////////////////////////////////////////////////////
#if defined(UBRRH) && defined(UBRRL)
HardwareSerial Serial(&rx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UDR, RXEN, TXEN, RXCIE, UDRE, U2X);
#elif defined(UBRR0H) && defined(UBRR0L)
HardwareSerial Serial(&rx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRE0, U2X0);
#elif defined(USBCON)
#warning no serial port defined (port 0)
#else
#error no serial port defined (port 0)
#endif
#if defined(UBRR1H)
HardwareSerial Serial1(&rx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UDR1, RXEN1, TXEN1, RXCIE1, UDRE1, U2X1);
#endif
#if defined(UBRR2H)
HardwareSerial Serial2(&rx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UDR2, RXEN2, TXEN2, RXCIE2, UDRE2, U2X2);
#endif
#if defined(UBRR3H)
HardwareSerial Serial3(&rx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UDR3, RXEN3, TXEN3, RXCIE3, UDRE3, U2X3);
#endif
#endif // whole file

View File

@@ -1,220 +0,0 @@
/*
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 "wiring.h"
#include "Print.h"
// Public Methods //////////////////////////////////////////////////////////////
/* default implementation: may be overridden */
void Print::write(const char *str)
{
while (*str)
write(*str++);
}
/* default implementation: may be overridden */
void Print::write(const uint8_t *buffer, size_t size)
{
while (size--)
write(*buffer++);
}
void Print::print(const String &s)
{
for (int i = 0; i < s.length(); i++) {
write(s[i]);
}
}
void Print::print(const char str[])
{
write(str);
}
void Print::print(char c, int base)
{
print((long) c, base);
}
void Print::print(unsigned char b, int base)
{
print((unsigned long) b, base);
}
void Print::print(int n, int base)
{
print((long) n, base);
}
void Print::print(unsigned int n, int base)
{
print((unsigned long) n, base);
}
void Print::print(long n, int base)
{
if (base == 0) {
write(n);
} else if (base == 10) {
if (n < 0) {
print('-');
n = -n;
}
printNumber(n, 10);
} else {
printNumber(n, base);
}
}
void Print::print(unsigned long n, int base)
{
if (base == 0) write(n);
else printNumber(n, base);
}
void Print::print(double n, int digits)
{
printFloat(n, digits);
}
void Print::println(void)
{
print('\r');
print('\n');
}
void Print::println(const String &s)
{
print(s);
println();
}
void Print::println(const char c[])
{
print(c);
println();
}
void Print::println(char c, int base)
{
print(c, base);
println();
}
void Print::println(unsigned char b, int base)
{
print(b, base);
println();
}
void Print::println(int n, int base)
{
print(n, base);
println();
}
void Print::println(unsigned int n, int base)
{
print(n, base);
println();
}
void Print::println(long n, int base)
{
print(n, base);
println();
}
void Print::println(unsigned long n, int base)
{
print(n, base);
println();
}
void Print::println(double n, int digits)
{
print(n, digits);
println();
}
// Private Methods /////////////////////////////////////////////////////////////
void Print::printNumber(unsigned long n, uint8_t base)
{
unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars.
unsigned long i = 0;
if (n == 0) {
print('0');
return;
}
while (n > 0) {
buf[i++] = n % base;
n /= base;
}
for (; i > 0; i--)
print((char) (buf[i - 1] < 10 ?
'0' + buf[i - 1] :
'A' + buf[i - 1] - 10));
}
void Print::printFloat(double number, uint8_t digits)
{
// Handle negative numbers
if (number < 0.0)
{
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;
print(int_part);
// Print the decimal point, but only if there are digits beyond
if (digits > 0)
print(".");
// Extract digits from the remainder one at a time
while (digits-- > 0)
{
remainder *= 10.0;
int toPrint = int(remainder);
print(toPrint);
remainder -= toPrint;
}
}

View File

@@ -1,66 +0,0 @@
/*
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"
#define DEC 10
#define HEX 16
#define OCT 8
#define BIN 2
#define BYTE 0
class Print
{
private:
void printNumber(unsigned long, uint8_t);
void printFloat(double, uint8_t);
public:
virtual void write(uint8_t) = 0;
virtual void write(const char *str);
virtual void write(const uint8_t *buffer, size_t size);
void print(const String &);
void print(const char[]);
void print(char, int = BYTE);
void print(unsigned char, int = BYTE);
void print(int, int = DEC);
void print(unsigned int, int = DEC);
void print(long, int = DEC);
void print(unsigned long, int = DEC);
void print(double, int = 2);
void println(const String &s);
void println(const char[]);
void println(char, int = BYTE);
void println(unsigned char, int = BYTE);
void println(int, int = DEC);
void println(unsigned int, int = DEC);
void println(long, int = DEC);
void println(unsigned long, int = DEC);
void println(double, int = 2);
void println(void);
};
#endif

View File

@@ -1 +0,0 @@
#include "wiring.h"

View File

@@ -1,63 +0,0 @@
#ifndef WProgram_h
#define WProgram_h
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <avr/interrupt.h>
#include "wiring.h"
#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);
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
const static uint8_t A0 = 54;
const static uint8_t A1 = 55;
const static uint8_t A2 = 56;
const static uint8_t A3 = 57;
const static uint8_t A4 = 58;
const static uint8_t A5 = 59;
const static uint8_t A6 = 60;
const static uint8_t A7 = 61;
const static uint8_t A8 = 62;
const static uint8_t A9 = 63;
const static uint8_t A10 = 64;
const static uint8_t A11 = 65;
const static uint8_t A12 = 66;
const static uint8_t A13 = 67;
const static uint8_t A14 = 68;
const static uint8_t A15 = 69;
#else
const static uint8_t A0 = 14;
const static uint8_t A1 = 15;
const static uint8_t A2 = 16;
const static uint8_t A3 = 17;
const static uint8_t A4 = 18;
const static uint8_t A5 = 19;
const static uint8_t A6 = 20;
const static uint8_t A7 = 21;
#endif
#endif
#endif

View File

@@ -1,443 +0,0 @@
/*
WString.cpp - String library for Wiring & Arduino
Copyright (c) 2009-10 Hernando Barragan. All rights 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
*/
#include <stdlib.h>
#include "WProgram.h"
#include "WString.h"
String::String( const char *value )
{
if ( value == NULL )
value = "";
getBuffer( _length = strlen( value ) );
if ( _buffer != NULL )
strcpy( _buffer, value );
}
String::String( const String &value )
{
getBuffer( _length = value._length );
if ( _buffer != NULL )
strcpy( _buffer, value._buffer );
}
String::String( const char value )
{
_length = 1;
getBuffer(1);
if ( _buffer != NULL ) {
_buffer[0] = value;
_buffer[1] = 0;
}
}
String::String( const unsigned char value )
{
_length = 1;
getBuffer(1);
if ( _buffer != NULL) {
_buffer[0] = value;
_buffer[1] = 0;
}
}
String::String( const int value, const int base )
{
char buf[33];
itoa((signed long)value, buf, base);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
String::String( const unsigned int value, const int base )
{
char buf[33];
ultoa((unsigned long)value, buf, base);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
String::String( const long value, const int base )
{
char buf[33];
ltoa(value, buf, base);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
String::String( const unsigned long value, const int base )
{
char buf[33];
ultoa(value, buf, 10);
getBuffer( _length = strlen(buf) );
if ( _buffer != NULL )
strcpy( _buffer, buf );
}
char String::charAt( unsigned int loc ) const
{
return operator[]( loc );
}
void String::setCharAt( unsigned int loc, const char aChar )
{
if(_buffer == NULL) return;
if(_length > loc) {
_buffer[loc] = aChar;
}
}
int String::compareTo( const String &s2 ) const
{
return strcmp( _buffer, s2._buffer );
}
const String & String::concat( const String &s2 )
{
return (*this) += s2;
}
const String & String::operator=( const String &rhs )
{
if ( this == &rhs )
return *this;
if ( rhs._length > _length )
{
free(_buffer);
getBuffer( rhs._length );
}
if ( _buffer != NULL ) {
_length = rhs._length;
strcpy( _buffer, rhs._buffer );
}
return *this;
}
//const String & String::operator+=( const char aChar )
//{
// if ( _length == _capacity )
// doubleBuffer();
//
// _buffer[ _length++ ] = aChar;
// _buffer[ _length ] = '\0';
// return *this;
//}
const String & String::operator+=( const String &other )
{
_length += other._length;
if ( _length > _capacity )
{
char *temp = (char *)realloc(_buffer, _length + 1);
if ( temp != NULL ) {
_buffer = temp;
_capacity = _length;
} else {
_length -= other._length;
return *this;
}
}
strcat( _buffer, other._buffer );
return *this;
}
int String::operator==( const String &rhs ) const
{
return ( _length == rhs._length && strcmp( _buffer, rhs._buffer ) == 0 );
}
int String::operator!=( const String &rhs ) const
{
return ( _length != rhs.length() || strcmp( _buffer, rhs._buffer ) != 0 );
}
int String::operator<( const String &rhs ) const
{
return strcmp( _buffer, rhs._buffer ) < 0;
}
int String::operator>( const String &rhs ) const
{
return strcmp( _buffer, rhs._buffer ) > 0;
}
int String::operator<=( const String &rhs ) const
{
return strcmp( _buffer, rhs._buffer ) <= 0;
}
int String::operator>=( const String & rhs ) const
{
return strcmp( _buffer, rhs._buffer ) >= 0;
}
char & String::operator[]( unsigned int index )
{
static char dummy_writable_char;
if (index >= _length || !_buffer) {
dummy_writable_char = 0;
return dummy_writable_char;
}
return _buffer[ index ];
}
char String::operator[]( unsigned int index ) const
{
// need to check for valid index, to do later
return _buffer[ index ];
}
boolean String::endsWith( const String &s2 ) const
{
if ( _length < s2._length )
return 0;
return strcmp( &_buffer[ _length - s2._length], s2._buffer ) == 0;
}
boolean String::equals( const String &s2 ) const
{
return ( _length == s2._length && strcmp( _buffer,s2._buffer ) == 0 );
}
boolean String::equalsIgnoreCase( const String &s2 ) const
{
if ( this == &s2 )
return true; //1;
else if ( _length != s2._length )
return false; //0;
return strcmp(toLowerCase()._buffer, s2.toLowerCase()._buffer) == 0;
}
String String::replace( char findChar, char replaceChar )
{
if ( _buffer == NULL ) return *this;
String theReturn = _buffer;
char* temp = theReturn._buffer;
while( (temp = strchr( temp, findChar )) != 0 )
*temp = replaceChar;
return theReturn;
}
String String::replace( const String& match, const String& replace )
{
if ( _buffer == NULL ) return *this;
String temp = _buffer, newString;
int loc;
while ( (loc = temp.indexOf( match )) != -1 )
{
newString += temp.substring( 0, loc );
newString += replace;
temp = temp.substring( loc + match._length );
}
newString += temp;
return newString;
}
int String::indexOf( char temp ) const
{
return indexOf( temp, 0 );
}
int String::indexOf( char ch, unsigned int fromIndex ) const
{
if ( fromIndex >= _length )
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 >= _length )
return -1;
const char *theFind = strstr( &_buffer[ fromIndex ], s2._buffer );
if ( theFind == NULL )
return -1;
return theFind - _buffer; // pointer subtraction
}
int String::lastIndexOf( char theChar ) const
{
return lastIndexOf( theChar, _length - 1 );
}
int String::lastIndexOf( char ch, unsigned int fromIndex ) const
{
if ( fromIndex >= _length )
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, _length - s2._length );
}
int String::lastIndexOf( const String &s2, unsigned int fromIndex ) const
{
// check for empty strings
if ( s2._length == 0 || s2._length - 1 > fromIndex || fromIndex >= _length )
return -1;
// matching first character
char temp = s2[ 0 ];
for ( int i = fromIndex; i >= 0; i-- )
{
if ( _buffer[ i ] == temp && (*this).substring( i, i + s2._length ).equals( s2 ) )
return i;
}
return -1;
}
boolean String::startsWith( const String &s2 ) const
{
if ( _length < s2._length )
return 0;
return startsWith( s2, 0 );
}
boolean String::startsWith( const String &s2, unsigned int offset ) const
{
if ( offset > _length - s2._length )
return 0;
return strncmp( &_buffer[offset], s2._buffer, s2._length ) == 0;
}
String String::substring( unsigned int left ) const
{
return substring( left, _length );
}
String String::substring( unsigned int left, unsigned int right ) const
{
if ( left > right )
{
int temp = right;
right = left;
left = temp;
}
if ( right > _length )
{
right = _length;
}
char temp = _buffer[ right ]; // save the replaced character
_buffer[ right ] = '\0';
String outPut = ( _buffer + left ); // pointer arithmetic
_buffer[ right ] = temp; //restore character
return outPut;
}
String String::toLowerCase() const
{
String temp = _buffer;
for ( unsigned int i = 0; i < _length; i++ )
temp._buffer[ i ] = (char)tolower( temp._buffer[ i ] );
return temp;
}
String String::toUpperCase() const
{
String temp = _buffer;
for ( unsigned int i = 0; i < _length; i++ )
temp._buffer[ i ] = (char)toupper( temp._buffer[ i ] );
return temp;
}
String String::trim() const
{
if ( _buffer == NULL ) return *this;
String temp = _buffer;
unsigned int i,j;
for ( i = 0; i < _length; i++ )
{
if ( !isspace(_buffer[i]) )
break;
}
for ( j = temp._length - 1; j > i; j-- )
{
if ( !isspace(_buffer[j]) )
break;
}
return temp.substring( i, j + 1);
}
void String::getBytes(unsigned char *buf, unsigned int bufsize)
{
if (!bufsize || !buf) return;
unsigned int len = bufsize - 1;
if (len > _length) len = _length;
strncpy((char *)buf, _buffer, len);
buf[len] = 0;
}
void String::toCharArray(char *buf, unsigned int bufsize)
{
if (!bufsize || !buf) return;
unsigned int len = bufsize - 1;
if (len > _length) len = _length;
strncpy(buf, _buffer, len);
buf[len] = 0;
}
long String::toInt() {
return atol(_buffer);
}

View File

@@ -1,112 +0,0 @@
/*
WString.h - String library for Wiring & Arduino
Copyright (c) 2009-10 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 String_h
#define String_h
//#include "WProgram.h"
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
class String
{
public:
// constructors
String( const char *value = "" );
String( const String &value );
String( const char );
String( const unsigned char );
String( const int, const int base=10);
String( const unsigned int, const int base=10 );
String( const long, const int base=10 );
String( const unsigned long, const int base=10 );
~String() { free(_buffer); _length = _capacity = 0;} //added _length = _capacity = 0;
// operators
const String & operator = ( const String &rhs );
const String & operator +=( const String &rhs );
//const String & operator +=( const char );
int operator ==( const String &rhs ) const;
int operator !=( const String &rhs ) const;
int operator < ( const String &rhs ) const;
int operator > ( const String &rhs ) const;
int operator <=( const String &rhs ) const;
int operator >=( const String &rhs ) const;
char operator []( unsigned int index ) const;
char& operator []( unsigned int index );
//operator const char *() const { return _buffer; }
// general methods
char charAt( unsigned int index ) const;
int compareTo( const String &anotherString ) const;
unsigned char endsWith( const String &suffix ) const;
unsigned char equals( const String &anObject ) const;
unsigned char equalsIgnoreCase( const String &anotherString ) const;
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;
const unsigned int length( ) const { return _length; }
void setCharAt(unsigned int index, const char ch);
unsigned char startsWith( const String &prefix ) const;
unsigned char startsWith( const String &prefix, unsigned int toffset ) const;
String substring( unsigned int beginIndex ) const;
String substring( unsigned int beginIndex, unsigned int endIndex ) const;
String toLowerCase( ) const;
String toUpperCase( ) const;
String trim( ) const;
void getBytes(unsigned char *buf, unsigned int bufsize);
void toCharArray(char *buf, unsigned int bufsize);
long toInt( );
const String& concat( const String &str );
String replace( char oldChar, char newChar );
String replace( const String& match, const String& replace );
friend String operator + ( String lhs, const String &rhs );
protected:
char *_buffer; // the actual char array
unsigned int _capacity; // the array length minus one (for the '\0')
unsigned int _length; // the String length (not counting the '\0')
void getBuffer(unsigned int maxStrLen);
private:
};
// allocate buffer space
inline void String::getBuffer(unsigned int maxStrLen)
{
_capacity = maxStrLen;
_buffer = (char *) malloc(_capacity + 1);
if (_buffer == NULL) _length = _capacity = 0;
}
inline String operator+( String lhs, const String &rhs )
{
return lhs += rhs;
}
#endif

View File

@@ -1,14 +0,0 @@
#include <WProgram.h>
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}

View File

@@ -1,94 +0,0 @@
/*
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 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
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
const static uint8_t SS = 53;
const static uint8_t MOSI = 51;
const static uint8_t MISO = 50;
const static uint8_t SCK = 52;
#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__)
const static uint8_t SS = 4;
const static uint8_t MOSI = 5;
const static uint8_t MISO = 6;
const static uint8_t SCK = 7;
#else
const static uint8_t SS = 10;
const static uint8_t MOSI = 11;
const static uint8_t MISO = 12;
const static uint8_t SCK = 13;
#endif
// 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))) )
#endif

View File

@@ -1,138 +0,0 @@
/*
wiring.h - 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$
*/
#ifndef Wiring_h
#define Wiring_h
#include <avr/io.h>
#include <stdlib.h>
#include "binary.h"
#ifdef __cplusplus
extern "C"{
#endif
#define HIGH 0x1
#define LOW 0x0
#define INPUT 0x0
#define OUTPUT 0x1
#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_ATmega1280__) || defined(__AVR_ATmega2560__)
#define INTERNAL1V1 2
#define INTERNAL2V56 3
#else
#define INTERNAL 3
#endif
#define DEFAULT 1
#define EXTERNAL 0
// 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)))
// Removed to work with newer AVRLIBC
//#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) * 1000L) / (F_CPU / 1000L) )
#define microsecondsToClockCycles(a) ( ((a) * (F_CPU / 1000L)) / 1000L )
#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);
#ifdef __cplusplus
} // extern "C"
#endif
#endif

View File

@@ -1,20 +0,0 @@
avrisp.name=AVR ISP
avrisp.communication=serial
avrisp.protocol=stk500v1
avrispmkii.name=AVRISP mkII
avrispmkii.communication=usb
avrispmkii.protocol=stk500v2
usbtinyisp.name=USBtinyISP
usbtinyisp.protocol=usbtiny
parallel.name=Parallel Programmer
parallel.protocol=dapa
parallel.force=true
# parallel.delay=200
arduinoisp.name=Arduino as ISP
arduinoisp.communication=serial
arduinoisp.protocol=stk500v1
arduinoisp.speed=19200

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,249 +0,0 @@
/*
u8g_com_i2c.c
generic i2c interface
Universal 8bit Graphics Library
Copyright (c) 2011, olikraus@gmail.com
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "u8g.h"
static uint8_t u8g_i2c_err_code;
/*
position values
1: start condition
2: sla transfer
*/
static uint8_t u8g_i2c_err_pos;
void u8g_i2c_clear_error(void)
{
u8g_i2c_err_code = U8G_I2C_ERR_NONE;
u8g_i2c_err_pos = 0;
}
uint8_t u8g_i2c_get_error(void)
{
return u8g_i2c_err_code;
}
uint8_t u8g_i2c_get_err_pos(void)
{
return u8g_i2c_err_pos;
}
static void u8g_i2c_set_error(uint8_t code, uint8_t pos)
{
if ( u8g_i2c_err_code > 0 )
return;
u8g_i2c_err_code |= code;
u8g_i2c_err_pos = pos;
}
#if defined(__AVR__)
#define U8G_ATMEGA_HW_TWI
/* remove the definition for attiny */
#if __AVR_ARCH__ == 2
#undef U8G_ATMEGA_HW_TWI
#endif
#if __AVR_ARCH__ == 25
#undef U8G_ATMEGA_HW_TWI
#endif
#endif
#if defined(U8G_ATMEGA_HW_TWI)
#include <avr/io.h>
#include <util/twi.h>
void u8g_i2c_init(uint8_t options)
{
/*
TWBR: bit rate register
TWSR: status register (contains preselector bits)
prescalar
0 1
1 4
2 16
3 64
f = F_CPU/(16+2*TWBR*prescalar)
F_CPU = 16MHz
TWBR = 152;
TWSR = 0;
--> 50KHz
TWBR = 72;
TWSR = 0;
--> 100KHz
F_CPU/(2*100000)-8 --> calculate TWBR value for 100KHz
*/
TWSR = 0;
TWBR = F_CPU/(2*100000)-8;
u8g_i2c_clear_error();
}
uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos)
{
volatile uint16_t cnt = 2000; /* timout value should be > 280 for 50KHz Bus and 16 Mhz CPU, however the start condition might need longer */
while( !(TWCR & mask) )
{
if ( cnt == 0 )
{
u8g_i2c_set_error(U8G_I2C_ERR_TIMEOUT, pos);
return 0; /* error */
}
cnt--;
}
return 1; /* all ok */
}
/* sla includes all 8 bits (with r/w bit), assums master transmit */
uint8_t u8g_i2c_start(uint8_t sla)
{
register uint8_t status;
/* send start */
TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN);
/* wait */
if ( u8g_i2c_wait(_BV(TWINT), 1) == 0 )
return 0;
status = TW_STATUS;
/* check status after start */
if ( status != TW_START && status != TW_REP_START )
{
u8g_i2c_set_error(U8G_I2C_ERR_BUS, 1);
return 0;
}
/* set slave address */
TWDR = sla;
/* enable sla transfer */
TWCR = _BV(TWINT) | _BV(TWEN);
/* wait */
if ( u8g_i2c_wait(_BV(TWINT), 2) == 0 )
return 0;
status = TW_STATUS;
/* check status after sla */
if ( status != TW_MT_SLA_ACK )
{
u8g_i2c_set_error(U8G_I2C_ERR_BUS, 2);
return 0;
}
return 1;
}
uint8_t u8g_i2c_send_byte(uint8_t data)
{
register uint8_t status;
TWDR = data;
TWCR = _BV(TWINT) | _BV(TWEN);
if ( u8g_i2c_wait(_BV(TWINT), 3) == 0 )
return 0;
status = TW_STATUS;
if ( status != TW_MT_DATA_ACK )
{
u8g_i2c_set_error(U8G_I2C_ERR_BUS, 3);
return 0;
}
return 1;
}
void u8g_i2c_stop(void)
{
/* write stop */
TWCR = _BV(TWINT) | _BV(TWEN) | _BV(TWSTO);
/* no error is checked for the stop condition */
u8g_i2c_wait(_BV(TWSTO), 4);
}
/*
void twi_send(uint8_t adr, uint8_t data1, uint8_t data2)
{
u8g_i2c_start(adr<<1);
u8g_i2c_send_byte(data1);
u8g_i2c_send_byte(data2);
u8g_i2c_stop();
}
*/
#else
/* empty interface */
void u8g_i2c_init(uint8_t options)
{
u8g_i2c_clear_error();
}
uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos)
{
return 1;
}
uint8_t u8g_i2c_start(uint8_t sla)
{
return 1;
}
uint8_t u8g_i2c_send_byte(uint8_t data)
{
return 1;
}
void u8g_i2c_stop(void)
{
}
#endif

View File

@@ -1,100 +0,0 @@
/*
u8g_ellipse.c
Utility to draw empty and filled ellipses.
Universal 8bit Graphics Library
Copyright (c) 2011, bjthom@gmail.com
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Addition to the U8G Library as of 02/29/12
Adapted from Bresenham's Algorithm and the following websites:
http://free.pages.at/easyfilter/bresenham.html
http://homepage.smc.edu/kennedy_john/belipse.pdf
*/
#include "u8g.h"
#ifdef WORK_IN_PROGRESS
void u8g_DrawEllipseRect(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t x1, u8g_uint_t y1)
{
int a = abs(x1 - x0);
int b = abs(y1 - y0); //get diameters
int b1 = b&1;
long dx = 4*(1-a)*b*b;
long dy = 4*(b1+1)*a*a;
long err = dx+dy+b1*a*a;
long e2;
if (x0 > x1) { x0 = x1; x1 += a; }
if (y0 > y1) { y0 = y1; }
y0 += (b+1)/2;
y1 = y0-b1;
a *= 8*a;
b1 = 8*b*b;
do {
u8g_DrawPixel(u8g, x1, y0);
u8g_DrawPixel(u8g, x0, y0);
u8g_DrawPixel(u8g, x0, y1);
u8g_DrawPixel(u8g, x1, y1);
e2 = 2*err;
if (e2 >= dx) {
x0++;
x1--;
err += dx += b1;
}
if (e2 <= dy) {
y0++;
y1--;
err += dy += a;
}
} while (x0 <= x1);
while (y0-y1 < b) {
u8g_DrawPixel(u8g, x0-1, y0);
u8g_DrawPixel(u8g, x1+1, y0++);
u8g_DrawPixel(u8g, x0-1, y1);
u8g_DrawPixel(u8g, x1+1, y1--);
}
}
void u8g_DrawEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t xr, u8g_uint_t yr)
{
u8g_DrawPixel(u8g, x0, y0+yr);
u8g_DrawPixel(u8g, x0, y0-yr);
u8g_DrawPixel(u8g, x0+xr, y0);
u8g_DrawPixel(u8g, x0-xr, y0);
}
#endif

View File

@@ -107,7 +107,55 @@ u8glib ChangeLog
* Sleep Mode
* 4x mode for ST7920
* New C++ interface for ST7920
2013-03-24 v1.12 Oliver Kraus <olikraus@gmail.com>
* Added touch panel examples
2013-06-30 v1.13 Oliver Kraus <olikraus@gmail.com>
* Fixed missing "Arduino.h" in u8g_delay.c
* Disable interrupt for port/pin access (AVR), issue 19
* Support for HT1632: U8GLIB_HT1632_24X16 u8g(wr, data, cs), issue 165
* Support for SSD1351 OLED, issue 168
* Cleaned up several compiler warnings
* Fixed conflict with scheduler (Arduino Due), issue 155
* HW SPI for Arduino Due, issue 180
* Performance improvement for ST7920, issue 177
* Added ":" to the "n"umeric variant of the fonts, issue 166
* Added additional argument u8g_InitCom(). Use U8G_SPI_CLK_CYCLE_NONE by default.
* Added double buffer option for many ST7565 devices
* Tested with Arduino 1.0.5
2013-10-03 v1.14 Oliver Kraus <olikraus@gmail.com>
* Support for ARM controller
* Support for the A2 micro printer (issue 191)
* Ellipse drawing primitive (issue 187)
* Added software reset for UC1701
* Fixed compiler warning (issue 196)
* Support for Freetronics SSD1351 OLED (issue 195)
* Several other fixes and improvements
2014-01-25 v1.15 Oliver Kraus <olikraus@gmail.com>
* Fixed a bug with the rotation procs: Occupied too much flash ROM (issue 219)
* Fixed issue with more than one SPI controller (SW SPI, issue 227)
* Added "drawTriangle" (issue 226)
* Added support for UC1608 (issue 214)
* Added ProFont family of fonts (issue 234)
* SW SPI support for Teensy 3 (issue 230)
* Removed Arduino/AVR specific files from ARM port (issue 209)
2014-07-05 v1.16 Oliver Kraus <olikraus@gmail.com>
* Added support for LD7032 60x32 OLED
* Added support for SSD1306 OLED, which does not send I2C ACK (issue 239)
* Added support for SH1106 128x64 OLED
* Added support for T6963 128x128 displays
* Added U8GLIB_SSD1306_ADAFRUIT_128X64 constructor
2014-12-21 v1.17 Oliver Kraus <olikraus@gmail.com>
* Added U8GLIB_UC1611_DOGM240 constructor (Issue 284)
* Added U8GLIB_UC1611_DOGXL240 constructor
* Added support for UC1608 controller (Issue 300)
* Added U8GLIB_SSD1306_ADAFRUIT_128X64 for Adafruit OLEDs (Issue 289)
* Bufix in the sleep on/off sequence (CS has not been releases, issue 298)
* helvB and helvR number only fonts (Issue 271)
* 400KHz option for I2C with U8G_I2C_OPT_FAST available for Due and Uno (Issue 303)
* I2C support for Arduino Due. 100KHz/400KHz, TWI & TWI1, ACK will be ignored (issue 285)
* Unifont update (Issue 297)

View File

@@ -2,10 +2,15 @@
U8GLIB
http://code.google.com/p/u8glib/
Install instructions for the Arduino environment.
1. Unzip u8glib_arduino_vX.XX.zip into the "libraries" folder
1. Start Arduino IDE
2. In the Arduino IDE, import the library from the "Add Library" Menu.
Alternative install instructions for the Arduino environment.
1. Unzip u8glib_arduino_vX.XX.zip into the "libraries" folder of the
Arduino install directory
2. Start Arduino IDE
Install instructions for the Chipkit (Arduino) environment.

View File

@@ -77,4 +77,3 @@ uint8_t U8GLIB::initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, u
return u8g_InitRW8Bit(&u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset);
}

View File

@@ -57,10 +57,8 @@ class U8GLIB : public Print
protected:
uint8_t init8BitFixedPort(u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset);
private:
uint8_t init8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE);
uint8_t initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset);
uint8_t init8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE);
uint8_t initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset);
public:
/* constructor */
@@ -68,17 +66,17 @@ class U8GLIB : public Print
{ }
U8GLIB(u8g_dev_t *dev)
{ prepare(); u8g_Init(&u8g, dev); }
U8GLIB(u8g_dev_t *dev, u8g_com_fnptr com_fn)
{ prepare(); u8g_InitComFn(&u8g, dev, com_fn); }
U8GLIB(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset)
{ initSPI(dev, sck, mosi, cs, a0, reset); }
U8GLIB(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset)
{ initHWSPI(dev, cs, a0, reset); }
U8GLIB(u8g_dev_t *dev, uint8_t options)
{ initI2C(dev, options); }
U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset)
U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset)
{ init8Bit(dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset); }
U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset)
U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset)
{ initRW8Bit(dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset); }
uint8_t begin(void) { is_begin = 1; return u8g_Begin(&u8g); }
@@ -114,6 +112,11 @@ class U8GLIB : public Print
void sleepOff(void) { u8g_SleepOff(&u8g); }
/* graphic primitives */
void setColorEntry(uint8_t color_index, uint8_t r, uint8_t g, uint8_t b) { u8g_SetColorEntry(&u8g, color_index, r, g, b); }
void setHiColor(uint16_t rgb) { u8g_SetHiColor(&u8g, rgb); }
void setHiColorByRGB(uint8_t r, uint8_t g, uint8_t b) { u8g_SetHiColorByRGB(&u8g, r, g, b); }
void setRGB(uint8_t r, uint8_t g, uint8_t b) { u8g_SetRGB(&u8g, r, g, b); }
void setColorIndex(uint8_t color_index) { u8g_SetColorIndex(&u8g, color_index); }
uint8_t getColorIndex(void) { return u8g_GetColorIndex(&u8g); }
@@ -138,6 +141,14 @@ class U8GLIB : public Print
void drawCircle(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawCircle(&u8g, x0, y0, rad, opt); }
void drawDisc(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawDisc(&u8g, x0, y0, rad, opt); }
void drawEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawEllipse(&u8g, x0, y0, rx, ry, opt); }
void drawFilledEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawFilledEllipse(&u8g, x0, y0, rx, ry, opt); }
void drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
{ u8g_DrawTriangle(&u8g, x0, y0, x1, y1, x2, y2); }
/* bitmap handling */
void drawBitmap(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap)
{ u8g_DrawBitmap(&u8g, x, y, cnt, h, bitmap); }
@@ -223,6 +234,17 @@ class U8GLIB_DOGS102 : public U8GLIB
{ }
};
class U8GLIB_DOGS102_2X : public U8GLIB
{
public:
U8GLIB_DOGS102_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1701_dogs102_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_DOGS102_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1701_dogs102_2x_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_MINI12864 : public U8GLIB
{
public:
@@ -234,6 +256,17 @@ class U8GLIB_MINI12864 : public U8GLIB
{ }
};
class U8GLIB_MINI12864_2X : public U8GLIB
{
public:
U8GLIB_MINI12864_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1701_mini12864_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_MINI12864_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1701_mini12864_2x_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_DOGM132 : public U8GLIB
{
public:
@@ -260,6 +293,14 @@ class U8GLIB_NHD_C12832 : public U8GLIB
{ }
};
class U8GLIB_NHD_C12832_USART : public U8GLIB
{
public:
U8GLIB_NHD_C12832_USART(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_nhd_c12832_hw_usart_spi, cs, a0, reset)
{ }
};
class U8GLIB_DOGM128 : public U8GLIB
{
public:
@@ -269,6 +310,25 @@ class U8GLIB_DOGM128 : public U8GLIB
U8GLIB_DOGM128(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_dogm128_hw_spi, cs, a0, reset)
{ }
U8GLIB_DOGM128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_dogm128_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset)
{ }
};
class U8GLIB_DOGM128_2X : public U8GLIB
{
public:
U8GLIB_DOGM128_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_dogm128_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_DOGM128_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_dogm128_2x_hw_spi, cs, a0, reset)
{ }
U8GLIB_DOGM128_2X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_dogm128_2x_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset)
{ }
};
class U8GLIB_LM6059 : public U8GLIB
@@ -282,6 +342,17 @@ class U8GLIB_LM6059 : public U8GLIB
{ }
};
class U8GLIB_LM6059_2X : public U8GLIB
{
public:
U8GLIB_LM6059_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_lm6059_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_LM6059_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_lm6059_2x_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_LM6063 : public U8GLIB
{
public:
@@ -293,6 +364,17 @@ class U8GLIB_LM6063 : public U8GLIB
{ }
};
class U8GLIB_LM6063_2X : public U8GLIB
{
public:
U8GLIB_LM6063_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_lm6063_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_LM6063_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_lm6063_2x_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_64128N : public U8GLIB
{
public:
@@ -302,6 +384,25 @@ class U8GLIB_64128N : public U8GLIB
U8GLIB_64128N(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_64128n_hw_spi, cs, a0, reset)
{ }
U8GLIB_64128N(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_64128n_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset)
{ }
};
class U8GLIB_64128N_2X : public U8GLIB
{
public:
U8GLIB_64128N_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_64128n_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_64128N_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_64128n_2x_hw_spi, cs, a0, reset)
{ }
U8GLIB_64128N_2X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_64128n_2x_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset)
{ }
};
class U8GLIB_NHD_C12864 : public U8GLIB
@@ -315,6 +416,111 @@ class U8GLIB_NHD_C12864 : public U8GLIB
{ }
};
class U8GLIB_NHD_C12864_2X : public U8GLIB
{
public:
U8GLIB_NHD_C12864_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_nhd_c12864_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_NHD_C12864_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7565_nhd_c12864_2x_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_UC1601_C128032 : public U8GLIB
{
public:
U8GLIB_UC1601_C128032(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1601_c128032_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_UC1601_C128032(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1601_c128032_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_UC1601_C128032_2X : public U8GLIB
{
public:
U8GLIB_UC1601_C128032_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1601_c128032_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_UC1601_C128032_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1601_c128032_2x_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_UC1608_240X64 : public U8GLIB
{
public:
U8GLIB_UC1608_240X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1608_240x64_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_UC1608_240X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1608_240x64_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_UC1608_240X64_2X : public U8GLIB
{
public:
U8GLIB_UC1608_240X64_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1608_240x64_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_UC1608_240X64_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1608_240x64_2x_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_UC1608_240X128 : public U8GLIB
{
public:
U8GLIB_UC1608_240X128(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1608_240x128_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_UC1608_240X128(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1608_240x128_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_UC1608_240X128_2X : public U8GLIB
{
public:
U8GLIB_UC1608_240X128_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1608_240x128_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_UC1608_240X128_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1608_240x128_2x_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_UC1611_DOGM240 : public U8GLIB
{
public:
U8GLIB_UC1611_DOGM240(uint8_t options = U8G_I2C_OPT_NONE)
: U8GLIB(&u8g_dev_uc1611_dogm240_i2c, options)
{}
U8GLIB_UC1611_DOGM240(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1611_dogm240_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_UC1611_DOGM240(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1611_dogm240_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_UC1611_DOGXL240 : public U8GLIB
{
public:
U8GLIB_UC1611_DOGXL240(uint8_t options = U8G_I2C_OPT_NONE)
: U8GLIB(&u8g_dev_uc1611_dogxl240_i2c, options)
{}
U8GLIB_UC1611_DOGXL240(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1611_dogxl240_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_UC1611_DOGXL240(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_uc1611_dogxl240_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_ST7920_128X64 : public U8GLIB
{
@@ -349,6 +555,14 @@ class U8GLIB_ST7920_128X64_1X : public U8GLIB
{ }
};
class U8GLIB_ST7920_128X64_CUSTOM_1X : public U8GLIB
{
public:
U8GLIB_ST7920_128X64_CUSTOM_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7920_128x64_custom, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE
{ }
};
class U8GLIB_ST7920_128X64_4X : public U8GLIB
{
public:
@@ -364,6 +578,13 @@ class U8GLIB_ST7920_128X64_4X : public U8GLIB
{ }
};
class U8GLIB_ST7920_128X64_CUSTOM_4X : public U8GLIB
{
public:
U8GLIB_ST7920_128X64_CUSTOM_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_st7920_128x64_4x_custom, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE
{ }
};
class U8GLIB_ST7920_192X32 : public U8GLIB // OBSOLETE, use U8GLIB_ST7920_192X32_1X instead
@@ -485,7 +706,7 @@ class U8GLIB_LC7981_240X128 : public U8GLIB
{ }
};
// 16 bit mode required: Remove comment from "#define U8G_16BIT 1" in utility/u8g.h
// 16 bit mode required: Remove comment from "#define U8G_16BIT 1" in utility/utility/u8g.h
class U8GLIB_LC7981_320X64 : public U8GLIB
{
public:
@@ -581,6 +802,10 @@ class U8GLIB_NHD31OLED_BW : public U8GLIB
U8GLIB_NHD31OLED_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1322_nhd31oled_bw_hw_spi, cs, a0, reset)
{ }
U8GLIB_NHD31OLED_BW(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t cs, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1322_nhd31oled_bw_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, reset)
{ }
};
class U8GLIB_NHD31OLED_2X_BW : public U8GLIB
@@ -603,6 +828,10 @@ class U8GLIB_NHD31OLED_GR : public U8GLIB
U8GLIB_NHD31OLED_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1322_nhd31oled_gr_hw_spi, cs, a0, reset)
{ }
U8GLIB_NHD31OLED_GR(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t cs, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1322_nhd31oled_gr_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, reset)
{ }
};
class U8GLIB_NHD31OLED_2X_GR : public U8GLIB
@@ -629,7 +858,63 @@ class U8GLIB_SSD1306_128X64 : public U8GLIB
U8GLIB_SSD1306_128X64(uint8_t options = U8G_I2C_OPT_NONE)
: U8GLIB(&u8g_dev_ssd1306_128x64_i2c, options)
{ }
};
class U8GLIB_SSD1306_ADAFRUIT_128X64 : public U8GLIB
{
public:
U8GLIB_SSD1306_ADAFRUIT_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1306_adafruit_128x64_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1306_ADAFRUIT_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1306_adafruit_128x64_hw_spi, cs, a0, reset)
{ }
U8GLIB_SSD1306_ADAFRUIT_128X64(uint8_t options = U8G_I2C_OPT_NONE)
: U8GLIB(&u8g_dev_ssd1306_adafruit_128x64_i2c, options)
{ }
};
class U8GLIB_SSD1306_128X64_2X : public U8GLIB
{
public:
U8GLIB_SSD1306_128X64_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1306_128x64_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1306_128X64_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1306_128x64_2x_hw_spi, cs, a0, reset)
{ }
U8GLIB_SSD1306_128X64_2X(uint8_t options = U8G_I2C_OPT_NONE)
: U8GLIB(&u8g_dev_ssd1306_128x64_2x_i2c, options)
{ }
};
class U8GLIB_SH1106_128X64 : public U8GLIB
{
public:
U8GLIB_SH1106_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_sh1106_128x64_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SH1106_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_sh1106_128x64_hw_spi, cs, a0, reset)
{ }
U8GLIB_SH1106_128X64(uint8_t options = U8G_I2C_OPT_NONE)
: U8GLIB(&u8g_dev_sh1106_128x64_i2c, options)
{ }
};
class U8GLIB_SH1106_128X64_2X : public U8GLIB
{
public:
U8GLIB_SH1106_128X64_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_sh1106_128x64_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SH1106_128X64_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_sh1106_128x64_2x_hw_spi, cs, a0, reset)
{ }
U8GLIB_SH1106_128X64_2X(uint8_t options = U8G_I2C_OPT_NONE)
: U8GLIB(&u8g_dev_sh1106_128x64_2x_i2c, options)
{ }
};
class U8GLIB_SSD1309_128X64 : public U8GLIB
@@ -644,7 +929,6 @@ class U8GLIB_SSD1309_128X64 : public U8GLIB
U8GLIB_SSD1309_128X64(uint8_t options = U8G_I2C_OPT_NONE)
: U8GLIB(&u8g_dev_ssd1309_128x64_i2c, options)
{ }
};
class U8GLIB_SSD1306_128X32 : public U8GLIB
@@ -659,7 +943,20 @@ class U8GLIB_SSD1306_128X32 : public U8GLIB
U8GLIB_SSD1306_128X32(uint8_t options = U8G_I2C_OPT_NONE)
: U8GLIB(&u8g_dev_ssd1306_128x32_i2c, options)
{ }
};
class U8GLIB_SSD1306_128X32_2X : public U8GLIB
{
public:
U8GLIB_SSD1306_128X32_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1306_128x32_2x_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1306_128X32_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1306_128x32_2x_hw_spi, cs, a0, reset)
{ }
U8GLIB_SSD1306_128X32_2X(uint8_t options = U8G_I2C_OPT_NONE)
: U8GLIB(&u8g_dev_ssd1306_128x32_2x_i2c, options)
{ }
};
@@ -713,12 +1010,43 @@ class U8GLIB_SSD1327_96X96_2X_GR : public U8GLIB
{ }
};
class U8GLIB_LD7032_60x32 : public U8GLIB
{
public:
U8GLIB_LD7032_60x32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ld7032_60x32_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_LD7032_60x32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ld7032_60x32_hw_spi, cs, a0, reset)
{ }
U8GLIB_LD7032_60x32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ld7032_60x32_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset)
{ }
};
class U8GLIB_HT1632_24X16 : public U8GLIB
{
public:
U8GLIB_HT1632_24X16(uint8_t wr, uint8_t data, uint8_t cs)
: U8GLIB(&u8g_dev_ht1632_24x16, wr, data, cs, U8G_PIN_NONE, U8G_PIN_NONE)
{ }
};
class U8GLIB_PCF8812 : public U8GLIB
{
public:
U8GLIB_PCF8812(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_pcf8812_96x65_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_PCF8812(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_pcf8812_96x65_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_PCD8544 : public U8GLIB
@@ -727,6 +1055,9 @@ class U8GLIB_PCD8544 : public U8GLIB
U8GLIB_PCD8544(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_pcd8544_84x48_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_PCD8544(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_pcd8544_84x48_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_TLS8204_84X48 : public U8GLIB
@@ -764,6 +1095,15 @@ class U8GLIB_T6963_240X128 : public U8GLIB
{ }
};
class U8GLIB_T6963_128X128 : public U8GLIB
{
public:
U8GLIB_T6963_128X128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_t6963_128x128_8bit, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset)
{ }
};
class U8GLIB_T6963_240X64 : public U8GLIB
{
public:
@@ -808,6 +1148,108 @@ class U8GLIB_ILI9325D_320x240 : public U8GLIB
{ init8BitFixedPort(&u8g_dev_ili9325d_320x240_8bit, en, cs1, di, rw, reset); }
};
class U8GLIB_SSD1351_128X128_332 : public U8GLIB
{
public:
U8GLIB_SSD1351_128X128_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128_332_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1351_128X128_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128_332_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_SSD1351_128X128_4X_332 : public U8GLIB
{
public:
U8GLIB_SSD1351_128X128_4X_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128_4x_332_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1351_128X128_4X_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128_4x_332_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_SSD1351_128X128GH_332 : public U8GLIB
{
public:
U8GLIB_SSD1351_128X128GH_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128gh_332_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1351_128X128GH_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128gh_332_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_SSD1351_128X128GH_4X_332 : public U8GLIB
{
public:
U8GLIB_SSD1351_128X128GH_4X_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_332_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1351_128X128GH_4X_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_332_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_SSD1351_128X128_IDX : public U8GLIB
{
public:
U8GLIB_SSD1351_128X128_IDX(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128_idx_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1351_128X128_IDX(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128_idx_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_SSD1351_128X128_HICOLOR : public U8GLIB
{
public:
U8GLIB_SSD1351_128X128_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128_hicolor_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1351_128X128_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128_hicolor_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_SSD1351_128X128_4X_HICOLOR : public U8GLIB
{
public:
U8GLIB_SSD1351_128X128_4X_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128_4x_hicolor_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1351_128X128_4X_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128_4x_hicolor_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_SSD1351_128X128GH_HICOLOR : public U8GLIB
{
public:
U8GLIB_SSD1351_128X128GH_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128gh_hicolor_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1351_128X128GH_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128gh_hicolor_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_SSD1351_128X128GH_4X_HICOLOR : public U8GLIB
{
public:
U8GLIB_SSD1351_128X128GH_4X_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_hicolor_sw_spi, sck, mosi, cs, a0, reset)
{ }
U8GLIB_SSD1351_128X128GH_4X_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE)
: U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_hicolor_hw_spi, cs, a0, reset)
{ }
};
class U8GLIB_FLIPDISC_2X7 : public U8GLIB
{
public:

View File

@@ -0,0 +1,131 @@
/*
A2Printer.pde
Special example code for the A2 Mciro Printer (https://www.sparkfun.com/products/10438)
Universal 8bit Graphics Library, http://code.google.com/p/u8glib/
Copyright (c) 2013, olikraus@gmail.com
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "U8glib.h"
// use this serial interface
#define PRINTER_SERIAL Serial
// #define PRINTER_SERIAL Serial1
uint8_t u8g_com_uart(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
switch(msg) {
case U8G_COM_MSG_WRITE_BYTE:
PRINTER_SERIAL.write(arg_val);
break;
}
return 1;
}
// setup u8g object, please remove comment from one of the following constructor calls
// half resolution
//U8GLIB u8g(&u8g_dev_a2_micro_printer_192x120_ds, (u8g_com_fnptr)u8g_com_uart);
// full resolution, requires to uncomment U8G_16BIT in u8g.h
//U8GLIB u8g(&u8g_dev_a2_micro_printer_384x240, (u8g_com_fnptr)u8g_com_uart);
// half resolution, extra log, requires to uncomment U8G_16BIT in u8g.h
//U8GLIB u8g(&u8g_dev_a2_micro_printer_192x360_ds, (u8g_com_fnptr)u8g_com_uart);
U8GLIB u8g(&u8g_dev_a2_micro_printer_192x720_ds, (u8g_com_fnptr)u8g_com_uart);
void drawLogo(uint8_t d) {
u8g.setFont(u8g_font_gdr25r);
u8g.drawStr(0+d, 30+d, "U");
u8g.setFont(u8g_font_gdr30n);
u8g.drawStr90(23+d,10+d,"8");
u8g.setFont(u8g_font_gdr25r);
u8g.drawStr(53+d,30+d,"g");
u8g.drawHLine(2+d, 35+d, 47);
u8g.drawVLine(45+d, 32+d, 12);
}
void drawURL(void) {
u8g.setFont(u8g_font_4x6);
if ( u8g.getHeight() < 59 ) {
u8g.drawStr(53,9,"code.google.com");
u8g.drawStr(77,18,"/p/u8glib");
}
else {
u8g.drawStr(1,54,"code.google.com/p/u8glib");
}
}
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
drawLogo(0);
drawURL();
u8g.drawFrame(0,0,u8g.getWidth(), u8g.getHeight());
u8g.setFont(u8g_font_helvR24r);
u8g.setPrintPos(0, 100);
u8g.print(u8g.getWidth(), DEC);
u8g.print("x");
u8g.print(u8g.getHeight(), DEC);
}
void setup(void) {
PRINTER_SERIAL.begin(19200);
// flip screen, if required
// u8g.setRot180();
// assign default color value
u8g.setColorIndex(1); // pixel on
}
void loop(void) {
// picture loop: This will print the picture
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// send manual CR to the printer
PRINTER_SERIAL.write('\n');
// reprint the picture after 10 seconds
delay(10000);
}

View File

@@ -42,8 +42,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -52,9 +52,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -84,19 +85,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
const uint8_t rook_bitmap[] PROGMEM = {
0x00, // 00000000

View File

@@ -43,8 +43,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -53,9 +53,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -85,19 +86,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
// DOGS102 shield configuration values

View File

@@ -0,0 +1,201 @@
/*
Color.pde
"Hello World!" example code with color.
>>> Before compiling: Please remove comment from the constructor of the
>>> connected graphics display (see below).
Universal 8bit Graphics Library, http://code.google.com/p/u8glib/
Copyright (c) 2012, olikraus@gmail.com
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10
//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI
//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16
//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
void draw(void) {
if ( u8g.getMode() == U8G_MODE_HICOLOR || u8g.getMode() == U8G_MODE_R3G3B2) {
/* draw background (area is 128x128) */
u8g_uint_t r, g, b;
for( b = 0; b < 4; b++ )
{
for( g = 0; g < 32; g++ )
{
for( r = 0; r < 32; r++ )
{
u8g.setRGB(r<<3, g<<3, b<<4 );
u8g.drawPixel(g + b*32, r);
u8g.setRGB(r<<3, g<<3, (b<<4)+64 );
u8g.drawPixel(g + b*32, r+32);
u8g.setRGB(r<<3, g<<3, (b<<4)+128 );
u8g.drawPixel(g + b*32, r+32+32);
u8g.setRGB(r<<3, g<<3, (b<<4)+128+64 );
u8g.drawPixel(g + b*32, r+32+32+32);
}
}
}
}
// assign default color value
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
u8g.setFont(u8g_font_unifont);
u8g.drawStr( 0, 22, "Hello World!");
}
void setup(void) {
// flip screen, if required
// u8g.setRot180();
// set SPI backup if required
//u8g.setHardwareBackup(u8g_backup_avr_spi);
}
void loop(void) {
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(500);
}

View File

@@ -42,8 +42,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -52,9 +52,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -84,19 +85,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
// setup input buffer

View File

@@ -44,8 +44,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -54,9 +54,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -86,19 +87,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
void draw(void) {
// graphic commands to redraw the complete screen should be placed here

View File

@@ -0,0 +1,398 @@
/*
FPS.pde
>>> Before compiling: Please remove comment from the constructor of the
>>> connected graphics display (see below).
Universal 8bit Graphics Library, http://code.google.com/p/u8glib/
Copyright (c) 2012, olikraus@gmail.com
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ST7920_192X32, SPI: FPS: Box=7.6 @=9.8 iFPS: Box=11.4 @=14.7
ST7920_192X32, 8Bit: FPS: Box=6.2 @=7.5 iFPS: Box=9.3 @=11.2
DOGM128 SW SPI: FPS: Box=5.1 @=5.9 Pix=2.6 iFPS: Box=10.2 @=11.8 Pix=5.2
DOGM128 HW SPI: FPS: Box=5.5 @=6.3 iFPS: Box=11.0 @=12.6
DOGXL160 SW SPI: FPS: Box=1.7 @=1.9 iFPS: Box=6.9 @=7.7
DOGXL160 HW SPI: FPS: Box=1.8 @=2.1
NHD27OLED_BW, SW SPI: FPS: Box=3.0 @=3.7
NHD27OLED_BW, HW SPI: FPS: Box=3.5 @=4.5
NHD27OLED_2X_BW, SW SPI: FPS: Box=3.8 @=4.9
NHD27OLED_2X_BW, HW SPI: FPS: Box=4.6 @=6.4
30 Sep 2012
NHD27OLED_BW, SW SPI: FPS: Clip=9.2 Box=3.9 @=4.4 NEW_CODE
NHD27OLED_BW, SW SPI: FPS: Clip=9.2 Box=3.6 @=4.5
NHD27OLED_BW, HW SPI: FPS: Clip=16.3 Box=4.7 @=5.6
NHD27OLED_2X_BW, SW SPI: FPS: Clip=9.7 Box=4.5 @=5.8
NHD27OLED_2X_BW, SW SPI: FPS: Clip=18.0 Box=5.8 @=7.9
1 Oct 2012
ST7920_192X32, 8Bit: FPS: Box=7.2 @=10.0
DOGM128 SW SPI: FPS: Box=5.2 @=6.6 Pix=2.6
DOGM128 HW SPI: FPS: Clip=33.2 Box=5.5 @=7.1
DOGXL160 SW SPI: FPS: Box=1.7 @=2.0
DOGXL160 HW SPI: FPS: Box=1.8 @=2.2
DOGXL160 GR SW SPI: FPS: Box=1.1 @=1.3
1 Mar 2013
ST7920_192X32_1X, SPI: FPS: Clip=10.3 Box=5.5 @=7.2 Pix=3.9
ST7920_192X32_4X, SPI: FPS: Clip=10.9 Box=6.7 @=8.8 Pix=7.4
ST7920_192X32_1X, 8Bit: FPS: Clip=14.2 Box=6.1 @=8.4 Pix=4.2
ST7920_192X32_4X, 8Bit: FPS: Clip=14.2 Box=7.8 @=10.7 Pix=8.7
ST7920_192X32_1X, HW SPI: FPS: Clip=14.2 Box=6.3 @=8.7 Pix=4.3
ST7920_192X32_4X, HW SPI: FPS: Clip=15.3 Box=8.0 @=11.2 Pix=9.0
2 Jun 2013
U8GLIB_DOGM128 SW SPI: FPS: Clip=23.9 Box=4.5 @=6.6 Pix=2.1
U8GLIB_DOGM128_2X SW SPI: FPS: Clip=28.5 Box=6.6 @=9.7 Pix=3.9
U8GLIB_DOGM128_2X HW SPI: FPS: Clip=40.8 Box=7.1 @=10.8 Pix=4.1
3 Jun 2013
U8GLIB_ST7920_192X32_1X -Os SW SPI FPS: Clip=11.0 Box=5.4 @=7.1 Pix=3.9 Size=11828
U8GLIB_ST7920_192X32_1X -O3 SW SPI FPS: Clip=10.9 Box=5.6 @=7.5 Pix=4.0 Size=13800
U8GLIB_ST7920_192X32_1X -Os SW SPI FPS: Clip=16.8 Box=6.7 @=9.6 Pix=4.5 Size=11858 (new seq data output)
U8GLIB_ST7920_192X32_1X -Os HW SPI FPS: Clip=25.7 Box=7.5 @=11.3 Pix=4.8 (new seq data output)
6 Jun 2013
U8GLIB_DOGS102 u8g(13, 11, 10, 9); STD SW SPI FPS: Clip=9.5 Box=7.6 @=8.2 Pix=6.2 Size=15652
U8GLIB_DOGS102 u8g(13, 11, 10, 9); SW SPI FPS: Clip=19.1 Box=12.8 @=14.0 Pix=9.2 Size=15532
12 Jun 2013
SSD1351_128X128_332 SW SPI Clip=1.3 Box=0.7 @=0.9 Pix=0.4
SSD1351_128X128_332 HW SPI Clip=3.6 Box=1.1 @=1.5 Pix=0.5
24 Jun 2013
Uno SSD1351_128X128_332 SW SPI Clip=1.4 Box=0.8 @=0.9 Pix=0.4
Uno SSD1351_128X128_332 HW SPI Clip=4.4 Box=1.2 @=1.6 Pix=0.5
Uno SSD1351_128X128_HICOLOR HW SPI Clip=3.7 Box=0.8 @=1.0 Pix=0.3
Mega2560 SSD1351_128X128_332 HW SPI Clip=4.4 Box=1.2 @=1.6 Pix=0.5
Mega2560 SSD1351_128X128_4X_332 HW SPI Clip=4.6 Box=2.3 @=2.8 Pix=1.5
Mega2560 SSD1351_128X128_HICOLOR HW SPI Clip=3.6 Box=0.8 @=1.0 Pix=0.3
Mega2560 SSD1351_128X128_4X_HICOLOR HW SPI Clip=4.2 Box=1.7 @=2.1 Pix=1.0
Due SSD1351_128X128_332 HW SPI Clip=24.6 Box=6.3 @=7.8 Pix=2.8
Due SSD1351_128X128_4X_332 HW SPI Clip=28.1 Box=13.0 @=15.1 Pix=8.5
Due SSD1351_128X128_HICOLOR HW SPI Clip=20.8 Box=3.4 @=4.5 Pix=1.4
Due SSD1351_128X128_4X_HICOLOR HW SPI Clip=26.3 Box=8.9 @=11.1 Pix=4.8
Due SSD1351_128X128_4X_HICOLOR SW SPI Clip=0.4 Box=0.4 @=0.4 Pix=0.4
Due DOGS102 u8g(13, 11, 10, 9); SW SPI FPS: Clip=19.1 Box=13.1 @=14.3 Pix=9.4
Due DOGS102 u8g(10, 9); HW SPI FPS: Clip=128.9 Box=30.7 @=40.6 Pix=15.4
Due NHD27OLED_BW u8g(10, 9) HW SPI FPS: Clip=53.0 Box=19.6 @=23.8 Pix=10.6
Due NHD27OLED_2X_BW u8g(10, 9) HW SPI FPS: Clip=57.0 Box=25.3 @=31.7 Pix=18.1
Due NHD27OLED_GR u8g(10, 9) HW SPI FPS: Clip=34.1 Box=11.7 @=13.7 Pix=5.6
Due NHD27OLED_2X_GR u8g(10, 9) HW SPI FPS: Clip=38.1 Box=15.5 @=20.0 Pix=8.8
*/
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10
//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI
//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16
//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
#define SECONDS 10
uint8_t flip_color = 0;
uint8_t draw_color = 1;
void draw_set_screen(void) {
// graphic commands to redraw the complete screen should be placed here
if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
if ( flip_color == 0 )
u8g.setHiColorByRGB(0,0,0);
else
u8g.setHiColorByRGB(255,255,255);
}
else {
u8g.setColorIndex(flip_color);
}
u8g.drawBox( 0, 0, u8g.getWidth(), u8g.getHeight() );
}
void draw_clip_test(void) {
u8g_uint_t i, j, k;
char buf[3] = "AB";
k = 0;
if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
else {
u8g.setColorIndex(draw_color);
}
u8g.setFont(u8g_font_6x10);
for( i = 0; i < 6; i++ ) {
for( j = 1; j < 8; j++ ) {
u8g.drawHLine(i-3, k, j);
u8g.drawHLine(i-3+10, k, j);
u8g.drawVLine(k+20, i-3, j);
u8g.drawVLine(k+20, i-3+10, j);
k++;
}
}
u8g.drawStr(0-3, 50, buf);
u8g.drawStr180(0+3, 50, buf);
u8g.drawStr(u8g.getWidth()-3, 40, buf);
u8g.drawStr180(u8g.getWidth()+3, 40, buf);
u8g.drawStr90(u8g.getWidth()-10, 0-3, buf);
u8g.drawStr270(u8g.getWidth()-10, 3, buf);
u8g.drawStr90(u8g.getWidth()-20, u8g.getHeight()-3, buf);
u8g.drawStr270(u8g.getWidth()-20, u8g.getHeight()+3, buf);
}
void draw_char(void) {
char buf[2] = "@";
u8g_uint_t i, j;
// graphic commands to redraw the complete screen should be placed here
if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
else {
u8g.setColorIndex(draw_color);
}
u8g.setFont(u8g_font_6x10);
j = 8;
for(;;) {
i = 0;
for(;;) {
u8g.drawStr( i, j, buf);
i += 8;
if ( i > u8g.getWidth() )
break;
}
j += 8;
if ( j > u8g.getHeight() )
break;
}
}
void draw_pixel(void) {
u8g_uint_t x, y, w2, h2;
if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
else {
u8g.setColorIndex(draw_color);
}
w2 = u8g.getWidth();
h2 = u8g.getHeight();
w2 /= 2;
h2 /= 2;
for( y = 0; y < h2; y++ ) {
for( x = 0; x < w2; x++ ) {
if ( (x + y) & 1 ) {
u8g.drawPixel(x,y);
u8g.drawPixel(x,y+h2);
u8g.drawPixel(x+w2,y);
u8g.drawPixel(x+w2,y+h2);
}
}
}
}
// returns unadjusted FPS
uint16_t picture_loop_with_fps(void (*draw_fn)(void)) {
uint16_t FPS10 = 0;
uint32_t time;
time = millis() + SECONDS*1000;
// picture loop
do {
u8g.firstPage();
do {
draw_fn();
} while( u8g.nextPage() );
FPS10++;
flip_color = flip_color ^ 1;
} while( millis() < time );
return FPS10;
}
const char *convert_FPS(uint16_t fps) {
static char buf[6];
strcpy(buf, u8g_u8toa( (uint8_t)(fps/10), 3));
buf[3] = '.';
buf[4] = (fps % 10) + '0';
buf[5] = '\0';
return buf;
}
void show_result(const char *s, uint16_t fps) {
// assign default color value
if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
else {
u8g.setColorIndex(draw_color);
}
u8g.setFont(u8g_font_8x13B);
u8g.firstPage();
do {
u8g.drawStr(0,12, s);
u8g.drawStr(0,24, convert_FPS(fps));
} while( u8g.nextPage() );
}
void setup(void) {
// flip screen, if required
// u8g.setRot180();
// assign default color value
if ( u8g.getMode() == U8G_MODE_R3G3B2 )
draw_color = 255; // white
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT )
draw_color = 3; // max intensity
else if ( u8g.getMode() == U8G_MODE_BW )
draw_color = 1; // pixel on
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
}
void loop(void) {
uint16_t fps;
fps = picture_loop_with_fps(draw_clip_test);
show_result("draw clip test", fps);
delay(5000);
fps = picture_loop_with_fps(draw_set_screen);
show_result("clear screen", fps);
delay(5000);
fps = picture_loop_with_fps(draw_char);
show_result("draw @", fps);
delay(5000);
fps = picture_loop_with_fps(draw_pixel);
show_result("draw pixel", fps);
delay(5000);
}

View File

@@ -41,8 +41,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -51,9 +51,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -83,19 +84,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
void u8g_prepare(void) {
u8g.setFont(u8g_font_6x10);
@@ -143,6 +179,15 @@ void u8g_line(uint8_t a) {
u8g.drawLine(7+a*4, 10, 100, 55);
}
void u8g_triangle(uint8_t a) {
uint16_t offset = a;
u8g.drawStr( 0, 0, "drawTriangle");
u8g.drawTriangle(14,7, 45,30, 10,40);
u8g.drawTriangle(14+offset,7-offset, 45+offset,30-offset, 57+offset,10-offset);
u8g.drawTriangle(57+offset*2,10, 45+offset*2,30, 86+offset*2,53);
u8g.drawTriangle(10+offset,40+offset, 45+offset,30+offset, 86+offset,53+offset);
}
void u8g_ascii_1() {
char s[2] = " ";
uint8_t x, y;
@@ -167,6 +212,45 @@ void u8g_ascii_2() {
}
}
void u8g_extra_page(uint8_t a)
{
if ( u8g.getMode() == U8G_MODE_HICOLOR || u8g.getMode() == U8G_MODE_R3G3B2) {
/* draw background (area is 128x128) */
u8g_uint_t r, g, b;
b = a << 5;
for( g = 0; g < 64; g++ )
{
for( r = 0; r < 64; r++ )
{
u8g.setRGB(r<<2, g<<2, b );
u8g.drawPixel(g, r);
}
}
u8g.setRGB(255,255,255);
u8g.drawStr( 66, 0, "Color Page");
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT )
{
u8g.drawStr( 66, 0, "Gray Level");
u8g.setColorIndex(1);
u8g.drawBox(0, 4, 64, 32);
u8g.drawBox(70, 20, 4, 12);
u8g.setColorIndex(2);
u8g.drawBox(0+1*a, 4+1*a, 64-2*a, 32-2*a);
u8g.drawBox(74, 20, 4, 12);
u8g.setColorIndex(3);
u8g.drawBox(0+2*a, 4+2*a, 64-4*a, 32-4*a);
u8g.drawBox(78, 20, 4, 12);
}
else
{
u8g.drawStr( 0, 12, "setScale2x2");
u8g.setScale2x2();
u8g.drawStr( 0, 6+a, "setScale2x2");
u8g.undoScale();
}
}
uint8_t draw_state = 0;
@@ -178,8 +262,10 @@ void draw(void) {
case 2: u8g_r_frame(draw_state&7); break;
case 3: u8g_string(draw_state&7); break;
case 4: u8g_line(draw_state&7); break;
case 5: u8g_ascii_1(); break;
case 6: u8g_ascii_2(); break;
case 5: u8g_triangle(draw_state&7); break;
case 6: u8g_ascii_1(); break;
case 7: u8g_ascii_2(); break;
case 8: u8g_extra_page(draw_state&7); break;
}
}
@@ -188,15 +274,6 @@ void setup(void) {
// flip screen, if required
//u8g.setRot180();
// assign default color value
if ( u8g.getMode() == U8G_MODE_R3G3B2 )
u8g.setColorIndex(255); // white
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT )
u8g.setColorIndex(3); // max intensity
else if ( u8g.getMode() == U8G_MODE_BW )
u8g.setColorIndex(1); // pixel on
//u8g.setContrast(0x30);
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
@@ -212,11 +289,11 @@ void loop(void) {
// increase the state
draw_state++;
if ( draw_state >= 7*8 )
if ( draw_state >= 9*8 )
draw_state = 0;
// rebuild the picture after some delay
delay(150);
//delay(150);
}

View File

@@ -42,8 +42,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -52,9 +52,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -84,19 +85,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
void draw(void) {
@@ -107,7 +143,6 @@ void draw(void) {
}
void setup(void) {
// flip screen, if required
// u8g.setRot180();
@@ -115,12 +150,18 @@ void setup(void) {
//u8g.setHardwareBackup(u8g_backup_avr_spi);
// assign default color value
if ( u8g.getMode() == U8G_MODE_R3G3B2 )
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT )
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
else if ( u8g.getMode() == U8G_MODE_BW )
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
}
void loop(void) {
@@ -131,6 +172,6 @@ void loop(void) {
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(500);
delay(50);
}

View File

@@ -45,6 +45,9 @@
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -53,9 +56,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -85,19 +89,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
#define KEY_NONE 0

View File

@@ -42,8 +42,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -52,9 +52,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -84,19 +85,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
void draw(void) {
// graphic commands to redraw the complete screen should be placed here

View File

@@ -1,8 +1,8 @@
/*
HelloWorld.pde
Rotation.pde
"Hello World!" example code.
Example code for RotXXX functions.
>>> Before compiling: Please remove comment from the constructor of the
>>> connected graphics display (see below).
@@ -42,8 +42,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -52,9 +52,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -84,19 +85,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
uint8_t offset = 0;

View File

@@ -1,8 +1,8 @@
/*
HelloWorld.pde
Scale.pde
"Hello World!" example code.
Example code for the 2x2 scale function.
>>> Before compiling: Please remove comment from the constructor of the
>>> connected graphics display (see below).
@@ -42,8 +42,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -52,9 +52,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -84,19 +85,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
void draw(void) {

View File

@@ -42,8 +42,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -52,9 +52,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -84,19 +85,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
// graphic commands to redraw the complete screen should be placed here
void draw(void) {

View File

@@ -0,0 +1,348 @@
/*
Touch4WSetup.pde
Use this example to figure out the ranges for of the active area of a 4-wire resistive
touch panel.
>>> Before compiling: Please remove comment from the constructor of the
>>> connected graphics display (see below).
Universal 8bit Graphics Library, http://code.google.com/p/u8glib/
Copyright (c) 2012, olikraus@gmail.com
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10
//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI
//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16
//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//================================================================
// Setup 4-Wire Resistive Touch Panel
uint8_t tp_left = A3;
uint8_t tp_right = A5;
uint8_t tp_top = A4;
uint8_t tp_bottom = A2;
#define X_START 120
#define X_END 140
#define Y_START 120
#define Y_END 140
#define PULLUP_THRESHOLD 235
//================================================================
// Touch Panel Code
/* touch panel dimension */
struct tpd_struct
{
/* raw value */
uint8_t raw;
/* calibration values */
uint8_t start;
uint8_t end;
/* user values */
uint8_t range; /* result will have range fron 0..range (including the value of range) */
uint8_t result; /* output value: position [0...range] */
uint8_t is_pressed; /* output value: pressed (=1) or not pressed (=0) */
uint8_t is_update; /* will be set to 1 if result or is_pressed has been updated */
};
struct tp_struct
{
struct tpd_struct x;
struct tpd_struct y;
uint8_t is_pressed; /* combination of x.is_pressed && y.is_pressed */
uint8_t is_update;
};
struct tp_struct tp;
/* map raw value to 0...range (result) */
void tpd_map_touch_position(struct tpd_struct *d, uint8_t raw)
{
uint8_t is_pressed;
uint16_t p;
uint8_t start, end;
d->raw = raw;
start = d->start;
end = d->end;
/* check if position is within active area; store result in "is_pressed" */
is_pressed = 1;
if ( raw >= PULLUP_THRESHOLD )
{
d->result = 0;
is_pressed = 0;
}
else
{
/* update start and end */
if ( raw < start )
{
start = raw;
d->start = raw;
}
if ( raw > end )
{
end = raw;
d->end = raw;
}
}
/* store "is_pressed" in the global structure, set update flag */
if ( d->is_pressed != is_pressed )
d->is_update = 1;
d->is_pressed = is_pressed;
/* map "raw" value into target range */
if ( is_pressed != 0 )
{
p = raw;
p -= start;
p *= d->range;
end -= start;
p /= end;
if ( d->result != p )
d->is_update = 1;
d->result = p;
}
}
void tp_Init(uint8_t width, uint8_t height)
{
tp.x.start = X_START;
tp.x.end = X_END;
tp.x.range = width-1;
tp.y.start = Y_START;
tp.y.end = Y_END;
tp.y.range = height-1;
tp.is_update = 1;
}
void setTouchRawValues(uint8_t x, uint8_t y)
{
tpd_map_touch_position(&(tp.x), x);
tpd_map_touch_position(&(tp.y), y);
tp.is_pressed = tp.x.is_pressed && tp.y.is_pressed;
if ( tp.x.is_update || tp.y.is_update )
tp.is_update = 1;
}
uint8_t getTouchPos(uint8_t hiPin, uint8_t lowPin, uint8_t sensePin, uint8_t dcPin)
{
uint8_t val;
pinMode(dcPin, INPUT);
pinMode(sensePin, INPUT_PULLUP);
pinMode(hiPin, OUTPUT);
pinMode(lowPin, OUTPUT);
digitalWrite(hiPin, HIGH);
digitalWrite(lowPin, LOW);
delay(10);
val = analogRead(sensePin) >> 2;
pinMode(hiPin, INPUT);
pinMode(lowPin, INPUT);
delay(10);
return val;
}
void updateTouchPanel(void)
{
uint8_t tp_raw_x;
uint8_t tp_raw_y;
tp_raw_x = getTouchPos(tp_right, tp_left, tp_bottom, tp_top);
tp_raw_y = getTouchPos(tp_top, tp_bottom, tp_left, tp_right);
setTouchRawValues(tp_raw_x, tp_raw_y);
}
//================================================================
// graphics output and picture loop
void center(u8g_uint_t y, const char *str)
{
u8g_uint_t x;
x = u8g.getWidth();
x -= u8g.getStrWidth(str);
x /= 2;
u8g.drawStr(x, y, str);
}
void draw(void) {
u8g.setFont(u8g_font_6x10);
center( 10, "Touch Panel Setup");
u8g.setPrintPos(0, 20); u8g.print("x_start=");u8g.print((int)tp.x.start);u8g.print(" x_end=");u8g.print((int)tp.x.end);
u8g.setPrintPos(0, 30); u8g.print("y_start=");u8g.print((int)tp.y.start);u8g.print(" y_end=");u8g.print((int)tp.y.end);
u8g.setPrintPos(0, 40); u8g.print("x=");u8g.print((int)tp.x.raw);
u8g.setPrintPos(0, 50); u8g.print("y=");u8g.print((int)tp.y.raw);
}
void setup(void) {
// flip screen, if required
// u8g.setRot180();
u8g.setCursorFont(u8g_font_cursor);
u8g.setCursorStyle(32);
tp_Init(u8g.getWidth(), u8g.getHeight());
tp.is_update = 1;
}
void loop(void) {
// update touch panel and handle return values
updateTouchPanel();
if ( tp.is_pressed != 0 )
u8g.enableCursor();
else
u8g.disableCursor();
u8g.setCursorPos(tp.x.result, u8g.getHeight()-tp.y.result-1);
// picture loop
if ( tp.is_update != 0 )
{
tp.is_update = 0;
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
}
}

View File

@@ -0,0 +1,335 @@
/*
Touch4WTest.pde
>>> Before compiling: Please remove comment from the constructor of the
>>> connected graphics display (see below).
Universal 8bit Graphics Library, http://code.google.com/p/u8glib/
Copyright (c) 2012, olikraus@gmail.com
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10
//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI
//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16
//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//================================================================
// Setup 4-Wire Resistive Touch Panel
uint8_t tp_left = A3;
uint8_t tp_right = A5;
uint8_t tp_top = A4;
uint8_t tp_bottom = A2;
/* Run "Touch4WSetup" and enter values here */
#define X_START 64
#define X_END 200
#define Y_START 105
#define Y_END 160
//================================================================
// Touch Panel Code
/* touch panel dimension */
struct tpd_struct
{
/* raw value */
uint8_t raw;
/* calibration values */
uint8_t start;
uint8_t end;
/* user values */
uint8_t range; /* result will have range fron 0..range (including the value of range) */
uint8_t result; /* output value: position [0...range] */
uint8_t is_pressed; /* output value: pressed (=1) or not pressed (=0) */
uint8_t is_update; /* will be set to 1 if result or is_pressed has been updated */
};
struct tp_struct
{
struct tpd_struct x;
struct tpd_struct y;
uint8_t is_pressed; /* combination of x.is_pressed && y.is_pressed */
uint8_t is_update;
};
struct tp_struct tp;
/* map raw value to 0...range (result) */
void tpd_map_touch_position(struct tpd_struct *d, uint8_t raw)
{
uint8_t is_pressed;
uint16_t p;
uint8_t start, end;
d->raw = raw;
start = d->start;
end = d->end;
/* check if position is within active area; store result in "is_pressed" */
is_pressed = 1;
if ( raw < start )
{
d->result = 0;
is_pressed = 0;
}
if ( raw >= end )
{
d->result = d->range;
is_pressed = 0;
}
/* store "is_pressed" in the global structure, set update flag */
if ( d->is_pressed != is_pressed )
d->is_update = 1;
d->is_pressed = is_pressed;
/* map "raw" value into target range */
if ( is_pressed != 0 )
{
p = raw;
p -= start;
p *= d->range;
end -= start;
p /= end;
if ( d->result != p )
d->is_update = 1;
d->result = p;
}
}
void tp_Init(uint8_t width, uint8_t height)
{
tp.x.start = X_START;
tp.x.end = X_END;
tp.x.range = width-1;
tp.y.start = Y_START;
tp.y.end = Y_END;
tp.y.range = height-1;
tp.is_update = 1;
}
void setTouchRawValues(uint8_t x, uint8_t y)
{
tpd_map_touch_position(&(tp.x), x);
tpd_map_touch_position(&(tp.y), y);
tp.is_pressed = tp.x.is_pressed && tp.y.is_pressed;
if ( tp.x.is_update || tp.y.is_update )
tp.is_update = 1;
}
uint8_t getTouchPos(uint8_t hiPin, uint8_t lowPin, uint8_t sensePin, uint8_t dcPin)
{
uint8_t val;
pinMode(dcPin, INPUT);
pinMode(sensePin, INPUT_PULLUP);
pinMode(hiPin, OUTPUT);
pinMode(lowPin, OUTPUT);
digitalWrite(hiPin, HIGH);
digitalWrite(lowPin, LOW);
delay(10);
val = analogRead(sensePin) >> 2;
pinMode(hiPin, INPUT);
pinMode(lowPin, INPUT);
delay(10);
return val;
}
void updateTouchPanel(void)
{
uint8_t tp_raw_x;
uint8_t tp_raw_y;
tp_raw_x = getTouchPos(tp_right, tp_left, tp_bottom, tp_top);
tp_raw_y = getTouchPos(tp_top, tp_bottom, tp_left, tp_right);
setTouchRawValues(tp_raw_x, tp_raw_y);
}
//================================================================
// graphics output and picture loop
void center(u8g_uint_t y, const char *str)
{
u8g_uint_t x;
x = u8g.getWidth();
x -= u8g.getStrWidth(str);
x /= 2;
u8g.drawStr(x, y, str);
}
void draw(void) {
u8g.setFont(u8g_font_6x10);
center( 10, "Touch Panel Test");
if ( tp.is_pressed != 0 )
{
u8g.setPrintPos(0, 20); u8g.print("x=");u8g.print((int)tp.x.result);
u8g.setPrintPos(0, 30); u8g.print("y=");u8g.print((int)(u8g.getHeight()-tp.y.result-1));
//u8g.setPrintPos(0, 40); u8g.print("x: ");u8g.print((int)tp.x.start);u8g.print("..");u8g.print((int)tp.x.end);
//u8g.setPrintPos(0, 50); u8g.print("y: ");u8g.print((int)tp.y.start);u8g.print("..");u8g.print((int)tp.y.end);
}
}
void setup(void) {
// flip screen, if required
// u8g.setRot180();
u8g.setCursorFont(u8g_font_cursor);
u8g.setCursorStyle(32);
tp_Init(u8g.getWidth(), u8g.getHeight());
}
void loop(void) {
// update touch panel and handle return values
updateTouchPanel();
if ( tp.is_pressed != 0 )
u8g.enableCursor();
else
u8g.disableCursor();
u8g.setCursorPos(tp.x.result, u8g.getHeight()-tp.y.result-1);
// picture loop
if ( tp.is_update != 0 ) {
tp.is_update = 0;
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
}
}

View File

@@ -42,8 +42,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -52,9 +52,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -84,20 +85,56 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//#define MINI_LOGO
void drawColorBox(void)
{
@@ -117,19 +154,32 @@ void drawColorBox(void)
void drawLogo(uint8_t d)
{
u8g.setFont(u8g_font_gdr25r);
u8g.drawStr(0+d, 30+d, "U");
u8g.setFont(u8g_font_gdr30n);
u8g.drawStr90(23+d,10+d,"8");
u8g.setFont(u8g_font_gdr25r);
u8g.drawStr(53+d,30+d,"g");
u8g.drawHLine(2+d, 35+d, 47);
u8g.drawVLine(45+d, 32+d, 12);
#ifdef MINI_LOGO
u8g.setFont(u8g_font_gdr17r);
u8g.drawStr(0+d, 22+d, "U");
u8g.setFont(u8g_font_gdr20n);
u8g.drawStr90(17+d,8+d,"8");
u8g.setFont(u8g_font_gdr17r);
u8g.drawStr(39+d,22+d,"g");
u8g.drawHLine(2+d, 25+d, 34);
u8g.drawVLine(32+d, 22+d, 12);
#else
u8g.setFont(u8g_font_gdr25r);
u8g.drawStr(0+d, 30+d, "U");
u8g.setFont(u8g_font_gdr30n);
u8g.drawStr90(23+d,10+d,"8");
u8g.setFont(u8g_font_gdr25r);
u8g.drawStr(53+d,30+d,"g");
u8g.drawHLine(2+d, 35+d, 47);
u8g.drawVLine(45+d, 32+d, 12);
#endif
}
void drawURL(void)
{
#ifndef MINI_LOGO
u8g.setFont(u8g_font_4x6);
if ( u8g.getHeight() < 59 )
{
@@ -140,6 +190,7 @@ void drawURL(void)
{
u8g.drawStr(1,54,"code.google.com/p/u8glib");
}
#endif
}

View File

@@ -42,8 +42,8 @@
#include "U8glib.h"
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
// devices with all constructor calls is here: http://code.google.com/p/u8glib/wiki/device
//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
@@ -52,9 +52,10 @@
//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGS102 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_DOGM128_2X u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16
//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
@@ -84,19 +85,54 @@
//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16
//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C
//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board)
//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16
//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4
//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx)
//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED)
#define u8g_logo_width 38
#define u8g_logo_height 24

View File

@@ -78,3 +78,4 @@ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -72,7 +72,7 @@
- Castling: Need to check for fields under attack
--> done
- Check for WIN / LOSE situation, perhaps call ce_Eval() once on the top-level board setup
- Check for WIN / LOOSE situation, perhaps call ce_Eval() once on the top-level board setup
just after the real move
- cleanup cu_Move
--> almost done

File diff suppressed because it is too large Load Diff

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