You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
(5) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
|
Feb
(6) |
Mar
(41) |
Apr
(23) |
May
(11) |
Jun
(2) |
Jul
|
Aug
|
Sep
(9) |
Oct
(2) |
Nov
(1) |
Dec
(1) |
2008 |
Jan
(6) |
Feb
(1) |
Mar
(23) |
Apr
(18) |
May
(21) |
Jun
(13) |
Jul
(34) |
Aug
(5) |
Sep
(1) |
Oct
(4) |
Nov
|
Dec
(4) |
2009 |
Jan
|
Feb
(5) |
Mar
(5) |
Apr
(10) |
May
(1) |
Jun
(11) |
Jul
(1) |
Aug
|
Sep
|
Oct
(2) |
Nov
(3) |
Dec
(13) |
2010 |
Jan
(10) |
Feb
(4) |
Mar
(28) |
Apr
(3) |
May
(38) |
Jun
(22) |
Jul
(92) |
Aug
(154) |
Sep
(218) |
Oct
(45) |
Nov
(20) |
Dec
(1) |
2011 |
Jan
(33) |
Feb
(15) |
Mar
(32) |
Apr
(33) |
May
(48) |
Jun
(35) |
Jul
(7) |
Aug
|
Sep
(11) |
Oct
(5) |
Nov
|
Dec
(7) |
2012 |
Jan
(56) |
Feb
(11) |
Mar
(6) |
Apr
|
May
(128) |
Jun
(59) |
Jul
(21) |
Aug
(16) |
Sep
(24) |
Oct
(39) |
Nov
(12) |
Dec
(12) |
2013 |
Jan
(14) |
Feb
(61) |
Mar
(97) |
Apr
(46) |
May
(13) |
Jun
(23) |
Jul
(12) |
Aug
(25) |
Sep
(9) |
Oct
(81) |
Nov
(73) |
Dec
(45) |
2014 |
Jan
(36) |
Feb
(57) |
Mar
(20) |
Apr
(41) |
May
(43) |
Jun
(11) |
Jul
(14) |
Aug
(32) |
Sep
(9) |
Oct
(27) |
Nov
(21) |
Dec
(6) |
2015 |
Jan
(14) |
Feb
(23) |
Mar
(1) |
Apr
(19) |
May
(40) |
Jun
(11) |
Jul
(1) |
Aug
(2) |
Sep
(14) |
Oct
(10) |
Nov
(9) |
Dec
(13) |
2016 |
Jan
(4) |
Feb
(3) |
Mar
(7) |
Apr
|
May
(4) |
Jun
(13) |
Jul
(8) |
Aug
(3) |
Sep
(4) |
Oct
(1) |
Nov
|
Dec
|
2017 |
Jan
(6) |
Feb
(1) |
Mar
(1) |
Apr
(7) |
May
(10) |
Jun
(5) |
Jul
(7) |
Aug
(9) |
Sep
|
Oct
(1) |
Nov
(5) |
Dec
|
2018 |
Jan
|
Feb
|
Mar
(5) |
Apr
|
May
|
Jun
(3) |
Jul
(6) |
Aug
|
Sep
(2) |
Oct
(54) |
Nov
(47) |
Dec
(53) |
2019 |
Jan
(23) |
Feb
(24) |
Mar
(19) |
Apr
(15) |
May
(5) |
Jun
(34) |
Jul
(9) |
Aug
(9) |
Sep
(3) |
Oct
(2) |
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
(7) |
Apr
(7) |
May
(5) |
Jun
(15) |
Jul
(22) |
Aug
(28) |
Sep
(13) |
Oct
(9) |
Nov
(17) |
Dec
(13) |
2021 |
Jan
(5) |
Feb
(1) |
Mar
(1) |
Apr
(9) |
May
(21) |
Jun
(9) |
Jul
|
Aug
(6) |
Sep
(16) |
Oct
|
Nov
(1) |
Dec
(6) |
2022 |
Jan
|
Feb
|
Mar
|
Apr
(7) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(11) |
Sep
(21) |
Oct
(5) |
Nov
(1) |
Dec
(1) |
2024 |
Jan
(1) |
Feb
(4) |
Mar
|
Apr
(7) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2025 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(5) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Erich W. <ew....@na...> - 2012-07-08 17:52:33
|
Hello Keith! On 07/05/2012 06:29 PM, Keith Amidon wrote: > > Matthias> I collect the changes in the repository at > Matthias> http://amforth.svn.sourceforge.net/viewvc/amforth/trunk/tools/amforth-term.py?view=log > I finally got around to try out the new upload tool. The result is nothing short of spectacular! Ctrl-D to exit the thing! Cool! Nostalgia, sort of, I know :-) Command history! Bash for controllers, sort of :-))) This tool is going to be very useful for the class I give once in a while. Thank you for writing and publishing! -- I found a minor thing that puzzles me: |I=mcudef |I=using device.py for atmega32 |F=/home/ew/Forth/atmega/46_trunk-2/lib/bitnames.frt |C| 1|\ V 1.3 02.11.2007 |W| 2| |C| 3|\ Code: Matthias Trute |C| 4|\ Text: M.Kalus |W| 5| |C| 6|\ A named port pin puts a bitmask on stack, wherin the set bit indicates which |C| 7|\ bit of the port register corresponds to the pin. |C| 8|\ And then puts the address of its port on stack too. |W| 9| |C| 10|\ Use it this way: |C| 11|\ PORTD 7 portpin: PD.7 ( define portD pin #7) |E| 12|\ PD.7 high ( turn portD pin #7 on, i.e. set it high-level) |E=Illegal nested comment make: *** [marker] Error 1 Illegal nested comment? Not quite. "\ " starts a comment, which extends to the end of line, no questions asked. This is probably simple to fix, but I have not yet looked into the code. Cheers, Erich |
From: Matthias T. <mt...@we...> - 2012-07-05 17:56:43
|
> > Actually, my motivation was a lot simpler. I wasn't sure if the regular > expression I use to match an error being indicated by the amforth > interpreter really covered all cases. That expression (without the > delimiting double quotes included below) is: > > " \?\? -\d+ \d+ \r\n> $" > > Is it correct? Yes it is. > I spent some time looking at the main interpreter trying > to verify it but I don't read assembly and forth fluently enough yet to > be sure without investing more time than I had available. It a bit difficult indeed. The messages get printed by the words in the prompts.asm file, coordinated in quit.asm. The first " ?? " comes from PROMPTERROR which prints the two numbers too. After that quit calls the PROMPTRDY which generates the line feed and the "> ". The two numbers are printed using . (DOT) which makes it possible to get both positive and negative numbers. The not-so-obvious code in quit makes sure, that the first number is always negative and the second number is always positive. (THROW Code resp the value of >IN). That means that a THROW with a positive code number does not print anything, THROWs with a negative number trigger the error prompt as described above. The second consequence is that the size of the input buffer into which >IN points should never exceed 32KB. > If the above regular expression will catch all errors explicitly > indicated by the interpreter, then I think it would be reasonable to > change the default behavior to *not* generate an error on output as it > *will still generate an error* if the error regular expression matches. As long as nobody changes QUIT and the prompt words, the regex will work. > Matthias> http://amforth.svn.sourceforge.net/viewvc/amforth/trunk/tools/amforth-term.py?view=log > > Wonderful. I don't really see any need for this to live outside the > amforth repository, so if I get a chance to make further improvements > I'll prepare patches against the code there. Great. Matthias |
From: Keith A. <ca...@pi...> - 2012-07-05 16:29:21
|
{-- Tue, 03 Jul 2012 20:02:55 +0200: Matthias <mt...@we...> wrote: --} Matthias> Editing the source files builds a rather high barrier for Matthias> your excellent tool. For me your ideas sound like Matthias> introducing concepts like Design By Contract Matthias> (http://en.wikipedia.org/wiki/Design_by_contract). Something Matthias> the Forthers do not (yet?) think about. Actually, my motivation was a lot simpler. I wasn't sure if the regular expression I use to match an error being indicated by the amforth interpreter really covered all cases. That expression (without the delimiting double quotes included below) is: " \?\? -\d+ \d+ \r\n> $" Is it correct? I spent some time looking at the main interpreter trying to verify it but I don't read assembly and forth fluently enough yet to be sure without investing more time than I had available. If the above regular expression will catch all errors explicitly indicated by the interpreter, then I think it would be reasonable to change the default behavior to *not* generate an error on output as it *will still generate an error* if the error regular expression matches. This won't cause an upload of a tester.frt based test file to fail on the first test that has an error which I really want for the class in which we're using this, but I can easily get that behavior by adding the comment at the top of the file for those cases. Matthias> I collect the changes in the repository at Matthias> http://amforth.svn.sourceforge.net/viewvc/amforth/trunk/tools/amforth-term.py?view=log Wonderful. I don't really see any need for this to live outside the amforth repository, so if I get a chance to make further improvements I'll prepare patches against the code there. --- Keith |
From: Matthias T. <mt...@we...> - 2012-07-03 18:03:08
|
Hi Keith, > Ah, I think this is working as I intended but the behavior may be > somewhat surprising to others, I'm not sure. I made the assumption > that well behaved upload files never generate output because in my > use cases for the class I was helping develop they consisted of one > of two types of files: > > 1) definitions of words 2) tests written using the tester.frt package > from the library > > In both these cases, output generally indicated a problem Not necessarily. I've seen quite a lot forth code that prints some messages with .( text to indicate some progress ) that is definitly not an error message. Same with the output of the tester. > My preferred methods would be to modify the file with comments that > direct the script to treat specific lines generating output more > appropriately. I'm going to show some solutions based on your test > file but I don't have access to my microcontroller to test these > right now so they may not be completely correct. Editing the source files builds a rather high barrier for your excellent tool. For me your ideas sound like introducing concepts like Design By Contract (http://en.wikipedia.org/wiki/Design_by_contract). Something the Forthers do not (yet?) think about. > Matthias> My next topic on the wishlist is the inclusion of the > Matthias> environment variable AMFORTH_LIB for a list of directories > Matthias> in which the tool looks for a given file. > > That would be really handy as well. I unfortunately don't have time > to work on it right now but if you don't get to it before I get time > I'll take a crack at it when I do. I collect the changes in the repository at http://amforth.svn.sourceforge.net/viewvc/amforth/trunk/tools/amforth-term.py?view=log Matthias |
From: pito <pi...@vo...> - 2012-07-03 18:02:25
|
So - to summarise my experience with this nice tool under WinXP: 1. I installed python 2.7 long time back (win installer probably) 2. I had to install "pyreadline-1.7.1.win32.exe" in order to get the readline imported, and maybe "pyserial" too.. 3. I replaced /dev/.. to COM6 (my BT module) and speed to 115k def __init__(self, serial_port="COM6", speed=115200): 4. I added (winXP Environment Variables) the "EDITOR" variable with "C:\WinAVR\pn\pn.exe" (my favorite editor :) 5. as my editor needs this in order to open and jump to the ie. line 3 C:\WinAVR\pn\pn.exe --line 3 filename I added to the edit_file (in the script) ... elif exename == "pn.exe": cmd = [self.editor, "--line", str(lineno), filename ] .. 6. double clicking on amforth-term.py icon opens the script and connects to the amforth. P. |
From: pito <pi...@vo...> - 2012-07-03 17:26:00
|
.. edit at error line - it does not start automaticaly. I have to open the editor with #edit as the user guide says :) p. |
From: pito <pi...@vo...> - 2012-07-03 16:31:12
|
Keith, > 2) The feature of opening the editor to the line > where an upload error > occurred only works for editors for which the > script knows the > appropriate command line syntax. the PN editor opens and jumps to the line with following command (ie to the line 3) C:\WinAVR\pn\pn.exe --line 3 filename So I added to the edit_file ... elif exename == "pn.exe": cmd = [self.editor, " --line", " " + str(lineno), filename ] ... however it does not even attempts to open the editor when error - ie (ATmega1284P)> #include pytest.frt |D=#include pytest.frt |I=mcudef |I=using device.py for atmega1284p |F=C:\MyCode\AVR\WINAVR\projects\AMFORTH\new_amforth\trunk\tools\pytest.frt ||S| 1|-pytest |S| 2|marker -pytest |S| 3|ggg |E=ggg ?? -13 3 Error: Error in line sent (ATmega1284P)> Any hint? Thanks, p. |
From: pito <pi...@vo...> - 2012-07-03 15:51:55
|
Keith > version of python didn't > come with the required readline support. I am using python 2.7, installed long time back. No idea where it comes from :) > 1) Pass an additional option to the script, for > example > > "--editor=C:\WinAVR\pn\pn.exe" Yes, it works, I did a .bat file where I start your script with above option. #edit pytest.frt opens the PN with the file (file located in the same dir as your script). Closing the PN returns to the prompt. (ATmega1284P)> #edit pytest.frt |D=#edit pytest.frt (ATmega1284P)> #include pytest.frt |D=#include pytest.frt |I=mcudef |I=using device.py for atmega1284p |F=C:\MyCode\AVR\WINAVR\projects\AMFORTH\new_amforth\trunk\tools\pytest.frt ||S| 1|-pytest |E=-pytest ?? -13 7 Error: Error in line sent (ATmega1284P)> #include pytest.frt |D=#include pytest.frt |I=mcudef |I=using device.py for atmega1284p |F=C:\MyCode\AVR\WINAVR\projects\AMFORTH\new_amforth\trunk\tools\pytest.frt ||W| 1| |S| 2|marker -pytest |S| 3|: foo 1.2223e-4 555.322e2 f* fs. ; (ATmega1284P)> foo 6.78770E0 ok (ATmega1284P)> #include pytest.frt |D=#include pytest.frt |I=mcudef |I=using device.py for atmega1284p |F=C:\MyCode\AVR\WINAVR\projects\AMFORTH\new_amforth\trunk\tools\pytest.frt ||S| 1|-pytest |S| 2|marker -pytest |S| 3|: foo 1.2223e-4 555.322e2 f* fs. ; (ATmega1284P)> Now I have to tackle the automatic opening the PN when error.. Thanks, P. |
From: Keith A. <ca...@pi...> - 2012-07-03 15:11:34
|
{-- Tue, 03 Jul 2012 11:23:56 +0200 (CEST): pito <pi...@vo...> wrote: --} pito> Hi Keith, I'm trying to run your script under winXP. I had to pito> install "pyreadline-1.7.1.win32.exe" in order to get imported pito> the readline. Interesting. I wasn't aware that the Windows version of python didn't come with the required readline support. Are you using the python from python.org or some other one? In any case, I did all my development under Linux so I'm very happy to know it wasn't too difficult to get it running under Windows. pito> Also I changed the /dev/.. to COM6 (my BT module) pito> and speed to 115k. Yup, that makes sense. pito> Let me ask you following, pls - how to pito> specify an Editor into the script - ie. my C:\WinAVR\pn\pn.exe pito> (Programmers Notepad)? pito> |I=Entering amforth interactive interpreter pito> |I=using device.py for atmega1284p (ATmega1284P) pito> > 100 100 + . 200 ok pito> (ATmega1284P)> #edit myfrt pito> |D=#edit myfrt Error: No editor specified. Use --editor or EDITOR environment variable pito> (ATmega1284P)> As the error says, you can either: 1) Pass an additional option to the script, for example "--editor=C:\WinAVR\pn\pn.exe" 2) Set an environment variable named EDITOR to the path to your editor. In Windows I believe that environment variables are set through a system control panel somewhere but I haven't used recent versions of Windows very much so I'm not sure if Microsoft has made changes to that. Two other things to be aware of: 1) I'm not sure whether the path handling for calling the editor executable properly handles drive letters on Windows or not. Please let us know if you try it out. I don't think it should be too difficult to fix if it doesn't work properly. 2) The feature of opening the editor to the line where an upload error occurred only works for editors for which the script knows the appropriate command line syntax. Otherwise it just attempts to open the file without moving to the line of the error. The editors it knows about currently are: vi, vim, emacs, emacsclient, nano, and gedit. You might want to add your editor. The code is all in the "edit_file()" method. --- Keith |
From: pito <pi...@vo...> - 2012-07-03 09:24:04
|
Hi Keith, I'm trying to run your script under winXP. I had to install "pyreadline-1.7.1.win32.exe" in order to get imported the readline. Also I changed the /dev/.. to COM6 (my BT module) and speed to 115k. Let me ask you following, pls - how to specify an Editor into the script - ie. my C:\WinAVR\pn\pn.exe (Programmers Notepad)? |I=Entering amforth interactive interpreter |I=using device.py for atmega1284p (ATmega1284P)> 100 100 + . 200 ok (ATmega1284P)> #edit myfrt |D=#edit myfrt Error: No editor specified. Use --editor or EDITOR environment variable (ATmega1284P)> thnks, pito ----- PŮVODNÍ ZPRÁVA ----- Od: "Keith Amidon" <ca...@pi...> Komu: "Matthias Trute" <mt...@we...> Předmět: Re: [Amforth] New forth interaction script Datum: 3.7.2012 - 3:18:51 > {-- Sat, 30 Jun 2012 15:54:09 +0200: Matthias > <mt...@we...> wrote: --} > >> Could you reply with an example showing the > >> exact command line > >> >> options you are giving and the output you get > >> when it does not > >> >> work. > > Matthias> <keith:... output omitted ...> > Matthias> With the --no-error-on-output option > everything works well. > > Ah, I think this is working as I intended but the > behavior may be > somewhat surprising to others, I'm not sure. I > made the assumption that > well behaved upload files never generate output > because in my use cases > for the class I was helping develop they consisted > of one of two types > of files: > > 1) definitions of words > 2) tests written using the tester.frt package from > the library > > In both these cases, output generally indicated a > problem and I wanted > to flag problems as quickly as possible so the > kids didn't get confused > about the source of the error. The current > version of the script > supports a couple of different ways to handle this > situation. The > --no-error-on-output command line option is one. > That is my least > preferred option, which is part of why I gave it > such a long option > name. > > My preferred methods would be to modify the file > with comments that > direct the script to treat specific lines > generating output more > appropriately. I'm going to show some solutions > based on your test file > but I don't have access to my microcontroller to > test these right now so > they may not be completely correct. > > The brute force solution is to ignore all output > for the entire file and > all the files it includes through #include > directives. This would be > done by making the following change to the file: > > \ this is a test > \ #error-on-output no > ver 1000 ms cr > 1000 ms > ver cr ver > 1000 ms > words > 1000 ms > 1 2 + . > 1000 ms > > This would be the solution to use if you have an > existing file or set of > files that you know generate a lot of output. > > There are two more refined approaches, using the > "#expect-output-next" > directive. The first is to use this directive > without any arguments > before a line that will generate output. This > will allow any output > from that line. In your test file: > > \ this is a test > \ #expect-output-next > ver 1000 ms cr > 1000 ms > \ #expect-output-next > ver cr ver > 1000 ms > \ #expect-output-next > words > 1000 ms > \ #expect-output-next > 1 2 + . > 1000 ms > > You can also match the output more exactly by > specifying a regular > expression to the "#expect-output-next" directive > which will cause an > error if the output does not match that regular > expression. The regular > expression syntax is that expected by the python > "re" module. This can > be useful for writing host-based test cases for > words that generate > serial output. In your test file: > > \ this is a test > \ #expect-output-next amforth 4.9 ATmega1280 > ver 1000 ms cr > 1000 ms > \ #expect-output-next amforth 4.9 ATmega1280 > ver cr ver > 1000 ms > \ #expect-output-next > words > 1000 ms > \ #expect-output-next 3 > 1 2 + . > 1000 ms > > Notice for example that this would verify that "1 > 2 + ." resulted in 3 > being printed. It should pass. If you change the > "#expect-output-next > 3" comment to "#expect-output-next 4" it should > cause an error. > > I didn't try to write the regular expression to > correctly match the > output of "words" since that may vary and because > it would be huge. ;-) > > Note that the implementation that captures regular > expression that is > used to check the output in #expect-output-next > may have a few quirks > due to the way that whitespace is > stripped/compressed, etc. It's been > working for me but I haven't tried to explore the > ugly corner cases. > > Matthias> Yeah, I tried it myself and it's really > easy. It now talks > Matthias> with the controller and tries to detect > its name to load the > Matthias> device.py file from the > core/devices/<controller> directory. > Matthias> This gives me the huge number of > register names and other > Matthias> specific constants without filling up > the dictionary on the > Matthias> controller. > > Neat! I didn't have a chance to look at the > implementation closely, but > from a brief glance it looks great and like it > would be very useful. > > Matthias> My next topic on the wishlist is the > inclusion of the > Matthias> environment variable AMFORTH_LIB for a > list of directories > Matthias> in which the tool looks for a given > file. > > That would be really handy as well. I > unfortunately don't have time to > work on it right now but if you don't get to it > before I get time I'll > take a crack at it when I do. > > --- Keith > > ------------------------------------------------------------------------------ > > Live Security Virtual Conference > Exclusive live event will cover all the ways > today's security and > threat landscape has changed and how IT managers > can respond. Discussions > will include endpoint security, mobile security > and the latest in malware > threats. > http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Amforth-devel mailing list for > http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
From: Keith A. <ca...@pi...> - 2012-07-03 01:19:01
|
{-- Sat, 30 Jun 2012 15:54:09 +0200: Matthias <mt...@we...> wrote: --} >> Could you reply with an example showing the exact command line >> options you are giving and the output you get when it does not >> work. Matthias> <keith:... output omitted ...> Matthias> With the --no-error-on-output option everything works well. Ah, I think this is working as I intended but the behavior may be somewhat surprising to others, I'm not sure. I made the assumption that well behaved upload files never generate output because in my use cases for the class I was helping develop they consisted of one of two types of files: 1) definitions of words 2) tests written using the tester.frt package from the library In both these cases, output generally indicated a problem and I wanted to flag problems as quickly as possible so the kids didn't get confused about the source of the error. The current version of the script supports a couple of different ways to handle this situation. The --no-error-on-output command line option is one. That is my least preferred option, which is part of why I gave it such a long option name. My preferred methods would be to modify the file with comments that direct the script to treat specific lines generating output more appropriately. I'm going to show some solutions based on your test file but I don't have access to my microcontroller to test these right now so they may not be completely correct. The brute force solution is to ignore all output for the entire file and all the files it includes through #include directives. This would be done by making the following change to the file: \ this is a test \ #error-on-output no ver 1000 ms cr 1000 ms ver cr ver 1000 ms words 1000 ms 1 2 + . 1000 ms This would be the solution to use if you have an existing file or set of files that you know generate a lot of output. There are two more refined approaches, using the "#expect-output-next" directive. The first is to use this directive without any arguments before a line that will generate output. This will allow any output from that line. In your test file: \ this is a test \ #expect-output-next ver 1000 ms cr 1000 ms \ #expect-output-next ver cr ver 1000 ms \ #expect-output-next words 1000 ms \ #expect-output-next 1 2 + . 1000 ms You can also match the output more exactly by specifying a regular expression to the "#expect-output-next" directive which will cause an error if the output does not match that regular expression. The regular expression syntax is that expected by the python "re" module. This can be useful for writing host-based test cases for words that generate serial output. In your test file: \ this is a test \ #expect-output-next amforth 4.9 ATmega1280 ver 1000 ms cr 1000 ms \ #expect-output-next amforth 4.9 ATmega1280 ver cr ver 1000 ms \ #expect-output-next words 1000 ms \ #expect-output-next 3 1 2 + . 1000 ms Notice for example that this would verify that "1 2 + ." resulted in 3 being printed. It should pass. If you change the "#expect-output-next 3" comment to "#expect-output-next 4" it should cause an error. I didn't try to write the regular expression to correctly match the output of "words" since that may vary and because it would be huge. ;-) Note that the implementation that captures regular expression that is used to check the output in #expect-output-next may have a few quirks due to the way that whitespace is stripped/compressed, etc. It's been working for me but I haven't tried to explore the ugly corner cases. Matthias> Yeah, I tried it myself and it's really easy. It now talks Matthias> with the controller and tries to detect its name to load the Matthias> device.py file from the core/devices/<controller> directory. Matthias> This gives me the huge number of register names and other Matthias> specific constants without filling up the dictionary on the Matthias> controller. Neat! I didn't have a chance to look at the implementation closely, but from a brief glance it looks great and like it would be very useful. Matthias> My next topic on the wishlist is the inclusion of the Matthias> environment variable AMFORTH_LIB for a list of directories Matthias> in which the tool looks for a given file. That would be really handy as well. I unfortunately don't have time to work on it right now but if you don't get to it before I get time I'll take a crack at it when I do. --- Keith |
From: Matthias T. <mt...@we...> - 2012-06-30 13:54:19
|
hi Keith, > Could you reply with an example showing the exact command line options > you are giving and the output you get when it does not work. mt@ayla:amforth/tools$ ./amforth-term.py -p /dev/ttyUSB2 ./test.frt --debug |a( )\n |s( )\n->\r\n|\n-> ok\r\n| |r( )> \r\n ok |F=mcudef |a( )dp . |s( )d->\r\n> d|p->p| -> |.->.|\n->\r\n| |r( )3569 ok |a( )s" cpu" environment search-wordlist drop execute itype |s( )s->\r\n> s|"->"| -> |c->c|p->p|u->u|"->"| -> |e->e|n->n|v->v|i->i|r->r|o->o|n->n|m->m|e->e|n->n|t->t| -> |s->s|e->e|a->a|r->r|c->c|h->h|-->-|w->w|o->o|r->r|d->d|l->l|i->i|s->s|t->t| -> |d->d|r->r|o->o|p->p| -> |e->e|x->x|e->e|c->c|u->u|t->t|e->e| -> |i->i|t->t|y->y|p->p|e->e|\n->\r\n| |r( )ATmega1280 ok failed using device.py for atmega1280 .. continuing |F=/..../amforth/tools/test.frt |C| 1|\ this is a test |W| 2| |a( )ver 1000 ms cr |s( )v->\r\n> v|e->e|r->r| -> |1->1|0->0|0->0|0->0| -> |m->m|s->s| -> |c->c|r->r|\n->\r\n| |r( )amforth 4.9 ATmega1280\r\n ok |S| 3|ver 1000 ms cr |O| 3|amforth 4.9 ATmega1280 |E| 3|Unexpected output after line. To allow, specify --no-error-on-output. mt@ayla:amforth/tools$ cat test.frt \ this is a test ver 1000 ms cr 1000 ms ver cr ver 1000 ms words 1000 ms 1 2 + . 1000 ms mt@ayla:amforth/tools$ With the --no-error-on-output option everything works well. > Thanks. What amazed me was how easy it was to implement some of those > features leveraging the Python standard library modules. It was really > neat when I saw it all coming together. :-) Yeah, I tried it myself and it's really easy. It now talks with the controller and tries to detect its name to load the device.py file from the core/devices/<controller> directory. This gives me the huge number of register names and other specific constants without filling up the dictionary on the controller. My next topic on the wishlist is the inclusion of the environment variable AMFORTH_LIB for a list of directories in which the tool looks for a given file. Matthias |
From: Keith A. <ca...@pi...> - 2012-06-29 19:45:11
|
{-- Fri, 29 Jun 2012 19:38:03 +0200: Matthias <mt...@we...> wrote: --} Matthias> short: its a great tool, by far the best I know. I very much Matthias> prefer it over my own upload script now :) Thanks! I'm really glad to hear you like it. Matthias> I have sometimes problems to get it starting, the option Matthias> ..no-error-on-output solves the problem. I did not dig Matthias> deeper into the causes however, probably the problem sits at Matthias> the keyboard and not in the CPU(s) ;) Could you reply with an example showing the exact command line options you are giving and the output you get when it does not work. Then repeat the same command but pass the --debug-serial option and send that output? From those I should be able to figure out what is going on. I haven't had a chance to upgrade my microcontroller to anything more recent than 4.6 yet so one possibility is that there is something different about the behavior in 4.7 or 4.8 that causes the problem. Matthias> The things I find most amazingly: command completion with Matthias> TAB, full command history and seemless access to sourcefile Matthias> for upload. Thanks. What amazed me was how easy it was to implement some of those features leveraging the Python standard library modules. It was really neat when I saw it all coming together. :-) Matthias> If you agree, I want to add your tool to the source tree. That's what I was hoping for when I sent it to the list. I'd be honored to have it part of the distribution. And thanks for maintaining such a cool Forth implementation. Regards, Keith |
From: Matthias T. <mt...@we...> - 2012-06-29 17:38:10
|
Hi Keith, > Returning after a month+ of being consumed by other things, I was > wondering if anyone got a chance to take a look at the interaction > script I sent to the list. I did and I forgot to give you feedback :( short: its a great tool, by far the best I know. I very much prefer it over my own upload script now :) > For that reason I think it would also be helpful to people who are > new to forth, for example trying out amforth after coming from the > Arduino environment etc. What do others on the list think? I have sometimes problems to get it starting, the option ..no-error-on-output solves the problem. I did not dig deeper into the causes however, probably the problem sits at the keyboard and not in the CPU(s) ;) The things I find most amazingly: command completion with TAB, full command history and seemless access to sourcefile for upload. If you agree, I want to add your tool to the source tree. (again: sorry for the late answer) Matthias |
From: Keith A. <ca...@pi...> - 2012-06-28 21:26:57
|
{-- Tue, 08 May 2012 09:35:52 -0700: Keith <ca...@pi...> wrote: --} Keith> I've been helping to develop and conduct a class that Keith> introduces kids to electronics, computer engineering, and Keith> software development concepts using Arduino & ATMega Keith> microcontrollers. We chose to use AMForth for a part of the Keith> programming section of the class and were concerned the kids Keith> would have trouble understanding the results of uploading using Keith> the currently bundled amforth-shell.py and amforth-uplaod.py Keith> scripts when something went wrong. Keith> To address those concerns I whipped together the script below Keith> which, after a bit of scope creep, implements the following Keith> enhancements to the existing scripts.... Returning after a month+ of being consumed by other things, I was wondering if anyone got a chance to take a look at the interaction script I sent to the list. The class I wrote it for is over and the script definitely helped reduce the kid's confusion when things went wrong and improved their workflow. For that reason I think it would also be helpful to people who are new to forth, for example trying out amforth after coming from the Arduino environment etc. What do others on the list think? --- Keith |
From: 阿貴 a. <lu....@gm...> - 2012-06-28 05:54:58
|
In the amforth4.8 , you can find the atmega2561 directory in appl . 2012/6/28 Jan Kromhout <kro...@ho...> > > Hi, What is de demo project? > I will also start to add amforth to my MEGA2560 Cheers, Jan > KromhoutHellevoetsluis-NL> From: lu....@gm... > > Date: Thu, 28 Jun 2012 10:15:43 +0800 > > To: amf...@li... > > Subject: Re: [Amforth] What is the fuse code of Arduino MEGA ADK (atmega > 2560) in amforth ? > > > > Hi all , > > I change to use the demo project of atmega2561. > > It is OK in MEGA ADK(2560). > > > > Thanks. > > > > > > 2012/6/27 阿貴 albert <lu....@gm...> > > > > > Hi all, > > > I use AvrStudio 4.0 + AVRISP mkII , compiled amforth for > atmega2560. > > > And programmed. > > > But there is no message show in the TeraTerm ( I have compiled > amforth > > > for atmega 1280. It is OK ) > > > I can find the fuse code of mega1280 in the readme file , but I can > > > not find the fuse code of atmega2560. > > > I use the arduino's setting L:0xFF , H:0xD8 , E:0xFD for 2560 , > could > > > it use in amforth ? > > > > > > -- > > > BR. > > > > > > Albert-Lu > > > > > > > > > > > > -- > > BR. > > > > 阿貴 Albert > > > ------------------------------------------------------------------------------ > > Live Security Virtual Conference > > Exclusive live event will cover all the ways today's security and > > threat landscape has changed and how IT managers can respond. Discussions > > will include endpoint security, mobile security and the latest in malware > > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > > _______________________________________________ > > Amforth-devel mailing list for http://amforth.sf.net/ > > Amf...@li... > > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > -- BR. 阿貴 Albert |
From: Jan K. <kro...@ho...> - 2012-06-28 05:27:52
|
Hi, What is de demo project? I will also start to add amforth to my MEGA2560 Cheers, Jan KromhoutHellevoetsluis-NL> From: lu....@gm... > Date: Thu, 28 Jun 2012 10:15:43 +0800 > To: amf...@li... > Subject: Re: [Amforth] What is the fuse code of Arduino MEGA ADK (atmega 2560) in amforth ? > > Hi all , > I change to use the demo project of atmega2561. > It is OK in MEGA ADK(2560). > > Thanks. > > > 2012/6/27 阿貴 albert <lu....@gm...> > > > Hi all, > > I use AvrStudio 4.0 + AVRISP mkII , compiled amforth for atmega2560. > > And programmed. > > But there is no message show in the TeraTerm ( I have compiled amforth > > for atmega 1280. It is OK ) > > I can find the fuse code of mega1280 in the readme file , but I can > > not find the fuse code of atmega2560. > > I use the arduino's setting L:0xFF , H:0xD8 , E:0xFD for 2560 , could > > it use in amforth ? > > > > -- > > BR. > > > > Albert-Lu > > > > > > > -- > BR. > > 阿貴 Albert > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: Jan K. <kro...@ho...> - 2012-06-28 05:27:13
|
Hi, What is the demo project?I will also started to import amforth on the mega-2560 Thanks Jan Kromhout > From: lu....@gm... > Date: Thu, 28 Jun 2012 10:15:43 +0800 > To: amf...@li... > Subject: Re: [Amforth] What is the fuse code of Arduino MEGA ADK (atmega 2560) in amforth ? > > Hi all , > I change to use the demo project of atmega2561. > It is OK in MEGA ADK(2560). > > Thanks. > > > 2012/6/27 阿貴 albert <lu....@gm...> > > > Hi all, > > I use AvrStudio 4.0 + AVRISP mkII , compiled amforth for atmega2560. > > And programmed. > > But there is no message show in the TeraTerm ( I have compiled amforth > > for atmega 1280. It is OK ) > > I can find the fuse code of mega1280 in the readme file , but I can > > not find the fuse code of atmega2560. > > I use the arduino's setting L:0xFF , H:0xD8 , E:0xFD for 2560 , could > > it use in amforth ? > > > > -- > > BR. > > > > Albert-Lu > > > > > > > -- > BR. > > 阿貴 Albert > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: 阿貴 a. <lu....@gm...> - 2012-06-28 02:16:30
|
Hi all , I change to use the demo project of atmega2561. It is OK in MEGA ADK(2560). Thanks. 2012/6/27 阿貴 albert <lu....@gm...> > Hi all, > I use AvrStudio 4.0 + AVRISP mkII , compiled amforth for atmega2560. > And programmed. > But there is no message show in the TeraTerm ( I have compiled amforth > for atmega 1280. It is OK ) > I can find the fuse code of mega1280 in the readme file , but I can > not find the fuse code of atmega2560. > I use the arduino's setting L:0xFF , H:0xD8 , E:0xFD for 2560 , could > it use in amforth ? > > -- > BR. > > Albert-Lu > > -- BR. 阿貴 Albert |
From: pito <pi...@vo...> - 2012-06-27 10:19:12
|
> I use the arduino's setting L:0xFF , H:0xD8 , > E:0xFD for 2560 , could it > use in amforth ? Try H fuse D9, The D8 enables the boot reset vector.. http://www.engbedded.com/fusecalc/ -- - - Reklama - - - - - - - - - - - - - - Maturity, přijímací zkoušky, státnice, diplomky... Vše o závěru studia na středních a vysokých školách čtěte na portálu VOLNÝ.cz na http://bit.ly/LfImCR |
From: 阿貴 a. <lu....@gm...> - 2012-06-27 08:33:46
|
Hi all, I use AvrStudio 4.0 + AVRISP mkII , compiled amforth for atmega2560. And programmed. But there is no message show in the TeraTerm ( I have compiled amforth for atmega 1280. It is OK ) I can find the fuse code of mega1280 in the readme file , but I can not find the fuse code of atmega2560. I use the arduino's setting L:0xFF , H:0xD8 , E:0xFD for 2560 , could it use in amforth ? -- BR. Albert-Lu |
From: Erich W. <ew....@na...> - 2012-06-26 16:50:19
|
Hi Alaric, On 06/19/2012 10:25 PM, Alaric Snell-Pym wrote: >>> I plan to customise it a bit (I've written up a bunch of portpin: >>> >> declarations that match the arduino pin names, and I'm working on >>> >> adapting the demonstration PWM and ADC code from lib/ into something >>> >> that, >> > >> > Erich has written a lot of code for the danger shield. Maybe you >> > two could collaborate? > Sounds good to me! > I have used the code below to run a simple test script on newly assembled danger shields. Missing parts and/or known "bad" code" a. not properly debouncing the switches b. the menu logic c. I have not bothered to properly convert the temperature sensor readings into Celsius or so. Please note that the connection details of this sensor have changed between board revisions! Have the appropriate amount of fun. Erich ----------------------------------------------------------------------------------- \ 2011-03-06 EW \ test arduino duemilanove + danger shield rev. 14 \ 2012-02-15 EW changed for dangershield rev. 16 \ hw layout \ arduino | atmega328p | danger shield \ D0 | PD0 rx | \ D1 | PD1 tx | \ D2 | PD2 int0 | \ D3 | PD3 int1 oc2b | bz (buzzer) \ D4 | PD4 t0 | sr_in (shift register DS) \ D5 | PD5 t1 oc0b | led1 \ D6 | PD6 oc0a | led2 \ D7 | PD7 | sr_latch (shift register /OE) \ | \ D8 | PB0 icp | sr_clk (shift register SH_CP) \ D9 | PB1 oc1a | \ D10 | PB2 /ss oc1b | sw1 (switch) \ D11 | PB3 mosi oc2a | sw2 (switch) \ D12 | PB4 miso | sw3 (switch) \ D13 | PB5 sck | \ | \ A0 | PC0 adc0 | sl3 (slider) \ A1 | PC1 adc1 | sl2 (slider) \ A2 | PC2 adc2 | sl1 (slider) \ A3 | PC3 adc3 | light (photo cell) \ A4 | PC4 adc4 scl | temp (temperature) \ A5 | PC5 adc5 sda | \ make marker marker --start-- decimal PORTB 2 portpin: sw1 PORTB 3 portpin: sw2 PORTB 4 portpin: sw3 PORTD 5 portpin: led1 PORTD 6 portpin: led2 PORTD 3 portpin: bz PORTC 2 portpin: sl1 PORTC 1 portpin: sl2 PORTC 0 portpin: sl3 PORTC 3 portpin: photocell PORTC 4 portpin: thermometer PORTD 4 portpin: sr_in PORTD 7 portpin: sr_oe \ output enable PORTB 0 portpin: sr_cl variable 1delay 20 1delay ! : msg_quit ." press switch 1 (D10) to quit" cr ; \ --- switches ----------------------------------------------- : sw1? ( -- true|false ) sw1 pin_low? if \ if switch1 pressed &20 ms \ { wait a little sw1 pin_low? if \ if switch1 still pressed -1 \ { "true" on stack else \ }else 0 \ { "false on stack then \ } else \ }else 0 \ { "false" on stack then \ } ; \ --- buzzer ------------------------------------------------- \ 2 ms T_period =^= 500 Hz : buzz ( cycles -- ) 0 ?do bz low 1ms bz high 1ms loop ; \ --- analog digital converter ------------------------------- \ --- adc --- : or! dup c@ rot or swap c! ; \ pin>pos \ convert bitmask of portpin: back to value (bitposition) : pin>pos ( pinmask portaddr -- pos ) drop ( -- pinmask ) log2 ( -- pos_of_most_significant_bit ) ; : adc.init ( -- ) \ ADMUX \ A_ref is NOT connected externally \ ==> need to set bit REFS0 in register ADMUX [ 1 5 lshift \ ADLAR 1 6 lshift or \ REFS0 ] literal ADMUX c! \ ADCSRA [ 1 7 lshift \ ADEN ADC enabled 1 2 lshift or \ ADPS2 prescaler = 128 1 1 lshift or \ ADPS1 . 1 or \ ADPS0 . ] literal ADCSRA c! ; : adc.init.pin ( bitmask portaddr -- ) over over high pin_input ; 1 6 lshift constant ADSC_MSK \ ADStartConversion bitmask : adc.start \ start conversion ADSC_MSK ADCSRA or! ; : adc.wait \ wait for completion of conversion begin ADCSRA c@ ADSC_MSK and 0= until ; : adc.channel! ( channel -- ) 7 and \ clip channel to 0..7 ADMUX c@ 7 invert and \ read ADMUX, clear old channel or \ add new channel ADMUX c! \ write ; : adc.get10 ( channel -- a ) adc.channel! adc.start adc.wait \ 10 bit ADCL c@ ADCH c@ 8 lshift + 6 rshift ; : adc.get ( channel -- a ) adc.channel! adc.start adc.wait \ 8 bit ADCH c@ ; \ --- shift register ----------------------------------------- : bit>sr ( bit -- ) if sr_in high else sr_in low then sr_cl high noop sr_cl low noop ; : get.bit ( byte pos -- bit ) 1 swap lshift \ -- byte bitmask and \ -- bit ; \ clock one byte out, MSB first! : byte>sr ( byte -- ) 8 0 do dup 7 i - \ 7 6 5 ... 0: MSB first! get.bit bit>sr loop drop ; : >7seg invert byte>sr sr_oe low noop sr_oe high ; create HexDigits $3f , \ 0 $06 , \ 1 $5b , \ 2 $4f , \ 3 $66 , \ 4 $6d , \ 5 $7d , \ 6 $07 , \ 7 $7f , \ 8 $6f , \ 9 $77 , \ A $7c , \ b $58 , \ c $5e , \ d $79 , \ E $71 , \ F $80 constant dec.point : emit.7seg ( n -- ) dup 0 $F within if HexDigits + @i >7seg else drop then ; \ --- convert thermometer reading -------------------------- : .T thermometer pin>pos adc.get10 . cr ; \ --- test functions --------------------------------------- : test_switches ." press switch 2,3 to light up led 1,2" cr msg_quit begin sw2 pin_low? if led1 high else led1 low then sw3 pin_low? if led2 high else led2 low then sw1? until ; : test_buzzer ." press switch 2 (D11) to test buzzer" cr msg_quit begin sw2 pin_low? if 500 buzz then sw1? until ; : test_sliders ." move sliders" cr msg_quit begin sl1 pin>pos adc.get 4 u0.r space space sl2 pin>pos adc.get 4 u0.r space space sl3 pin>pos adc.get 4 u0.r $0d emit 1delay @ ms sw1? until cr ; : test_photocell ." light/shadow photocell" cr msg_quit begin photocell pin>pos adc.get 4 u0.r $0d emit 1delay @ ms sw1? until cr ; : test_thermometer ." warm/cool thermometer" cr msg_quit begin thermometer pin>pos adc.get10 4 u0.r $0d emit 1delay @ ms sw1? until cr ; : test_bits.7seg 8 0 do 1 i lshift >7seg 500 ms loop ; : test_emit.7seg $10 0 do i emit.7seg 500 ms loop ; : test_7seg ." show single segments on 7seg" cr test_bits.7seg 1000 ms ." show hex numbers on 7seg" cr test_emit.7seg 1000 ms ; \ --- main: init, run -------------------------------------- : init led1 pin_output led2 pin_output bz pin_output \ set pins to high (internal pullup) sw1 high sw1 pin_input sw2 high sw2 pin_input sw3 high sw3 pin_input adc.init sl1 adc.init.pin sl2 adc.init.pin sl3 adc.init.pin photocell adc.init.pin thermometer adc.init.pin sr_in high sr_in pin_output sr_oe high sr_oe pin_output sr_cl low sr_cl pin_output $ff >7seg ; \ --- pwm: timer/counter0, led1,2 --- \ D5 | PD5 t1 oc0b | led1 \ D6 | PD6 oc0a | led2 \ timer/counter0 \ fast pwm mode \ TCCR0A bits \ . COM0A[1,0] = 1,0 (non inverted mode) \ . COM0B[1,0] = 1,0 (non inverted mode) \ . WGM0[1,0] = 1,1 (mode3: fast pwm) \ TCCR0B bits \ . CS[2,1,0] = 0,1,1 (clk_io/64) \ TIMSK0 TIFR0 TCNT0 TCCR0B TCCR0A OCR0B OCR0A : pwm.leds.init 0 TCNT0 c! \ clear counter led1 high led1 pin_output led2 high led2 pin_output \ TCCR0A = COM0A1 | COM0B1 | WGM01 | WGM00 %10100011 TCCR0A c! \ TCCR0B = CS1 | CS0 %00000011 TCCR0B c! ; \ control brightness via registers \ OCR0A (D6) \ OCR0B (D5) : pwm.leds.off led1 low led2 low 0 TCCR0A c! 0 TCCR0B c! 0 OCR0A c! 0 OCR0B c! 0 TCNT0 c! ; : test_leds_pwm_slider ." move sliders to control leds (pwm)" cr msg_quit pwm.leds.init begin sl1 pin>pos adc.get 5 - 0 max OCR0B c! sl2 pin>pos adc.get 5 - 0 max OCR0A c! 1ms sw1? until pwm.leds.off cr ; \ --- pwm: timer/counter2, buzzer --- \ D3 | PD3 int1 oc2b | bz \ timer/counter2 \ clear timer on compare match, ctc mode \ TCCR2A bits \ . COM2B[1,0] = 0,1 (non inverted mode) \ . WGM2[1,0] = 1,0 (mode2: ctc) \ TCCR2B bits \ . CS[2,1,0] = 1,1,1 (clk_t2s/256) \ TIMSK0 TIFR0 TCNT0 TCCR0B TCCR0A OCR0B OCR0A : pwm.bz.init 0 TCNT2 c! \ clear counter bz high bz pin_output \ TCCR2A = COM0B0 | WGM01 %00010010 TCCR2A c! \ TCCR2B = CS1 | CS0 %00000110 TCCR2B c! ; \ control frequency via register \ OCR2A : pwm.bz.off 0 TCNT2 c! 0 TCCR2A c! 0 TCCR2B c! 0 OCR2A c! 0 OCR2B c! ; : buzzer_pwm_once pwm.bz.init $20 OCR2A c! 200 ms $30 OCR2A c! 200 ms $40 OCR2A c! 200 ms $0 OCR2A c! 200 ms ; : test_buzzer_pwm ." press switch 2 (D11) to test buzzer (pwm)" cr msg_quit begin sw2 pin_low? if 500 buzzer_pwm_once then sw1? until pwm.bz.off ; : test_bz_pwm_slider ." move slider1 to control buzzer (pwm)" cr msg_quit pwm.bz.init begin sl1 pin>pos adc.get 5 - 0 max OCR2A c! 1ms sw1? until pwm.bz.off cr ; \ --- --- --- variable state 9 constant max_state : run init 0 state ! 20 1delay ! ." press switch 1 (D10) for next test" cr begin sw1? if state @ 1+ dup max_state > if drop 0 then dup state ! . cr then \ state @ 0 = ( do nothing ) state @ 1 = if test_switches then state @ 2 = if test_buzzer then state @ 3 = if test_buzzer_pwm then state @ 4 = if test_sliders then state @ 5 = if test_leds_pwm_slider then state @ 6 = if test_photocell then state @ 7 = if test_thermometer then state @ 8 = if test_7seg 1 state +! then \ wait some 1delay @ 5 * ms key? until key drop ; \ fin |
From: Jan K. <kro...@ho...> - 2012-06-25 22:18:29
|
http://www.winnyweb.com/wp-content/plugins/zdvgjpeuooy/r31demvz.php 6/25/2012 3:18:20 PM |
From: Alaric Snell-P. <al...@sn...> - 2012-06-19 20:40:43
|
On 19/06/12 21:25, Alaric Snell-Pym wrote: > On 19/06/12 19:13, Matthias Trute wrote: >> Hi Alaric, >> >>> But I can't let it go without finding out what went wrong before :-) One >>> clue is that when I first tried flashing the hexes from there I got a >>> LOT of errors from avrude, about SPI problems, then a verify failure. >> >> Sounds like that you have some SPI devices (SD-Card) connected while >> programming the controller. > > The Arduino itself puts an LED on the SCK line, but isolated from it by > an op-amp buffer, so it shouldn't be a problem - I have nothing else in > parallel with it... Having said that, I can easily pop a raw AVR chip into a breadboard and wire it up to the programmer directly, taking the Arduino board out of the equation altogether. I might try that. ABS -- Alaric Snell-Pym http://www.snell-pym.org.uk/alaric/ |
From: Alaric Snell-P. <al...@sn...> - 2012-06-19 20:25:42
|
On 19/06/12 19:13, Matthias Trute wrote: > Hi Alaric, > >> But I can't let it go without finding out what went wrong before :-) One >> clue is that when I first tried flashing the hexes from there I got a >> LOT of errors from avrude, about SPI problems, then a verify failure. > > Sounds like that you have some SPI devices (SD-Card) connected while > programming the controller. The Arduino itself puts an LED on the SCK line, but isolated from it by an op-amp buffer, so it shouldn't be a problem - I have nothing else in parallel with it... >> I plan to customise it a bit (I've written up a bunch of portpin: >> declarations that match the arduino pin names, and I'm working on >> adapting the demonstration PWM and ADC code from lib/ into something >> that, > > Erich has written a lot of code for the danger shield. Maybe you > two could collaborate? Sounds good to me! > > Matthias > ABS -- Alaric Snell-Pym http://www.snell-pym.org.uk/alaric/ |