748 The ``examples'' directory contains some test program you can use as |
718 The ``examples'' directory contains some test program you can use as |
749 example for your own developments. |
719 example for your own developments. |
750 |
720 |
751 \subsection{TestMasterSlave} |
721 \subsection{TestMasterSlave} |
752 {\ttfamily |
722 {\ttfamily |
753 **************************************************************} |
723 **************************************************************\space} |
754 |
724 |
755 {\ttfamily |
725 {\ttfamily |
756 * \ TestMasterSlave |
726 * \space TestMasterSlave |
757 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
727 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
758 |
728 |
759 {\ttfamily |
729 {\ttfamily |
760 * |
730 * |
761 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
731 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
762 |
732 |
763 {\ttfamily |
733 {\ttfamily |
764 * \ A simple example for PC. It does implement 2 CanOpen \ \ \ \ \ *} |
734 * \space A simple example for PC. It does implement 2 CanOpen \space \space \space \space \space *} |
765 |
735 |
766 {\ttfamily |
736 {\ttfamily |
767 * \ nodes in the same process. A master and a slave. Both \ \ \ \ *} |
737 * \space nodes in the same process. A master and a slave. Both \space \space \space \space *} |
768 |
738 |
769 {\ttfamily |
739 {\ttfamily |
770 * \ communicate together, exchanging periodically NMT, SYNC, \ *} |
740 * \space communicate together, exchanging periodically NMT, SYNC, \space *} |
771 |
741 |
772 {\ttfamily |
742 {\ttfamily |
773 * \ SDO and PDO. Master configure heartbeat producer time \ \ \ \ *} |
743 * \space SDO and PDO. Master configure heartbeat producer time \space \space \space \space *} |
774 |
744 |
775 {\ttfamily |
745 {\ttfamily |
776 * \ at 1000 ms for slave node{}-id 0x02 by concise DCF. |
746 * \space at 1000 ms for slave node{}-id 0x02 by concise DCF. |
777 \ \ \ \ \ \ \ \ *} |
747 \space \space \space \space \space \space \space \space *} |
778 |
748 |
779 {\ttfamily |
749 {\ttfamily |
780 * |
750 * |
781 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
751 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
782 |
752 |
783 {\ttfamily |
753 {\ttfamily |
784 * \ \ Usage: |
754 * \space \space Usage: |
785 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
755 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
786 |
756 |
787 {\ttfamily |
757 {\ttfamily |
788 * \ \ ./TestMasterSlave \ [OPTIONS] |
758 * \space \space ./TestMasterSlave \space [OPTIONS] |
789 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
759 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
790 |
760 |
791 {\ttfamily |
761 {\ttfamily |
792 * |
762 * |
793 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
763 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
794 |
764 |
795 {\ttfamily |
765 {\ttfamily |
796 * \ \ OPTIONS: |
766 * \space \space OPTIONS: |
797 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
767 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
798 |
768 |
799 {\ttfamily |
769 {\ttfamily |
800 * \ \ \ \ {}-l : Can library |
770 * \space \space \space \space {}-l : Can library |
801 [{\textquotedbl}libcanfestival\_can\_virtual.so{\textquotedbl}] |
771 [{\textquotedbl}libcanfestival\_can\_virtual.so{\textquotedbl}] |
802 \ \ \ \ *} |
772 \space \space \space \space *} |
803 |
773 |
804 {\ttfamily |
774 {\ttfamily |
805 * |
775 * |
806 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
776 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
807 |
777 |
808 {\ttfamily |
778 {\ttfamily |
809 * \ \ \ Slave: |
779 * \space \space \space Slave: |
810 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
780 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
811 |
781 |
812 {\ttfamily |
782 {\ttfamily |
813 * \ \ \ \ {}-s : bus name [{\textquotedbl}0{\textquotedbl}] |
783 * \space \space \space \space {}-s : bus name [{\textquotedbl}0{\textquotedbl}] |
814 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
784 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
815 |
785 |
816 {\ttfamily |
786 {\ttfamily |
817 * \ \ \ \ {}-S : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable) \ *} |
787 * \space \space \space \space {}-S : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable) \space *} |
818 |
788 |
819 {\ttfamily |
789 {\ttfamily |
820 * |
790 * |
821 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
791 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
822 |
792 |
823 {\ttfamily |
793 {\ttfamily |
824 * \ \ \ Master: |
794 * \space \space \space Master: |
825 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
795 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
826 |
796 |
827 {\ttfamily |
797 {\ttfamily |
828 * \ \ \ \ {}-m : bus name [{\textquotedbl}1{\textquotedbl}] |
798 * \space \space \space \space {}-m : bus name [{\textquotedbl}1{\textquotedbl}] |
829 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
799 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
830 |
800 |
831 {\ttfamily |
801 {\ttfamily |
832 * \ \ \ \ {}-M : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable) \ *} |
802 * \space \space \space \space {}-M : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable) \space *} |
833 |
803 |
834 {\ttfamily |
804 {\ttfamily |
835 * |
805 * |
836 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
806 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
837 |
807 |
838 {\ttfamily |
808 {\ttfamily |
839 **************************************************************} |
809 **************************************************************} |
840 |
810 |
841 |
811 |
909 \subsection{TestMasterMicroMod } |
874 \subsection{TestMasterMicroMod } |
910 {\ttfamily |
875 {\ttfamily |
911 **************************************************************} |
876 **************************************************************} |
912 |
877 |
913 {\ttfamily |
878 {\ttfamily |
914 * \ TestMasterMicroMod |
879 * \space TestMasterMicroMod |
915 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
880 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
916 |
881 |
917 {\ttfamily |
882 {\ttfamily |
918 * |
883 * |
919 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
884 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
920 |
885 |
921 {\ttfamily |
886 {\ttfamily |
922 * \ A simple example for PC. |
887 * \space A simple example for PC. |
923 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
888 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
924 |
889 |
925 {\ttfamily |
890 {\ttfamily |
926 * \ A CanOpen master that control a MicroMod module: |
891 * \space A CanOpen master that control a MicroMod module: |
927 \ \ \ \ \ \ \ \ \ *} |
892 \space \space \space \space \space \space \space \space \space *} |
928 |
893 |
929 {\ttfamily |
894 {\ttfamily |
930 * \ {}- setup module TPDO 1 transmit type |
895 * \space {}- setup module TPDO 1 transmit type |
931 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
896 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
932 |
897 |
933 {\ttfamily |
898 {\ttfamily |
934 * \ {}- setup module RPDO 1 transmit type |
899 * \space {}- setup module RPDO 1 transmit type |
935 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
900 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
936 |
901 |
937 {\ttfamily |
902 {\ttfamily |
938 * \ {}- setup module hearbeatbeat period |
903 * \space {}- setup module hearbeatbeat period |
939 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
904 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
940 |
905 |
941 {\ttfamily |
906 {\ttfamily |
942 * \ {}- disable others TPDOs |
907 * \space {}- disable others TPDOs |
943 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
908 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
944 |
909 |
945 {\ttfamily |
910 {\ttfamily |
946 * \ {}- set state to operational |
911 * \space {}- set state to operational |
947 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
912 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
948 |
913 |
949 {\ttfamily |
914 {\ttfamily |
950 * \ {}- send periodic SYNC |
915 * \space {}- send periodic SYNC |
951 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
916 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
952 |
917 |
953 {\ttfamily |
918 {\ttfamily |
954 * \ {}- send periodic RPDO 1 to Micromod (digital output) \ \ \ \ \ \ *} |
919 * \space {}- send periodic RPDO 1 to Micromod (digital output) \space \space \space \space \space \space *} |
955 |
920 |
956 {\ttfamily |
921 {\ttfamily |
957 * \ {}- listen Micromod{\textquotesingle}s TPDO 1 (digital input) |
922 * \space {}- listen Micromod{\textquotesingle}s TPDO 1 (digital input) |
958 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
923 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
959 |
924 |
960 {\ttfamily |
925 {\ttfamily |
961 * \ {}- Mapping RPDO 1 bit per bit (digital input) |
926 * \space {}- Mapping RPDO 1 bit per bit (digital input) |
962 \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
927 \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
963 |
928 |
964 {\ttfamily |
929 {\ttfamily |
965 * |
930 * |
966 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
931 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
967 |
932 |
968 {\ttfamily |
933 {\ttfamily |
969 * \ \ Usage: |
934 * \space \space Usage: |
970 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
935 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
971 |
936 |
972 {\ttfamily |
937 {\ttfamily |
973 * \ \ ./TestMasterMicroMod \ [OPTIONS] |
938 * \space \space ./TestMasterMicroMod \space [OPTIONS] |
974 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
939 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
975 |
940 |
976 {\ttfamily |
941 {\ttfamily |
977 * |
942 * |
978 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
943 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
979 |
944 |
980 {\ttfamily |
945 {\ttfamily |
981 * \ \ OPTIONS: |
946 * \space \space OPTIONS: |
982 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
947 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
983 |
948 |
984 {\ttfamily |
949 {\ttfamily |
985 * \ \ \ \ {}-l : Can library |
950 * \space \space \space \space {}-l : Can library |
986 [{\textquotedbl}libcanfestival\_can\_virtual.so{\textquotedbl}] |
951 [{\textquotedbl}libcanfestival\_can\_virtual.so{\textquotedbl}] |
987 \ \ \ \ *} |
952 \space \space \space \space *} |
988 |
953 |
989 {\ttfamily |
954 {\ttfamily |
990 * |
955 * |
991 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
956 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
992 |
957 |
993 {\ttfamily |
958 {\ttfamily |
994 * \ \ \ Slave: |
959 * \space \space \space Slave: |
995 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
960 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
996 |
961 |
997 {\ttfamily |
962 {\ttfamily |
998 * \ \ \ \ {}-i : Slave Node id format [0x01 , 0x7F] |
963 * \space \space \space \space {}-i : Slave Node id format [0x01 , 0x7F] |
999 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
964 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
1000 |
965 |
1001 {\ttfamily |
966 {\ttfamily |
1002 * |
967 * |
1003 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
968 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
1004 |
969 |
1005 {\ttfamily |
970 {\ttfamily |
1006 * \ \ \ Master: |
971 * \space \space \space Master: |
1007 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
972 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
1008 |
973 |
1009 {\ttfamily |
974 {\ttfamily |
1010 * \ \ \ \ {}-m : bus name [{\textquotedbl}1{\textquotedbl}] |
975 * \space \space \space \space {}-m : bus name [{\textquotedbl}1{\textquotedbl}] |
1011 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
976 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
1012 |
977 |
1013 {\ttfamily |
978 {\ttfamily |
1014 * \ \ \ \ {}-M : 1M,500K,250K,125K,100K,50K,20K,10K |
979 * \space \space \space \space {}-M : 1M,500K,250K,125K,100K,50K,20K,10K |
1015 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
980 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
1016 |
981 |
1017 {\ttfamily |
982 {\ttfamily |
1018 * |
983 * |
1019 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *} |
984 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space *} |
1020 |
985 |
1021 {\ttfamily |
986 {\ttfamily |
1022 **************************************************************} |
987 **************************************************************} |
1023 |
988 |
1024 \section{Developing a new node} |
989 \section{Developing a new node} |
1289 \paragraph{Interrupt lock, unlock} |
1254 \paragraph{Interrupt lock, unlock} |
1290 \subparagraph{Code for GCC} |
1255 \subparagraph{Code for GCC} |
1291 {\ttfamily |
1256 {\ttfamily |
1292 void unlock (void)\newline |
1257 void unlock (void)\newline |
1293 \{\newline |
1258 \{\newline |
1294 \ \_\_asm\_\_ |
1259 \space \_\_asm\_\_ |
1295 \_\_volatile\_\_({\textquotedbl}cli{\textquotedbl});\newline |
1260 \_\_volatile\_\_({\textquotedbl}cli{\textquotedbl});\newline |
1296 \}\newline |
1261 \}\newline |
1297 void lock (void)\newline |
1262 void lock (void)\newline |
1298 \{\newline |
1263 \{\newline |
1299 \ unsigned short mask;\newline |
1264 \space unsigned short mask;\newline |
1300 \ \_\_asm\_\_ |
1265 \space \_\_asm\_\_ |
1301 \_\_volatile\_\_({\textquotedbl}tpa{\textbackslash}n{\textbackslash}tsei{\textquotedbl}:{\textquotedbl}=d{\textquotedbl}(mask));\newline |
1266 \_\_volatile\_\_({\textquotedbl}tpa{\textbackslash}n{\textbackslash}tsei{\textquotedbl}:{\textquotedbl}=d{\textquotedbl}(mask));\newline |
1302 \}} |
1267 \}} |
1303 |
1268 |
1304 \subparagraph{Code for CodeWarrior} |
1269 \subparagraph{Code for CodeWarrior} |
1305 {\ttfamily |
1270 {\ttfamily |
1306 void unlock (void)\newline |
1271 void unlock (void)\newline |
1307 \{\newline |
1272 \{\newline |
1308 \ \_\_asm({\textquotedbl}cli{\textquotedbl});\newline |
1273 \space \_\_asm({\textquotedbl}cli{\textquotedbl});\newline |
1309 \}\newline |
1274 \}\newline |
1310 void lock (void)\newline |
1275 void lock (void)\newline |
1311 \{\newline |
1276 \{\newline |
1312 \ unsigned short mask;\newline |
1277 \space unsigned short mask;\newline |
1313 \ \_\_asm\newline |
1278 \space \_\_asm\newline |
1314 \{\newline |
1279 \{\newline |
1315 \ tpa:tsei:{\textquotedbl}=d{\textquotedbl}(mask);\newline |
1280 \space tpa:tsei:{\textquotedbl}=d{\textquotedbl}(mask);\newline |
1316 \}\newline |
1281 \}\newline |
1317 \}} |
1282 \}} |
1318 |
1283 |
1319 \paragraph{Initialize function} |
1284 \paragraph{Initialize function} |
1320 \subparagraph{Code for GCC} |
1285 \subparagraph{Code for GCC} |
1321 {\ttfamily |
1286 {\ttfamily |
1322 void initCanHCS12 (void)\newline |
1287 void initCanHCS12 (void)\newline |
1323 \{ \ \newline |
1288 \{ \space \newline |
1324 \ //Init the HCS12 microcontroler for CanOpen \newline |
1289 \space //Init the HCS12 microcontroler for CanOpen \newline |
1325 \ initHCS12();\newline |
1290 \space initHCS12();\newline |
1326 \ \ // Init the HCS12 \ CAN driver\newline |
1291 \space \space // Init the HCS12 \space CAN driver\newline |
1327 \ const canBusInit bi0 = \{\newline |
1292 \space const canBusInit bi0 = \{\newline |
1328 \ \ \ 0, \ \ \ /* no low power \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ |
1293 \space \space \space 0, \space \space \space /* no low power \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space */ |
1329 \newline |
1294 \newline |
1330 \ \ \ 0, \ \ \ /* no time stamp |
1295 \space \space \space 0, \space \space \space /* no time stamp |
1331 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ */\newline |
1296 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space */\newline |
1332 \ \ \ 1, \ \ \ /* enable MSCAN |
1297 \space \space \space 1, \space \space \space /* enable MSCAN |
1333 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ */\newline |
1298 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space */\newline |
1334 \ \ \ 0, \ \ \ /* clock source : oscillator (In fact, it is not used) |
1299 \space \space \space 0, \space \space \space /* clock source : oscillator (In fact, it is not used) |
1335 \ \ */\newline |
1300 \space \space */\newline |
1336 \ \ \ 0, \ \ \ /* no loop back |
1301 \space \space \space 0, \space \space \space /* no loop back |
1337 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ */\newline |
1302 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space */\newline |
1338 \ \ \ 0, \ \ \ /* no listen only |
1303 \space \space \space 0, \space \space \space /* no listen only |
1339 \ \ \ \ \ \ \ \ \ \ \ \ \ \ */\newline |
1304 \space \space \space \space \space \space \space \space \space \space \space \space \space \space */\newline |
1340 \ \ \ 0, \ \ \ /* no low pass filter for wk up */\newline |
1305 \space \space \space 0, \space \space \space /* no low pass filter for wk up */\newline |
1341 \ CAN\_Baudrates[CAN\_BAUDRATE\_250K],\newline |
1306 \space CAN\_Baudrates[CAN\_BAUDRATE\_250K],\newline |
1342 \ \ \ \{\newline |
1307 \space \space \space \{\newline |
1343 \ \ \ \ \ 0x00, \ \ \ /* Filter on 16 bits.\newline |
1308 \space \space \space \space \space 0x00, \space \space \space /* Filter on 16 bits.\newline |
1344 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ See Motorola Block Guide V02.14 fig |
1309 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space See Motorola Block Guide V02.14 fig |
1345 4{}-3 */\newline |
1310 4{}-3 */\newline |
1346 \ \ \ \ \ 0x00, 0xFF, /* filter 0 hight accept all msg |
1311 \space \space \space \space \space 0x00, 0xFF, /* filter 0 hight accept all msg |
1347 \ \ \ \ \ */\newline |
1312 \space \space \space \space \space */\newline |
1348 \ \ \ \ \ 0x00, 0xFF, /* filter 0 low accept all msg |
1313 \space \space \space \space \space 0x00, 0xFF, /* filter 0 low accept all msg |
1349 \ \ \ \ \ \ \ */\newline |
1314 \space \space \space \space \space \space \space */\newline |
1350 \ \ \ \ \ 0x00, 0xFF, /* filter 1 hight filter all of \ msg |
1315 \space \space \space \space \space 0x00, 0xFF, /* filter 1 hight filter all of \space msg |
1351 \ */\newline |
1316 \space */\newline |
1352 \ \ \ \ \ 0x00, 0xFF, /* filter 1 low filter all of \ msg |
1317 \space \space \space \space \space 0x00, 0xFF, /* filter 1 low filter all of \space msg |
1353 \ \ \ */\newline |
1318 \space \space \space */\newline |
1354 \ \ \ \ \ 0x00, 0xFF, /* filter 2 hight filter most of \ msg |
1319 \space \space \space \space \space 0x00, 0xFF, /* filter 2 hight filter most of \space msg |
1355 */\newline |
1320 */\newline |
1356 \ \ \ \ \ 0x00, 0xFF, /* filter 2 low filter most of \ msg |
1321 \space \space \space \space \space 0x00, 0xFF, /* filter 2 low filter most of \space msg |
1357 \ \ */\newline |
1322 \space \space */\newline |
1358 \ \ \ \ \ 0x00, 0xFF, /* filter 3 hight filter most of \ msg |
1323 \space \space \space \space \space 0x00, 0xFF, /* filter 3 hight filter most of \space msg |
1359 */\newline |
1324 */\newline |
1360 \ \ \ \ \ 0x00, 0xFF, /* filter 3 low filter most of \ msg |
1325 \space \space \space \space \space 0x00, 0xFF, /* filter 3 low filter most of \space msg |
1361 \ \ */\newline |
1326 \space \space */\newline |
1362 \ \ \ \}\newline |
1327 \space \space \space \}\newline |
1363 \ \};} |
1328 \space \};} |
1364 |
1329 |
1365 \subparagraph{Code for CodeWarrior} |
1330 \subparagraph{Code for CodeWarrior} |
1366 {\ttfamily |
1331 {\ttfamily |
1367 void initCanHCS12 (void)\newline |
1332 void initCanHCS12 (void)\newline |
1368 \{ \ \newline |
1333 \{ \space \newline |
1369 \ //Init the HCS12 microcontroler for CanOpen \newline |
1334 \space //Init the HCS12 microcontroler for CanOpen \newline |
1370 \ initHCS12();\newline |
1335 \space initHCS12();\newline |
1371 \ \ // Init the HCS12 \ CAN driver\newline |
1336 \space \space // Init the HCS12 \space CAN driver\newline |
1372 \ const canBusInit bi0 = \{\newline |
1337 \space const canBusInit bi0 = \{\newline |
1373 \ \ \ 0, \ \ \ /* no low power \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ */ |
1338 \space \space \space 0, \space \space \space /* no low power \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space */ |
1374 \newline |
1339 \newline |
1375 \ \ \ 0, \ \ \ /* no time stamp |
1340 \space \space \space 0, \space \space \space /* no time stamp |
1376 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ */\newline |
1341 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space */\newline |
1377 \ \ \ 1, \ \ \ /* enable MSCAN |
1342 \space \space \space 1, \space \space \space /* enable MSCAN |
1378 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ */\newline |
1343 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space */\newline |
1379 \ \ \ 0, \ \ \ /* clock source : oscillator (In fact, it is not used) |
1344 \space \space \space 0, \space \space \space /* clock source : oscillator (In fact, it is not used) |
1380 \ \ */\newline |
1345 \space \space */\newline |
1381 \ \ \ 0, \ \ \ /* no loop back |
1346 \space \space \space 0, \space \space \space /* no loop back |
1382 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ */\newline |
1347 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space */\newline |
1383 \ \ \ 0, \ \ \ /* no listen only |
1348 \space \space \space 0, \space \space \space /* no listen only |
1384 \ \ \ \ \ \ \ \ \ \ \ \ \ \ */\newline |
1349 \space \space \space \space \space \space \space \space \space \space \space \space \space \space */\newline |
1385 \ \ \ 0, \ \ \ /* no low pass filter for wk up */\newline |
1350 \space \space \space 0, \space \space \space /* no low pass filter for wk up */\newline |
1386 \ \ \ \{\newline |
1351 \space \space \space \{\newline |
1387 \ \ \ \ 1, /* clksrc */\newline |
1352 \space \space \space \space 1, /* clksrc */\newline |
1388 \ \ \ \ 3, /* brp \ \ \ */\newline |
1353 \space \space \space \space 3, /* brp \space \space \space */\newline |
1389 \ \ \ \ 0, /* sjw \ \ \ */\newline |
1354 \space \space \space \space 0, /* sjw \space \space \space */\newline |
1390 \ \ \ \ 0, /* samp \ \ */\newline |
1355 \space \space \space \space 0, /* samp \space \space */\newline |
1391 \ \ \ \ 1, /* tseg2 \ */\newline |
1356 \space \space \space \space 1, /* tseg2 \space */\newline |
1392 \ \ \ \ 12,/* tseg1 \ */\newline |
1357 \space \space \space \space 12,/* tseg1 \space */\newline |
1393 \ \ \ \},\newline |
1358 \space \space \space \},\newline |
1394 \ \ \ \{\newline |
1359 \space \space \space \{\newline |
1395 \ \ \ \ \ 0x00, \ \ \ /* Filter on 16 bits.\newline |
1360 \space \space \space \space \space 0x00, \space \space \space /* Filter on 16 bits.\newline |
1396 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ See Motorola Block Guide V02.14 fig |
1361 \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space \space See Motorola Block Guide V02.14 fig |
1397 4{}-3 */\newline |
1362 4{}-3 */\newline |
1398 \ \ \ \ \ 0x00, 0xFF, /* filter 0 hight accept all msg |
1363 \space \space \space \space \space 0x00, 0xFF, /* filter 0 hight accept all msg |
1399 \ \ \ \ \ */\newline |
1364 \space \space \space \space \space */\newline |
1400 \ \ \ \ \ 0x00, 0xFF, /* filter 0 low accept all msg |
1365 \space \space \space \space \space 0x00, 0xFF, /* filter 0 low accept all msg |
1401 \ \ \ \ \ \ \ */\newline |
1366 \space \space \space \space \space \space \space */\newline |
1402 \ \ \ \ \ 0x00, 0xFF, /* filter 1 hight filter all of \ msg |
1367 \space \space \space \space \space 0x00, 0xFF, /* filter 1 hight filter all of \space msg |
1403 \ */\newline |
1368 \space */\newline |
1404 \ \ \ \ \ 0x00, 0xFF, /* filter 1 low filter all of \ msg |
1369 \space \space \space \space \space 0x00, 0xFF, /* filter 1 low filter all of \space msg |
1405 \ \ \ */\newline |
1370 \space \space \space */\newline |
1406 \ \ \ \ \ 0x00, 0xFF, /* filter 2 hight filter most of \ msg |
1371 \space \space \space \space \space 0x00, 0xFF, /* filter 2 hight filter most of \space msg |
1407 */\newline |
1372 */\newline |
1408 \ \ \ \ \ 0x00, 0xFF, /* filter 2 low filter most of \ msg |
1373 \space \space \space \space \space 0x00, 0xFF, /* filter 2 low filter most of \space msg |
1409 \ \ */\newline |
1374 \space \space */\newline |
1410 \ \ \ \ \ 0x00, 0xFF, /* filter 3 hight filter most of \ msg |
1375 \space \space \space \space \space 0x00, 0xFF, /* filter 3 hight filter most of \space msg |
1411 */\newline |
1376 */\newline |
1412 \ \ \ \ \ 0x00, 0xFF, /* filter 3 low filter most of \ msg |
1377 \space \space \space \space \space 0x00, 0xFF, /* filter 3 low filter most of \space msg |
1413 \ \ */\newline |
1378 \space \space */\newline |
1414 \ \ \ \}\newline |
1379 \space \space \space \}\newline |
1415 \ \};} |
1380 \space \};} |
1416 |
|
1417 \subsubsection{Who to use warnings and errors messages ?} |
|
1418 \paragraph{Warnings messages} |
|
1419 \begin{longtable}[c]{|p{0.8476598in}|p{0.7761598in}|p{1.0268599in}|p{-0.026640158in}|p{1.0386599in}|p{1.2247599in}|p{1.1761599in}|} |
|
1420 \hline |
|
1421 {\bfseries |
|
1422 DEBUG\_WAR\_CONSOLE \_ON} |
|
1423 & |
|
1424 {\bfseries |
|
1425 DEBUG \_CAN} |
|
1426 & |
|
1427 {\bfseries |
|
1428 PrintMsg{}-WarTo{}-Console} |
|
1429 & |
|
1430 |
|
1431 \bigskip |
|
1432 & |
|
1433 {\bfseries |
|
1434 Printing long message on console } |
|
1435 & |
|
1436 \textbf{Printing short message on console.} (number and value only) |
|
1437 & |
|
1438 \textbf{Sending number and value in a PDO}., only if the node is a |
|
1439 slave, in operational state. |
|
1440 \\\hline |
|
1441 \endhead |
|
1442 DEF |
|
1443 & |
|
1444 DEF |
|
1445 & |
|
1446 1 |
|
1447 & |
|
1448 |
|
1449 \bigskip |
|
1450 & |
|
1451 |
|
1452 \bigskip |
|
1453 & |
|
1454 yes |
|
1455 & |
|
1456 |
|
1457 \bigskip |
|
1458 \\\hline |
|
1459 DEF |
|
1460 & |
|
1461 DEF |
|
1462 & |
|
1463 0 |
|
1464 & |
|
1465 |
|
1466 \bigskip |
|
1467 & |
|
1468 yes |
|
1469 & |
|
1470 |
|
1471 \bigskip |
|
1472 & |
|
1473 |
|
1474 \bigskip |
|
1475 \\\hline |
|
1476 DEF |
|
1477 & |
|
1478 UNDEF |
|
1479 & |
|
1480 1 |
|
1481 & |
|
1482 |
|
1483 \bigskip |
|
1484 & |
|
1485 |
|
1486 \bigskip |
|
1487 & |
|
1488 |
|
1489 \bigskip |
|
1490 & |
|
1491 |
|
1492 \bigskip |
|
1493 \\\hline |
|
1494 DEF |
|
1495 & |
|
1496 UNDEF |
|
1497 & |
|
1498 0 |
|
1499 & |
|
1500 |
|
1501 \bigskip |
|
1502 & |
|
1503 |
|
1504 \bigskip |
|
1505 & |
|
1506 |
|
1507 \bigskip |
|
1508 & |
|
1509 |
|
1510 \bigskip |
|
1511 \\\hline |
|
1512 UNDEF |
|
1513 & |
|
1514 X |
|
1515 & |
|
1516 X |
|
1517 & |
|
1518 |
|
1519 \bigskip |
|
1520 & |
|
1521 |
|
1522 \bigskip |
|
1523 & |
|
1524 |
|
1525 \bigskip |
|
1526 & |
|
1527 |
|
1528 \bigskip |
|
1529 \\\hline |
|
1530 \end{longtable} |
|
1531 |
|
1532 \bigskip |
|
1533 |
|
1534 \paragraph{Errors messages} |
|
1535 \begin{longtable}[c]{|p{0.8476598in}|p{0.7351598in}|p{0.6511598in}|p{0.7865598in}|p{-0.026640158in}|p{0.8087598in}|p{0.9955599in}|p{1.1858599in}|} |
|
1536 \hline |
|
1537 {\bfseries |
|
1538 DEBUG\_ERR\_CONSOLE \_ON} |
|
1539 & |
|
1540 {\bfseries |
|
1541 DEBUG \_CAN} |
|
1542 & |
|
1543 {\bfseries |
|
1544 PDO \_ERROR } |
|
1545 & |
|
1546 {\bfseries |
|
1547 PrintMsg{}-ErrTo{}-Console} |
|
1548 & |
|
1549 |
|
1550 \bigskip |
|
1551 & |
|
1552 {\bfseries |
|
1553 Printing long message on console} |
|
1554 & |
|
1555 \textbf{Printing short message on console.} (number and value only) |
|
1556 & |
|
1557 \textbf{Sending number and value in a PDO}., only if the node is a |
|
1558 slave, in operational state. |
|
1559 \\\hline |
|
1560 \endhead |
|
1561 DEF |
|
1562 & |
|
1563 DEF |
|
1564 & |
|
1565 X |
|
1566 & |
|
1567 1 |
|
1568 & |
|
1569 |
|
1570 \bigskip |
|
1571 & |
|
1572 |
|
1573 \bigskip |
|
1574 & |
|
1575 yes |
|
1576 & |
|
1577 yes |
|
1578 \\\hline |
|
1579 DEF |
|
1580 & |
|
1581 DEF |
|
1582 & |
|
1583 X |
|
1584 & |
|
1585 0 |
|
1586 & |
|
1587 |
|
1588 \bigskip |
|
1589 & |
|
1590 yes |
|
1591 & |
|
1592 |
|
1593 \bigskip |
|
1594 & |
|
1595 yes |
|
1596 \\\hline |
|
1597 DEF |
|
1598 & |
|
1599 UNDEF |
|
1600 & |
|
1601 X |
|
1602 & |
|
1603 1 |
|
1604 & |
|
1605 |
|
1606 \bigskip |
|
1607 & |
|
1608 |
|
1609 \bigskip |
|
1610 & |
|
1611 |
|
1612 \bigskip |
|
1613 & |
|
1614 yes |
|
1615 \\\hline |
|
1616 DEF |
|
1617 & |
|
1618 UNDEF |
|
1619 & |
|
1620 X |
|
1621 & |
|
1622 0 |
|
1623 & |
|
1624 |
|
1625 \bigskip |
|
1626 & |
|
1627 |
|
1628 \bigskip |
|
1629 & |
|
1630 |
|
1631 \bigskip |
|
1632 & |
|
1633 yes |
|
1634 \\\hline |
|
1635 UNDEF |
|
1636 & |
|
1637 X |
|
1638 & |
|
1639 DEF |
|
1640 & |
|
1641 X |
|
1642 & |
|
1643 |
|
1644 \bigskip |
|
1645 & |
|
1646 |
|
1647 \bigskip |
|
1648 & |
|
1649 |
|
1650 \bigskip |
|
1651 & |
|
1652 yes |
|
1653 \\\hline |
|
1654 UNDEF |
|
1655 & |
|
1656 X |
|
1657 & |
|
1658 UNDEF |
|
1659 & |
|
1660 X |
|
1661 & |
|
1662 |
|
1663 \bigskip |
|
1664 & |
|
1665 |
|
1666 \bigskip |
|
1667 & |
|
1668 |
|
1669 \bigskip |
|
1670 & |
|
1671 |
|
1672 \bigskip |
|
1673 \\\hline |
|
1674 \end{longtable} |
|
1675 |
|
1676 \bigskip |
|
1677 |
1381 |
1678 \subsubsection{Does the code works in banked memory ?} |
1382 \subsubsection{Does the code works in banked memory ?} |
1679 No. Today it seems that the port of gcc is bogged for using the banked |
1383 No. Today it seems that the port of gcc is bogged for using the banked |
1680 memory. So, unfortunately, we are limited to 48 Kbytes of memory code. |
1384 memory. So, unfortunately, we are limited to 48 Kbytes of memory code. |
1681 |
1385 |