Subversion Repositories svnkaklik

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1 → Rev 2

/roboti/solarni/2005/DART_rozjezd2.txt
0,0 → 1,1712
START: 28.8.2005 17:16:54
STOP : 28.8.2005 17:17:19
 
TIME STEP:
100 = 5s
 
VOLTAGE STEP:
32 = 3V
 
 
N CH1
 
1 40
2 40
3 39
4 40
5 39
6 40
7 40
8 40
9 40
10 40
11 40
12 40
13 40
14 40
15 41
16 40
17 41
18 40
19 42
20 44
21 48
22 50
23 53
24 54
25 55
26 58
27 59
28 61
29 62
30 63
31 65
32 65
33 68
34 69
35 70
36 71
37 71
38 73
39 74
40 75
41 75
42 77
43 78
44 79
45 80
46 81
47 82
48 82
49 84
50 84
51 85
52 85
53 87
54 87
55 88
56 89
57 90
58 90
59 91
60 92
61 93
62 94
63 94
64 95
65 96
66 96
67 96
68 97
69 98
70 99
71 100
72 100
73 101
74 101
75 102
76 102
77 103
78 104
79 104
80 105
81 105
82 106
83 107
84 107
85 107
86 108
87 109
88 110
89 110
90 110
91 111
92 111
93 112
94 113
95 113
96 114
97 114
98 115
99 115
100 116
101 117
102 117
103 118
104 118
105 119
106 119
107 120
108 119
109 121
110 122
111 122
112 122
113 122
114 123
115 123
116 124
117 124
118 125
119 125
120 126
121 127
122 127
123 127
124 127
125 127
126 128
127 129
128 129
129 129
130 130
131 130
132 131
133 131
134 132
135 132
136 132
137 133
138 134
139 134
140 134
141 135
142 135
143 135
144 135
145 136
146 136
147 137
148 137
149 137
150 137
151 139
152 139
153 139
154 139
155 140
156 141
157 140
158 141
159 141
160 141
161 142
162 142
163 143
164 143
165 143
166 143
167 145
168 145
169 145
170 145
171 146
172 146
173 147
174 146
175 148
176 147
177 148
178 148
179 148
180 149
181 149
182 150
183 150
184 150
185 151
186 151
187 151
188 151
189 153
190 152
191 152
192 153
193 154
194 154
195 154
196 155
197 154
198 155
199 155
200 156
201 156
202 157
203 157
204 157
205 158
206 157
207 158
208 158
209 158
210 159
211 159
212 160
213 160
214 160
215 160
216 161
217 161
218 161
219 161
220 162
221 162
222 162
223 162
224 163
225 163
226 163
227 163
228 164
229 164
230 165
231 165
232 166
233 166
234 166
235 166
236 167
237 167
238 167
239 167
240 168
241 168
242 168
243 169
244 169
245 169
246 169
247 169
248 169
249 170
250 170
251 170
252 171
253 171
254 171
255 172
256 172
257 172
258 172
259 173
260 173
261 173
262 173
263 173
264 174
265 174
266 174
267 175
268 175
269 175
270 175
271 176
272 176
273 177
274 176
275 177
276 177
277 177
278 177
279 178
280 178
281 178
282 179
283 179
284 179
285 180
286 180
287 180
288 181
289 181
290 181
291 181
292 181
293 181
294 182
295 182
296 182
297 183
298 183
299 183
300 183
301 184
302 183
303 184
304 184
305 184
306 184
307 185
308 185
309 186
310 186
311 186
312 186
313 186
314 187
315 187
316 187
317 187
318 187
319 187
320 186
321 185
322 184
323 180
324 175
325 172
326 165
327 159
328 153
329 146
330 137
331 131
332 124
333 116
334 110
335 110
336 110
337 110
338 110
339 110
340 110
341 111
342 111
343 111
344 110
345 110
346 110
347 111
348 111
349 111
350 111
351 111
352 111
353 111
354 111
355 111
356 31
357 111
358 112
359 111
360 111
361 111
362 112
363 112
364 112
365 112
366 111
367 112
368 111
369 112
370 111
371 112
372 112
373 112
374 112
375 112
376 112
377 112
378 112
379 112
380 111
381 112
382 111
383 112
384 112
385 112
386 112
387 112
388 112
389 112
390 112
391 112
392 112
393 112
394 112
395 112
396 112
397 112
398 112
399 112
400 112
401 112
402 111
403 112
404 112
405 112
406 112
407 113
408 112
409 112
410 112
411 112
412 112
413 113
414 113
415 112
416 112
417 112
418 112
419 112
420 112
421 113
422 112
423 112
424 113
425 112
426 112
427 112
428 112
429 112
430 112
431 112
432 113
433 112
434 113
435 112
436 112
437 112
438 112
439 113
440 112
441 112
442 112
443 112
444 112
445 113
446 112
447 113
448 112
449 112
450 112
451 113
452 112
453 113
454 113
455 113
456 112
457 112
458 112
459 113
460 113
461 113
462 112
463 113
464 112
465 113
466 112
467 112
468 112
469 112
470 112
471 113
472 113
473 113
474 112
475 113
476 113
477 112
478 112
479 112
480 112
481 112
482 112
483 112
484 113
485 112
486 113
487 113
488 113
489 112
490 112
491 113
492 112
493 112
494 113
495 113
496 112
497 113
498 112
499 113
500 113
501 113
502 112
503 112
504 113
505 112
506 112
507 112
508 113
509 0
510 0
511 0
512 0
513 0
514 0
515 0
516 0
517 0
518 0
519 0
520 0
521 0
522 0
523 0
524 0
525 0
526 0
527 0
528 0
529 0
530 0
531 0
532 0
533 0
534 0
535 0
536 0
537 0
538 0
539 0
540 0
541 0
542 0
543 0
544 0
545 0
546 0
547 0
548 0
549 0
550 0
551 0
552 0
553 0
554 0
555 0
556 0
557 0
558 0
559 0
560 0
561 0
562 0
563 0
564 0
565 0
566 0
567 0
568 0
569 0
570 0
571 0
572 0
573 0
574 0
575 0
576 0
577 0
578 0
579 0
580 0
581 0
582 0
583 0
584 0
585 0
586 0
587 0
588 0
589 0
590 0
591 0
592 0
593 0
594 0
595 0
596 0
597 0
598 0
599 0
600 0
601 0
602 0
603 0
604 0
605 0
606 0
607 0
608 0
609 0
610 0
611 0
612 0
613 0
614 0
615 0
616 0
617 0
618 0
619 0
620 0
621 0
622 0
623 0
624 0
625 0
626 0
627 0
628 0
629 0
630 0
631 0
632 0
633 0
634 0
635 0
636 0
637 0
638 0
639 0
640 0
641 0
642 0
643 0
644 0
645 0
646 0
647 0
648 0
649 0
650 0
651 0
652 0
653 0
654 0
655 0
656 0
657 0
658 0
659 0
660 0
661 0
662 0
663 0
664 0
665 0
666 0
667 0
668 0
669 0
670 0
671 0
672 0
673 0
674 0
675 0
676 0
677 0
678 0
679 0
680 0
681 0
682 0
683 0
684 0
685 0
686 0
687 0
688 0
689 0
690 0
691 0
692 0
693 0
694 0
695 0
696 0
697 0
698 0
699 0
700 0
701 0
702 0
703 0
704 0
705 0
706 0
707 0
708 0
709 0
710 0
711 0
712 0
713 0
714 0
715 0
716 0
717 0
718 0
719 0
720 0
721 0
722 0
723 0
724 0
725 0
726 0
727 0
728 0
729 0
730 0
731 0
732 0
733 0
734 0
735 0
736 0
737 0
738 0
739 0
740 0
741 0
742 0
743 0
744 0
745 0
746 0
747 0
748 0
749 0
750 0
751 0
752 0
753 0
754 0
755 0
756 0
757 0
758 0
759 0
760 0
761 0
762 0
763 0
764 0
765 0
766 0
767 0
768 0
769 0
770 0
771 0
772 0
773 0
774 0
775 0
776 0
777 0
778 0
779 0
780 0
781 0
782 0
783 0
784 0
785 0
786 0
787 0
788 0
789 0
790 0
791 0
792 0
793 0
794 0
795 0
796 0
797 0
798 0
799 0
800 0
801 0
802 0
803 0
804 0
805 0
806 0
807 0
808 0
809 0
810 0
811 0
812 0
813 0
814 0
815 0
816 0
817 0
818 0
819 0
820 0
821 0
822 0
823 0
824 0
825 0
826 0
827 0
828 0
829 0
830 0
831 0
832 0
833 0
834 0
835 0
836 0
837 0
838 0
839 0
840 0
841 0
842 0
843 0
844 0
845 0
846 0
847 0
848 0
849 0
850 0
851 0
852 0
853 0
854 0
855 0
856 0
857 0
858 0
859 0
860 0
861 0
862 0
863 0
864 0
865 0
866 0
867 0
868 0
869 0
870 0
871 0
872 0
873 0
874 0
875 0
876 0
877 0
878 0
879 0
880 0
881 0
882 0
883 0
884 0
885 0
886 0
887 0
888 0
889 0
890 0
891 0
892 0
893 0
894 0
895 0
896 0
897 0
898 0
899 0
900 0
901 0
902 0
903 0
904 0
905 0
906 0
907 0
908 0
909 0
910 0
911 0
912 0
913 0
914 0
915 0
916 0
917 0
918 0
919 0
920 0
921 0
922 0
923 0
924 0
925 0
926 0
927 0
928 0
929 0
930 0
931 0
932 0
933 0
934 0
935 0
936 0
937 0
938 0
939 0
940 0
941 0
942 0
943 0
944 0
945 0
946 0
947 0
948 0
949 0
950 0
951 0
952 0
953 0
954 0
955 0
956 0
957 0
958 0
959 0
960 0
961 0
962 0
963 0
964 0
965 0
966 0
967 0
968 0
969 0
970 0
971 0
972 0
973 0
974 0
975 0
976 0
977 0
978 0
979 0
980 0
981 0
982 0
983 0
984 0
985 0
986 0
987 0
988 0
989 0
990 0
991 0
992 0
993 0
994 0
995 0
996 0
997 0
998 0
999 0
1000 0
1001 0
1002 0
1003 0
1004 0
1005 0
1006 0
1007 0
1008 0
1009 0
1010 0
1011 0
1012 0
1013 0
1014 0
1015 0
1016 0
1017 0
1018 0
1019 0
1020 0
1021 0
1022 0
1023 0
1024 0
1025 0
1026 0
1027 0
1028 0
1029 0
1030 0
1031 0
1032 0
1033 0
1034 0
1035 0
1036 0
1037 0
1038 0
1039 0
1040 0
1041 0
1042 0
1043 0
1044 0
1045 0
1046 0
1047 0
1048 0
1049 0
1050 0
1051 0
1052 0
1053 0
1054 0
1055 0
1056 0
1057 0
1058 0
1059 0
1060 0
1061 0
1062 0
1063 0
1064 0
1065 0
1066 0
1067 0
1068 0
1069 0
1070 0
1071 0
1072 0
1073 0
1074 0
1075 0
1076 0
1077 0
1078 0
1079 0
1080 0
1081 0
1082 0
1083 0
1084 0
1085 0
1086 0
1087 0
1088 0
1089 0
1090 0
1091 0
1092 0
1093 0
1094 0
1095 0
1096 0
1097 0
1098 0
1099 0
1100 0
1101 0
1102 0
1103 0
1104 0
1105 0
1106 0
1107 0
1108 0
1109 0
1110 0
1111 0
1112 0
1113 0
1114 0
1115 0
1116 0
1117 0
1118 0
1119 0
1120 0
1121 0
1122 0
1123 0
1124 0
1125 0
1126 0
1127 0
1128 0
1129 0
1130 0
1131 0
1132 0
1133 0
1134 0
1135 0
1136 0
1137 0
1138 0
1139 0
1140 0
1141 0
1142 0
1143 0
1144 0
1145 0
1146 0
1147 0
1148 0
1149 0
1150 0
1151 0
1152 0
1153 0
1154 0
1155 0
1156 0
1157 0
1158 0
1159 0
1160 0
1161 0
1162 0
1163 0
1164 0
1165 0
1166 0
1167 0
1168 0
1169 0
1170 0
1171 0
1172 0
1173 0
1174 0
1175 0
1176 0
1177 0
1178 0
1179 0
1180 0
1181 0
1182 0
1183 0
1184 0
1185 0
1186 0
1187 0
1188 0
1189 0
1190 0
1191 0
1192 0
1193 0
1194 0
1195 0
1196 0
1197 0
1198 0
1199 0
1200 0
1201 0
1202 0
1203 0
1204 0
1205 0
1206 0
1207 0
1208 0
1209 0
1210 0
1211 0
1212 0
1213 0
1214 0
1215 0
1216 0
1217 0
1218 0
1219 0
1220 0
1221 0
1222 0
1223 0
1224 0
1225 0
1226 0
1227 0
1228 0
1229 0
1230 0
1231 0
1232 0
1233 0
1234 0
1235 0
1236 0
1237 0
1238 0
1239 0
1240 0
1241 0
1242 0
1243 0
1244 0
1245 0
1246 0
1247 0
1248 0
1249 0
1250 0
1251 0
1252 0
1253 0
1254 0
1255 0
1256 0
1257 0
1258 0
1259 0
1260 0
1261 0
1262 0
1263 0
1264 0
1265 0
1266 0
1267 0
1268 0
1269 0
1270 0
1271 0
1272 0
1273 0
1274 0
1275 0
1276 0
1277 0
1278 0
1279 0
1280 0
1281 0
1282 0
1283 0
1284 0
1285 0
1286 0
1287 0
1288 0
1289 0
1290 0
1291 0
1292 0
1293 0
1294 0
1295 0
1296 0
1297 0
1298 0
1299 0
1300 0
1301 0
1302 0
1303 0
1304 0
1305 0
1306 0
1307 0
1308 0
1309 0
1310 0
1311 0
1312 0
1313 0
1314 0
1315 0
1316 0
1317 0
1318 0
1319 0
1320 0
1321 0
1322 0
1323 0
1324 0
1325 0
1326 0
1327 0
1328 0
1329 0
1330 0
1331 0
1332 0
1333 0
1334 0
1335 0
1336 0
1337 0
1338 0
1339 0
1340 0
1341 0
1342 0
1343 0
1344 0
1345 0
1346 0
1347 0
1348 0
1349 0
1350 0
1351 0
1352 0
1353 0
1354 0
1355 0
1356 0
1357 0
1358 0
1359 0
1360 0
1361 0
1362 0
1363 0
1364 0
1365 0
1366 0
1367 0
1368 0
1369 0
1370 0
1371 0
1372 0
1373 0
1374 0
1375 0
1376 0
1377 0
1378 0
1379 0
1380 0
1381 0
1382 0
1383 0
1384 0
1385 0
1386 0
1387 0
1388 0
1389 0
1390 0
1391 0
1392 0
1393 0
1394 0
1395 0
1396 0
1397 0
1398 0
1399 0
1400 0
1401 0
1402 0
1403 0
1404 0
1405 0
1406 0
1407 0
1408 0
1409 0
1410 0
1411 0
1412 0
1413 0
1414 0
1415 0
1416 0
1417 0
1418 0
1419 0
1420 0
1421 0
1422 0
1423 0
1424 0
1425 0
1426 0
1427 0
1428 0
1429 0
1430 0
1431 0
1432 0
1433 0
1434 0
1435 0
1436 0
1437 0
1438 0
1439 0
1440 0
1441 0
1442 0
1443 0
1444 0
1445 0
1446 0
1447 0
1448 0
1449 0
1450 0
1451 0
1452 0
1453 0
1454 0
1455 0
1456 0
1457 0
1458 0
1459 0
1460 0
1461 0
1462 0
1463 0
1464 0
1465 0
1466 0
1467 0
1468 0
1469 0
1470 0
1471 0
1472 0
1473 0
1474 0
1475 0
1476 0
1477 0
1478 0
1479 0
1480 0
1481 0
1482 0
1483 0
1484 0
1485 0
1486 0
1487 0
1488 0
1489 0
1490 0
1491 0
1492 0
1493 0
1494 0
1495 0
1496 0
1497 0
1498 0
1499 0
1500 0
1501 0
1502 0
1503 0
1504 0
1505 0
1506 0
1507 0
1508 0
1509 0
1510 0
1511 0
1512 0
1513 0
1514 0
1515 0
1516 0
1517 0
1518 0
1519 0
1520 0
1521 0
1522 0
1523 0
1524 0
1525 0
1526 0
1527 0
1528 0
1529 0
1530 0
1531 0
1532 0
1533 0
1534 0
1535 0
1536 0
1537 0
1538 0
1539 0
1540 0
1541 0
1542 0
1543 0
1544 0
1545 0
1546 0
1547 0
1548 0
1549 0
1550 0
1551 0
1552 0
1553 0
1554 0
1555 0
1556 0
1557 0
1558 0
1559 0
1560 0
1561 0
1562 0
1563 0
1564 0
1565 0
1566 0
1567 0
1568 0
1569 0
1570 0
1571 0
1572 0
1573 0
1574 0
1575 0
1576 0
1577 0
1578 0
1579 0
1580 0
1581 0
1582 0
1583 0
1584 0
1585 0
1586 0
1587 0
1588 0
1589 0
1590 0
1591 0
1592 0
1593 0
1594 0
1595 0
1596 0
1597 0
1598 0
1599 0
1600 0
1601 0
1602 0
1603 0
1604 0
1605 0
1606 0
1607 0
1608 0
1609 0
1610 0
1611 0
1612 0
1613 0
1614 0
1615 0
1616 0
1617 0
1618 0
1619 0
1620 0
1621 0
1622 0
1623 0
1624 0
1625 0
1626 0
1627 0
1628 0
1629 0
1630 0
1631 0
1632 0
1633 0
1634 0
1635 0
1636 0
1637 0
1638 0
1639 0
1640 0
1641 0
1642 0
1643 0
1644 0
1645 0
1646 0
1647 0
1648 0
1649 0
1650 0
1651 0
1652 0
1653 0
1654 0
1655 0
1656 0
1657 0
1658 0
1659 0
1660 0
1661 0
1662 0
1663 0
1664 0
1665 0
1666 0
1667 0
1668 0
1669 0
1670 0
1671 0
1672 0
1673 0
1674 0
1675 0
1676 0
1677 0
1678 0
1679 0
1680 0
1681 0
1682 0
1683 0
1684 0
1685 0
1686 0
1687 0
1688 0
1689 0
1690 0
1691 0
1692 0
1693 0
1694 0
1695 0
1696 0
1697 0
1698 0
1699 0
1700 0
/roboti/solarni/2005/O1.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/O2.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/SOLARNI_ROBOT.DBK
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/SOLARNI_ROBOT.DRC
0,0 → 1,13
 
Checking Pins and Pin Connections
 
--------------------------------------------------
Checking Schematic: SCHEMATIC1
--------------------------------------------------
Checking Electrical Rules
 
Checking for Unconnected Nets
 
Checking for Invalid References
 
Checking for Duplicate References
/roboti/solarni/2005/SOLARNI_ROBOT.DSN
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/SOLARNI_ROBOT.ONL
0,0 → 1,656
(PCB SOLARNI_ROBOT
(description
(timeStamp "2005 08 22 20 18 24")
(program "CAPTURE.EXE" (Version "9.2.448 CIS - D"))
(source "Original data from OrCAD/CAPTURE schematic")
(title "")
(date "August 22, 2005")
(document "D:\\KAKLIK\\SCHEMATA\\ROBOTI\\SOLARNI\\2005\\SOLARNI_ROBOT.DSN")
(revision "")
(organization "")
(address1 "")
(address2 "")
(address3 "")
(address4 "")
(partvaluecombine "{Value}")
(pcbfootprintcombine "{Device}@{PCB Footprint}"))
(structure )
(placement
(component MOTOR
(place J4
(property
("PCB Footprint" JUMP2)
(Device JUMP2AC)
(timestamp 0000D14C)
("Source Package" MOTOR)
(Value MOTOR))))
(component BAT
(place J1
(property
("PCB Footprint" JUMP2)
(Device JUMP2AC)
(timestamp 0000CB53)
("Source Package" BAT)
(Value BAT))))
(component JUMP1
(place J10
(property
("PCB Footprint" JUMP1)
(Device JUMP1)
(timestamp 00010E57)
("Source Package" JUMP1)
(Value JUMP1)))
(place J11
(property
("PCB Footprint" JUMP1)
(Device JUMP1)
(timestamp 00010E69)
("Source Package" JUMP1)
(Value JUMP1)))
(place J12
(property
("PCB Footprint" JUMP1)
(Device JUMP1)
(timestamp 00010E7B)
("Source Package" JUMP1)
(Value JUMP1)))
(place J13
(property
("PCB Footprint" JUMP1)
(Device JUMP1)
(timestamp 00010E8D)
("Source Package" JUMP1)
(Value JUMP1)))
(place J14
(property
("PCB Footprint" JUMP1)
(Device JUMP1)
(timestamp 00010E9F)
("Source Package" JUMP1)
(Value JUMP1)))
(place J15
(property
("PCB Footprint" JUMP1)
(Device JUMP1)
(timestamp 00010EB1)
("Source Package" JUMP1)
(Value JUMP1)))
(place J16
(property
("PCB Footprint" JUMP1)
(Device JUMP1)
(timestamp 00010EC3)
("Source Package" JUMP1)
(Value JUMP1))))
(component JUMP2
(place J2
(property
("PCB Footprint" JUMP2)
(Device JUMP2)
(timestamp 000112CD)
("Source Package" JUMP2)
(Value RESET)))
(place J8
(property
("PCB Footprint" JUMP2)
(Device JUMP2)
(timestamp 00010CE3)
("Source Package" JUMP2)
(Value JUMP2)))
(place J9
(property
("PCB Footprint" JUMP2)
(Device JUMP2)
(timestamp 00010CFB)
("Source Package" JUMP2)
(Value JUMP2))))
(component "L-TR-1P1S_DOT"
(place TR1
(property
("PCB Footprint" TOROID4)
(Device TOROID4)
(timestamp 0000D0E8)
("Source Package" "L-TR-1P1S_DOT")
(Value "L-TR-1P1S_DOT"))))
(component BAT48SMD
(place D2
(property
("PCB Footprint" SMC)
(Device D)
(timestamp 0000CE12)
("Source Package" BAT48SMD)
(Value SK54ASMD)))
(place D3
(property
("PCB Footprint" SMC)
(Device D)
(timestamp 0000D01A)
("Source Package" BAT48SMD)
(Value SK54ASMD)))
(place D5
(property
("PCB Footprint" MINIMELF)
(Device D)
(timestamp 0000CD87)
("Source Package" BAT48SMD)
(Value BAT48SMD)))
(place D6
(property
("PCB Footprint" MINIMELF)
(Device D)
(timestamp 0000CDEF)
("Source Package" BAT48SMD)
(Value BAT48SMD))))
(component "MOS-N-ENH-D-DOUBLE"
(place Q1
(property
("PCB Footprint" SO8_2FET)
(Device SO8_2FET)
(timestamp 0000E7AA)
("Source Package" "MOS-N-ENH-D-DOUBLE")
(Value FDS9926))))
(component PIC_ISP
(place J7
(property
("PCB Footprint" PIC_ISP)
(Device PIC_ISP)
(timestamp 0000DAD2)
("Source Package" PIC_ISP)
(Value PIC_ISP))))
(component PIC16F88/P
(place U1
(property
("PCB Footprint" SO18_300)
(Device SO18_300)
(timestamp 0000DB3A)
("Source Package" PIC16F88/P)
(Value PIC16F88/SO))))
(component BZV55SMD
(place D1
(property
("PCB Footprint" MINIMELF)
(Device D)
(timestamp 0000CC86)
("Source Package" BZV55SMD)
(Value BZV55C5.6SMD)))
(place D4
(property
("PCB Footprint" MINIMELF)
(Device D)
(timestamp 0000D0A2)
("Source Package" BZV55SMD)
(Value BZV55C18SMD))))
(component R0805
(place R1
(property
("PCB Footprint" R0805)
(Device R)
(timestamp 0000CD79)
("Source Package" R0805)
(Value 100)))
(place R2
(property
("PCB Footprint" R0805)
(Device R)
(timestamp 0000CD85)
("Source Package" R0805)
(Value 100k)))
(place R3
(property
("PCB Footprint" R0805)
(Device R)
(timestamp 0000CDDF)
("Source Package" R0805)
(Value 100)))
(place R4
(property
("PCB Footprint" R0805)
(Device R)
(timestamp 0000CDDB)
("Source Package" R0805)
(Value 100k)))
(place R5
(property
("PCB Footprint" R0805)
(Device R)
(timestamp 0000DB5A)
("Source Package" R0805)
(Value 10k)))
(place R7
(property
("PCB Footprint" R0805)
(Device R)
(timestamp 0000DA8E)
("Source Package" R0805)
(Value 10k))))
(component C0805
(place C2
(property
("PCB Footprint" C1212)
(Device C)
(timestamp 0000C8A0)
("Source Package" C0805)
(Value 4uF/16V)))
(place C3
(property
("PCB Footprint" C1212)
(Device C)
(timestamp 0000D016)
("Source Package" C0805)
(Value 4uF/16V)))
(place C5
(property
("PCB Footprint" C0805)
(Device C)
(timestamp 0000CD7D)
("Source Package" C0805)
(Value 100nF)))
(place C6
(property
("PCB Footprint" C0805)
(Device C)
(timestamp 0000DA52)
("Source Package" C0805)
(Value 100nF))))
(component CROSS
(place M1
(property
("PCB Footprint" CROSS)
(Device CROSS)
(timestamp 00000007)
("Source Package" CROSS)
(Value CROSS)))
(place M2
(property
("PCB Footprint" CROSS)
(Device CROSS)
(timestamp 00000009)
("Source Package" CROSS)
(Value CROSS)))
(place M3
(property
("PCB Footprint" CROSS)
(Device CROSS)
(timestamp 0000000B)
("Source Package" CROSS)
(Value CROSS))))
(component "C-ELYT-CE035X8"
(place C1
(property
("PCB Footprint" CE035X8)
(Device "C-ELYT")
(timestamp 0000CB55)
("Source Package" "C-ELYT-CE035X8")
(Value 1000uF/6.3V))))
(component "C-ELYT-CE075X18"
(place C4
(property
("PCB Footprint" CE075X18)
(Device "C-ELYT")
(timestamp 0000D057)
("Source Package" "C-ELYT-CE075X18")
(Value 10G/16V))))
(component LEDSMD_0805
(place D7
(property
("PCB Footprint" LED0805)
(Device LED)
(timestamp 00010C8B)
("Source Package" LEDSMD_0805)
(Value LEDSMD_0805)))))
(library
(image PIC16F88/P
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\MICROCHIP\\CPU_PIC16_FLASH.OLB)
(Device PIC16F87_88__18_PIN))
(pin 999 1
(property
(pinname "RA2/AN2/CVREF/VREF-")
(pintype 4)))
(pin 999 2
(property
(pinname RA3/AN3/VREF+/C1OUT)
(pintype 4)))
(pin 999 3
(property
(pinname RA4/AN4/T0CKI/C2OUT)
(pintype 4)))
(pin 999 4
(property
(pinname RA5/MCLR#)
(pintype 4)))
(pin 999 5
(property
(pinname GND)
(pintype 7)))
(pin 999 6
(property
(pinname RB0/INT/CCP1)
(pintype 4)))
(pin 999 7
(property
(pinname RB1/SDI/SDA)
(pintype 4)))
(pin 999 8
(property
(pinname RB2/SDO/RX/DT)
(pintype 4)))
(pin 999 9
(property
(pinname RB3/PGM/CCP1)
(pintype 4)))
(pin 999 10
(property
(pinname SCL/SCK/RB4)
(pintype 4)))
(pin 999 11
(property
(pinname CK/TX/SS#/RB5)
(pintype 4)))
(pin 999 12
(property
(pinname T1CKI/T1OSO/PGC/AN5/RB6)
(pintype 4)))
(pin 999 13
(property
(pinname T1OSI/PGD/AN6/RB7)
(pintype 4)))
(pin 999 14
(property
(pinname VDD)
(pintype 7)))
(pin 999 15
(property
(pinname CLKO/OSC2/RA6)
(pintype 4)))
(pin 999 16
(property
(pinname CLKI/OSC1/RA7)
(pintype 4)))
(pin 999 17
(property
(pinname AN0/RA0)
(pintype 4)))
(pin 999 18
(property
(pinname AN1/RA1)
(pintype 4))))
(image R0805
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\COM_RLC.OLB)
(Device R))
(pin 999 1
(property
(pinname 1)
(pintype 4)))
(pin 999 2
(property
(pinname 2)
(pintype 4))))
(image JUMP1
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\JUMP.OLB)
(Device JUMP1))
(pin 999 1
(property
(pinname 1)
(pintype 4))))
(image "C-ELYT-CE035X8"
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\COM_RLC.OLB)
(Device "C-ELYT"))
(pin 999 A
(property
(pinname A)
(pintype 4)))
(pin 999 C
(property
(pinname C)
(pintype 4))))
(image C0805
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\COM_RLC.OLB)
(Device C))
(pin 999 1
(property
(pinname 1)
(pintype 4)))
(pin 999 2
(property
(pinname 2)
(pintype 4))))
(image "C-ELYT-CE075X18"
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\COM_RLC.OLB)
(Device "C-ELYT"))
(pin 999 A
(property
(pinname A)
(pintype 4)))
(pin 999 C
(property
(pinname C)
(pintype 4))))
(image CROSS
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\SYMBOLS.OLB)
(Device CROSS)))
(image BAT
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\GEN_REST.OLB)
(Device BAT))
(pin 999 A
(property
(pinname A)
(pintype 4)))
(pin 999 C
(property
(pinname C)
(pintype 4))))
(image JUMP2
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\JUMP.OLB)
(Device JUMP2))
(pin 999 1
(property
(pinname 1)
(pintype 4)))
(pin 999 2
(property
(pinname 2)
(pintype 4))))
(image MOTOR
(property
(sourcelib D:\\MLAB\\_Z\\DART01A\\SCH\\DART.OLB))
(pin 999 A
(property
(pinname A)
(pintype 4)))
(pin 999 C
(property
(pinname C)
(pintype 4))))
(image BZV55SMD
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\COM_D.OLB)
(Device D))
(pin 999 A
(property
(pinname A)
(pintype 4)))
(pin 999 C
(property
(pinname C)
(pintype 4))))
(image BAT48SMD
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\COM_D.OLB)
(Device D))
(pin 999 A
(property
(pinname A)
(pintype 4)))
(pin 999 C
(property
(pinname C)
(pintype 4))))
(image PIC_ISP
(property
(sourcelib C:\\LIBRARY\\ORCAD9X_OLD\\MICROCHIP\\CPU_PIC_FLASH.OLB)
(Device PIC_ISP))
(pin 999 1
(property
(pinname PGC)
(pintype 4)))
(pin 999 2
(property
(pinname PGD)
(pintype 4)))
(pin 999 3
(property
(pinname VDD)
(pintype 7)))
(pin 999 5
(property
(pinname GND)
(pintype 7)))
(pin 999 6
(property
(pinname MCLR#/VPP)
(pintype 4))))
(image LEDSMD_0805
(property
(sourcelib C:\\LIBRARY\\ORCAD9X\\COM_OPTO.OLB)
(Device LED))
(pin 999 A
(property
(pinname A)
(pintype 4)))
(pin 999 C
(property
(pinname C)
(pintype 4))))
(image "MOS-N-ENH-D-DOUBLE"
(property
(sourcelib D:\\MLAB\\_Z\\DART01A\\SCH\\DART.OLB))
(pin 999 G1
(property
(pinname G2_A)
(pintype 4)))
(pin 999 S1
(property
(pinname S2_A)
(pintype 4)))
(pin 999 D1
(property
(pinname D2_A)
(pintype 4)))
(pin 999 G2
(property
(pinname G2_B)
(pintype 4)))
(pin 999 S2
(property
(pinname S2_B)
(pintype 4)))
(pin 999 D2
(property
(pinname D2_B)
(pintype 4))))
(image "L-TR-1P1S_DOT"
(property
(sourcelib D:\\MLAB\\_Z\\DART01A\\SCH\\DART.OLB))
(pin 999 1
(property
(pinname 1)
(pintype 4)))
(pin 999 2
(property
(pinname 2)
(pintype 4)))
(pin 999 3
(property
(pinname 3)
(pintype 4)))
(pin 999 4
(property
(pinname 4)
(pintype 4)))))
(network
(net N53618
(pins
D3-A Q1-D2 J4-C))
(net N52608
(pins
D5-C C5-2 R1-1))
(net N52713
(pins
R3-2 Q1-G2 R4-2))
(net N52673
(pins
R1-2 R2-2 Q1-G1))
(net N53250
(pins
D2-C TR1-3))
(net N53185
(pins
TR1-2 Q1-D1))
(net N55830
(pins
R5-1 U1-4 J7-6 J2-2))
(net N53337
(pins
D3-C J4-A C3-2 TR1-4 D4-C C4-A))
(net N56050
(pins
U1-7 R7-2))
(net +VDD
(property
(nettype S))
(pins
R5-2 TR1-1 U1-14 C1-A C6-2 D1-C U1-2 J7-3 J1-A
C2-2))
(net N55874
(pins
J7-1 U1-12))
(net N55790
(pins
J7-2 U1-13))
(net GND
(property
(nettype S))
(pins
Q1-S2 C4-C D4-A D6-A J1-C C1-C D2-A R4-1 D5-A
Q1-S1 C3-1 R2-1 C6-1 D7-C C2-1 D1-A J7-5 U1-1
U1-5 J2-1))
(net N57358
(pins
D7-A R7-1 U1-6))
(net PWM
(pins
U1-9 J8-1 J8-2 C5-1))
(net MOTOR
(pins
D6-C U1-8 R3-1 J9-1 J9-2))
(net N69499
(pins
U1-15 J13-1))
(net N69554
(pins
U1-16 J12-1))
(net N69609
(pins
U1-17 J11-1))
(net N69664
(pins
U1-18 J10-1))
(net N69752
(pins
U1-11 J14-1))
(net N69807
(pins
J15-1 U1-10))
(net N71962
(pins
J16-1 U1-3)))
)
/roboti/solarni/2005/SOLARNI_ROBOT.asc
0,0 → 1,92
*PADS-PCB*
*PART*
C1 C-ELYT@CE035X8
C2 C@C1212
C3 C@C1212
C4 C-ELYT@CE075X18
C5 C@C0805
C6 C@C0805
D1 D@MINIMELF
D2 D@SMC
D3 D@SMC
D4 D@MINIMELF
D5 D@MINIMELF
D6 D@MINIMELF
D7 LED@LED0805
J1 JUMP2AC@JUMP2
J10 JUMP1@JUMP1
J11 JUMP1@JUMP1
J12 JUMP1@JUMP1
J13 JUMP1@JUMP1
J14 JUMP1@JUMP1
J15 JUMP1@JUMP1
J16 JUMP1@JUMP1
J2 JUMP2@JUMP2
J4 JUMP2AC@JUMP2
J7 PIC_ISP@PIC_ISP
J8 JUMP2@JUMP2
J9 JUMP2@JUMP2
M1 CROSS@CROSS
M2 CROSS@CROSS
M3 CROSS@CROSS
Q1 SO8_2FET@SO8_2FET
R1 R@R0805
R2 R@R0805
R3 R@R0805
R4 R@R0805
R5 R@R0805
R7 R@R0805
TR1 TOROID4@TOROID4
U1 SO18_300@SO18_300
 
*NET*
*SIGNAL* N53618
D3.A Q1.D2 J4.C
*SIGNAL* N52608
D5.C C5.2 R1.1
*SIGNAL* N52713
R3.2 Q1.G2 R4.2
*SIGNAL* N52673
R1.2 R2.2 Q1.G1
*SIGNAL* N53250
D2.C TR1.3
*SIGNAL* N53185
TR1.2 Q1.D1
*SIGNAL* N55830
R5.1 U1.4 J7.6 J2.2
*SIGNAL* N53337
D3.C J4.A C3.2 TR1.4 D4.C C4.A
*SIGNAL* N56050
U1.7 R7.2
*SIGNAL* +VDD
R5.2 TR1.1 U1.14 C1.A C6.2 D1.C U1.2 J7.3
J1.A C2.2
*SIGNAL* N55874
J7.1 U1.12
*SIGNAL* N55790
J7.2 U1.13
*SIGNAL* GND
Q1.S2 C4.C D4.A D6.A J1.C C1.C D2.A R4.1
D5.A Q1.S1 C3.1 R2.1 C6.1 D7.C C2.1 D1.A
J7.5 U1.1 U1.5 J2.1
*SIGNAL* N57358
D7.A R7.1 U1.6
*SIGNAL* PWM
U1.9 J8.1 J8.2 C5.1
*SIGNAL* MOTOR
D6.C U1.8 R3.1 J9.1 J9.2
*SIGNAL* N69499
U1.15 J13.1
*SIGNAL* N69554
U1.16 J12.1
*SIGNAL* N69609
U1.17 J11.1
*SIGNAL* N69664
U1.18 J10.1
*SIGNAL* N69752
U1.11 J14.1
*SIGNAL* N69807
J15.1 U1.10
*SIGNAL* N71962
J16.1 U1.3
*END*
/roboti/solarni/2005/SOLARNI_ROBOT.opj
0,0 → 1,91
(ExpressProject "SOLARNI_ROBOT"
(ProjectVersion "19981106")
(ProjectType "PCB")
(Folder "Design Resources"
(Folder "Library")
(NoModify)
(File ".\solarni_robot.dsn"
(Type "Schematic Design"))
(BuildFileAddedOrDeleted "x")
(CompileFileAddedOrDeleted "x")
(DRC_Scope "0")
(DRC_Action "0")
(DRC_Create_Warnings "FALSE")
(DRC_Check_Ports "FALSE")
(DRC_Check_Off-Page_Connectors "FALSE")
(DRC_Identical_References "TRUE")
(DRC_Type_Mismatch "TRUE")
(DRC_Report_Ports_and_Off-page_Connectors "FALSE")
(DRC_SDT_Compatibility "FALSE")
(DRC_Report_Off-grid_Objects "FALSE")
(DRC_Check_Unconnected_Nets "TRUE")
(DRC_Report_Netnames "FALSE")
(DRC_View_Output "FALSE")
(DRC_Report_File "D:\KAKLIK\SCHEMATA\ROBOTI\SOLARNI\2005\SOLARNI_ROBOT.DRC")
(Netlist_TAB "7")
(OTHER_Part_Value "{Value}")
(OTHER_Netlist_File "SOLARNI_ROBOT.asc")
(OTHER_Netlist_File2 "SOLARNI_ROBOT.CMP")
(OTHER_View_Output "FALSE")
(OTHER_View_Output2 "FALSE")
(OTHER_Formatter "padspcb.dll")
(OTHER_PCB_Footprint "{Device}@{PCB Footprint}")
(OTHER_Switch0 "FALSE")
(OTHER_Switch1 "FALSE")
(OTHER_Switch2 "FALSE")
(OTHER_Switch3 "FALSE")
(OTHER_Switch4 "FALSE")
(OTHER_Switch5 "FALSE")
(OTHER_Switch6 "FALSE"))
(Folder "Outputs"
(File ".\solarni_robot.drc"
(Type "Report"))
(File ".\solarni_robot.asc"
(Type "Report")))
(Folder "Referenced Projects")
(PartMRUSelector
(VDD
(LibraryName "C:\LIBRARY\ORCAD9X\SYMBOLS.OLB")
(DeviceIndex "0"))
(GND
(LibraryName "C:\LIBRARY\ORCAD9X\SYMBOLS.OLB")
(DeviceIndex "0"))
(R-TRIM-TRIMB
(FullPartName "R-TRIM-TRIMB.Normal")
(LibraryName "C:\LIBRARY\ORCAD9X\COM_RLC.OLB")
(DeviceIndex "0"))
(TITLE
(LibraryName "C:\LIBRARY\ORCAD9X\SYMBOLS.OLB")
(DeviceIndex "0"))
(JUMP2
(FullPartName "JUMP2.Normal")
(LibraryName "C:\LIBRARY\ORCAD9X\JUMP.OLB")
(DeviceIndex "0"))
(JUMP1
(FullPartName "JUMP1.Normal")
(LibraryName "C:\LIBRARY\ORCAD9X\JUMP.OLB")
(DeviceIndex "0"))
(LEDSMD_0805
(FullPartName "LEDSMD_0805.Normal")
(LibraryName "C:\LIBRARY\ORCAD9X\COM_OPTO.OLB")
(DeviceIndex "0")))
(GlobalState
(FileView
(Path "Design Resources")
(Path "Outputs"))
(HierarchyView)
(Doc
(Type "COrCapturePMDoc")
(Frame
(Placement "44 0 1 160 605 -4 -30 -3 197 8 407"))
(Tab 0))
(Doc
(Type "COrSchematicDoc")
(Frame
(Placement "44 2 3 -1 -1 -4 -30 44 914 58 495")
(Scroll "0 170")
(Zoom "100")
(Occurrence "/"))
(Path "D:\KAKLIK\SCHEMATA\ROBOTI\SOLARNI\2005\SOLARNI_ROBOT.DSN")
(Schematic "SCHEMATIC1")
(Page "PAGE1"))))
/roboti/solarni/2005/SOLARNI_ROBOT_blz.pcb
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/V1.PDF
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/V2.PDF
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/jump/bak/menic_1.c
0,0 → 1,80
//#device ICD=TRUE
 
#include ".\menic.h"
 
//#use fast_io(B)
 
#define PIEZO PIN_A6
#define LED PIN_A7
#define MENIC PIN_B3
#define REFPWR PIN_B1
#define MOTOR PIN_B2
 
unsigned int32 n;
 
void pip()
{
int1 beep;
int i;
 
for(i=0; i<250; i++)
{
output_bit(PIEZO, beep);
beep=~beep;
output_bit(LED, beep);
delay_us(100);
};
output_high(PIEZO);
output_high(LED);
}
 
void main()
{
 
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
setup_oscillator(OSC_4MHZ|OSC_INTRC);
 
// SET_TRIS_B( 0b11110011);
 
output_low(MENIC);
output_low(MOTOR);
output_low(REFPWR);
 
pip();
 
for(n=0;n<370000;n++)
// for(n=0;n<100000;n++)
{
// set_timer0(0);
// while ( get_timer0() < 250 )
{
output_high(MENIC);
delay_us(5);
output_low(MENIC);
delay_us(4);
// delay_us(90);
};
}
 
pip();
 
output_high(MOTOR);
delay_ms(3000);
output_low(MOTOR);
 
while(true)
{
output_high(LED);
delay_ms(300);
output_low(LED);
delay_ms(300);
}
}
/roboti/solarni/2005/jump/bak/menic_2_nefunguje_rozjezd.c
0,0 → 1,148
#include ".\menic.h"
 
#define RAZENI 100 // Po kolika ms se bude menit rychlost pro rozjizdeni
#define REFNOM 107 // Hodnota odpovidajici 1,2V pri nominalnim zatizeni
#define REFSTART 80 // Hodnota odpovidajici 1,2V pri nezatizenych clancich
 
#define PIEZO PIN_A6 // Jeden pol piezo reproduktoru
#define LED PIN_A7 // LED
#define MENIC PIN_B3 // Spinani tranzistoru menice
#define REFPWR PIN_B1 // Napajeni zdroje referencniho napeti
#define MOTOR PIN_B2 // Spinani tranzistoru motoru
 
#byte SSPBUF = 0x13 // Registry jednotky SSP
#byte SSPCON1 = 0x14
#byte SSPSTAT = 0x94
 
// Vzorky pro generovani PWM pomoci SSP
unsigned int8 const Pattern[8] = {0x02,0x06,0x0e,0x1e,0x3e,0x7e,0xfe,0xff};
unsigned int8 MotorPattern;
 
#INT_SSP
void IntSSP()
{
SSPBUF=MotorPattern; // znovu vysli stejnou hodnotu
}
 
void pip() // pipnuti a bliknuti
{
int1 beep;
int i;
 
for(i=0; i<250; i++)
{
output_bit(PIEZO, beep);
beep=~beep;
output_bit(LED, beep);
delay_us(100);
};
output_high(PIEZO);
output_high(LED);
}
 
void cvak() // pouze cvaknuti piezoelementem bez bliknuti
{
output_bit(PIEZO,~input(PIEZO));
}
 
void main()
{
int8 n;
int8 perioda;
 
setup_adc_ports(ADC_CLOCK_INTERNAL|sAN4|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
output_low(MENIC); // Vsechno zastav
output_low(MOTOR);
output_low(REFPWR);
output_high(LED);
output_high(PIEZO);
 
set_adc_channel(4); // Vyber AD kanal pro pomerne mereni napeti
set_pwm1_duty(0); // Spust PWM, ale zatim s trvalou 0 na vystupu
setup_ccp1(CCP_PWM); // PWM pro zatizeni clanku v seru
setup_timer_2(T2_DIV_BY_1,100,1); // perioda
 
setup_oscillator(OSC_4MHZ|OSC_INTRC); // rozjed PIC (zvysi se odber)
 
 
// jsme v depu?
set_pwm1_duty(2); // PWM pro zatizeni clanku pri malem osvetleni
n=0;
do
{
output_low(REFPWR);
delay_ms(100);
if (4==n++) {cvak(); n=0;};
output_high(REFPWR); // zapni napajeni napetove reference
delay_ms(1);
} while (read_adc()>REFSTART); // Odkryl starter clanky?
output_low(REFPWR);
 
pip(); // potvrzeni odstartovani
 
// regulace
perioda=100; // nastav optimalni periodu pri jedne 500W zarovce
for(n=0;n<=7;n++)
{
set_pwm1_duty(0);
setup_timer_2(T2_DIV_BY_1,perioda,1); // perioda
set_pwm1_duty(19); // delka sepnuti
delay_ms(100);
output_high(REFPWR); // zapni napajeni napetove reference
delay_ms(1);
if (read_adc()<REFNOM) perioda--; // zvyseni zatizeni menice
output_low(REFPWR); // konec mereni, odpoj napajeni reference
};
 
// nabíjíme
delay_ms(14000);
 
// rozjezd
SSPSTAT = 0;
SSPCON1 = 0x22; // SPI OSC/64
enable_interrupts(global);
 
for(n=0; n<=7; n++) // razeni osmi rychlostnich stupnu
{
disable_interrupts(INT_SSP); // zastav preruseni od SSP
MotorPattern=Pattern[n];
SSPBUF=MotorPattern; // data pro vyslani
enable_interrupts(INT_SSP); // az budou vyslana, prijde interrupt od SSP
delay_ms(RAZENI); // Pockej na dalsi razeni
};
SSPSTAT = 0;
SSPCON1 = 0; // SPI stop
disable_interrupts(INT_SSP); // zastav preruseni od SSP
 
// jedem co to da
output_high(MOTOR);
delay_ms(1000);
output_low(MOTOR);
set_pwm1_duty(0); // zastav menic
 
// vybiti kondenzatoru pro ucely mereni
pip();
delay_ms(2000);
pip();
output_high(MOTOR);
 
while(true)
{
output_high(LED);
output_low(PIEZO);
delay_ms(300);
output_low(LED);
output_high(PIEZO);
delay_ms(300);
}
// priprava na dalsi jizdu
delay_ms(5000);
reset_cpu();
}
/roboti/solarni/2005/jump/bak/menic_3.c
0,0 → 1,148
#include ".\menic.h"
 
#define RAZENI 50 // Po kolika ms se bude menit rychlost pro rozjizdeni
#define REFNOM 107 // Hodnota odpovidajici 1,2V pri nominalnim zatizeni
#define REFSTART 80 // Hodnota odpovidajici 1,2V pri nezatizenych clancich
 
#define PIEZO PIN_A6 // Jeden pol piezo reproduktoru
#define LED PIN_A7 // LED
#define MENIC PIN_B3 // Spinani tranzistoru menice
#define REFPWR PIN_B1 // Napajeni zdroje referencniho napeti
#define MOTOR PIN_B2 // Spinani tranzistoru motoru
 
#byte SSPBUF = 0x13 // Registry jednotky SSP
#byte SSPCON1 = 0x14
#byte SSPSTAT = 0x94
 
// Vzorky pro generovani PWM pomoci SSP
unsigned int8 const Pattern[8] = {0x02,0x06,0x0e,0x1e,0x3e,0x7e,0xfe,0xff};
unsigned int8 MotorPattern;
 
#INT_SSP
void IntSSP()
{
SSPBUF=MotorPattern; // znovu vysli stejnou hodnotu
}
 
void pip() // pipnuti a bliknuti
{
int1 beep;
int i;
 
for(i=0; i<250; i++)
{
output_bit(PIEZO, beep);
beep=~beep;
output_bit(LED, beep);
delay_us(100);
};
output_high(PIEZO);
output_high(LED);
}
 
void cvak() // pouze cvaknuti piezoelementem bez bliknuti
{
output_bit(PIEZO,~input(PIEZO));
}
 
void main()
{
int8 n;
int8 perioda;
 
setup_adc_ports(ADC_CLOCK_INTERNAL|sAN4|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
output_low(MENIC); // Vsechno zastav
output_low(MOTOR);
output_low(REFPWR);
output_high(LED);
output_high(PIEZO);
 
set_adc_channel(4); // Vyber AD kanal pro pomerne mereni napeti
set_pwm1_duty(0); // Spust PWM, ale zatim s trvalou 0 na vystupu
setup_ccp1(CCP_PWM); // PWM pro zatizeni clanku v seru
setup_timer_2(T2_DIV_BY_1,100,1); // perioda
 
setup_oscillator(OSC_4MHZ|OSC_INTRC); // rozjed PIC (zvysi se odber)
 
 
// jsme v depu?
set_pwm1_duty(2); // PWM pro zatizeni clanku pri malem osvetleni
n=0;
do
{
output_low(REFPWR);
delay_ms(100);
if (4==n++) {cvak(); n=0;};
output_high(REFPWR); // zapni napajeni napetove reference
delay_ms(1);
} while (read_adc()>REFSTART); // Odkryl starter clanky?
output_low(REFPWR);
 
pip(); // potvrzeni odstartovani
 
// regulace
perioda=100; // nastav optimalni periodu pri jedne 500W zarovce
for(n=0;n<=7;n++)
{
set_pwm1_duty(0);
setup_timer_2(T2_DIV_BY_1,perioda,1); // perioda
set_pwm1_duty(19); // delka sepnuti
delay_ms(100);
output_high(REFPWR); // zapni napajeni napetove reference
delay_ms(1);
if (read_adc()<REFNOM) perioda--; // zvyseni zatizeni menice
output_low(REFPWR); // konec mereni, odpoj napajeni reference
};
 
// nabíjíme
delay_ms(14000);
 
// rozjezd
SSPSTAT = 0;
SSPCON1 = 0x22; // SPI OSC/64
MotorPattern=0x02; // prvni data pro vyslani
SSPBUF=MotorPattern; // data pro vyslani
enable_interrupts(global);
enable_interrupts(INT_SSP); // az budou vyslana, prijde interrupt od SSP
 
for(n=0; n<=7; n++) // razeni osmi rychlostnich stupnu
{
MotorPattern=Pattern[n];
delay_ms(RAZENI); // Pockej na dalsi razeni
};
SSPSTAT = 0;
SSPCON1 = 0; // SPI stop
disable_interrupts(INT_SSP); // zastav preruseni od SSP
 
// jedem co to da
output_high(MOTOR);
delay_ms(1000);
output_low(MOTOR);
set_pwm1_duty(0); // zastav menic
 
// vybiti kondenzatoru pro ucely mereni
pip();
delay_ms(2000);
pip();
output_high(MOTOR);
 
while(true)
{
output_high(LED);
output_low(PIEZO);
delay_ms(300);
output_low(LED);
output_high(PIEZO);
delay_ms(300);
}
// priprava na dalsi jizdu
delay_ms(5000);
reset_cpu();
}
/roboti/solarni/2005/jump/bak/vssver.scc
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/jump/menic.BAK
0,0 → 1,151
#include ".\menic.h"
 
#define RAZENI 60 // Po kolika ms se bude menit rychlost pro rozjizdeni
#define REFNOM 107 // Hodnota odpovidajici 1,2V pri nominalnim zatizeni
#define REFSTART 80 // Hodnota odpovidajici 1,2V pri nezatizenych clancich
 
#define PIEZO PIN_A6 // Jeden pol piezo reproduktoru
#define LED PIN_A7 // LED
#define MENIC PIN_B3 // Spinani tranzistoru menice
#define REFPWR PIN_B1 // Napajeni zdroje referencniho napeti
#define MOTOR PIN_B2 // Spinani tranzistoru motoru
 
#byte SSPBUF = 0x13 // Registry jednotky SSP
#byte SSPCON1 = 0x14
#byte SSPSTAT = 0x94
 
// Vzorky pro generovani PWM pomoci SSP
unsigned int8 const Pattern[8] = {0x02,0x06,0x0e,0x1e,0x3e,0x7e,0xfe,0xff};
unsigned int8 MotorPattern;
 
#INT_SSP
void IntSSP()
{
SSPBUF=MotorPattern; // znovu vysli stejnou hodnotu
}
 
void pip() // pipnuti a bliknuti
{
int1 beep;
int i;
 
for(i=0; i<250; i++)
{
output_bit(PIEZO, beep);
beep=~beep;
output_bit(LED, beep);
delay_us(100);
};
output_high(PIEZO);
output_high(LED);
}
 
void cvak() // pouze cvaknuti piezoelementem bez bliknuti
{
output_bit(PIEZO,~input(PIEZO));
}
 
void main()
{
int8 n;
int8 perioda;
int8 cekej;
setup_adc_ports(ADC_CLOCK_INTERNAL|sAN4|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
output_low(MENIC); // Vsechno zastav
output_low(MOTOR);
output_low(REFPWR);
output_high(LED);
output_high(PIEZO);
 
set_adc_channel(4); // Vyber AD kanal pro pomerne mereni napeti
set_pwm1_duty(0); // Spust PWM, ale zatim s trvalou 0 na vystupu
setup_ccp1(CCP_PWM); // PWM pro zatizeni clanku v seru
setup_timer_2(T2_DIV_BY_1,100,1); // perioda
 
setup_oscillator(OSC_4MHZ|OSC_INTRC); // rozjed PIC (zvysi se odber)
 
 
// jsme v depu?
set_pwm1_duty(2); // PWM pro zatizeni clanku pri malem osvetleni
n=0;
do
{
output_low(REFPWR);
delay_ms(100);
if (4==n++) {cvak(); n=0;};
output_high(REFPWR); // zapni napajeni napetove reference
delay_ms(1);
} while (read_adc()>REFSTART); // Odkryl starter clanky?
output_low(REFPWR);
 
pip(); // potvrzeni odstartovani
 
// regulace
perioda=100; // nastav optimalni periodu pri jedne 500W zarovce
for(n=0;n<=7;n++)
{
set_pwm1_duty(0);
setup_timer_2(T2_DIV_BY_1,perioda,1); // perioda
set_pwm1_duty(19); // delka sepnuti
delay_ms(100);
output_high(REFPWR); // zapni napajeni napetove reference
delay_ms(1);
if (read_adc()<REFNOM) perioda--; // zvyseni zatizeni menice
output_low(REFPWR); // konec mereni, odpoj napajeni reference
};
 
// nabíjíme
delay_ms(14000);
 
// rozjezd
SSPSTAT = 0;
SSPCON1 = 0x22; // SPI OSC/64
MotorPattern=0x02; // prvni data pro vyslani
SSPBUF=MotorPattern; // data pro vyslani
enable_interrupts(global);
enable_interrupts(INT_SSP); // az budou vyslana, prijde interrupt od SSP
cekej=RAZENI;
for(n=0; n<=7; n++) // razeni osmi rychlostnich stupnu
{
MotorPattern=Pattern[n];
delay_ms(RAZENI); // Pockej na dalsi razeni
// cekej-=10;
};
SSPSTAT = 0;
SSPCON1 = 0; // SPI stop
disable_interrupts(INT_SSP); // zastav preruseni od SSP
 
// jedem co to da
output_high(MOTOR);
delay_ms(1000);
output_low(MOTOR);
set_pwm1_duty(0); // zastav menic
 
// vybiti kondenzatoru pro ucely mereni
pip();
delay_ms(2000);
pip();
output_high(MOTOR);
 
while(true)
{
output_high(LED);
output_low(PIEZO);
delay_ms(300);
output_low(LED);
output_high(PIEZO);
delay_ms(300);
}
// priprava na dalsi jizdu
delay_ms(5000);
reset_cpu();
}
/roboti/solarni/2005/jump/menic.HEX
0,0 → 1,58
:1000000000308A0090280000FF00030E8301A10049
:100010007F08A0000A08A8008A01A00E0408A20018
:100020007708A3007808A4007908A5007A08A6003C
:100030007B08A700831383128C308400801D222844
:100040008C193528220884002308F7002408F800BA
:100050002508F9002608FA002708FB0028088A006E
:10006000210E8300FF0E7F0E09008A1143280A101B
:100070008A100A118207023406340E341E343E34CC
:100080007E34FE34FF34290893008C118A11222813
:100090002D308400000803195C280130F800F701B6
:1000A000F70B5028F80B4F284A30F700F70B56286B
:1000B00000000000800B4D280034831605178312C2
:1000C000051F642805136528051783160513831279
:1000D0008A110629AD012D08F93C031C87282C182C
:1000E000732805137428051783160513013083122E
:1000F000AC062C187D2885137E288517831685135A
:100100002130F700F70B82288312AD0A6B28831683
:100110000513831205178316851383128517003480
:1001200084011F30830583161F129F121B0880391C
:100130009B0007309C001C0883120D13603083164F
:100140008F001F129F121B088039D0389B001F138D
:1001500083121F179F1783169F1383121F14941265
:10016000831606118614061200308312940083163B
:1001700094000108C03907388100831290010730CC
:1001800083169C0005080330F700F70BC5281C08F0
:1001900083120D1383169D01861183128611831617
:1001A0000611831206118316861083128610831699
:1001B00085138312851783160513831205172030C4
:1001C000F8001F08C73978049F009501831686112F
:1001D000831286110C3097000030F800043892002A
:1001E00064308316920062308F00023083129500D3
:1001F000AA0183168610831286106430AD00482051
:100200002A08AA0A043C031D07295D28AA018316AF
:100210008610831286140130AD0048201F151F1967
:100220000F291E08503C031CF928831686108312E0
:1002300086106A206430AB00AA012A08073C031C20
:10024000432995010030F800043892002B088316EA
:1002500092001330831295006430AD00482083165D
:100260008610831286140130AD0048201F151F1917
:1002700037291E086A3C0318AB03831686108312C5
:100280008610AA0A1D293830AC00FA30AD0048208B
:10029000AC0B45298316940122308312940002305E
:1002A000A90029089300C0308B0483168C15831293
:1002B000AA012A08073C031C66292A083720F800EF
:1002C000A9003C30AD004820AA0A592983169401A0
:1002D0008312940183168C110611831206150430C3
:1002E000AC00FA30AD004820AC0B71298316061122
:1002F0008312061195016A200830AC00FA30AD0077
:100300004820AC0B7E296A2083160611831206153D
:10031000831685138312851783160513831205131D
:100320000230AC009630AD004820AC0B9229831609
:100330008513831285138316051383120517023064
:10034000AC009630AD004820AC0BA12988291430B0
:10035000AC00FA30AD004820AC0BA9298A01002876
:02036000630038
:04400E003827FC3F14
:00000001FF
;PIC16F88
/roboti/solarni/2005/jump/menic.LST
0,0 → 1,601
CCS PCM C Compiler, Version 3.221, 27853 28-VIII-05 19:00
 
Filename: D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.LST
 
ROM used: 433 words (11%)
Largest free fragment is 2048
RAM used: 18 (10%) at main() level
19 (11%) worst case
Stack: 2 worst case (1 in main + 1 for interrupts)
 
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 090
0003: NOP
0004: MOVWF 7F
0005: SWAPF 03,W
0006: CLRF 03
0007: MOVWF 21
0008: MOVF 7F,W
0009: MOVWF 20
000A: MOVF 0A,W
000B: MOVWF 28
000C: CLRF 0A
000D: SWAPF 20,F
000E: MOVF 04,W
000F: MOVWF 22
0010: MOVF 77,W
0011: MOVWF 23
0012: MOVF 78,W
0013: MOVWF 24
0014: MOVF 79,W
0015: MOVWF 25
0016: MOVF 7A,W
0017: MOVWF 26
0018: MOVF 7B,W
0019: MOVWF 27
001A: BCF 03.7
001B: BCF 03.5
001C: MOVLW 8C
001D: MOVWF 04
001E: BTFSS 00.3
001F: GOTO 022
0020: BTFSC 0C.3
0021: GOTO 035
0022: MOVF 22,W
0023: MOVWF 04
0024: MOVF 23,W
0025: MOVWF 77
0026: MOVF 24,W
0027: MOVWF 78
0028: MOVF 25,W
0029: MOVWF 79
002A: MOVF 26,W
002B: MOVWF 7A
002C: MOVF 27,W
002D: MOVWF 7B
002E: MOVF 28,W
002F: MOVWF 0A
0030: SWAPF 21,W
0031: MOVWF 03
0032: SWAPF 7F,F
0033: SWAPF 7F,W
0034: RETFIE
0035: BCF 0A.3
0036: GOTO 043
.................... #include ".\menic.h"
.................... #include <16F88.h>
.................... //////// Standard Header file for the PIC16F88 device ////////////////
.................... #device PIC16F88
.................... #list
....................
....................
.................... #device adc=8
.................... #fuses NOWDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, DEBUG, NOPROTECT, NOFCMEN, NOIESO, CCPB3
.................... #use delay(clock=4000000)
*
0048: MOVLW 2D
0049: MOVWF 04
004A: MOVF 00,W
004B: BTFSC 03.2
004C: GOTO 05C
004D: MOVLW 01
004E: MOVWF 78
004F: CLRF 77
0050: DECFSZ 77,F
0051: GOTO 050
0052: DECFSZ 78,F
0053: GOTO 04F
0054: MOVLW 4A
0055: MOVWF 77
0056: DECFSZ 77,F
0057: GOTO 056
0058: NOP
0059: NOP
005A: DECFSZ 00,F
005B: GOTO 04D
005C: RETLW 00
....................
....................
....................
.................... #define RAZENI 60 // Po kolika ms se bude menit rychlost pro rozjizdeni
.................... #define REFNOM 107 // Hodnota odpovidajici 1,2V pri nominalnim zatizeni
.................... #define REFSTART 80 // Hodnota odpovidajici 1,2V pri nezatizenych clancich
....................
.................... #define PIEZO PIN_A6 // Jeden pol piezo reproduktoru
.................... #define LED PIN_A7 // LED
.................... #define MENIC PIN_B3 // Spinani tranzistoru menice
.................... #define REFPWR PIN_B1 // Napajeni zdroje referencniho napeti
.................... #define MOTOR PIN_B2 // Spinani tranzistoru motoru
....................
.................... #byte SSPBUF = 0x13 // Registry jednotky SSP
.................... #byte SSPCON1 = 0x14
.................... #byte SSPSTAT = 0x94
....................
.................... // Vzorky pro generovani PWM pomoci SSP
.................... unsigned int8 const Pattern[8] = {0x02,0x06,0x0e,0x1e,0x3e,0x7e,0xfe,0xff};
.................... unsigned int8 MotorPattern;
....................
.................... #INT_SSP
.................... void IntSSP()
.................... {
.................... SSPBUF=MotorPattern; // znovu vysli stejnou hodnotu
*
0043: MOVF 29,W
0044: MOVWF 13
.................... }
....................
0045: BCF 0C.3
0046: BCF 0A.3
0047: GOTO 022
.................... void pip() // pipnuti a bliknuti
.................... {
.................... int1 beep;
.................... int i;
....................
.................... for(i=0; i<250; i++)
*
006A: CLRF 2D
006B: MOVF 2D,W
006C: SUBLW F9
006D: BTFSS 03.0
006E: GOTO 087
.................... {
.................... output_bit(PIEZO, beep);
006F: BTFSC 2C.0
0070: GOTO 073
0071: BCF 05.6
0072: GOTO 074
0073: BSF 05.6
0074: BSF 03.5
0075: BCF 05.6
.................... beep=~beep;
0076: MOVLW 01
0077: BCF 03.5
0078: XORWF 2C,F
.................... output_bit(LED, beep);
0079: BTFSC 2C.0
007A: GOTO 07D
007B: BCF 05.7
007C: GOTO 07E
007D: BSF 05.7
007E: BSF 03.5
007F: BCF 05.7
.................... delay_us(100);
0080: MOVLW 21
0081: MOVWF 77
0082: DECFSZ 77,F
0083: GOTO 082
.................... };
0084: BCF 03.5
0085: INCF 2D,F
0086: GOTO 06B
.................... output_high(PIEZO);
0087: BSF 03.5
0088: BCF 05.6
0089: BCF 03.5
008A: BSF 05.6
.................... output_high(LED);
008B: BSF 03.5
008C: BCF 05.7
008D: BCF 03.5
008E: BSF 05.7
.................... }
008F: RETLW 00
....................
.................... void cvak() // pouze cvaknuti piezoelementem bez bliknuti
.................... {
.................... output_bit(PIEZO,~input(PIEZO));
*
005D: BSF 03.5
005E: BSF 05.6
005F: BCF 03.5
0060: BTFSS 05.6
0061: GOTO 064
0062: BCF 05.6
0063: GOTO 065
0064: BSF 05.6
0065: BSF 03.5
0066: BCF 05.6
.................... }
0067: BCF 03.5
0068: BCF 0A.3
0069: GOTO 106 (RETURN)
....................
.................... void main()
.................... {
*
0090: CLRF 04
0091: MOVLW 1F
0092: ANDWF 03,F
0093: BSF 03.5
0094: BCF 1F.4
0095: BCF 1F.5
0096: MOVF 1B,W
0097: ANDLW 80
0098: MOVWF 1B
0099: MOVLW 07
009A: MOVWF 1C
009B: MOVF 1C,W
009C: BCF 03.5
009D: BCF 0D.6
009E: MOVLW 60
009F: BSF 03.5
00A0: MOVWF 0F
.................... int8 n;
.................... int8 perioda;
....................
.................... setup_adc_ports(ADC_CLOCK_INTERNAL|sAN4|VSS_VDD);
00A1: BCF 1F.4
00A2: BCF 1F.5
00A3: MOVF 1B,W
00A4: ANDLW 80
00A5: IORLW D0
00A6: MOVWF 1B
.................... setup_adc(ADC_CLOCK_INTERNAL);
00A7: BCF 1F.6
00A8: BCF 03.5
00A9: BSF 1F.6
00AA: BSF 1F.7
00AB: BSF 03.5
00AC: BCF 1F.7
00AD: BCF 03.5
00AE: BSF 1F.0
.................... setup_spi(FALSE);
00AF: BCF 14.5
00B0: BSF 03.5
00B1: BCF 06.2
00B2: BSF 06.1
00B3: BCF 06.4
00B4: MOVLW 00
00B5: BCF 03.5
00B6: MOVWF 14
00B7: BSF 03.5
00B8: MOVWF 14
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
00B9: MOVF 01,W
00BA: ANDLW C0
00BB: IORLW 07
00BC: MOVWF 01
.................... setup_timer_1(T1_DISABLED);
00BD: BCF 03.5
00BE: CLRF 10
.................... setup_comparator(NC_NC_NC_NC);
00BF: MOVLW 07
00C0: BSF 03.5
00C1: MOVWF 1C
00C2: MOVF 05,W
00C3: MOVLW 03
00C4: MOVWF 77
00C5: DECFSZ 77,F
00C6: GOTO 0C5
00C7: MOVF 1C,W
00C8: BCF 03.5
00C9: BCF 0D.6
.................... setup_vref(FALSE);
00CA: BSF 03.5
00CB: CLRF 1D
....................
.................... output_low(MENIC); // Vsechno zastav
00CC: BCF 06.3
00CD: BCF 03.5
00CE: BCF 06.3
.................... output_low(MOTOR);
00CF: BSF 03.5
00D0: BCF 06.2
00D1: BCF 03.5
00D2: BCF 06.2
.................... output_low(REFPWR);
00D3: BSF 03.5
00D4: BCF 06.1
00D5: BCF 03.5
00D6: BCF 06.1
.................... output_high(LED);
00D7: BSF 03.5
00D8: BCF 05.7
00D9: BCF 03.5
00DA: BSF 05.7
.................... output_high(PIEZO);
00DB: BSF 03.5
00DC: BCF 05.6
00DD: BCF 03.5
00DE: BSF 05.6
....................
.................... set_adc_channel(4); // Vyber AD kanal pro pomerne mereni napeti
00DF: MOVLW 20
00E0: MOVWF 78
00E1: MOVF 1F,W
00E2: ANDLW C7
00E3: IORWF 78,W
00E4: MOVWF 1F
.................... set_pwm1_duty(0); // Spust PWM, ale zatim s trvalou 0 na vystupu
00E5: CLRF 15
.................... setup_ccp1(CCP_PWM); // PWM pro zatizeni clanku v seru
00E6: BSF 03.5
00E7: BCF 06.3
00E8: BCF 03.5
00E9: BCF 06.3
00EA: MOVLW 0C
00EB: MOVWF 17
.................... setup_timer_2(T2_DIV_BY_1,100,1); // perioda
00EC: MOVLW 00
00ED: MOVWF 78
00EE: IORLW 04
00EF: MOVWF 12
00F0: MOVLW 64
00F1: BSF 03.5
00F2: MOVWF 12
....................
.................... setup_oscillator(OSC_4MHZ|OSC_INTRC); // rozjed PIC (zvysi se odber)
00F3: MOVLW 62
00F4: MOVWF 0F
....................
....................
.................... // jsme v depu?
.................... set_pwm1_duty(2); // PWM pro zatizeni clanku pri malem osvetleni
00F5: MOVLW 02
00F6: BCF 03.5
00F7: MOVWF 15
.................... n=0;
00F8: CLRF 2A
.................... do
.................... {
.................... output_low(REFPWR);
00F9: BSF 03.5
00FA: BCF 06.1
00FB: BCF 03.5
00FC: BCF 06.1
.................... delay_ms(100);
00FD: MOVLW 64
00FE: MOVWF 2D
00FF: CALL 048
.................... if (4==n++) {cvak(); n=0;};
0100: MOVF 2A,W
0101: INCF 2A,F
0102: SUBLW 04
0103: BTFSS 03.2
0104: GOTO 107
0105: GOTO 05D
0106: CLRF 2A
.................... output_high(REFPWR); // zapni napajeni napetove reference
0107: BSF 03.5
0108: BCF 06.1
0109: BCF 03.5
010A: BSF 06.1
.................... delay_ms(1);
010B: MOVLW 01
010C: MOVWF 2D
010D: CALL 048
.................... } while (read_adc()>REFSTART); // Odkryl starter clanky?
010E: BSF 1F.2
010F: BTFSC 1F.2
0110: GOTO 10F
0111: MOVF 1E,W
0112: SUBLW 50
0113: BTFSS 03.0
0114: GOTO 0F9
.................... output_low(REFPWR);
0115: BSF 03.5
0116: BCF 06.1
0117: BCF 03.5
0118: BCF 06.1
....................
.................... pip(); // potvrzeni odstartovani
0119: CALL 06A
....................
.................... // regulace
.................... perioda=100; // nastav optimalni periodu pri jedne 500W zarovce
011A: MOVLW 64
011B: MOVWF 2B
.................... for(n=0;n<=7;n++)
011C: CLRF 2A
011D: MOVF 2A,W
011E: SUBLW 07
011F: BTFSS 03.0
0120: GOTO 143
.................... {
.................... set_pwm1_duty(0);
0121: CLRF 15
.................... setup_timer_2(T2_DIV_BY_1,perioda,1); // perioda
0122: MOVLW 00
0123: MOVWF 78
0124: IORLW 04
0125: MOVWF 12
0126: MOVF 2B,W
0127: BSF 03.5
0128: MOVWF 12
.................... set_pwm1_duty(19); // delka sepnuti
0129: MOVLW 13
012A: BCF 03.5
012B: MOVWF 15
.................... delay_ms(100);
012C: MOVLW 64
012D: MOVWF 2D
012E: CALL 048
.................... output_high(REFPWR); // zapni napajeni napetove reference
012F: BSF 03.5
0130: BCF 06.1
0131: BCF 03.5
0132: BSF 06.1
.................... delay_ms(1);
0133: MOVLW 01
0134: MOVWF 2D
0135: CALL 048
.................... if (read_adc()<REFNOM) perioda--; // zvyseni zatizeni menice
0136: BSF 1F.2
0137: BTFSC 1F.2
0138: GOTO 137
0139: MOVF 1E,W
013A: SUBLW 6A
013B: BTFSC 03.0
013C: DECF 2B,F
.................... output_low(REFPWR); // konec mereni, odpoj napajeni reference
013D: BSF 03.5
013E: BCF 06.1
013F: BCF 03.5
0140: BCF 06.1
.................... };
0141: INCF 2A,F
0142: GOTO 11D
....................
.................... // nabíjíme
.................... delay_ms(14000);
0143: MOVLW 38
0144: MOVWF 2C
0145: MOVLW FA
0146: MOVWF 2D
0147: CALL 048
0148: DECFSZ 2C,F
0149: GOTO 145
....................
.................... // rozjezd
.................... SSPSTAT = 0;
014A: BSF 03.5
014B: CLRF 14
.................... SSPCON1 = 0x22; // SPI OSC/64
014C: MOVLW 22
014D: BCF 03.5
014E: MOVWF 14
.................... MotorPattern=0x02; // prvni data pro vyslani
014F: MOVLW 02
0150: MOVWF 29
.................... SSPBUF=MotorPattern; // data pro vyslani
0151: MOVF 29,W
0152: MOVWF 13
.................... enable_interrupts(global);
0153: MOVLW C0
0154: IORWF 0B,F
.................... enable_interrupts(INT_SSP); // az budou vyslana, prijde interrupt od SSP
0155: BSF 03.5
0156: BSF 0C.3
....................
.................... for(n=0; n<=7; n++) // razeni osmi rychlostnich stupnu
0157: BCF 03.5
0158: CLRF 2A
0159: MOVF 2A,W
015A: SUBLW 07
015B: BTFSS 03.0
015C: GOTO 166
.................... {
.................... MotorPattern=Pattern[n];
015D: MOVF 2A,W
015E: CALL 037
015F: MOVWF 78
0160: MOVWF 29
.................... delay_ms(RAZENI); // Pockej na dalsi razeni
0161: MOVLW 3C
0162: MOVWF 2D
0163: CALL 048
.................... };
0164: INCF 2A,F
0165: GOTO 159
.................... SSPSTAT = 0;
0166: BSF 03.5
0167: CLRF 14
.................... SSPCON1 = 0; // SPI stop
0168: BCF 03.5
0169: CLRF 14
.................... disable_interrupts(INT_SSP); // zastav preruseni od SSP
016A: BSF 03.5
016B: BCF 0C.3
....................
.................... // jedem co to da
.................... output_high(MOTOR);
016C: BCF 06.2
016D: BCF 03.5
016E: BSF 06.2
.................... delay_ms(1000);
016F: MOVLW 04
0170: MOVWF 2C
0171: MOVLW FA
0172: MOVWF 2D
0173: CALL 048
0174: DECFSZ 2C,F
0175: GOTO 171
.................... output_low(MOTOR);
0176: BSF 03.5
0177: BCF 06.2
0178: BCF 03.5
0179: BCF 06.2
.................... set_pwm1_duty(0); // zastav menic
017A: CLRF 15
....................
.................... // vybiti kondenzatoru pro ucely mereni
.................... pip();
017B: CALL 06A
.................... delay_ms(2000);
017C: MOVLW 08
017D: MOVWF 2C
017E: MOVLW FA
017F: MOVWF 2D
0180: CALL 048
0181: DECFSZ 2C,F
0182: GOTO 17E
.................... pip();
0183: CALL 06A
.................... output_high(MOTOR);
0184: BSF 03.5
0185: BCF 06.2
0186: BCF 03.5
0187: BSF 06.2
....................
.................... while(true)
.................... {
.................... output_high(LED);
0188: BSF 03.5
0189: BCF 05.7
018A: BCF 03.5
018B: BSF 05.7
.................... output_low(PIEZO);
018C: BSF 03.5
018D: BCF 05.6
018E: BCF 03.5
018F: BCF 05.6
.................... delay_ms(300);
0190: MOVLW 02
0191: MOVWF 2C
0192: MOVLW 96
0193: MOVWF 2D
0194: CALL 048
0195: DECFSZ 2C,F
0196: GOTO 192
.................... output_low(LED);
0197: BSF 03.5
0198: BCF 05.7
0199: BCF 03.5
019A: BCF 05.7
.................... output_high(PIEZO);
019B: BSF 03.5
019C: BCF 05.6
019D: BCF 03.5
019E: BSF 05.6
.................... delay_ms(300);
019F: MOVLW 02
01A0: MOVWF 2C
01A1: MOVLW 96
01A2: MOVWF 2D
01A3: CALL 048
01A4: DECFSZ 2C,F
01A5: GOTO 1A1
.................... }
01A6: GOTO 188
.................... // priprava na dalsi jizdu
.................... delay_ms(5000);
01A7: MOVLW 14
01A8: MOVWF 2C
01A9: MOVLW FA
01AA: MOVWF 2D
01AB: CALL 048
01AC: DECFSZ 2C,F
01AD: GOTO 1A9
.................... reset_cpu();
01AE: CLRF 0A
01AF: GOTO 000
.................... }
....................
01B0: SLEEP
 
Configuration Fuses:
Word 1: 2738 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT DEBUG CCPB3 NOPROTECT INTRC_IO
Word 2: 3FFC NOFCMEN NOIESO
/roboti/solarni/2005/jump/menic.PJT
0,0 → 1,53
[PROJECT]
Target=menic.HEX
Development_Mode=
Processor=0x688F
ToolSuite=CCS
 
[Directories]
Include=C:\Program Files\PICC\devices\
Library=
LinkerScript=
 
[Target Data]
FileList=menic.c;
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[menic.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
 
[mru-list]
1=menic.c
 
[Windows]
0=0000 menic.c 0 0 796 451 3 0
 
[Opened Files]
1=D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.c
2=C:\Program Files\PICC\devices\16F88.h
3=
4=C:\PIC\jump\menic.lst
5=
[debugperif]
selected=Analog/Digital Conv
[debugram]
autoread=1
[debugeedata]
autoread=1
[debugbreak]
count=0
[pcwdebug]
watchcol0=75
[debugwatch]
count=0
[debugexpr]
expr=
sideeffects=0
/roboti/solarni/2005/jump/menic.SYM
0,0 → 1,59
013 SSPBUF
014 SSPCON1
015-016 CCP_1
015 CCP_1_LOW
016 CCP_1_HIGH
020 @INTERRUPT_AREA
021 @INTERRUPT_AREA
022 @INTERRUPT_AREA
023 @INTERRUPT_AREA
024 @INTERRUPT_AREA
025 @INTERRUPT_AREA
026 @INTERRUPT_AREA
027 @INTERRUPT_AREA
028 @INTERRUPT_AREA
029 MotorPattern
02A main.n
02B main.perioda
02C.0 pip.beep
02C main.@SCRATCH
02D @delay_ms1.P1
02D pip.i
077 @SCRATCH
078 @SCRATCH
078 _RETURN_
079 @SCRATCH
07A @SCRATCH
07B @SCRATCH
094 SSPSTAT
09C.6 C1OUT
09C.7 C2OUT
 
0048 @delay_ms1
0037 @const30
0043 IntSSP
006A pip
005D cvak
0090 main
0090 @cinit
 
Project Files:
D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.c
D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.h
C:\Program Files\PICC\devices\16F88.h
 
Compiler Settings:
Processor: PIC16F88
Pointer Size: 8
ADC Range: 0-255
Opt Level: 9
Short,Int,Long: 1,8,16
 
Output Files:
Errors: D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.err
INHX8: D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.HEX
Symbols: D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.SYM
List: D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.LST
Debug/COFF: D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.cof
Call Tree: D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.tre
Statistics: D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.sta
/roboti/solarni/2005/jump/menic.c
0,0 → 1,148
#include ".\menic.h"
 
#define RAZENI 60 // Po kolika ms se bude menit rychlost pro rozjizdeni
#define REFNOM 107 // Hodnota odpovidajici 1,2V pri nominalnim zatizeni
#define REFSTART 80 // Hodnota odpovidajici 1,2V pri nezatizenych clancich
 
#define PIEZO PIN_A6 // Jeden pol piezo reproduktoru
#define LED PIN_A7 // LED
#define MENIC PIN_B3 // Spinani tranzistoru menice
#define REFPWR PIN_B1 // Napajeni zdroje referencniho napeti
#define MOTOR PIN_B2 // Spinani tranzistoru motoru
 
#byte SSPBUF = 0x13 // Registry jednotky SSP
#byte SSPCON1 = 0x14
#byte SSPSTAT = 0x94
 
// Vzorky pro generovani PWM pomoci SSP
unsigned int8 const Pattern[8] = {0x02,0x06,0x0e,0x1e,0x3e,0x7e,0xfe,0xff};
unsigned int8 MotorPattern;
 
#INT_SSP
void IntSSP()
{
SSPBUF=MotorPattern; // znovu vysli stejnou hodnotu
}
 
void pip() // pipnuti a bliknuti
{
int1 beep;
int i;
 
for(i=0; i<250; i++)
{
output_bit(PIEZO, beep);
beep=~beep;
output_bit(LED, beep);
delay_us(100);
};
output_high(PIEZO);
output_high(LED);
}
 
void cvak() // pouze cvaknuti piezoelementem bez bliknuti
{
output_bit(PIEZO,~input(PIEZO));
}
 
void main()
{
int8 n;
int8 perioda;
setup_adc_ports(ADC_CLOCK_INTERNAL|sAN4|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
output_low(MENIC); // Vsechno zastav
output_low(MOTOR);
output_low(REFPWR);
output_high(LED);
output_high(PIEZO);
 
set_adc_channel(4); // Vyber AD kanal pro pomerne mereni napeti
set_pwm1_duty(0); // Spust PWM, ale zatim s trvalou 0 na vystupu
setup_ccp1(CCP_PWM); // PWM pro zatizeni clanku v seru
setup_timer_2(T2_DIV_BY_1,100,1); // perioda
 
setup_oscillator(OSC_4MHZ|OSC_INTRC); // rozjed PIC (zvysi se odber)
 
 
// jsme v depu?
set_pwm1_duty(2); // PWM pro zatizeni clanku pri malem osvetleni
n=0;
do
{
output_low(REFPWR);
delay_ms(100);
if (4==n++) {cvak(); n=0;};
output_high(REFPWR); // zapni napajeni napetove reference
delay_ms(1);
} while (read_adc()>REFSTART); // Odkryl starter clanky?
output_low(REFPWR);
 
pip(); // potvrzeni odstartovani
 
// regulace
perioda=100; // nastav optimalni periodu pri jedne 500W zarovce
for(n=0;n<=7;n++)
{
set_pwm1_duty(0);
setup_timer_2(T2_DIV_BY_1,perioda,1); // perioda
set_pwm1_duty(19); // delka sepnuti
delay_ms(100);
output_high(REFPWR); // zapni napajeni napetove reference
delay_ms(1);
if (read_adc()<REFNOM) perioda--; // zvyseni zatizeni menice
output_low(REFPWR); // konec mereni, odpoj napajeni reference
};
 
// nabíjíme
delay_ms(14000);
 
// rozjezd
SSPSTAT = 0;
SSPCON1 = 0x22; // SPI OSC/64
MotorPattern=0x02; // prvni data pro vyslani
SSPBUF=MotorPattern; // data pro vyslani
enable_interrupts(global);
enable_interrupts(INT_SSP); // az budou vyslana, prijde interrupt od SSP
for(n=0; n<=7; n++) // razeni osmi rychlostnich stupnu
{
MotorPattern=Pattern[n];
delay_ms(RAZENI); // Pockej na dalsi razeni
};
SSPSTAT = 0;
SSPCON1 = 0; // SPI stop
disable_interrupts(INT_SSP); // zastav preruseni od SSP
 
// jedem co to da
output_high(MOTOR);
delay_ms(1000);
output_low(MOTOR);
set_pwm1_duty(0); // zastav menic
 
// vybiti kondenzatoru pro ucely mereni
pip();
delay_ms(2000);
pip();
output_high(MOTOR);
 
while(true)
{
output_high(LED);
output_low(PIEZO);
delay_ms(300);
output_low(LED);
output_high(PIEZO);
delay_ms(300);
}
// priprava na dalsi jizdu
delay_ms(5000);
reset_cpu();
}
/roboti/solarni/2005/jump/menic.cof
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/jump/menic.err
0,0 → 1,0
No Errors
/roboti/solarni/2005/jump/menic.h
0,0 → 1,6
#include <16F88.h>
 
#device adc=8
#fuses NOWDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, DEBUG, NOPROTECT, NOFCMEN, NOIESO, CCPB3
#use delay(clock=4000000)
 
/roboti/solarni/2005/jump/menic.sta
0,0 → 1,34
 
ROM used: 433 (11%)
433 (11%) including unused fragments
 
1 Average locations per line
5 Average locations per statement
 
RAM used: 18 (10%) at main() level
19 (11%) worst case
 
Lines Stmts % Files
----- ----- --- -----
149 89 100 D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.c
7 0 0 D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jump\menic.h
275 0 0 C:\Program Files\PICC\devices\16F88.h
----- -----
862 178 Total
 
Page ROM % RAM Functions:
---- --- --- --- ----------
0 21 5 1 @delay_ms1
0 12 3 0 @const30
0 5 1 0 IntSSP
0 38 9 2 pip
0 13 3 0 cvak
0 289 67 3 main
 
Segment Used Free
--------- ---- ----
00000-00003 4 0
00004-00036 51 0
00037-007FF 378 1615
00800-00FFF 0 2048
 
/roboti/solarni/2005/jump/menic.tre
0,0 → 1,20
ÀÄmenic
ÃÄmain 0/289 Ram=3
³ ÃÄ??0??
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄcvak 0/13 Ram=0
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄpip 0/38 Ram=2
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const30 0/12 Ram=0
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄpip 0/38 Ram=2
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄpip 0/38 Ram=2
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÀÄIntSSP 0/5 Ram=0
/roboti/solarni/2005/jump/miho/A.BAT
0,0 → 1,4
call picpgr stop
call picpgr erase pic16f88
call picpgr program DART.hex hex pic16f88
call picpgr run
/roboti/solarni/2005/jump/miho/DART.BAK
0,0 → 1,426
// DART01A verze programu 1.00
// (c)miho 2005
 
#include "DART.h"
 
 
#define BEEP0 PIN_A6 // pipak, prvni vystup
#define BEEP1 PIN_A7 // pipak, druhy vystup
#define PWM PIN_B3 // PWM vystup pro menic
#define REFPOWER PIN_B1 // napajeni zdroje Vref
#define MOTOR PIN_B2 // zapinani motoru
#define SW0 PIN_B7 // konfiguracni prepinac 0
#define SW1 PIN_B6 // konfiguracni prepinac 1
 
 
void InitRS232()
// Inicializace HW RS232
{
SPBRG=xclock/9600/16-1; // ryclost 9600Bd
RCSTA=0b10000000; // enable USART
TXSTA=0b00100100; // BRGH=1, TX enable
}
 
 
void Putc(char c)
// Posilani znaku pres HW RS232
{
while(TRMT==0); // cekej na prazdny TX buffer
TXREG=c; // predej data
}
 
 
// Globalni promenna pro data posilana na SSP
// Nastavuje se funkci MotorPatternSet()
// Vyuziva se v prerusovaci rutine IntSSP()
unsigned int8 MotorPattern; // aktualni data pro SSP jednotku
 
 
void MotorPatternSet(unsigned int Gear)
// Na zaklade rychlosti nastavi MotorPattern pro SSP
// Rychlost 0 znamena stop, rychlost 8 je maximum
{
// Tabulka rychlost -> pattern pro SSP
unsigned int8 const ExpTab[8] = {0x02,0x06,0x0e,0x1e,0x3e,0x7e,0xfe,0xff};
 
// Vyber patternu
if (Gear==0) // stav 0 znamena stop
{
output_low(MOTOR); // klidovy stav
SSPSTAT = 0;
SSPCON1 = 0; // SPI stop
disable_interrupts(INT_SSP); // neni preruseni od SSP
}
else // rizeny vykon
{
if (Gear>7) // stav 8 a vice znamena plny vykon
{
Gear=8; // plny plyn
}
 
MotorPattern=ExpTab[--Gear]; // prevod z hodnoty plynu na data pro SSP
output_low(MOTOR); // klidovy stav
SSPSTAT = 0;
SSPCON1 = 0x22; // SPI OSC/64
 
SSPBUF=MotorPattern; // prvni data pro vyslani
enable_interrupts(INT_SSP); // az budou vyslana prijde interrupt od SSP
}
}
 
 
// Obsluha preruseni od SSP jednotky, posila data z promenne MotorRun do SSP.
#INT_SSP
void IntSSP()
{
SSPBUF=MotorPattern; // znova hdnota PWM patternu na SSP
}
 
 
void MotorSet(unsigned int Gear)
// Nastavi vykon motoru dle hodnoty Gear a zahaji posilani PWM dat pres SSP pod prerusenim
// od SSP jednotky
// 0 stop
// 1-7 pocet 1/8 vykonu
// >7 plny vykon
{
// Nastav PWM pattern
MotorPatternSet(Gear); // nastav PWM pattern pro SSP
 
// Povol preruseni
enable_interrupts(GLOBAL); // povol preruseni
}
 
 
void InitT0()
// Inicializace casovace T0 (cca 1000x za sekundu)
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4); // T0 z internich hodin 1/4
enable_interrupts(INT_RTCC); // generuj preruseni od T0
enable_interrupts(GLOBAL); // povol preruseni
}
 
 
// Globalni promenna pro mereni casu
// Nastavuje se procedurou TimeSet()
// Testuje se funkci TimeIf()
// Modifikuje se pri preruseni od casovace IntTo()
unsigned int16 TimeTime;
 
 
void TimerSet(unsigned int16 Time)
// Nastavi casovac na zadany pocet ms
// Test uplynuti casu se dela pomoci TimerIf()
{
// Nastav hodnotu
disable_interrupts(INT_RTCC); // nesmi prijit preruseni
TimeTime=Time; // pri nastavovani hodnoty
enable_interrupts(INT_RTCC); // promenne (o delce vice nez 8 bitu)
}
 
 
int1 TimerIf()
// Vraci TRUE pokud casovac jiz dobehl
{
int1 Flag; // pomocna promenna
 
// Otestuj casovac
disable_interrupts(INT_RTCC); // nesmi prijit preruseni
Flag=(TimeTime==0); // behem testu promenne
enable_interrupts(INT_RTCC); // ted uz muze
 
// Navratova hodnota
return Flag; // TRUE znamena dobehl casovac
}
 
 
// Globalni promenne pro akceleraci
// Nastavuje se metodou MotorStart()
// Pouziva se v obsluze preruseni IntT0()
unsigned int8 MotorTime; // aktualni casovac pro rozjezd
unsigned int8 MotorDelay; // spozdeni mezi razenim
unsigned int8 MotorGear; // rychlostni stupen
 
 
void MotorStart(unsigned int8 Delay)
// Provede rizeny rozjezd motoru
{
disable_interrupts(INT_RTCC);
MotorGear=1;
MotorDelay=Delay;
MotorTime=MotorDelay;
enable_interrupts(INT_RTCC);
 
MotorPatternSet(1);
}
 
 
#INT_TIMER0
void IntT0()
// Preruseni od casovace cca 1000x za sekundu
{
// Odpocitavani casovace
if (TimeTime) TimeTime--;
 
// Obsluha akcelerace
if (MotorTime) MotorTime--; // dekrementuj casovac rozjezdu
if ((MotorGear>0) && (MotorGear<8) && (!MotorTime)) // dalsi rychlostni stupen
{
MotorTime=MotorDelay; // znovu nastav casovac
MotorGear++; // dalsi rychlost
MotorPatternSet(MotorGear); // nastav rychlost
}
}
 
 
// Cteni dat z AD prevodniku, zadava se cislo kanalu
int8 ReadAD(int8 Ch)
{
// Pokud merim Vref zapnu si jeho napajeni
if (Ch==4) output_high(REFPOWER);
 
// Inicializace a cislo kanalu
ADCON1=0x30; // Vref+-, bez deleni hodin, Left Justify
ADCON0=0x41+(Ch<<3); // on, Tosc/8, cislo kanalu
 
// Mereni
delay_us(50); // doba na prepnuti kanalu
ADCON0 |= 4; // start prevodu
delay_us(50); // doba na prevod
 
// Vypnu napajeni Vref (vzdycky)
output_low(REFPOWER);
 
// Navrat hodnoty
return ADRESH;
}
 
 
void main()
{
unsigned int8 Debug;
unsigned int8 i;
 
// Hodiny
OSCCON = 0x62; // 4 MHz interni RC oscilator
 
// Digitalni vystupy
output_low(PWM); // PWM vystup
output_low(MOTOR); // Proud do motoru
output_low(REFPOWER); // Napajeni Vref
port_b_pullups(TRUE); // Zbyvajici vyvody portu B
 
// Watch Dog
PSA=0; // preddelic prirazen casovaci
WDTCON=0x0E; // Watch Dog cca 130ms
/*
// Analogove vstupy
ANSEL = 0x1F; // AN0 az AN4
 
// nastaveni RS232
InitRS232(); // inicializace HW RS232 (nutno pockat cca 10ms)
 
// Pipnuti (a cekani)
for (i=1;i<30;i++) // pocet 1/2 period
{
int1 beep; // stavova promenna pro pipak
 
output_bit(BEEP0,beep);
beep=~beep;
output_bit(BEEP1,beep);
delay_us(1000);
}
 
// Rozhodnuti o rezimu cinnosti
Debug=0;
if (~input(SW0)) Debug|=1; // precti bit 0
if (~input(SW1)) Debug|=2; // precti bit 1
output_low(SW0); // nastav L aby se snizila spotreba
output_low(SW1); // na obou vstupech
 
// Zobrazeni rezimu
printf(Putc,"\fMode:%d",Debug);
*/
// Inicializace PWM
PR2 = 0x1F; // perioda PWM casovace
T2CON = 0x04; // povoleni casovace T2 bez preddelicu a postdelicu
CCP1CON = 0x0C; // PWM mode, lsb bity nulove
CCPR1L = 0; // na zacatku nulova data
output_low(PWM); // PWM vystup
 
//!!!KAKL
CCPR1L = 20; // pouziti vystupu
disable_interrupts(GLOBAL);
while(true);
 
// Inicializace casovace
InitT0(); // nastav casovac na cca 1ms
 
//!!!KAKL
Debug=3;
 
// Test menice PWM a rozjezdoveho PWM
if (Debug==1)
{
unsigned int8 Data1; // poteniometr P1 = PWM
unsigned int8 Data2; // poteniometr P2 = Rozjezd
 
while (1)
{
// watch dog
restart_wdt();
 
// mereni vstupu
Data1=ReadAD(0); // nacti parametr pro PWM
Data1>>=2; // redukuj rozsah na 0 az 63
Data2=ReadAD(1); // nacti parametr pro rozjezd
Data2>>=4; // redukuj rozsah na 0 az 15
 
// zobrazeni
printf(Putc,"\nPWM:%03u RUN:%03u",Data1,Data2);
delay_ms(20);
 
// nastaveni parametru PWM
CCPR1L = Data1;
 
// nastaveni parametru RUN
MotorSet(Data2);
}
}
 
// Testovani rozjezdu
// Zadava se cas mezi stupni razeni pro rozjezd v ms
if (Debug==2)
{
int8 Data;
int8 Start;
 
Start=0; // uvodni stav
while(1)
{
// Nacti a zobraz parametr
Data=ReadAD(1); // potenciometr P2 = rozjezd
printf(Putc,"\nRUN: %3ums ",Data); // zobraz
delay_ms(10); // prodleva pro terminal
 
// Uvodni pauza
if (Start==0) // spousti se 1x na zacatku
{
Start++; // dalsi stav je cekani
TimerSet(2000); // na dokonceni uvodni prodlevy
}
 
// Rozjezd
if ((Start==1) && TimerIf())
{
Start++;
printf(Putc,"R");
MotorStart(Data); // rozjezd s nastavenim prodlevy
 
TimerSet(2000); // nastav celkovy cas jizdy
}
 
// Zastaveni
if ((Start==2) && TimerIf())
{
Start++;
printf(Putc,"S");
MotorSet(0); // pokud dobehl casovac zastav motor
}
 
// watch dog
restart_wdt();
}
}
 
// Test nabijeciho algoritmu
if (Debug==3)
{
unsigned int8 PwmOut; // akcni hodnota pro PWM
unsigned int8 Req; // pozadovana hodnota z P1
unsigned int8 Vref; // merena hodnota vref
 
// Inicializace stavove promenne
PwmOut=0;
 
// Hlavni smycka
while (1)
{
// watch dog
restart_wdt();
 
// pozadovana hodnota (potenciometr P1)
Req=ReadAD(0);
Req=50+(ReadAD(0)>>1); // 50 az 177
 
// napeti na napajeni (vref)
Vref=ReadAD(4);
 
// ricici algoritmus
if ((Vref<Req) &&(PwmOut<30)) PwmOut++;
if ((Vref>=Req)&&(PwmOut> 0)) PwmOut--;
Vref+=10;
if ((Vref<(Req))&&(PwmOut<30)) PwmOut++; // urychleni nabehu
 
// nastaveni parametru PWM
if (PwmOut>24) PwmOut=24; // saturace
//!!!KAKL
PwmOut=20;
CCPR1L = PwmOut; // pouziti vystupu
disable_interrupts(GLOBAL);
while(true);
// zobrazeni
printf(Putc,"\nALG:%03u %03u %03u",Req,Vref,PwmOut);
delay_ms(10);
}
}
 
// Standardni beh
if (Debug==0)
{
unsigned int8 PwmOut; // akcni hodnota pro PWM
unsigned int8 Req; // pozadovana hodnota z P1
unsigned int8 Vref; // merena hodnota vref
int1 Run;
 
// Inicializace stavove promenne
PwmOut=0;
TimerSet(14000); // casovani startu
Run=1;
 
// Hlavni smycka
while (1)
{
// watch dog
restart_wdt();
 
// pozadovana hodnota (potenciometr P1)
Req=ReadAD(0);
Req=50+(ReadAD(0)>>1); // 50 az 177
 
// napeti na napajeni (vref)
Vref=ReadAD(4);
 
// ricici algoritmus
if ((Vref<Req) &&(PwmOut<30)) PwmOut++;
if ((Vref>=Req)&&(PwmOut> 0)) PwmOut--;
Vref+=10;
if ((Vref<(Req))&&(PwmOut<30)) PwmOut++; // urychleni nabehu
 
// nastaveni parametru PWM
if (PwmOut>24) PwmOut=24; // saturace
CCPR1L = PwmOut; // pouziti vystupu
 
// zobrazeni
printf(Putc,"\nALG:%03u %03u %03u",Req,Vref,PwmOut);
delay_ms(10);
 
// rozjezd
if (TimerIf()&&Run)
{
Run=0;
MotorStart(65);
}
}
}
}
/roboti/solarni/2005/jump/miho/DART.C
0,0 → 1,425
// DART01A verze programu 1.00
// (c)miho 2005
 
#include "DART.h"
 
 
#define BEEP0 PIN_A6 // pipak, prvni vystup
#define BEEP1 PIN_A7 // pipak, druhy vystup
#define PWM PIN_B3 // PWM vystup pro menic
#define REFPOWER PIN_B1 // napajeni zdroje Vref
#define MOTOR PIN_B2 // zapinani motoru
#define SW0 PIN_B7 // konfiguracni prepinac 0
#define SW1 PIN_B6 // konfiguracni prepinac 1
 
 
void InitRS232()
// Inicializace HW RS232
{
SPBRG=xclock/9600/16-1; // ryclost 9600Bd
RCSTA=0b10000000; // enable USART
TXSTA=0b00100100; // BRGH=1, TX enable
}
 
 
void Putc(char c)
// Posilani znaku pres HW RS232
{
while(TRMT==0); // cekej na prazdny TX buffer
TXREG=c; // predej data
}
 
 
// Globalni promenna pro data posilana na SSP
// Nastavuje se funkci MotorPatternSet()
// Vyuziva se v prerusovaci rutine IntSSP()
unsigned int8 MotorPattern; // aktualni data pro SSP jednotku
 
 
void MotorPatternSet(unsigned int Gear)
// Na zaklade rychlosti nastavi MotorPattern pro SSP
// Rychlost 0 znamena stop, rychlost 8 je maximum
{
// Tabulka rychlost -> pattern pro SSP
unsigned int8 const ExpTab[8] = {0x02,0x06,0x0e,0x1e,0x3e,0x7e,0xfe,0xff};
 
// Vyber patternu
if (Gear==0) // stav 0 znamena stop
{
output_low(MOTOR); // klidovy stav
SSPSTAT = 0;
SSPCON1 = 0; // SPI stop
disable_interrupts(INT_SSP); // neni preruseni od SSP
}
else // rizeny vykon
{
if (Gear>7) // stav 8 a vice znamena plny vykon
{
Gear=8; // plny plyn
}
 
MotorPattern=ExpTab[--Gear]; // prevod z hodnoty plynu na data pro SSP
output_low(MOTOR); // klidovy stav
SSPSTAT = 0;
SSPCON1 = 0x22; // SPI OSC/64
 
SSPBUF=MotorPattern; // prvni data pro vyslani
enable_interrupts(INT_SSP); // az budou vyslana prijde interrupt od SSP
}
}
 
 
// Obsluha preruseni od SSP jednotky, posila data z promenne MotorRun do SSP.
#INT_SSP
void IntSSP()
{
SSPBUF=MotorPattern; // znova hdnota PWM patternu na SSP
}
 
 
void MotorSet(unsigned int Gear)
// Nastavi vykon motoru dle hodnoty Gear a zahaji posilani PWM dat pres SSP pod prerusenim
// od SSP jednotky
// 0 stop
// 1-7 pocet 1/8 vykonu
// >7 plny vykon
{
// Nastav PWM pattern
MotorPatternSet(Gear); // nastav PWM pattern pro SSP
 
// Povol preruseni
enable_interrupts(GLOBAL); // povol preruseni
}
 
 
void InitT0()
// Inicializace casovace T0 (cca 1000x za sekundu)
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4); // T0 z internich hodin 1/4
enable_interrupts(INT_RTCC); // generuj preruseni od T0
enable_interrupts(GLOBAL); // povol preruseni
}
 
 
// Globalni promenna pro mereni casu
// Nastavuje se procedurou TimeSet()
// Testuje se funkci TimeIf()
// Modifikuje se pri preruseni od casovace IntTo()
unsigned int16 TimeTime;
 
 
void TimerSet(unsigned int16 Time)
// Nastavi casovac na zadany pocet ms
// Test uplynuti casu se dela pomoci TimerIf()
{
// Nastav hodnotu
disable_interrupts(INT_RTCC); // nesmi prijit preruseni
TimeTime=Time; // pri nastavovani hodnoty
enable_interrupts(INT_RTCC); // promenne (o delce vice nez 8 bitu)
}
 
 
int1 TimerIf()
// Vraci TRUE pokud casovac jiz dobehl
{
int1 Flag; // pomocna promenna
 
// Otestuj casovac
disable_interrupts(INT_RTCC); // nesmi prijit preruseni
Flag=(TimeTime==0); // behem testu promenne
enable_interrupts(INT_RTCC); // ted uz muze
 
// Navratova hodnota
return Flag; // TRUE znamena dobehl casovac
}
 
 
// Globalni promenne pro akceleraci
// Nastavuje se metodou MotorStart()
// Pouziva se v obsluze preruseni IntT0()
unsigned int8 MotorTime; // aktualni casovac pro rozjezd
unsigned int8 MotorDelay; // spozdeni mezi razenim
unsigned int8 MotorGear; // rychlostni stupen
 
 
void MotorStart(unsigned int8 Delay)
// Provede rizeny rozjezd motoru
{
disable_interrupts(INT_RTCC);
MotorGear=1;
MotorDelay=Delay;
MotorTime=MotorDelay;
enable_interrupts(INT_RTCC);
 
MotorPatternSet(1);
}
 
 
#INT_TIMER0
void IntT0()
// Preruseni od casovace cca 1000x za sekundu
{
// Odpocitavani casovace
if (TimeTime) TimeTime--;
 
// Obsluha akcelerace
if (MotorTime) MotorTime--; // dekrementuj casovac rozjezdu
if ((MotorGear>0) && (MotorGear<8) && (!MotorTime)) // dalsi rychlostni stupen
{
MotorTime=MotorDelay; // znovu nastav casovac
MotorGear++; // dalsi rychlost
MotorPatternSet(MotorGear); // nastav rychlost
}
}
 
 
// Cteni dat z AD prevodniku, zadava se cislo kanalu
int8 ReadAD(int8 Ch)
{
// Pokud merim Vref zapnu si jeho napajeni
if (Ch==4) output_high(REFPOWER);
 
// Inicializace a cislo kanalu
ADCON1=0x30; // Vref+-, bez deleni hodin, Left Justify
ADCON0=0x41+(Ch<<3); // on, Tosc/8, cislo kanalu
 
// Mereni
delay_us(50); // doba na prepnuti kanalu
ADCON0 |= 4; // start prevodu
delay_us(50); // doba na prevod
 
// Vypnu napajeni Vref (vzdycky)
output_low(REFPOWER);
 
// Navrat hodnoty
return ADRESH;
}
 
 
void main()
{
unsigned int8 Debug;
unsigned int8 i;
 
// Hodiny
OSCCON = 0x62; // 4 MHz interni RC oscilator
/*
// Digitalni vystupy
output_low(PWM); // PWM vystup
output_low(MOTOR); // Proud do motoru
output_low(REFPOWER); // Napajeni Vref
port_b_pullups(TRUE); // Zbyvajici vyvody portu B
 
// Watch Dog
PSA=0; // preddelic prirazen casovaci
WDTCON=0x0E; // Watch Dog cca 130ms
// Analogove vstupy
ANSEL = 0x1F; // AN0 az AN4
 
// nastaveni RS232
InitRS232(); // inicializace HW RS232 (nutno pockat cca 10ms)
 
// Pipnuti (a cekani)
for (i=1;i<30;i++) // pocet 1/2 period
{
int1 beep; // stavova promenna pro pipak
 
output_bit(BEEP0,beep);
beep=~beep;
output_bit(BEEP1,beep);
delay_us(1000);
}
 
// Rozhodnuti o rezimu cinnosti
Debug=0;
if (~input(SW0)) Debug|=1; // precti bit 0
if (~input(SW1)) Debug|=2; // precti bit 1
output_low(SW0); // nastav L aby se snizila spotreba
output_low(SW1); // na obou vstupech
 
// Zobrazeni rezimu
printf(Putc,"\fMode:%d",Debug);
*/
// Inicializace PWM
PR2 = 0x1F; // perioda PWM casovace
T2CON = 0x04; // povoleni casovace T2 bez preddelicu a postdelicu
CCP1CON = 0x0C; // PWM mode, lsb bity nulove
CCPR1L = 0; // na zacatku nulova data
output_low(PWM); // PWM vystup
 
//!!!KAKL
CCPR1L = 20; // pouziti vystupu
disable_interrupts(GLOBAL);
while(true);
 
// Inicializace casovace
InitT0(); // nastav casovac na cca 1ms
 
//!!!KAKL
Debug=3;
 
// Test menice PWM a rozjezdoveho PWM
if (Debug==1)
{
unsigned int8 Data1; // poteniometr P1 = PWM
unsigned int8 Data2; // poteniometr P2 = Rozjezd
 
while (1)
{
// watch dog
restart_wdt();
 
// mereni vstupu
Data1=ReadAD(0); // nacti parametr pro PWM
Data1>>=2; // redukuj rozsah na 0 az 63
Data2=ReadAD(1); // nacti parametr pro rozjezd
Data2>>=4; // redukuj rozsah na 0 az 15
 
// zobrazeni
printf(Putc,"\nPWM:%03u RUN:%03u",Data1,Data2);
delay_ms(20);
 
// nastaveni parametru PWM
CCPR1L = Data1;
 
// nastaveni parametru RUN
MotorSet(Data2);
}
}
 
// Testovani rozjezdu
// Zadava se cas mezi stupni razeni pro rozjezd v ms
if (Debug==2)
{
int8 Data;
int8 Start;
 
Start=0; // uvodni stav
while(1)
{
// Nacti a zobraz parametr
Data=ReadAD(1); // potenciometr P2 = rozjezd
printf(Putc,"\nRUN: %3ums ",Data); // zobraz
delay_ms(10); // prodleva pro terminal
 
// Uvodni pauza
if (Start==0) // spousti se 1x na zacatku
{
Start++; // dalsi stav je cekani
TimerSet(2000); // na dokonceni uvodni prodlevy
}
 
// Rozjezd
if ((Start==1) && TimerIf())
{
Start++;
printf(Putc,"R");
MotorStart(Data); // rozjezd s nastavenim prodlevy
 
TimerSet(2000); // nastav celkovy cas jizdy
}
 
// Zastaveni
if ((Start==2) && TimerIf())
{
Start++;
printf(Putc,"S");
MotorSet(0); // pokud dobehl casovac zastav motor
}
 
// watch dog
restart_wdt();
}
}
 
// Test nabijeciho algoritmu
if (Debug==3)
{
unsigned int8 PwmOut; // akcni hodnota pro PWM
unsigned int8 Req; // pozadovana hodnota z P1
unsigned int8 Vref; // merena hodnota vref
 
// Inicializace stavove promenne
PwmOut=0;
 
// Hlavni smycka
while (1)
{
// watch dog
restart_wdt();
 
// pozadovana hodnota (potenciometr P1)
Req=ReadAD(0);
Req=50+(ReadAD(0)>>1); // 50 az 177
 
// napeti na napajeni (vref)
Vref=ReadAD(4);
 
// ricici algoritmus
if ((Vref<Req) &&(PwmOut<30)) PwmOut++;
if ((Vref>=Req)&&(PwmOut> 0)) PwmOut--;
Vref+=10;
if ((Vref<(Req))&&(PwmOut<30)) PwmOut++; // urychleni nabehu
 
// nastaveni parametru PWM
if (PwmOut>24) PwmOut=24; // saturace
//!!!KAKL
PwmOut=20;
CCPR1L = PwmOut; // pouziti vystupu
disable_interrupts(GLOBAL);
while(true);
// zobrazeni
printf(Putc,"\nALG:%03u %03u %03u",Req,Vref,PwmOut);
delay_ms(10);
}
}
 
// Standardni beh
if (Debug==0)
{
unsigned int8 PwmOut; // akcni hodnota pro PWM
unsigned int8 Req; // pozadovana hodnota z P1
unsigned int8 Vref; // merena hodnota vref
int1 Run;
 
// Inicializace stavove promenne
PwmOut=0;
TimerSet(14000); // casovani startu
Run=1;
 
// Hlavni smycka
while (1)
{
// watch dog
restart_wdt();
 
// pozadovana hodnota (potenciometr P1)
Req=ReadAD(0);
Req=50+(ReadAD(0)>>1); // 50 az 177
 
// napeti na napajeni (vref)
Vref=ReadAD(4);
 
// ricici algoritmus
if ((Vref<Req) &&(PwmOut<30)) PwmOut++;
if ((Vref>=Req)&&(PwmOut> 0)) PwmOut--;
Vref+=10;
if ((Vref<(Req))&&(PwmOut<30)) PwmOut++; // urychleni nabehu
 
// nastaveni parametru PWM
if (PwmOut>24) PwmOut=24; // saturace
CCPR1L = PwmOut; // pouziti vystupu
 
// zobrazeni
printf(Putc,"\nALG:%03u %03u %03u",Req,Vref,PwmOut);
delay_ms(10);
 
// rozjezd
if (TimerIf()&&Run)
{
Run=0;
MotorStart(65);
}
}
}
}
/roboti/solarni/2005/jump/miho/DART.HEX
0,0 → 1,108
:1000000000308A00C8290000FF00030E8301A10010
:100010007F08A0000A08A8008A01A00E0408A20018
:100020007708A3007808A4007908A5007A08A6003C
:100030007B08A700831383128C308400801D222844
:100040008C1939288B1E26280B193B28220884007E
:100050002308F7002408F8002508F9002608FA000C
:100060002708FB0028088A00210E8300FF0E7F0E60
:1000700009008A1189288A11B7280A108A100A11E2
:100080008207023406340E341E343E347E34FE348D
:10009000FF340A108A100A1182070A345034573488
:1000A0004D343A34253430343334753420345234BA
:1000B00055344E343A3425343034333475340034C6
:1000C0000A108A100A1182070A34523455344E3409
:1000D0003A3420342534333475346D347334203459
:1000E00000340A108A100A1182070A3441344C3451
:1000F00047343A342534303433347534203425349D
:10010000303433347534203425343034333475345A
:1001100000342A0893008C118A112628C408031D74
:100120009D288316061183120611831694018312EB
:10013000940183168C11B52883124408073C0318D8
:10014000A3280830C400C40344083D20F800AA00D6
:10015000831606118312061183169401223083122E
:1001600094002A08930083168C15831200342B0800
:100170002C040319BF282B080319AC03AB03AD08EB
:10018000031DAD03AF080319D2282F08073C031C39
:10019000D228AD08031DD2282E08AD00AF0A2F08C3
:1001A000C4008E200B118A11262883160108C0393D
:1001B0000138810083128B16C0308B048A11EF291D
:1001C0003D08043C031DE82883168610831286141C
:1001D000303083169F0083123D0DF700F70DF70DA9
:1001E000F830F7057708413E9F0064001030F700B3
:1001F000F70BF828000000001F1564001030F7000E
:10020000F70B002900000000831686108312861069
:100210001E08F800003483169818102983120B2941
:1002200083124108990000344208F8014102031882
:100230001C294108F7002829F7010830C300C10D27
:10024000F70D420877020318F700F80DC30B1F29BA
:1002500000344013C0123F08C1006430C2001421B2
:100260007708BF007808031D5329C01A5329C01905
:100270006129401B41294018412940194129C01BCF
:100280006129401C4D29C01B6129401B4D29401884
:10029000612940194D29C01B61292030401E303092
:1002A000C1000B216129C016C01F5D29780880009C
:1002B000F8002D30C1000B21C01330307807C10089
:1002C0000B21401B6C293F08C1000A30C2001421D9
:1002D0007708BF0040173229C01F71292D30C10097
:1002E0000B2130303F07C1000B2100343D3084002A
:1002F000000803198C290130F800BF30F7006400B2
:10030000F70B7F29F80B7D295830F700F70B86296A
:1003100000006400800B7B290034A9018B1BA91706
:100320008B133D08C4008E20A91B8B17C0308B0493
:1003300000348B123E08AC003D08AB008B16003435
:100340008B12AB08031DA729AC080319A92900309B
:10035000AA290130F8007818AF293D10B0293D14C2
:100360008B1600303D180130F80000348B1201303C
:10037000AF003D08AE002E08AD008B16A9018B1B07
:10038000A9178B130130C4008E20A91B8B170034D2
:1003900084011F30830583161F129F121B088039AA
:1003A0009B0007309C00050864001C0883120D1395
:1003B000623083168F001F30920004308312920047
:1003C0000C30970095018316861183128611143024
:1003D00095000B138B138B1BEA29ED29D5280330CD
:1003E000B000300B2C2A6400BD01E0207808B20078
:1003F000B20CB20C3F30B2050130BD00E0207808ED
:10040000B300B30E0F30B305BD013D084920BD0A4E
:10041000F700C1000B2105303D02031D052A3208FB
:10042000BF00C00129210930BE003E084920BE0A94
:10043000F700C1000B210E303E02031D152A3308C0
:10044000BF00C00129211430BD007621320895007B
:100450003308BD008D21F3293008023C031D7D2A9D
:10046000B5010130BD00E0207808B400BD013D08B1
:100470006020BD0AF700C1000B2106303D02031DBC
:10048000372A3408BF001030C00029216D30C10068
:100490000B217330C1000B212030C1000B210A3029
:1004A000BD007621B508031D5B2AB50A0730BE00E2
:1004B000D030BD009921350B6D2AA021F808031911
:1004C0006D2AB50A5230C1000B213408BD00B62197
:1004D0000730BE00D030BD0099213508023C031D15
:1004E0007B2AA021F80803197B2AB50A5330C100E2
:1004F0000B21BD018D216400312A3008033C031D0E
:10050000DB2AB6016400BD01E0207808B700BD0118
:10051000E0200310780C323EB7000430BD00E0202C
:100520007808B8003708380203189A2A36081D3CA4
:100530000318B60A37083802031CA12AB608031D9F
:10054000B6030A30B807370838020318AB2A360852
:100550001D3C0318B60A3608183C0318B12A183097
:10056000B6001430B600360895000B138B138B1BA6
:10057000B62AB92ABD013D087120BD0AF700C100A5
:100580000B2105303D02031DBB2A3708BF00C00107
:1005900029212030C1000B213808BF00C0012921CA
:1005A0002030C1000B213608BF00C00129210A30CC
:1005B000BD007621822AB008031D412BB9013630D7
:1005C000BE00B030BD0099213C146400BD01E020A4
:1005D0007808BA00BD01E0200310780C323EBA0062
:1005E0000430BD00E0207808BB003A083B02031845
:1005F000FD2A39081D3C0318B90A3A083B02031CBE
:10060000042BB908031DB9030A30BB073A083B02A3
:1006100003180E2B39081D3C0318B90A3908183C79
:100620000318142B1830B90039089500BD013D0896
:100630007120BD0AF700C1000B2105303D02031DEA
:10064000172B3A08BF00C00129212030C1000B211F
:100650003B08BF00C00129212030C1000B2139080F
:10066000BF00C00129210A30BD007621A021F80871
:100670000319402B3C1C402B3C104130BD00B621DF
:04068000E52A630004
:04400E00382FFF3F09
:00000001FF
;PIC16F88
/roboti/solarni/2005/jump/miho/DART.LST
0,0 → 1,1126
CCS PCM C Compiler, Version 3.221, 27853 21-VIII-05 18:18
 
Filename: C:\PIC\jump\miho\DART.LST
 
ROM used: 834 words (20%)
Largest free fragment is 2048
RAM used: 25 (14%) at main() level
42 (24%) worst case
Stack: 6 worst case (3 in main + 3 for interrupts)
 
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 1C8
0003: NOP
0004: MOVWF 7F
0005: SWAPF 03,W
0006: CLRF 03
0007: MOVWF 21
0008: MOVF 7F,W
0009: MOVWF 20
000A: MOVF 0A,W
000B: MOVWF 28
000C: CLRF 0A
000D: SWAPF 20,F
000E: MOVF 04,W
000F: MOVWF 22
0010: MOVF 77,W
0011: MOVWF 23
0012: MOVF 78,W
0013: MOVWF 24
0014: MOVF 79,W
0015: MOVWF 25
0016: MOVF 7A,W
0017: MOVWF 26
0018: MOVF 7B,W
0019: MOVWF 27
001A: BCF 03.7
001B: BCF 03.5
001C: MOVLW 8C
001D: MOVWF 04
001E: BTFSS 00.3
001F: GOTO 022
0020: BTFSC 0C.3
0021: GOTO 039
0022: BTFSS 0B.5
0023: GOTO 026
0024: BTFSC 0B.2
0025: GOTO 03B
0026: MOVF 22,W
0027: MOVWF 04
0028: MOVF 23,W
0029: MOVWF 77
002A: MOVF 24,W
002B: MOVWF 78
002C: MOVF 25,W
002D: MOVWF 79
002E: MOVF 26,W
002F: MOVWF 7A
0030: MOVF 27,W
0031: MOVWF 7B
0032: MOVF 28,W
0033: MOVWF 0A
0034: SWAPF 21,W
0035: MOVWF 03
0036: SWAPF 7F,F
0037: SWAPF 7F,W
0038: RETFIE
0039: BCF 0A.3
003A: GOTO 089
003B: BCF 0A.3
003C: GOTO 0B7
.................... // DART01A verze programu 1.00
.................... // (c)miho 2005
....................
.................... #include "DART.h"
.................... // DART01A verze programu 1.00
.................... // (c)miho 2005
....................
.................... #include ".\lib\16F88.h" // standardni definice konstant
.................... //////// Header file for the PIC16F88
.................... #device PIC16F88
.................... #list
.................... #include ".\lib\16F88_Reg.h" // standardni definice vsech FSR
.................... #list
....................
....................
.................... #device adc=8 // AD prevodnik jen na 8 bitu
.................... #define xclock 4168000 // muj konkretni PIC je trochu rychlejsi
.................... #use delay(clock=xclock,restart_wdt)
0176: MOVLW 3D
0177: MOVWF 04
0178: MOVF 00,W
0179: BTFSC 03.2
017A: GOTO 18C
017B: MOVLW 01
017C: MOVWF 78
017D: MOVLW BF
017E: MOVWF 77
017F: CLRWDT
0180: DECFSZ 77,F
0181: GOTO 17F
0182: DECFSZ 78,F
0183: GOTO 17D
0184: MOVLW 58
0185: MOVWF 77
0186: DECFSZ 77,F
0187: GOTO 186
0188: NOP
0189: CLRWDT
018A: DECFSZ 00,F
018B: GOTO 17B
018C: RETLW 00
.................... #fuses INTRC_IO, NOWDT, NOPUT, NOPROTECT, NOBROWNOUT, MCLR, NOLVP, NOCPD, NODEBUG, CCPB3
....................
....................
....................
.................... #define BEEP0 PIN_A6 // pipak, prvni vystup
.................... #define BEEP1 PIN_A7 // pipak, druhy vystup
.................... #define PWM PIN_B3 // PWM vystup pro menic
.................... #define REFPOWER PIN_B1 // napajeni zdroje Vref
.................... #define MOTOR PIN_B2 // zapinani motoru
.................... #define SW0 PIN_B7 // konfiguracni prepinac 0
.................... #define SW1 PIN_B6 // konfiguracni prepinac 1
....................
....................
.................... void InitRS232()
.................... // Inicializace HW RS232
.................... {
.................... SPBRG=xclock/9600/16-1; // ryclost 9600Bd
.................... RCSTA=0b10000000; // enable USART
.................... TXSTA=0b00100100; // BRGH=1, TX enable
.................... }
....................
....................
.................... void Putc(char c)
.................... // Posilani znaku pres HW RS232
.................... {
.................... while(TRMT==0); // cekej na prazdny TX buffer
*
010B: BSF 03.5
010C: BTFSC 18.1
010D: GOTO 110
010E: BCF 03.5
010F: GOTO 10B
.................... TXREG=c; // predej data
0110: BCF 03.5
0111: MOVF 41,W
0112: MOVWF 19
.................... }
0113: RETLW 00
....................
....................
.................... // Globalni promenna pro data posilana na SSP
.................... // Nastavuje se funkci MotorPatternSet()
.................... // Vyuziva se v prerusovaci rutine IntSSP()
.................... unsigned int8 MotorPattern; // aktualni data pro SSP jednotku
....................
....................
.................... void MotorPatternSet(unsigned int Gear)
.................... // Na zaklade rychlosti nastavi MotorPattern pro SSP
.................... // Rychlost 0 znamena stop, rychlost 8 je maximum
.................... {
.................... // Tabulka rychlost -> pattern pro SSP
.................... unsigned int8 const ExpTab[8] = {0x02,0x06,0x0e,0x1e,0x3e,0x7e,0xfe,0xff};
....................
.................... // Vyber patternu
.................... if (Gear==0) // stav 0 znamena stop
*
008E: MOVF 44,F
008F: BTFSS 03.2
0090: GOTO 09D
.................... {
.................... output_low(MOTOR); // klidovy stav
0091: BSF 03.5
0092: BCF 06.2
0093: BCF 03.5
0094: BCF 06.2
.................... SSPSTAT = 0;
0095: BSF 03.5
0096: CLRF 14
.................... SSPCON1 = 0; // SPI stop
0097: BCF 03.5
0098: CLRF 14
.................... disable_interrupts(INT_SSP); // neni preruseni od SSP
0099: BSF 03.5
009A: BCF 0C.3
.................... }
.................... else // rizeny vykon
009B: GOTO 0B5
009C: BCF 03.5
.................... {
.................... if (Gear>7) // stav 8 a vice znamena plny vykon
009D: MOVF 44,W
009E: SUBLW 07
009F: BTFSC 03.0
00A0: GOTO 0A3
.................... {
.................... Gear=8; // plny plyn
00A1: MOVLW 08
00A2: MOVWF 44
.................... }
....................
.................... MotorPattern=ExpTab[--Gear]; // prevod z hodnoty plynu na data pro SSP
00A3: DECF 44,F
00A4: MOVF 44,W
00A5: CALL 03D
00A6: MOVWF 78
00A7: MOVWF 2A
.................... output_low(MOTOR); // klidovy stav
00A8: BSF 03.5
00A9: BCF 06.2
00AA: BCF 03.5
00AB: BCF 06.2
.................... SSPSTAT = 0;
00AC: BSF 03.5
00AD: CLRF 14
.................... SSPCON1 = 0x22; // SPI OSC/64
00AE: MOVLW 22
00AF: BCF 03.5
00B0: MOVWF 14
....................
.................... SSPBUF=MotorPattern; // prvni data pro vyslani
00B1: MOVF 2A,W
00B2: MOVWF 13
.................... enable_interrupts(INT_SSP); // az budou vyslana prijde interrupt od SSP
00B3: BSF 03.5
00B4: BSF 0C.3
.................... }
.................... }
00B5: BCF 03.5
00B6: RETLW 00
....................
....................
.................... // Obsluha preruseni od SSP jednotky, posila data z promenne MotorRun do SSP.
.................... #INT_SSP
.................... void IntSSP()
.................... {
.................... SSPBUF=MotorPattern; // znova hdnota PWM patternu na SSP
*
0089: MOVF 2A,W
008A: MOVWF 13
.................... }
....................
....................
008B: BCF 0C.3
008C: BCF 0A.3
008D: GOTO 026
.................... void MotorSet(unsigned int Gear)
*
018D: CLRF 29
018E: BTFSC 0B.7
018F: BSF 29.7
0190: BCF 0B.7
.................... // Nastavi vykon motoru dle hodnoty Gear a zahaji posilani PWM dat pres SSP pod prerusenim
.................... // od SSP jednotky
.................... // 0 stop
.................... // 1-7 pocet 1/8 vykonu
.................... // >7 plny vykon
.................... {
.................... // Nastav PWM pattern
.................... MotorPatternSet(Gear); // nastav PWM pattern pro SSP
0191: MOVF 3D,W
0192: MOVWF 44
0193: CALL 08E
0194: BTFSC 29.7
0195: BSF 0B.7
....................
.................... // Povol preruseni
.................... enable_interrupts(GLOBAL); // povol preruseni
0196: MOVLW C0
0197: IORWF 0B,F
.................... }
0198: RETLW 00
....................
....................
.................... void InitT0()
.................... // Inicializace casovace T0 (cca 1000x za sekundu)
.................... {
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4); // T0 z internich hodin 1/4
*
00D5: BSF 03.5
00D6: MOVF 01,W
00D7: ANDLW C0
00D8: IORLW 01
00D9: MOVWF 01
.................... enable_interrupts(INT_RTCC); // generuj preruseni od T0
00DA: BCF 03.5
00DB: BSF 0B.5
.................... enable_interrupts(GLOBAL); // povol preruseni
00DC: MOVLW C0
00DD: IORWF 0B,F
.................... }
00DE: BCF 0A.3
00DF: GOTO 1EF (RETURN)
....................
....................
.................... // Globalni promenna pro mereni casu
.................... // Nastavuje se procedurou TimeSet()
.................... // Testuje se funkci TimeIf()
.................... // Modifikuje se pri preruseni od casovace IntTo()
.................... unsigned int16 TimeTime;
....................
....................
.................... void TimerSet(unsigned int16 Time)
.................... // Nastavi casovac na zadany pocet ms
.................... // Test uplynuti casu se dela pomoci TimerIf()
.................... {
.................... // Nastav hodnotu
.................... disable_interrupts(INT_RTCC); // nesmi prijit preruseni
*
0199: BCF 0B.5
.................... TimeTime=Time; // pri nastavovani hodnoty
019A: MOVF 3E,W
019B: MOVWF 2C
019C: MOVF 3D,W
019D: MOVWF 2B
.................... enable_interrupts(INT_RTCC); // promenne (o delce vice nez 8 bitu)
019E: BSF 0B.5
.................... }
019F: RETLW 00
....................
....................
.................... int1 TimerIf()
.................... // Vraci TRUE pokud casovac jiz dobehl
.................... {
.................... int1 Flag; // pomocna promenna
....................
.................... // Otestuj casovac
.................... disable_interrupts(INT_RTCC); // nesmi prijit preruseni
01A0: BCF 0B.5
.................... Flag=(TimeTime==0); // behem testu promenne
01A1: MOVF 2B,F
01A2: BTFSS 03.2
01A3: GOTO 1A7
01A4: MOVF 2C,F
01A5: BTFSC 03.2
01A6: GOTO 1A9
01A7: MOVLW 00
01A8: GOTO 1AA
01A9: MOVLW 01
01AA: MOVWF 78
01AB: BTFSC 78.0
01AC: GOTO 1AF
01AD: BCF 3D.0
01AE: GOTO 1B0
01AF: BSF 3D.0
.................... enable_interrupts(INT_RTCC); // ted uz muze
01B0: BSF 0B.5
....................
.................... // Navratova hodnota
.................... return Flag; // TRUE znamena dobehl casovac
01B1: MOVLW 00
01B2: BTFSC 3D.0
01B3: MOVLW 01
01B4: MOVWF 78
.................... }
01B5: RETLW 00
....................
....................
.................... // Globalni promenne pro akceleraci
.................... // Nastavuje se metodou MotorStart()
.................... // Pouziva se v obsluze preruseni IntT0()
.................... unsigned int8 MotorTime; // aktualni casovac pro rozjezd
.................... unsigned int8 MotorDelay; // spozdeni mezi razenim
.................... unsigned int8 MotorGear; // rychlostni stupen
....................
....................
.................... void MotorStart(unsigned int8 Delay)
.................... // Provede rizeny rozjezd motoru
.................... {
.................... disable_interrupts(INT_RTCC);
01B6: BCF 0B.5
.................... MotorGear=1;
01B7: MOVLW 01
01B8: MOVWF 2F
.................... MotorDelay=Delay;
01B9: MOVF 3D,W
01BA: MOVWF 2E
.................... MotorTime=MotorDelay;
01BB: MOVF 2E,W
01BC: MOVWF 2D
.................... enable_interrupts(INT_RTCC);
01BD: BSF 0B.5
01BE: CLRF 29
01BF: BTFSC 0B.7
01C0: BSF 29.7
01C1: BCF 0B.7
....................
.................... MotorPatternSet(1);
01C2: MOVLW 01
01C3: MOVWF 44
01C4: CALL 08E
01C5: BTFSC 29.7
01C6: BSF 0B.7
.................... }
01C7: RETLW 00
....................
....................
.................... #INT_TIMER0
.................... void IntT0()
.................... // Preruseni od casovace cca 1000x za sekundu
.................... {
.................... // Odpocitavani casovace
.................... if (TimeTime) TimeTime--;
*
00B7: MOVF 2B,W
00B8: IORWF 2C,W
00B9: BTFSC 03.2
00BA: GOTO 0BF
00BB: MOVF 2B,W
00BC: BTFSC 03.2
00BD: DECF 2C,F
00BE: DECF 2B,F
....................
.................... // Obsluha akcelerace
.................... if (MotorTime) MotorTime--; // dekrementuj casovac rozjezdu
00BF: MOVF 2D,F
00C0: BTFSS 03.2
00C1: DECF 2D,F
.................... if ((MotorGear>0) && (MotorGear<8) && (!MotorTime)) // dalsi rychlostni stupen
00C2: MOVF 2F,F
00C3: BTFSC 03.2
00C4: GOTO 0D2
00C5: MOVF 2F,W
00C6: SUBLW 07
00C7: BTFSS 03.0
00C8: GOTO 0D2
00C9: MOVF 2D,F
00CA: BTFSS 03.2
00CB: GOTO 0D2
.................... {
.................... MotorTime=MotorDelay; // znovu nastav casovac
00CC: MOVF 2E,W
00CD: MOVWF 2D
.................... MotorGear++; // dalsi rychlost
00CE: INCF 2F,F
.................... MotorPatternSet(MotorGear); // nastav rychlost
00CF: MOVF 2F,W
00D0: MOVWF 44
00D1: CALL 08E
.................... }
.................... }
....................
....................
.................... // Cteni dat z AD prevodniku, zadava se cislo kanalu
00D2: BCF 0B.2
00D3: BCF 0A.3
00D4: GOTO 026
.................... int8 ReadAD(int8 Ch)
.................... {
.................... // Pokud merim Vref zapnu si jeho napajeni
.................... if (Ch==4) output_high(REFPOWER);
*
00E0: MOVF 3D,W
00E1: SUBLW 04
00E2: BTFSS 03.2
00E3: GOTO 0E8
00E4: BSF 03.5
00E5: BCF 06.1
00E6: BCF 03.5
00E7: BSF 06.1
....................
.................... // Inicializace a cislo kanalu
.................... ADCON1=0x30; // Vref+-, bez deleni hodin, Left Justify
00E8: MOVLW 30
00E9: BSF 03.5
00EA: MOVWF 1F
.................... ADCON0=0x41+(Ch<<3); // on, Tosc/8, cislo kanalu
00EB: BCF 03.5
00EC: RLF 3D,W
00ED: MOVWF 77
00EE: RLF 77,F
00EF: RLF 77,F
00F0: MOVLW F8
00F1: ANDWF 77,F
00F2: MOVF 77,W
00F3: ADDLW 41
00F4: MOVWF 1F
....................
.................... // Mereni
.................... delay_us(50); // doba na prepnuti kanalu
00F5: CLRWDT
00F6: MOVLW 10
00F7: MOVWF 77
00F8: DECFSZ 77,F
00F9: GOTO 0F8
00FA: NOP
00FB: NOP
.................... ADCON0 |= 4; // start prevodu
00FC: BSF 1F.2
.................... delay_us(50); // doba na prevod
00FD: CLRWDT
00FE: MOVLW 10
00FF: MOVWF 77
0100: DECFSZ 77,F
0101: GOTO 100
0102: NOP
0103: NOP
....................
.................... // Vypnu napajeni Vref (vzdycky)
.................... output_low(REFPOWER);
0104: BSF 03.5
0105: BCF 06.1
0106: BCF 03.5
0107: BCF 06.1
....................
.................... // Navrat hodnoty
.................... return ADRESH;
0108: MOVF 1E,W
0109: MOVWF 78
.................... }
010A: RETLW 00
....................
....................
.................... void main()
.................... {
*
01C8: CLRF 04
01C9: MOVLW 1F
01CA: ANDWF 03,F
01CB: BSF 03.5
01CC: BCF 1F.4
01CD: BCF 1F.5
01CE: MOVF 1B,W
01CF: ANDLW 80
01D0: MOVWF 1B
01D1: MOVLW 07
01D2: MOVWF 1C
01D3: MOVF 05,W
01D4: CLRWDT
01D5: MOVF 1C,W
01D6: BCF 03.5
01D7: BCF 0D.6
.................... unsigned int8 Debug;
.................... unsigned int8 i;
....................
.................... // Hodiny
.................... OSCCON = 0x62; // 4 MHz interni RC oscilator
01D8: MOVLW 62
01D9: BSF 03.5
01DA: MOVWF 0F
.................... /*
.................... // Digitalni vystupy
.................... output_low(PWM); // PWM vystup
.................... output_low(MOTOR); // Proud do motoru
.................... output_low(REFPOWER); // Napajeni Vref
.................... port_b_pullups(TRUE); // Zbyvajici vyvody portu B
....................
.................... // Watch Dog
.................... PSA=0; // preddelic prirazen casovaci
.................... WDTCON=0x0E; // Watch Dog cca 130ms
.................... // Analogove vstupy
.................... ANSEL = 0x1F; // AN0 az AN4
....................
.................... // nastaveni RS232
.................... InitRS232(); // inicializace HW RS232 (nutno pockat cca 10ms)
....................
.................... // Pipnuti (a cekani)
.................... for (i=1;i<30;i++) // pocet 1/2 period
.................... {
.................... int1 beep; // stavova promenna pro pipak
....................
.................... output_bit(BEEP0,beep);
.................... beep=~beep;
.................... output_bit(BEEP1,beep);
.................... delay_us(1000);
.................... }
....................
.................... // Rozhodnuti o rezimu cinnosti
.................... Debug=0;
.................... if (~input(SW0)) Debug|=1; // precti bit 0
.................... if (~input(SW1)) Debug|=2; // precti bit 1
.................... output_low(SW0); // nastav L aby se snizila spotreba
.................... output_low(SW1); // na obou vstupech
....................
.................... // Zobrazeni rezimu
.................... printf(Putc,"\fMode:%d",Debug);
.................... */
.................... // Inicializace PWM
.................... PR2 = 0x1F; // perioda PWM casovace
01DB: MOVLW 1F
01DC: MOVWF 12
.................... T2CON = 0x04; // povoleni casovace T2 bez preddelicu a postdelicu
01DD: MOVLW 04
01DE: BCF 03.5
01DF: MOVWF 12
.................... CCP1CON = 0x0C; // PWM mode, lsb bity nulove
01E0: MOVLW 0C
01E1: MOVWF 17
.................... CCPR1L = 0; // na zacatku nulova data
01E2: CLRF 15
.................... output_low(PWM); // PWM vystup
01E3: BSF 03.5
01E4: BCF 06.3
01E5: BCF 03.5
01E6: BCF 06.3
....................
.................... //!!!KAKL
.................... CCPR1L = 20; // pouziti vystupu
01E7: MOVLW 14
01E8: MOVWF 15
.................... disable_interrupts(GLOBAL);
01E9: BCF 0B.6
01EA: BCF 0B.7
01EB: BTFSC 0B.7
01EC: GOTO 1EA
.................... while(true);
01ED: GOTO 1ED
....................
.................... // Inicializace casovace
.................... InitT0(); // nastav casovac na cca 1ms
01EE: GOTO 0D5
....................
.................... //!!!KAKL
.................... Debug=3;
01EF: MOVLW 03
01F0: MOVWF 30
....................
.................... // Test menice PWM a rozjezdoveho PWM
.................... if (Debug==1)
01F1: DECFSZ 30,W
01F2: GOTO 22C
.................... {
.................... unsigned int8 Data1; // poteniometr P1 = PWM
.................... unsigned int8 Data2; // poteniometr P2 = Rozjezd
....................
.................... while (1)
.................... {
.................... // watch dog
.................... restart_wdt();
01F3: CLRWDT
....................
.................... // mereni vstupu
.................... Data1=ReadAD(0); // nacti parametr pro PWM
01F4: CLRF 3D
01F5: CALL 0E0
01F6: MOVF 78,W
01F7: MOVWF 32
.................... Data1>>=2; // redukuj rozsah na 0 az 63
01F8: RRF 32,F
01F9: RRF 32,F
01FA: MOVLW 3F
01FB: ANDWF 32,F
.................... Data2=ReadAD(1); // nacti parametr pro rozjezd
01FC: MOVLW 01
01FD: MOVWF 3D
01FE: CALL 0E0
01FF: MOVF 78,W
0200: MOVWF 33
.................... Data2>>=4; // redukuj rozsah na 0 az 15
0201: SWAPF 33,F
0202: MOVLW 0F
0203: ANDWF 33,F
....................
.................... // zobrazeni
.................... printf(Putc,"\nPWM:%03u RUN:%03u",Data1,Data2);
0204: CLRF 3D
0205: MOVF 3D,W
0206: CALL 049
0207: INCF 3D,F
0208: MOVWF 77
0209: MOVWF 41
020A: CALL 10B
020B: MOVLW 05
020C: SUBWF 3D,W
020D: BTFSS 03.2
020E: GOTO 205
020F: MOVF 32,W
0210: MOVWF 3F
0211: CLRF 40
0212: CALL 129
0213: MOVLW 09
0214: MOVWF 3E
0215: MOVF 3E,W
0216: CALL 049
0217: INCF 3E,F
0218: MOVWF 77
0219: MOVWF 41
021A: CALL 10B
021B: MOVLW 0E
021C: SUBWF 3E,W
021D: BTFSS 03.2
021E: GOTO 215
021F: MOVF 33,W
0220: MOVWF 3F
0221: CLRF 40
0222: CALL 129
.................... delay_ms(20);
0223: MOVLW 14
0224: MOVWF 3D
0225: CALL 176
....................
.................... // nastaveni parametru PWM
.................... CCPR1L = Data1;
0226: MOVF 32,W
0227: MOVWF 15
....................
.................... // nastaveni parametru RUN
.................... MotorSet(Data2);
0228: MOVF 33,W
0229: MOVWF 3D
022A: CALL 18D
.................... }
022B: GOTO 1F3
.................... }
....................
.................... // Testovani rozjezdu
.................... // Zadava se cas mezi stupni razeni pro rozjezd v ms
.................... if (Debug==2)
022C: MOVF 30,W
022D: SUBLW 02
022E: BTFSS 03.2
022F: GOTO 27D
.................... {
.................... int8 Data;
.................... int8 Start;
....................
.................... Start=0; // uvodni stav
0230: CLRF 35
.................... while(1)
.................... {
.................... // Nacti a zobraz parametr
.................... Data=ReadAD(1); // potenciometr P2 = rozjezd
0231: MOVLW 01
0232: MOVWF 3D
0233: CALL 0E0
0234: MOVF 78,W
0235: MOVWF 34
.................... printf(Putc,"\nRUN: %3ums ",Data); // zobraz
0236: CLRF 3D
0237: MOVF 3D,W
0238: CALL 060
0239: INCF 3D,F
023A: MOVWF 77
023B: MOVWF 41
023C: CALL 10B
023D: MOVLW 06
023E: SUBWF 3D,W
023F: BTFSS 03.2
0240: GOTO 237
0241: MOVF 34,W
0242: MOVWF 3F
0243: MOVLW 10
0244: MOVWF 40
0245: CALL 129
0246: MOVLW 6D
0247: MOVWF 41
0248: CALL 10B
0249: MOVLW 73
024A: MOVWF 41
024B: CALL 10B
024C: MOVLW 20
024D: MOVWF 41
024E: CALL 10B
.................... delay_ms(10); // prodleva pro terminal
024F: MOVLW 0A
0250: MOVWF 3D
0251: CALL 176
....................
.................... // Uvodni pauza
.................... if (Start==0) // spousti se 1x na zacatku
0252: MOVF 35,F
0253: BTFSS 03.2
0254: GOTO 25B
.................... {
.................... Start++; // dalsi stav je cekani
0255: INCF 35,F
.................... TimerSet(2000); // na dokonceni uvodni prodlevy
0256: MOVLW 07
0257: MOVWF 3E
0258: MOVLW D0
0259: MOVWF 3D
025A: CALL 199
.................... }
....................
.................... // Rozjezd
.................... if ((Start==1) && TimerIf())
025B: DECFSZ 35,W
025C: GOTO 26D
025D: CALL 1A0
025E: MOVF 78,F
025F: BTFSC 03.2
0260: GOTO 26D
.................... {
.................... Start++;
0261: INCF 35,F
.................... printf(Putc,"R");
0262: MOVLW 52
0263: MOVWF 41
0264: CALL 10B
.................... MotorStart(Data); // rozjezd s nastavenim prodlevy
0265: MOVF 34,W
0266: MOVWF 3D
0267: CALL 1B6
....................
.................... TimerSet(2000); // nastav celkovy cas jizdy
0268: MOVLW 07
0269: MOVWF 3E
026A: MOVLW D0
026B: MOVWF 3D
026C: CALL 199
.................... }
....................
.................... // Zastaveni
.................... if ((Start==2) && TimerIf())
026D: MOVF 35,W
026E: SUBLW 02
026F: BTFSS 03.2
0270: GOTO 27B
0271: CALL 1A0
0272: MOVF 78,F
0273: BTFSC 03.2
0274: GOTO 27B
.................... {
.................... Start++;
0275: INCF 35,F
.................... printf(Putc,"S");
0276: MOVLW 53
0277: MOVWF 41
0278: CALL 10B
.................... MotorSet(0); // pokud dobehl casovac zastav motor
0279: CLRF 3D
027A: CALL 18D
.................... }
....................
.................... // watch dog
.................... restart_wdt();
027B: CLRWDT
.................... }
027C: GOTO 231
.................... }
....................
.................... // Test nabijeciho algoritmu
.................... if (Debug==3)
027D: MOVF 30,W
027E: SUBLW 03
027F: BTFSS 03.2
0280: GOTO 2DB
.................... {
.................... unsigned int8 PwmOut; // akcni hodnota pro PWM
.................... unsigned int8 Req; // pozadovana hodnota z P1
.................... unsigned int8 Vref; // merena hodnota vref
....................
.................... // Inicializace stavove promenne
.................... PwmOut=0;
0281: CLRF 36
....................
.................... // Hlavni smycka
.................... while (1)
.................... {
.................... // watch dog
.................... restart_wdt();
0282: CLRWDT
....................
.................... // pozadovana hodnota (potenciometr P1)
.................... Req=ReadAD(0);
0283: CLRF 3D
0284: CALL 0E0
0285: MOVF 78,W
0286: MOVWF 37
.................... Req=50+(ReadAD(0)>>1); // 50 az 177
0287: CLRF 3D
0288: CALL 0E0
0289: BCF 03.0
028A: RRF 78,W
028B: ADDLW 32
028C: MOVWF 37
....................
.................... // napeti na napajeni (vref)
.................... Vref=ReadAD(4);
028D: MOVLW 04
028E: MOVWF 3D
028F: CALL 0E0
0290: MOVF 78,W
0291: MOVWF 38
....................
.................... // ricici algoritmus
.................... if ((Vref<Req) &&(PwmOut<30)) PwmOut++;
0292: MOVF 37,W
0293: SUBWF 38,W
0294: BTFSC 03.0
0295: GOTO 29A
0296: MOVF 36,W
0297: SUBLW 1D
0298: BTFSC 03.0
0299: INCF 36,F
.................... if ((Vref>=Req)&&(PwmOut> 0)) PwmOut--;
029A: MOVF 37,W
029B: SUBWF 38,W
029C: BTFSS 03.0
029D: GOTO 2A1
029E: MOVF 36,F
029F: BTFSS 03.2
02A0: DECF 36,F
.................... Vref+=10;
02A1: MOVLW 0A
02A2: ADDWF 38,F
.................... if ((Vref<(Req))&&(PwmOut<30)) PwmOut++; // urychleni nabehu
02A3: MOVF 37,W
02A4: SUBWF 38,W
02A5: BTFSC 03.0
02A6: GOTO 2AB
02A7: MOVF 36,W
02A8: SUBLW 1D
02A9: BTFSC 03.0
02AA: INCF 36,F
....................
.................... // nastaveni parametru PWM
.................... if (PwmOut>24) PwmOut=24; // saturace
02AB: MOVF 36,W
02AC: SUBLW 18
02AD: BTFSC 03.0
02AE: GOTO 2B1
02AF: MOVLW 18
02B0: MOVWF 36
.................... //!!!KAKL
.................... PwmOut=20;
02B1: MOVLW 14
02B2: MOVWF 36
.................... CCPR1L = PwmOut; // pouziti vystupu
02B3: MOVF 36,W
02B4: MOVWF 15
.................... disable_interrupts(GLOBAL);
02B5: BCF 0B.6
02B6: BCF 0B.7
02B7: BTFSC 0B.7
02B8: GOTO 2B6
.................... while(true);
02B9: GOTO 2B9
.................... // zobrazeni
.................... printf(Putc,"\nALG:%03u %03u %03u",Req,Vref,PwmOut);
02BA: CLRF 3D
02BB: MOVF 3D,W
02BC: CALL 071
02BD: INCF 3D,F
02BE: MOVWF 77
02BF: MOVWF 41
02C0: CALL 10B
02C1: MOVLW 05
02C2: SUBWF 3D,W
02C3: BTFSS 03.2
02C4: GOTO 2BB
02C5: MOVF 37,W
02C6: MOVWF 3F
02C7: CLRF 40
02C8: CALL 129
02C9: MOVLW 20
02CA: MOVWF 41
02CB: CALL 10B
02CC: MOVF 38,W
02CD: MOVWF 3F
02CE: CLRF 40
02CF: CALL 129
02D0: MOVLW 20
02D1: MOVWF 41
02D2: CALL 10B
02D3: MOVF 36,W
02D4: MOVWF 3F
02D5: CLRF 40
02D6: CALL 129
.................... delay_ms(10);
02D7: MOVLW 0A
02D8: MOVWF 3D
02D9: CALL 176
.................... }
02DA: GOTO 282
.................... }
....................
.................... // Standardni beh
.................... if (Debug==0)
02DB: MOVF 30,F
02DC: BTFSS 03.2
02DD: GOTO 341
.................... {
.................... unsigned int8 PwmOut; // akcni hodnota pro PWM
.................... unsigned int8 Req; // pozadovana hodnota z P1
.................... unsigned int8 Vref; // merena hodnota vref
.................... int1 Run;
....................
.................... // Inicializace stavove promenne
.................... PwmOut=0;
02DE: CLRF 39
.................... TimerSet(14000); // casovani startu
02DF: MOVLW 36
02E0: MOVWF 3E
02E1: MOVLW B0
02E2: MOVWF 3D
02E3: CALL 199
.................... Run=1;
02E4: BSF 3C.0
....................
.................... // Hlavni smycka
.................... while (1)
.................... {
.................... // watch dog
.................... restart_wdt();
02E5: CLRWDT
....................
.................... // pozadovana hodnota (potenciometr P1)
.................... Req=ReadAD(0);
02E6: CLRF 3D
02E7: CALL 0E0
02E8: MOVF 78,W
02E9: MOVWF 3A
.................... Req=50+(ReadAD(0)>>1); // 50 az 177
02EA: CLRF 3D
02EB: CALL 0E0
02EC: BCF 03.0
02ED: RRF 78,W
02EE: ADDLW 32
02EF: MOVWF 3A
....................
.................... // napeti na napajeni (vref)
.................... Vref=ReadAD(4);
02F0: MOVLW 04
02F1: MOVWF 3D
02F2: CALL 0E0
02F3: MOVF 78,W
02F4: MOVWF 3B
....................
.................... // ricici algoritmus
.................... if ((Vref<Req) &&(PwmOut<30)) PwmOut++;
02F5: MOVF 3A,W
02F6: SUBWF 3B,W
02F7: BTFSC 03.0
02F8: GOTO 2FD
02F9: MOVF 39,W
02FA: SUBLW 1D
02FB: BTFSC 03.0
02FC: INCF 39,F
.................... if ((Vref>=Req)&&(PwmOut> 0)) PwmOut--;
02FD: MOVF 3A,W
02FE: SUBWF 3B,W
02FF: BTFSS 03.0
0300: GOTO 304
0301: MOVF 39,F
0302: BTFSS 03.2
0303: DECF 39,F
.................... Vref+=10;
0304: MOVLW 0A
0305: ADDWF 3B,F
.................... if ((Vref<(Req))&&(PwmOut<30)) PwmOut++; // urychleni nabehu
0306: MOVF 3A,W
0307: SUBWF 3B,W
0308: BTFSC 03.0
0309: GOTO 30E
030A: MOVF 39,W
030B: SUBLW 1D
030C: BTFSC 03.0
030D: INCF 39,F
....................
.................... // nastaveni parametru PWM
.................... if (PwmOut>24) PwmOut=24; // saturace
030E: MOVF 39,W
030F: SUBLW 18
0310: BTFSC 03.0
0311: GOTO 314
0312: MOVLW 18
0313: MOVWF 39
.................... CCPR1L = PwmOut; // pouziti vystupu
0314: MOVF 39,W
0315: MOVWF 15
....................
.................... // zobrazeni
.................... printf(Putc,"\nALG:%03u %03u %03u",Req,Vref,PwmOut);
0316: CLRF 3D
0317: MOVF 3D,W
0318: CALL 071
0319: INCF 3D,F
031A: MOVWF 77
031B: MOVWF 41
031C: CALL 10B
031D: MOVLW 05
031E: SUBWF 3D,W
031F: BTFSS 03.2
0320: GOTO 317
0321: MOVF 3A,W
0322: MOVWF 3F
0323: CLRF 40
0324: CALL 129
0325: MOVLW 20
0326: MOVWF 41
0327: CALL 10B
0328: MOVF 3B,W
0329: MOVWF 3F
032A: CLRF 40
032B: CALL 129
032C: MOVLW 20
032D: MOVWF 41
032E: CALL 10B
032F: MOVF 39,W
0330: MOVWF 3F
0331: CLRF 40
0332: CALL 129
.................... delay_ms(10);
0333: MOVLW 0A
0334: MOVWF 3D
0335: CALL 176
....................
.................... // rozjezd
.................... if (TimerIf()&&Run)
0336: CALL 1A0
0337: MOVF 78,F
0338: BTFSC 03.2
0339: GOTO 340
033A: BTFSS 3C.0
033B: GOTO 340
.................... {
.................... Run=0;
033C: BCF 3C.0
.................... MotorStart(65);
033D: MOVLW 41
033E: MOVWF 3D
033F: CALL 1B6
.................... }
.................... }
0340: GOTO 2E5
.................... }
.................... }
....................
0341: SLEEP
 
Configuration Fuses:
Word 1: 2F38 NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB3 NOPROTECT INTRC_IO
Word 2: 3FFF FCMEN IESO
/roboti/solarni/2005/jump/miho/DART.PJT
0,0 → 1,38
[PROJECT]
Target=DART.HEX
Development_Mode=
Processor=0x688F
ToolSuite=CCS
 
[Directories]
Include=C:\Program Files\PICC\devices\
Library=
LinkerScript=
 
[Target Data]
FileList=DART.C;
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[DART.C]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
 
[mru-list]
1=DART.C
 
[Windows]
0=0000 DART.C 0 0 796 451 3 0
 
[Opened Files]
1=C:\PIC\jump\miho\DART.C
2=C:\PIC\jump\miho\DART.h
3=C:\PIC\jump\miho\lib\16F88.h
4=C:\PIC\jump\miho\lib\16F88_Reg.h
5=
/roboti/solarni/2005/jump/miho/DART.SYM
0,0 → 1,376
000 INDF
001 TMR0
003.0 C
003 STATUS
003.1 DC
003.2 Z
003.3 PD
003.4 TO
003.5 RP0
003.6 RP1
003.7 IRP
005 PORTA
006 PORTB
00A PCLATH
00B INTCON
00B.0 RBIF
00B.1 INT0IF
00B.2 TMR0IF
00B.3 RBIE
00B.4 INT0IE
00B.5 TMR0IE
00B.6 PEIE
00B.7 GIE
00C PIR1
00C.0 TMR1IF
00C.1 TMR2IF
00C.2 CCP1IF
00C.3 SSPIF
00C.4 TXIF
00C.5 RCIF
00C.6 ADIF
00D PIR2
00D.4 EEIF
00D.6 CMIF
00D.7 OSFIF
00E TMR1L
00F TMR1H
010 T1CON
010.0 TMR1ON
010.1 TMR1CS
010.2 T1SYNC
010.3 T1OSCEN
010.4 T1CKPS0
010.5 T1CKPS1
010.6 T1RUN
011 TMR2
012 T2CON
012.0 T2CKPS0
012.1 T2CKPS1
012.2 TMR2ON
012.3 TOUTPS0
012.4 TOUTPS1
012.5 TOUTPS2
012.6 TOUTPS3
013 SSPBUF
014.0 SSPM0
014 SSPCON1
014.1 SSPM1
014.2 SSPM2
014.3 SSPM3
014.4 CKP
014.5 SSPEN
014.6 SSPOV
014.7 WCOL
015 CCP_1_LOW
015 CCPR1L
015-016 CCP_1
016 CCP_1_HIGH
016 CCPR1H
017.0 CCP1M0
017 CCP1CON
017.1 CCP1M1
017.2 CCP1M2
017.3 CCP1M3
017.4 CCP1Y
017.5 CCP1X
018 RCSTA
018.0 RX9D
018.1 OERR
018.2 FERR
018.3 ADDEN
018.4 CREN
018.5 SREN
018.6 RX9
018.7 SPEN
019 TXREG
01A RCREG
01E ADRESH
01F ADCON0
01F.0 ADON
01F.2 GO
01F.3 CHS0
01F.4 CHS1
01F.5 CHS2
01F.6 ADCS0
01F.7 ADCS1
020 @INTERRUPT_AREA
021 @INTERRUPT_AREA
022 @INTERRUPT_AREA
023 @INTERRUPT_AREA
024 @INTERRUPT_AREA
025 @INTERRUPT_AREA
026 @INTERRUPT_AREA
027 @INTERRUPT_AREA
028 @INTERRUPT_AREA
029 @INTERRUPT_AREA
02A MotorPattern
02B-02C TimeTime
02D MotorTime
02E MotorDelay
02F MotorGear
030 main.Debug
031 main.i
032 Data1
033 Data2
034 Data
035 Start
036 PwmOut
037 Req
038 Vref
039 PwmOut
03A Req
03B Vref
03C.0 Run
03D-03E TimerSet.Time
03D ReadAD.Ch
03D MotorSet.Gear
03D.0 TimerIf.Flag
03D MotorStart.Delay
03D @delay_ms1.P1
03D main.@SCRATCH
03E main.@SCRATCH
03F @PRINTF_U_494.P1
040 @PRINTF_U_494.P1
041 @DIV88.P1
041 putchar.C
042 @DIV88.P1
042 putchar.@SCRATCH
043 @DIV88.@SCRATCH
044 MotorPatternSet.Gear
077 @SCRATCH
078 @SCRATCH
078 _RETURN_
079 @SCRATCH
07A @SCRATCH
07B @SCRATCH
080 INDF_1
081.0 PS0
081 OPTION
081.1 PS1
081.2 PS2
081.3 PSA
081.4 T0SE
081.5 T0CS
081.6 INTEDG
081.7 RBPU
082 PCL
083.0 C_1
083 STATUS_1
083.1 DC_1
083.2 Z_1
083.3 PD_1
083.4 TO_1
083.5 RP0_1
083.6 RP1_1
083.7 IRP_1
084 FSR
085 TRISA
086 TRISB
08A PCLATH_1
08B INTCON_1
08B.0 RBIF_1
08B.1 INT0IF_1
08B.2 TMR0IF_1
08B.3 RBIE_1
08B.4 INT0IE_1
08B.5 TMR0IE_1
08B.6 PEIE_1
08B.7 GIE_1
08C.0 TMR1IE
08C PIE1
08C.1 TMR2IE
08C.2 CCP1IE
08C.3 SSPIE
08C.4 TXIE
08C.5 RCIE
08C.6 ADIE
08D PIE2
08D.4 EEIE
08D.6 CMIE
08D.7 OSFIE
08E PCON
08E.0 BOR
08E.1 POR
08F OSCCON
08F.0 SCS0
08F.1 SCS1
08F.2 IOFS
08F.3 OSTS
08F.4 IRCF0
08F.5 IRCF1
08F.6 IRCF2
090 OSCTUNE
090.0 TUN0
090.1 TUN1
090.2 TUN2
090.3 TUN3
090.4 TUN4
090.5 TUN5
092 PR2
093 SSPADD
094.0 BF
094 SSPSTAT
094.1 UA
094.2 RW
094.3 S
094.4 P
094.5 DA
094.6 CKE
094.7 SMP
098 TXSTA
098.0 TX9D
098.1 TRMT
098.2 BRGH
098.4 SYNC
098.5 TXEN
098.6 TX9
098.7 CSRC
099 SPBRG
09B.0 ANS0
09B ANSEL
09B.1 ANS1
09B.2 ANS2
09B.3 ANS3
09B.4 ANS4
09B.5 ANS5
09B.6 ANS6
09C CMCON
09C.0 CM0
09C.1 CM1
09C.2 CM2
09C.3 CIS
09C.4 C1INV
09C.5 C2INV
09C.6 C1OUT
09C.7 C2OUT
09D CVRCON
09D.0 CVR0
09D.1 CVR1
09D.2 CVR2
09D.3 CVR3
09D.5 CVRR
09D.6 CVROE
09D.7 CVREN
09E ADRESL
09F ADCON1
09F.4 VCFG0
09F.5 VCFG1
09F.6 ADCS2
09F.7 ADFM
100 INDF_2
101 TMR0_2
102 PCL_2
103.0 C_2
103 STATUS_2
103.1 DC_2
103.2 Z_2
103.3 PD_2
103.4 TO_2
103.5 RP0_2
103.6 RP1_2
103.7 IRP_2
104 FSR_2
105 WDTCON
105.0 SWDTEN
105.1 WDTPS0
105.2 WDTPS1
105.3 WDTPS2
105.4 WDTPS3
106 PORTB_2
10A PCLATH_2
10B.0 RBIF_2
10B INTCON_2
10B.1 INT0IF_2
10B.2 TMR0IF_2
10B.3 RBIE_2
10B.4 INT0IE_2
10B.5 TMR0IE_2
10B.6 PEIE_2
10B.7 GIE_2
10C EEDATA
10D EEADR
10E EEDATH
10F EEADRH
180 INDF_3
181.0 PS0_3
181 OPTION_3
181.1 PS1_3
181.2 PS2_3
181.3 PSA_3
181.4 T0SE_3
181.5 T0CS_3
181.6 INTEDG_3
181.7 RBPU_3
182 PCL_3
183.0 C_3
183 STATUS_3
183.1 DC_3
183.2 Z_3
183.3 PD_3
183.4 TO_3
183.5 RP0_3
183.6 RP1_3
183.7 IRP_3
184 FSR_3
186 TRISB_3
18A PLATH_3
18B.0 RBIF_3
18B INTCON_3
18B.1 INT0IF_3
18B.2 TMR0IF_3
18B.3 RBIE_3
18B.4 INT0IE_3
18B.5 TMR0IE_3
18B.6 PEIE_3
18B.7 GIE_3
18C.0 RD
18C EECON1
18C.1 WR
18C.2 WREN
18C.3 WRERR
18C.4 FREE
18C.7 EEPGD
18D EECON2
 
0176 @delay_ms1
010B putchar
003D @const312
008E MotorPatternSet
0089 IntSSP
018D MotorSet
00D5 InitT0
0199 TimerSet
01A0 TimerIf
01B6 MotorStart
00B7 IntT0
00E0 ReadAD
01C8 main
0049 @const10122
0114 @DIV88
0129 @PRINTF_U_494
0060 @const10152
0071 @const10203
01C8 @cinit
 
Project Files:
C:\PIC\jump\miho\DART.C
C:\PIC\jump\miho\DART.h
C:\PIC\jump\miho\lib\16F88.h
C:\PIC\jump\miho\lib\16F88_Reg.h
 
Compiler Settings:
Processor: PIC16F88
Pointer Size: 8
ADC Range: 0-255
Opt Level: 9
Short,Int,Long: 1,8,16
 
Output Files:
Errors: C:\PIC\jump\miho\DART.err
INHX8: C:\PIC\jump\miho\DART.HEX
Symbols: C:\PIC\jump\miho\DART.SYM
List: C:\PIC\jump\miho\DART.LST
Debug/COFF: C:\PIC\jump\miho\DART.cof
Call Tree: C:\PIC\jump\miho\DART.tre
Statistics: C:\PIC\jump\miho\DART.sta
/roboti/solarni/2005/jump/miho/DART.cof
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/jump/miho/DART.err
0,0 → 1,0
No Errors
/roboti/solarni/2005/jump/miho/DART.h
0,0 → 1,10
// DART01A verze programu 1.00
// (c)miho 2005
 
#include ".\lib\16F88.h" // standardni definice konstant
#include ".\lib\16F88_Reg.h" // standardni definice vsech FSR
 
#device adc=8 // AD prevodnik jen na 8 bitu
#define xclock 4168000 // muj konkretni PIC je trochu rychlejsi
#use delay(clock=xclock,restart_wdt)
#fuses INTRC_IO, NOWDT, NOPUT, NOPROTECT, NOBROWNOUT, MCLR, NOLVP, NOCPD, NODEBUG, CCPB3
/roboti/solarni/2005/jump/miho/DART.sta
0,0 → 1,47
 
ROM used: 834 (20%)
834 (20%) including unused fragments
 
1 Average locations per line
5 Average locations per statement
 
RAM used: 25 (14%) at main() level
42 (24%) worst case
 
Lines Stmts % Files
----- ----- --- -----
426 160 100 C:\PIC\jump\miho\DART.C
11 0 0 C:\PIC\jump\miho\DART.h
216 0 0 C:\PIC\jump\miho\lib\16F88.h
315 0 0 C:\PIC\jump\miho\lib\16F88_Reg.h
----- -----
1936 320 Total
 
Page ROM % RAM Functions:
---- --- --- --- ----------
0 23 3 1 @delay_ms1
0 9 1 2 putchar
0 12 1 0 @const312
0 41 5 1 MotorPatternSet
0 5 1 0 IntSSP
0 12 1 1 MotorSet
0 11 1 0 InitT0
0 7 1 2 TimerSet
0 22 3 1 TimerIf
0 18 2 1 MotorStart
0 30 4 0 IntT0
0 43 5 1 ReadAD
0 378 45 4 main
0 23 3 0 @const10122
0 21 3 3 @DIV88
0 77 9 2 @PRINTF_U_494
0 17 2 0 @const10152
0 24 3 0 @const10203
 
Segment Used Free
--------- ---- ----
00000-00003 4 0
00004-0003C 57 0
0003D-007FF 773 1214
00800-00FFF 0 2048
 
/roboti/solarni/2005/jump/miho/DART.tre
0,0 → 1,130
ÀÄDART
ÃÄmain 0/378 Ram=4
³ ÃÄ??0??
³ ÃÄInitT0 0/11 Ram=0
³ ÃÄReadAD 0/43 Ram=1
³ ÃÄReadAD 0/43 Ram=1
³ ÃÄ@const10122 0/23 Ram=0
³ ÃÄputchar 0/9 Ram=2
³ ÃÄ@PRINTF_U_494 0/77 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÀÄputchar 0/9 Ram=2
³ ÃÄ@const10122 0/23 Ram=0
³ ÃÄputchar 0/9 Ram=2
³ ÃÄ@PRINTF_U_494 0/77 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÀÄputchar 0/9 Ram=2
³ ÃÄ@delay_ms1 0/23 Ram=1
³ ÃÄMotorSet 0/12 Ram=1
³ ³ ÀÄMotorPatternSet 0/41 Ram=1
³ ³ ÀÄ@const312 0/12 Ram=0
³ ÃÄReadAD 0/43 Ram=1
³ ÃÄ@const10152 0/17 Ram=0
³ ÃÄputchar 0/9 Ram=2
³ ÃÄ@PRINTF_U_494 0/77 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÀÄputchar 0/9 Ram=2
³ ÃÄputchar 0/9 Ram=2
³ ÃÄputchar 0/9 Ram=2
³ ÃÄputchar 0/9 Ram=2
³ ÃÄ@delay_ms1 0/23 Ram=1
³ ÃÄTimerSet 0/7 Ram=2
³ ÃÄTimerIf 0/22 Ram=1
³ ÃÄputchar 0/9 Ram=2
³ ÃÄMotorStart 0/18 Ram=1
³ ³ ÀÄMotorPatternSet 0/41 Ram=1
³ ³ ÀÄ@const312 0/12 Ram=0
³ ÃÄTimerSet 0/7 Ram=2
³ ÃÄTimerIf 0/22 Ram=1
³ ÃÄputchar 0/9 Ram=2
³ ÃÄMotorSet 0/12 Ram=1
³ ³ ÀÄMotorPatternSet 0/41 Ram=1
³ ³ ÀÄ@const312 0/12 Ram=0
³ ÃÄReadAD 0/43 Ram=1
³ ÃÄReadAD 0/43 Ram=1
³ ÃÄReadAD 0/43 Ram=1
³ ÃÄ@const10203 0/24 Ram=0
³ ÃÄputchar 0/9 Ram=2
³ ÃÄ@PRINTF_U_494 0/77 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÀÄputchar 0/9 Ram=2
³ ÃÄputchar 0/9 Ram=2
³ ÃÄ@PRINTF_U_494 0/77 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÀÄputchar 0/9 Ram=2
³ ÃÄputchar 0/9 Ram=2
³ ÃÄ@PRINTF_U_494 0/77 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÀÄputchar 0/9 Ram=2
³ ÃÄ@delay_ms1 0/23 Ram=1
³ ÃÄTimerSet 0/7 Ram=2
³ ÃÄReadAD 0/43 Ram=1
³ ÃÄReadAD 0/43 Ram=1
³ ÃÄReadAD 0/43 Ram=1
³ ÃÄ@const10203 0/24 Ram=0
³ ÃÄputchar 0/9 Ram=2
³ ÃÄ@PRINTF_U_494 0/77 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÀÄputchar 0/9 Ram=2
³ ÃÄputchar 0/9 Ram=2
³ ÃÄ@PRINTF_U_494 0/77 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÀÄputchar 0/9 Ram=2
³ ÃÄputchar 0/9 Ram=2
³ ÃÄ@PRINTF_U_494 0/77 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÃÄ@DIV88 0/21 Ram=3
³ ³ ÃÄputchar 0/9 Ram=2
³ ³ ÀÄputchar 0/9 Ram=2
³ ÃÄ@delay_ms1 0/23 Ram=1
³ ÃÄTimerIf 0/22 Ram=1
³ ÀÄMotorStart 0/18 Ram=1
³ ÀÄMotorPatternSet 0/41 Ram=1
³ ÀÄ@const312 0/12 Ram=0
ÃÄIntSSP 0/5 Ram=0
ÀÄIntT0 0/30 Ram=0
ÀÄMotorPatternSet 0/41 Ram=1
ÀÄ@const312 0/12 Ram=0
/roboti/solarni/2005/jump/miho/LIB/16f88.h
0,0 → 1,216
//////// Header file for the PIC16F88
#device PIC16F88
#nolist
//////// Program memory: 4096x14 Data RAM: 368 Stack: 8
//////// I/O: 16 Analog Pins: 7
//////// Data EEPROM: 256
//////// C Scratch area: 77 ID Location: 2000
// Fuses:
// Oscilator: LP - oscilator LP
// XT - oscilator XT
// HS - oscilator HS
// EC_IO - externi vstup, RA6/CLKO je IO port
// INTRC - RC oscilator, RA6/CLKO je CLKO, RA7/CLKI je IO port port,
// INTRC_IO - RC oscilator, RA6 i RA7 je IO port
// RC - ext RC, RA6/CLKO je CLKO
// RC_IO - ext RC, RA6 je IO port
// Watch: NOWDT - neni watchog
// WDT - je watchdog
// PUT: NOPUT - neni power up timer
// PUT - je power up timer
// MCLR: MCLR - RA5/MCLR je MCLR
// NOMCLR - RA5/MCLR je IO port
// BOR: BROWNOUT - BOR povolen
// NOBROWNOUT - BOR zakazan
// LVP: LVP - RB3/PGM je PGM
// NOLVP - RB3/PGM je IO port
// CPD: CPD - je ochrana EEPROM
// NOCPD - neni ochrana EEPROM
// WRT WRT - zakaz zapisu do pameti programu
// NOWRT - povolen zapis do pameti programu
// DEBUG: DEBUG - RB6 a RB7 jsou ICD port
// NODEBUG - RB6 a RB7 jsou IO port
// CCPMX: CCPB0 - CCP/PWM na RB0
// CCPB3 - CCP/PWM na RB3
// CP: PROTECT - pamet programu je chranena
// NOPROTECT - pamet programu neni chranena
//
 
////////////////////////////////////////////////////////////////// I/O
// Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(),
// PORT_B_PULLUPS(), INPUT(),
// OUTPUT_LOW(), OUTPUT_HIGH(),
// OUTPUT_FLOAT(), OUTPUT_BIT()
// Constants used to identify pins in the above are:
 
 
 
#define PIN_A0 40
#define PIN_A1 41
#define PIN_A2 42
#define PIN_A3 43
#define PIN_A4 44
#define PIN_A5 45
#define PIN_A6 46
#define PIN_A7 47
 
#define PIN_B0 48
#define PIN_B1 49
#define PIN_B2 50
#define PIN_B3 51
#define PIN_B4 52
#define PIN_B5 53
#define PIN_B6 54
#define PIN_B7 55
 
////////////////////////////////////////////////////////////////// Useful defines
#define FALSE 0
#define TRUE 1
 
#define BYTE int
#define BOOLEAN short int
 
#define getc getch
#define fgetc getch
#define getchar getch
#define putc putchar
#define fputc putchar
#define fgets gets
#define fputs puts
 
////////////////////////////////////////////////////////////////// Control
// Control Functions: RESET_CPU(), SLEEP(), RESTART_CAUSE()
// Constants returned from RESTART_CAUSE() are:
#define WDT_FROM_SLEEP 0
#define WDT_TIMEOUT 8
#define MCLR_FROM_SLEEP 16
#define NORMAL_POWER_UP 24
 
 
////////////////////////////////////////////////////////////////// Timer 0
// Timer 0 (AKA RTCC)Functions: SETUP_COUNTERS() or SETUP_TIMER0(),
// SET_TIMER0() or SET_RTCC(),
// GET_TIMER0() or GET_RTCC()
// Constants used for SETUP_TIMER0() are:
#define RTCC_INTERNAL 0
#define RTCC_EXT_L_TO_H 32
#define RTCC_EXT_H_TO_L 48
 
#define RTCC_DIV_1 8
#define RTCC_DIV_2 0
#define RTCC_DIV_4 1
#define RTCC_DIV_8 2
#define RTCC_DIV_16 3
#define RTCC_DIV_32 4
#define RTCC_DIV_64 5
#define RTCC_DIV_128 6
#define RTCC_DIV_256 7
 
 
#define RTCC_8_BIT 0
 
// Constants used for SETUP_COUNTERS() are the above
// constants for the 1st param and the following for
// the 2nd param:
 
////////////////////////////////////////////////////////////////// WDT
// Watch Dog Timer Functions: SETUP_WDT() or SETUP_COUNTERS() (see above)
// RESTART_WDT()
//
#define WDT_18MS 8
#define WDT_36MS 9
#define WDT_72MS 10
#define WDT_144MS 11
#define WDT_288MS 12
#define WDT_576MS 13
#define WDT_1152MS 14
#define WDT_2304MS 15
 
////////////////////////////////////////////////////////////////// Timer 1
// Timer 1 Functions: SETUP_TIMER_1, GET_TIMER1, SET_TIMER1
// Constants used for SETUP_TIMER_1() are:
// (or (via |) together constants from each group)
#define T1_DISABLED 0
#define T1_INTERNAL 0x85
#define T1_EXTERNAL 0x87
#define T1_EXTERNAL_SYNC 0x83
 
#define T1_CLK_OUT 8
 
#define T1_DIV_BY_1 0
#define T1_DIV_BY_2 0x10
#define T1_DIV_BY_4 0x20
#define T1_DIV_BY_8 0x30
 
////////////////////////////////////////////////////////////////// Timer 2
// Timer 2 Functions: SETUP_TIMER_2, GET_TIMER2, SET_TIMER2
// Constants used for SETUP_TIMER_2() are:
#define T2_DISABLED 0
#define T2_DIV_BY_1 4
#define T2_DIV_BY_4 5
#define T2_DIV_BY_16 6
 
////////////////////////////////////////////////////////////////// CCP
// CCP Functions: SETUP_CCPx, SET_PWMx_DUTY
// CCP Variables: CCP_x, CCP_x_LOW, CCP_x_HIGH
// Constants used for SETUP_CCPx() are:
#define CCP_OFF 0
#define CCP_CAPTURE_FE 4
#define CCP_CAPTURE_RE 5
#define CCP_CAPTURE_DIV_4 6
#define CCP_CAPTURE_DIV_16 7
#define CCP_COMPARE_SET_ON_MATCH 8
#define CCP_COMPARE_CLR_ON_MATCH 9
#define CCP_COMPARE_INT 0xA
#define CCP_COMPARE_RESET_TIMER 0xB
#define CCP_PWM 0xC
#define CCP_PWM_PLUS_1 0x1c
#define CCP_PWM_PLUS_2 0x2c
#define CCP_PWM_PLUS_3 0x3c
long CCP_1;
#byte CCP_1 = 0x15
#byte CCP_1_LOW= 0x15
#byte CCP_1_HIGH= 0x16
////////////////////////////////////////////////////////////////// COMP
// Comparator Variables: C1OUT, C2OUT
// Constants used in setup_comparators() are:
#define A0_A3_A1_A2 4
#define A0_A2_A1_A2 3
#define NC_NC_A1_A2 5
#define NC_NC_NC_NC 7
#define A0_VR_A1_VR 2
#define A3_VR_A2_VR 10
#define A0_A2_A1_A2_OUT_ON_A3_A4 6
#define A3_A2_A1_A2 9
 
//#bit C1OUT = 0x1f.6
//#bit C2OUT = 0x1f.7
 
////////////////////////////////////////////////////////////////// VREF
// Constants used in setup_vref() are:
#define VREF_LOW 0xa0
#define VREF_HIGH 0x80
#define VREF_A2 0x40
 
////////////////////////////////////////////////////////////////// INT
// Interrupt Functions: ENABLE_INTERRUPTS(), DISABLE_INTERRUPTS(),
// EXT_INT_EDGE()
//
// Constants used in EXT_INT_EDGE() are:
#define L_TO_H 0x40
#define H_TO_L 0
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:
#define GLOBAL 0x0BC0
#define INT_RTCC 0x0B20
#define INT_RB 0x0B08
#define INT_EXT 0x0B10
#define INT_TBE 0x8C10
#define INT_RDA 0x8C20
#define INT_TIMER1 0x8C01
#define INT_TIMER2 0x8C02
#define INT_CCP1 0x8C04
#define INT_SSP 0x8C08
#define INT_COMP 0x8D40
#define INT_EEPROM 0x8D10
#define INT_TIMER0 0x0B20
#list
/roboti/solarni/2005/jump/miho/LIB/16f88_reg.h
0,0 → 1,314
#nolist
//
// Komplete definition of all Special Feature Registers for CCS C compiler
//
// PIC16F87
// PIC16F88
//
// (c)miho 2005
//
// History:
//
// 1.00 First Version, not verified yet
 
 
// SFR Registers in Memory Bank 0
//
#byte INDF = 0x00
#byte TMR0 = 0x01
#byte PCL = 0x02
#byte STATUS = 0x03
#bit IRP = STATUS.7
#bit RP1 = STATUS.6
#bit RP0 = STATUS.5
#bit TO = STATUS.4
#bit PD = STATUS.3
#bit Z = STATUS.2
#bit DC = STATUS.1
#bit C = STATUS.0
#byte FSR = 0x04
#byte PORTA = 0x05
#byte PORTB = 0x06
#byte PCLATH = 0x0A
#byte INTCON = 0x0B
#bit GIE = INTCON.7
#bit PEIE = INTCON.6
#bit TMR0IE = INTCON.5
#bit INT0IE = INTCON.4
#bit RBIE = INTCON.3
#bit TMR0IF = INTCON.2
#bit INT0IF = INTCON.1
#bit RBIF = INTCON.0
#byte PIR1 = 0x0C
#bit ADIF = PIR1.6
#bit RCIF = PIR1.5
#bit TXIF = PIR1.4
#bit SSPIF = PIR1.3
#bit CCP1IF = PIR1.2
#bit TMR2IF = PIR1.1
#bit TMR1IF = PIR1.0
#byte PIR2 = 0x0D
#bit OSFIF = PIR2.7
#bit CMIF = PIR2.6
#bit EEIF = PIR2.4
#byte TMR1L = 0x0E
#byte TMR1H = 0x0F
#byte T1CON = 0x10
#bit T1RUN = T1CON.6
#bit T1CKPS1 = T1CON.5
#bit T1CKPS0 = T1CON.4
#bit T1OSCEN = T1CON.3
#bit T1SYNC = T1CON.2
#bit TMR1CS = T1CON.1
#bit TMR1ON = T1CON.0
#byte TMR2 = 0x11
#byte T2CON = 0x12
#bit TOUTPS3 = T2CON.6
#bit TOUTPS2 = T2CON.5
#bit TOUTPS1 = T2CON.4
#bit TOUTPS0 = T2CON.3
#bit TMR2ON = T2CON.2
#bit T2CKPS1 = T2CON.1
#bit T2CKPS0 = T2CON.0
#byte SSPBUF = 0x13
#byte SSPCON1 = 0x14
#bit WCOL = SSPCON1.7
#bit SSPOV = SSPCON1.6
#bit SSPEN = SSPCON1.5
#bit CKP = SSPCON1.4
#bit SSPM3 = SSPCON1.3
#bit SSPM2 = SSPCON1.2
#bit SSPM1 = SSPCON1.1
#bit SSPM0 = SSPCON1.0
#byte CCPR1L = 0x15
#byte CCPR1H = 0x16
#byte CCP1CON = 0x17
#bit CCP1X = CCP1CON.5
#bit CCP1Y = CCP1CON.4
#bit CCP1M3 = CCP1CON.3
#bit CCP1M2 = CCP1CON.2
#bit CCP1M1 = CCP1CON.1
#bit CCP1M0 = CCP1CON.0
#byte RCSTA = 0x18
#bit SPEN = RCSTA.7
#bit RX9 = RCSTA.6
#bit SREN = RCSTA.5
#bit CREN = RCSTA.4
#bit ADDEN = RCSTA.3
#bit FERR = RCSTA.2
#bit OERR = RCSTA.1
#bit RX9D = RCSTA.0
#byte TXREG = 0x19
#byte RCREG = 0x1A
#byte ADRESH = 0x1E // F88 only
#byte ADCON0 = 0x1F // F88 only
#bit ADCS1 = ADCON0.7
#bit ADCS0 = ADCON0.6
#bit CHS2 = ADCON0.5
#bit CHS1 = ADCON0.4
#bit CHS0 = ADCON0.3
#bit GO = ADCON0.2
#bit ADON = ADCON0.0
 
 
// SFR Registers in Memory Bank 1
//
#byte INDF_1 = 0x80 // miror
#byte OPTION = 0x81
#bit RBPU = OPTION.7
#bit INTEDG = OPTION.6
#bit T0CS = OPTION.5
#bit T0SE = OPTION.4
#bit PSA = OPTION.3
#bit PS2 = OPTION.2
#bit PS1 = OPTION.1
#bit PS0 = OPTION.0
#byte PCL = 0x82
#byte STATUS_1 = 0x83 // mirror
#bit IRP_1 = STATUS_1.7
#bit RP1_1 = STATUS_1.6
#bit RP0_1 = STATUS_1.5
#bit TO_1 = STATUS_1.4
#bit PD_1 = STATUS_1.3
#bit Z_1 = STATUS_1.2
#bit DC_1 = STATUS_1.1
#bit C_1 = STATUS_1.0
#byte FSR = 0x84
#byte TRISA = 0x85
#byte TRISB = 0x86
#byte PCLATH_1 = 0x8A // mirror
#byte INTCON_1 = 0x8B // mirror
#bit GIE_1 = INTCON_1.7
#bit PEIE_1 = INTCON_1.6
#bit TMR0IE_1 = INTCON_1.5
#bit INT0IE_1 = INTCON_1.4
#bit RBIE_1 = INTCON_1.3
#bit TMR0IF_1 = INTCON_1.2
#bit INT0IF_1 = INTCON_1.1
#bit RBIF_1 = INTCON_1.0
#byte PIE1 = 0x8C
#bit ADIE = PIE1.6
#bit RCIE = PIE1.5
#bit TXIE = PIE1.4
#bit SSPIE = PIE1.3
#bit CCP1IE = PIE1.2
#bit TMR2IE = PIE1.1
#bit TMR1IE = PIE1.0
#byte PIE2 = 0x8D
#bit OSFIE = PIE2.7
#bit CMIE = PIE2.6
#bit EEIE = PIE2.4
#byte PCON = 0x8E
#bit POR = PCON.1
#bit BOR = PCON.0
#byte OSCCON = 0x8F
#bit IRCF2 = OSCCON.6
#bit IRCF1 = OSCCON.5
#bit IRCF0 = OSCCON.4
#bit OSTS = OSCCON.3
#bit IOFS = OSCCON.2
#bit SCS1 = OSCCON.1
#bit SCS0 = OSCCON.0
#byte OSCTUNE = 0x90
#bit TUN5 = OSCTUNE.5
#bit TUN4 = OSCTUNE.4
#bit TUN3 = OSCTUNE.3
#bit TUN2 = OSCTUNE.2
#bit TUN1 = OSCTUNE.1
#bit TUN0 = OSCTUNE.0
#byte PR2 = 0x92
#byte SSPADD = 0x93
#byte SSPSTAT = 0x94
#bit SMP = SSPSTAT.7
#bit CKE = SSPSTAT.6
#bit DA = SSPSTAT.5
#bit P = SSPSTAT.4
#bit S = SSPSTAT.3
#bit RW = SSPSTAT.2
#bit UA = SSPSTAT.1
#bit BF = SSPSTAT.0
#byte TXSTA = 0x98
#bit CSRC = TXSTA.7
#bit TX9 = TXSTA.6
#bit TXEN = TXSTA.5
#bit SYNC = TXSTA.4
#bit BRGH = TXSTA.2
#bit TRMT = TXSTA.1
#bit TX9D = TXSTA.0
#byte SPBRG = 0x99
#byte ANSEL = 0x9B // F88 only
#bit ANS6 = ANSEL.6
#bit ANS5 = ANSEL.5
#bit ANS4 = ANSEL.4
#bit ANS3 = ANSEL.3
#bit ANS2 = ANSEL.2
#bit ANS1 = ANSEL.1
#bit ANS0 = ANSEL.0
#byte CMCON = 0x9C
#bit C2OUT = CMCON.7
#bit C1OUT = CMCON.6
#bit C2INV = CMCON.5
#bit C1INV = CMCON.4
#bit CIS = CMCON.3
#bit CM2 = CMCON.2
#bit CM1 = CMCON.1
#bit CM0 = CMCON.0
#byte CVRCON = 0x9D
#bit CVREN = CVRCON.7
#bit CVROE = CVRCON.6
#bit CVRR = CVRCON.5
#bit CVR3 = CVRCON.3
#bit CVR2 = CVRCON.2
#bit CVR1 = CVRCON.1
#bit CVR0 = CVRCON.0
#byte ADRESL = 0x9E // F88 only
#byte ADCON1 = 0x9F // F88 only
#bit ADFM = ADCON1.7
#bit ADCS2 = ADCON1.6
#bit VCFG1 = ADCON1.5
#bit VCFG0 = ADCON1.4
 
 
// SFR Registers in Memory Bank 2
//
#byte INDF_2 = 0x100 // mirror
#byte TMR0_2 = 0x101 // mirror
#byte PCL_2 = 0x102 // mirror
#byte STATUS_2 = 0x103 // mirror
#bit IRP_2 = STATUS_2.7
#bit RP1_2 = STATUS_2.6
#bit RP0_2 = STATUS_2.5
#bit TO_2 = STATUS_2.4
#bit PD_2 = STATUS_2.3
#bit Z_2 = STATUS_2.2
#bit DC_2 = STATUS_2.1
#bit C_2 = STATUS_2.0
#byte FSR_2 = 0x104 // mirror
#byte WDTCON = 0x105
#bit WDTPS3 = WDTCON.4
#bit WDTPS2 = WDTCON.3
#bit WDTPS1 = WDTCON.2
#bit WDTPS0 = WDTCON.1
#bit SWDTEN = WDTCON.0
#byte PORTB_2 = 0x106 // mirror
#byte PCLATH_2 = 0x10A // mirror
#byte INTCON_2 = 0x10B // mirror
#bit GIE_2 = INTCON_2.7
#bit PEIE_2 = INTCON_2.6
#bit TMR0IE_2 = INTCON_2.5
#bit INT0IE_2 = INTCON_2.4
#bit RBIE_2 = INTCON_2.3
#bit TMR0IF_2 = INTCON_2.2
#bit INT0IF_2 = INTCON_2.1
#bit RBIF_2 = INTCON_2.0
#byte EEDATA = 0x10C
#byte EEADR = 0x10D
#byte EEDATH = 0x10E
#byte EEADRH = 0x10F
 
 
// SFR Registers in Memory Bank 3
//
#byte INDF_3 = 0x180 // mirror
#byte OPTION_3 = 0x181 // mirror
#bit RBPU_3 = OPTION_3.7
#bit INTEDG_3 = OPTION_3.6
#bit T0CS_3 = OPTION_3.5
#bit T0SE_3 = OPTION_3.4
#bit PSA_3 = OPTION_3.3
#bit PS2_3 = OPTION_3.2
#bit PS1_3 = OPTION_3.1
#bit PS0_3 = OPTION_3.0
#byte PCL_3 = 0x182 // mirror
#byte STATUS_3 = 0x183 // mirror
#bit IRP_3 = STATUS_3.7
#bit RP1_3 = STATUS_3.6
#bit RP0_3 = STATUS_3.5
#bit TO_3 = STATUS_3.4
#bit PD_3 = STATUS_3.3
#bit Z_3 = STATUS_3.2
#bit DC_3 = STATUS_3.1
#bit C_3 = STATUS_3.0
#byte FSR_3 = 0x184 // mirror
#byte TRISB_3 = 0x186 // mirror
#byte PLATH_3 = 0x18A // mirror
#byte INTCON_3 = 0x18B // mirror
#bit GIE_3 = INTCON_3.7
#bit PEIE_3 = INTCON_3.6
#bit TMR0IE_3 = INTCON_3.5
#bit INT0IE_3 = INTCON_3.4
#bit RBIE_3 = INTCON_3.3
#bit TMR0IF_3 = INTCON_3.2
#bit INT0IF_3 = INTCON_3.1
#bit RBIF_3 = INTCON_3.0
#byte EECON1 = 0x18C
#bit EEPGD = EECON1.7
#bit FREE = EECON1.4
#bit WRERR = EECON1.3
#bit WREN = EECON1.2
#bit WR = EECON1.1
#bit RD = EECON1.0
#byte EECON2 = 0x18D
 
 
#list
/roboti/solarni/2005/jump/miho/LIB/vssver.scc
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/jump/miho/vssver.scc
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/jump/vssver.scc
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/jumpk/menic.BAK
0,0 → 1,7
#include <16F88.h>
 
#device adc=8
#fuses WDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, \
NODEBUG, NOPROTECT, NOFCMEN, NOIESO, CCPB3
#use delay(clock=4000000, RESTART_WDT)
 
/roboti/solarni/2005/jumpk/menic.HEX
0,0 → 1,44
:1000000000308A005F280000FF00030E8301A1007A
:100010007F08A0000A08A8008A01A00E0408A20018
:100020007708A3007808A4007908A5007A08A6003C
:100030007B08A700831383128C308400801D222844
:100040008C193528220884002308F7002408F800BA
:100050002508F9002608FA002708FB0028088A006E
:10006000210E8300FF0E7F0E09008A1143280A101B
:100070008A100A118207023406340E341E343E34CC
:100080007E34FE34FF34290893008C118A11222813
:100090002F308400000803195E280130F800BF30BB
:1000A000F7006400F70B5128F80B4F284A30F7008F
:1000B000F70B582800006400800B4D2800348401A1
:1000C0001F30830583161F129F121B0880399B0067
:1000D00007309C001C0883120D13603083168F00BC
:1000E0000108C03981000E30F7000730831281010A
:1000F000813084000008F03907388000640000086F
:10010000F739F719F0397704800083161F129F1210
:100110001B088039D2389B001F1383121F179F17AB
:1001200083169F1383121F149412831606118614CC
:1001300006120030831294008316940083129001FB
:10014000073083169C00050864000230F700F70BA7
:10015000A728000000001C0883120D1383169D01C0
:1001600086118312861183160611831206118316D7
:100170008610831286102030F8001F08C7397804D3
:100180009F00950183168611831286110C3097000B
:100190000030F80004389200643083169200623018
:1001A0008F0002308312950083168610831286100A
:1001B0006430AF00482083168610831286141430F2
:1001C000AF0048201F151F19E3281E08783C031CA8
:1001D000D42883168610831286100830F8001F0872
:1001E000C73978049F0064002030F700F70BF62829
:1001F000000000001F151F19FB281E08F700031040
:10020000F70C7708283EAC0095010030F800043860
:1002100092002C088316920014308312950032301D
:10022000AE00FA30AF004820AE0B112983169401BE
:100230002230831294000230A90029089300C030B4
:100240008B0483168C158312AA012A08073C031C11
:1002500032292A083720F800A9003730AF0048209B
:10026000AA0A2529831694018312940183168C11FE
:100270000611831206150A30AE008230AF00482006
:10028000AE0B3D2983160611831206114629630021
:04400E003C2FFC3F08
:00000001FF
;PIC16F88
/roboti/solarni/2005/jumpk/menic.LST
0,0 → 1,463
CCS PCM C Compiler, Version 3.221, 27853 18-IX-05 23:22
 
Filename: C:\PIC\jumpk\menic.LST
 
ROM used: 328 words (8%)
Largest free fragment is 2048
RAM used: 21 (12%) at main() level
21 (12%) worst case
Stack: 2 worst case (1 in main + 1 for interrupts)
 
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 05F
0003: NOP
0004: MOVWF 7F
0005: SWAPF 03,W
0006: CLRF 03
0007: MOVWF 21
0008: MOVF 7F,W
0009: MOVWF 20
000A: MOVF 0A,W
000B: MOVWF 28
000C: CLRF 0A
000D: SWAPF 20,F
000E: MOVF 04,W
000F: MOVWF 22
0010: MOVF 77,W
0011: MOVWF 23
0012: MOVF 78,W
0013: MOVWF 24
0014: MOVF 79,W
0015: MOVWF 25
0016: MOVF 7A,W
0017: MOVWF 26
0018: MOVF 7B,W
0019: MOVWF 27
001A: BCF 03.7
001B: BCF 03.5
001C: MOVLW 8C
001D: MOVWF 04
001E: BTFSS 00.3
001F: GOTO 022
0020: BTFSC 0C.3
0021: GOTO 035
0022: MOVF 22,W
0023: MOVWF 04
0024: MOVF 23,W
0025: MOVWF 77
0026: MOVF 24,W
0027: MOVWF 78
0028: MOVF 25,W
0029: MOVWF 79
002A: MOVF 26,W
002B: MOVWF 7A
002C: MOVF 27,W
002D: MOVWF 7B
002E: MOVF 28,W
002F: MOVWF 0A
0030: SWAPF 21,W
0031: MOVWF 03
0032: SWAPF 7F,F
0033: SWAPF 7F,W
0034: RETFIE
0035: BCF 0A.3
0036: GOTO 043
.................... //----------------------------
.................... // Sagitta - 9. 9. 2005
.................... //----------------------------
....................
.................... #include ".\menic.h"
.................... #include <16F88.h>
.................... //////// Standard Header file for the PIC16F88 device ////////////////
.................... #device PIC16F88
.................... #list
....................
....................
.................... #device adc=8
....................
.................... #fuses WDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, \
.................... NODEBUG, NOPROTECT, NOFCMEN, NOIESO, CCPB3
....................
.................... #use delay(clock=4000000, RESTART_WDT)
*
0048: MOVLW 2F
0049: MOVWF 04
004A: MOVF 00,W
004B: BTFSC 03.2
004C: GOTO 05E
004D: MOVLW 01
004E: MOVWF 78
004F: MOVLW BF
0050: MOVWF 77
0051: CLRWDT
0052: DECFSZ 77,F
0053: GOTO 051
0054: DECFSZ 78,F
0055: GOTO 04F
0056: MOVLW 4A
0057: MOVWF 77
0058: DECFSZ 77,F
0059: GOTO 058
005A: NOP
005B: CLRWDT
005C: DECFSZ 00,F
005D: GOTO 04D
005E: RETLW 00
....................
....................
....................
.................... #define RAZENI 55 // Po kolika ms se bude menit rychlost pri rozjizdeni
.................... #define REFSTART 120 // Hodnota komparatoru odpovidajici 1,7V pri
.................... // nezatizenych solarnich clancich
.................... #define DUTY1 2 // Delka sepnuti PWM v us pro sero
.................... #define DUTY2 20 // Delka sepnuti PWM v us pro jednu zarovku 500W
....................
.................... // Tabulka napeti vuci referencni LED (cca 1,7V)
.................... // hodnota prevodniku / napeti na clancich
.................... // 250 1,6V
.................... // 200 2,1V
.................... // 150 2,8V
.................... // 145 2,9V
.................... // 120 3,6V
.................... // 110 4,0V
....................
.................... #define MENIC PIN_B3 // Spinani tranzistoru menice
.................... #define REFPWR PIN_B1 // Napajeni zdroje referencniho napeti
.................... #define MOTOR PIN_B2 // Spinani tranzistoru motoru
....................
.................... #byte SSPBUF = 0x13 // Registry jednotky SSP
.................... #byte SSPCON1 = 0x14
.................... #byte SSPSTAT = 0x94
....................
.................... // Vzorky pro generovani PWM pomoci SSP
.................... unsigned int8 const Pattern[8] = {0x02,0x06,0x0e,0x1e,0x3e,0x7e,0xfe,0xff};
.................... unsigned int8 MotorPattern;
....................
.................... #INT_SSP
.................... void IntSSP() // Vyvola se po odeslani znaku pres SSP
.................... {
.................... SSPBUF=MotorPattern; // znovu vysli stejnou hodnotu
*
0043: MOVF 29,W
0044: MOVWF 13
.................... }
....................
0045: BCF 0C.3
0046: BCF 0A.3
0047: GOTO 022
.................... void main()
.................... {
*
005F: CLRF 04
0060: MOVLW 1F
0061: ANDWF 03,F
0062: BSF 03.5
0063: BCF 1F.4
0064: BCF 1F.5
0065: MOVF 1B,W
0066: ANDLW 80
0067: MOVWF 1B
0068: MOVLW 07
0069: MOVWF 1C
006A: MOVF 1C,W
006B: BCF 03.5
006C: BCF 0D.6
006D: MOVLW 60
006E: BSF 03.5
006F: MOVWF 0F
.................... int8 n;
.................... int8 cekej;
.................... int8 perioda;
.................... int8 rozjezd;
....................
.................... // Inicializace casovacu a prevodniku
.................... setup_timer_0(RTCC_INTERNAL);setup_wdt(WDT_1152MS);
0070: MOVF 01,W
0071: ANDLW C0
0072: MOVWF 01
0073: MOVLW 0E
0074: MOVWF 77
0075: MOVLW 07
0076: BCF 03.5
0077: CLRF 01
0078: MOVLW 81
0079: MOVWF 04
007A: MOVF 00,W
007B: ANDLW F0
007C: IORLW 07
007D: MOVWF 00
007E: CLRWDT
007F: MOVF 00,W
0080: ANDLW F7
0081: BTFSC 77.3
0082: ANDLW F0
0083: IORWF 77,W
0084: MOVWF 00
.................... setup_adc_ports(ADC_CLOCK_INTERNAL|sAN1|sAN4|VSS_VDD);
0085: BSF 03.5
0086: BCF 1F.4
0087: BCF 1F.5
0088: MOVF 1B,W
0089: ANDLW 80
008A: IORLW D2
008B: MOVWF 1B
.................... setup_adc(ADC_CLOCK_INTERNAL);
008C: BCF 1F.6
008D: BCF 03.5
008E: BSF 1F.6
008F: BSF 1F.7
0090: BSF 03.5
0091: BCF 1F.7
0092: BCF 03.5
0093: BSF 1F.0
.................... setup_spi(FALSE);
0094: BCF 14.5
0095: BSF 03.5
0096: BCF 06.2
0097: BSF 06.1
0098: BCF 06.4
0099: MOVLW 00
009A: BCF 03.5
009B: MOVWF 14
009C: BSF 03.5
009D: MOVWF 14
.................... setup_timer_1(T1_DISABLED);
009E: BCF 03.5
009F: CLRF 10
.................... setup_comparator(NC_NC_NC_NC);
00A0: MOVLW 07
00A1: BSF 03.5
00A2: MOVWF 1C
00A3: MOVF 05,W
00A4: CLRWDT
00A5: MOVLW 02
00A6: MOVWF 77
00A7: DECFSZ 77,F
00A8: GOTO 0A7
00A9: NOP
00AA: NOP
00AB: MOVF 1C,W
00AC: BCF 03.5
00AD: BCF 0D.6
.................... setup_vref(FALSE);
00AE: BSF 03.5
00AF: CLRF 1D
....................
.................... output_low(MENIC); // Vsechno zastav
00B0: BCF 06.3
00B1: BCF 03.5
00B2: BCF 06.3
.................... output_low(MOTOR);
00B3: BSF 03.5
00B4: BCF 06.2
00B5: BCF 03.5
00B6: BCF 06.2
.................... output_low(REFPWR);
00B7: BSF 03.5
00B8: BCF 06.1
00B9: BCF 03.5
00BA: BCF 06.1
....................
.................... set_adc_channel(4); // Vyber AD kanal pro pomerne mereni napeti
00BB: MOVLW 20
00BC: MOVWF 78
00BD: MOVF 1F,W
00BE: ANDLW C7
00BF: IORWF 78,W
00C0: MOVWF 1F
.................... set_pwm1_duty(0); // Spust PWM, ale zatim s trvalou 0 na vystupu
00C1: CLRF 15
.................... setup_ccp1(CCP_PWM); // PWM pro zatizeni clanku v seru
00C2: BSF 03.5
00C3: BCF 06.3
00C4: BCF 03.5
00C5: BCF 06.3
00C6: MOVLW 0C
00C7: MOVWF 17
.................... setup_timer_2(T2_DIV_BY_1,100,1); // perioda PWM
00C8: MOVLW 00
00C9: MOVWF 78
00CA: IORLW 04
00CB: MOVWF 12
00CC: MOVLW 64
00CD: BSF 03.5
00CE: MOVWF 12
....................
.................... setup_oscillator(OSC_4MHZ|OSC_INTRC); // rozjed PIC (zvysi se odber)
00CF: MOVLW 62
00D0: MOVWF 0F
....................
.................... // jsme v depu?
.................... set_pwm1_duty(DUTY1); // delka sepnuti
00D1: MOVLW 02
00D2: BCF 03.5
00D3: MOVWF 15
.................... do
.................... {
.................... output_low(REFPWR);
00D4: BSF 03.5
00D5: BCF 06.1
00D6: BCF 03.5
00D7: BCF 06.1
.................... delay_ms(100);
00D8: MOVLW 64
00D9: MOVWF 2F
00DA: CALL 048
.................... output_high(REFPWR); // zapni napajeni napetove reference (LED)
00DB: BSF 03.5
00DC: BCF 06.1
00DD: BCF 03.5
00DE: BSF 06.1
.................... delay_ms(20);
00DF: MOVLW 14
00E0: MOVWF 2F
00E1: CALL 048
.................... } while (read_adc()>REFSTART); // Odkryl starter clanky?
00E2: BSF 1F.2
00E3: BTFSC 1F.2
00E4: GOTO 0E3
00E5: MOVF 1E,W
00E6: SUBLW 78
00E7: BTFSS 03.0
00E8: GOTO 0D4
.................... output_low(REFPWR);
00E9: BSF 03.5
00EA: BCF 06.1
00EB: BCF 03.5
00EC: BCF 06.1
....................
.................... // Precti trimr
.................... set_adc_channel(1); // Zjisteni nastaveni trimru PWM
00ED: MOVLW 08
00EE: MOVWF 78
00EF: MOVF 1F,W
00F0: ANDLW C7
00F1: IORWF 78,W
00F2: MOVWF 1F
.................... delay_us(100); // Pockej na prepnuti kanalu A/D prevodniku
00F3: CLRWDT
00F4: MOVLW 20
00F5: MOVWF 77
00F6: DECFSZ 77,F
00F7: GOTO 0F6
00F8: NOP
00F9: NOP
.................... perioda=(read_adc()>>1)+40; // rozsah: 40 az 167
00FA: BSF 1F.2
00FB: BTFSC 1F.2
00FC: GOTO 0FB
00FD: MOVF 1E,W
00FE: MOVWF 77
00FF: BCF 03.0
0100: RRF 77,F
0101: MOVF 77,W
0102: ADDLW 28
0103: MOVWF 2C
.................... set_pwm1_duty(0); // Zastav PWM, aby slo zmenit periodu
0104: CLRF 15
.................... setup_timer_2(T2_DIV_BY_1,perioda,1); // Zapis nastavenou periodu
0105: MOVLW 00
0106: MOVWF 78
0107: IORLW 04
0108: MOVWF 12
0109: MOVF 2C,W
010A: BSF 03.5
010B: MOVWF 12
....................
.................... // nabíjíme
.................... set_pwm1_duty(DUTY2); // delka sepnuti PWM
010C: MOVLW 14
010D: BCF 03.5
010E: MOVWF 15
.................... delay_ms(12500);
010F: MOVLW 32
0110: MOVWF 2E
0111: MOVLW FA
0112: MOVWF 2F
0113: CALL 048
0114: DECFSZ 2E,F
0115: GOTO 111
....................
.................... // rozjezd
.................... SSPSTAT = 0; // inicializace SPI jednotky
0116: BSF 03.5
0117: CLRF 14
.................... SSPCON1 = 0x22; // SPI OSC/64
0118: MOVLW 22
0119: BCF 03.5
011A: MOVWF 14
.................... MotorPattern=Pattern[0];
011B: MOVLW 02
011C: MOVWF 29
.................... SSPBUF=MotorPattern; // 1. data pro vyslani
011D: MOVF 29,W
011E: MOVWF 13
.................... enable_interrupts(global);
011F: MOVLW C0
0120: IORWF 0B,F
.................... enable_interrupts(INT_SSP); // az budou vyslana, prijde preruseni
0121: BSF 03.5
0122: BSF 0C.3
....................
.................... for(n=0; n<=7; n++) // razeni osmi rychlostnich stupnu
0123: BCF 03.5
0124: CLRF 2A
0125: MOVF 2A,W
0126: SUBLW 07
0127: BTFSS 03.0
0128: GOTO 132
.................... {
.................... MotorPattern=Pattern[n];
0129: MOVF 2A,W
012A: CALL 037
012B: MOVWF 78
012C: MOVWF 29
.................... delay_ms(RAZENI); // Pockej na dalsi razeni
012D: MOVLW 37
012E: MOVWF 2F
012F: CALL 048
.................... };
0130: INCF 2A,F
0131: GOTO 125
.................... SSPSTAT = 0;
0132: BSF 03.5
0133: CLRF 14
.................... SSPCON1 = 0; // SPI stop
0134: BCF 03.5
0135: CLRF 14
.................... disable_interrupts(INT_SSP); // zastav preruseni od SSP
0136: BSF 03.5
0137: BCF 0C.3
....................
.................... // jedem co to da
.................... output_high(MOTOR);
0138: BCF 06.2
0139: BCF 03.5
013A: BSF 06.2
.................... delay_ms(1300); // dyl jak 1,3s bysme nemeli jet :)
013B: MOVLW 0A
013C: MOVWF 2E
013D: MOVLW 82
013E: MOVWF 2F
013F: CALL 048
0140: DECFSZ 2E,F
0141: GOTO 13D
.................... output_low(MOTOR); // zastav motor
0142: BSF 03.5
0143: BCF 06.2
0144: BCF 03.5
0145: BCF 06.2
.................... // Menic je stale zapnut a zatezuje clanky
....................
.................... while(TRUE); // Cekej, dokud se neztrati svetlo,
0146: GOTO 146
.................... // nebo prijde WatchDog
.................... }
....................
0147: SLEEP
 
Configuration Fuses:
Word 1: 2F3C WDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB3 NOPROTECT INTRC_IO
Word 2: 3FFC NOFCMEN NOIESO
/roboti/solarni/2005/jumpk/menic.PJT
0,0 → 1,53
[PROJECT]
Target=menic.HEX
Development_Mode=
Processor=0x688F
ToolSuite=CCS
 
[Directories]
Include=C:\Program Files\PICC\devices\
Library=
LinkerScript=
 
[Target Data]
FileList=menic.c;
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
 
[menic.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
 
[mru-list]
1=menic.c
 
[Windows]
0=0000 menic.c 0 0 796 451 3 0
 
[Opened Files]
1=D:\KAKLIK\programy\PIC_C\roboti\solarni\2005\jumpk\menic.c
2=C:\Program Files\PICC\devices\16F88.h
3=
4=
5=
[debugperif]
selected=Analog/Digital Conv
[debugram]
autoread=1
[debugeedata]
autoread=1
[debugbreak]
count=0
[pcwdebug]
watchcol0=75
[debugwatch]
count=0
[debugexpr]
expr=
sideeffects=0
/roboti/solarni/2005/jumpk/menic.SYM
0,0 → 1,58
013 SSPBUF
014 SSPCON1
015-016 CCP_1
015 CCP_1_LOW
016 CCP_1_HIGH
020 @INTERRUPT_AREA
021 @INTERRUPT_AREA
022 @INTERRUPT_AREA
023 @INTERRUPT_AREA
024 @INTERRUPT_AREA
025 @INTERRUPT_AREA
026 @INTERRUPT_AREA
027 @INTERRUPT_AREA
028 @INTERRUPT_AREA
029 MotorPattern
02A main.n
02B main.cekej
02C main.perioda
02D main.rozjezd
02E main.@SCRATCH
02F @delay_ms1.P1
02F main.@SCRATCH
077 @SCRATCH
078 @SCRATCH
078 _RETURN_
079 @SCRATCH
07A @SCRATCH
07B @SCRATCH
094 SSPSTAT
09C.6 C1OUT
09C.7 C2OUT
 
0048 @delay_ms1
0037 @const30
0043 IntSSP
005F main
005F @cinit
 
Project Files:
C:\PIC\jumpk\menic.c
C:\PIC\jumpk\menic.h
C:\Program Files\PICC\devices\16F88.h
 
Compiler Settings:
Processor: PIC16F88
Pointer Size: 8
ADC Range: 0-255
Opt Level: 9
Short,Int,Long: 1,8,16
 
Output Files:
Errors: C:\PIC\jumpk\menic.err
INHX8: C:\PIC\jumpk\menic.HEX
Symbols: C:\PIC\jumpk\menic.SYM
List: C:\PIC\jumpk\menic.LST
Debug/COFF: C:\PIC\jumpk\menic.cof
Call Tree: C:\PIC\jumpk\menic.tre
Statistics: C:\PIC\jumpk\menic.sta
/roboti/solarni/2005/jumpk/menic.c
0,0 → 1,114
//----------------------------
// Sagitta - 9. 9. 2005
//----------------------------
 
#include ".\menic.h"
 
#define RAZENI 55 // Po kolika ms se bude menit rychlost pri rozjizdeni
#define REFSTART 120 // Hodnota komparatoru odpovidajici 1,7V pri
// nezatizenych solarnich clancich
#define DUTY1 2 // Delka sepnuti PWM v us pro sero
#define DUTY2 20 // Delka sepnuti PWM v us pro jednu zarovku 500W
 
// Tabulka napeti vuci referencni LED (cca 1,7V)
// hodnota prevodniku / napeti na clancich
// 250 1,6V
// 200 2,1V
// 150 2,8V
// 145 2,9V
// 120 3,6V
// 110 4,0V
 
#define MENIC PIN_B3 // Spinani tranzistoru menice
#define REFPWR PIN_B1 // Napajeni zdroje referencniho napeti
#define MOTOR PIN_B2 // Spinani tranzistoru motoru
 
#byte SSPBUF = 0x13 // Registry jednotky SSP
#byte SSPCON1 = 0x14
#byte SSPSTAT = 0x94
 
// Vzorky pro generovani PWM pomoci SSP
unsigned int8 const Pattern[8] = {0x02,0x06,0x0e,0x1e,0x3e,0x7e,0xfe,0xff};
unsigned int8 MotorPattern;
 
#INT_SSP
void IntSSP() // Vyvola se po odeslani znaku pres SSP
{
SSPBUF=MotorPattern; // znovu vysli stejnou hodnotu
}
 
void main()
{
int8 n;
int8 cekej;
int8 perioda;
int8 rozjezd;
 
// Inicializace casovacu a prevodniku
setup_timer_0(RTCC_INTERNAL);setup_wdt(WDT_1152MS);
setup_adc_ports(ADC_CLOCK_INTERNAL|sAN1|sAN4|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(FALSE);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
output_low(MENIC); // Vsechno zastav
output_low(MOTOR);
output_low(REFPWR);
 
set_adc_channel(4); // Vyber AD kanal pro pomerne mereni napeti
set_pwm1_duty(0); // Spust PWM, ale zatim s trvalou 0 na vystupu
setup_ccp1(CCP_PWM); // PWM pro zatizeni clanku v seru
setup_timer_2(T2_DIV_BY_1,100,1); // perioda PWM
 
setup_oscillator(OSC_4MHZ|OSC_INTRC); // rozjed PIC (zvysi se odber)
 
// jsme v depu?
set_pwm1_duty(DUTY1); // delka sepnuti
do
{
output_low(REFPWR);
delay_ms(100);
output_high(REFPWR); // zapni napajeni napetove reference (LED)
delay_ms(20);
} while (read_adc()>REFSTART); // Odkryl starter clanky?
output_low(REFPWR);
 
// Precti trimr
set_adc_channel(1); // Zjisteni nastaveni trimru PWM
delay_us(100); // Pockej na prepnuti kanalu A/D prevodniku
perioda=(read_adc()>>1)+40; // rozsah: 40 az 167
set_pwm1_duty(0); // Zastav PWM, aby slo zmenit periodu
setup_timer_2(T2_DIV_BY_1,perioda,1); // Zapis nastavenou periodu
 
// nabíjíme
set_pwm1_duty(DUTY2); // delka sepnuti PWM
delay_ms(12500);
 
// rozjezd
SSPSTAT = 0; // inicializace SPI jednotky
SSPCON1 = 0x22; // SPI OSC/64
MotorPattern=Pattern[0];
SSPBUF=MotorPattern; // 1. data pro vyslani
enable_interrupts(global);
enable_interrupts(INT_SSP); // az budou vyslana, prijde preruseni
 
for(n=0; n<=7; n++) // razeni osmi rychlostnich stupnu
{
MotorPattern=Pattern[n];
delay_ms(RAZENI); // Pockej na dalsi razeni
};
SSPSTAT = 0;
SSPCON1 = 0; // SPI stop
disable_interrupts(INT_SSP); // zastav preruseni od SSP
 
// jedem co to da
output_high(MOTOR);
delay_ms(1300); // dyl jak 1,3s bysme nemeli jet :)
output_low(MOTOR); // zastav motor
// Menic je stale zapnut a zatezuje clanky
 
while(TRUE); // Cekej, dokud se neztrati svetlo,
// nebo prijde WatchDog
}
/roboti/solarni/2005/jumpk/menic.cof
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/roboti/solarni/2005/jumpk/menic.err
0,0 → 1,0
No Errors
/roboti/solarni/2005/jumpk/menic.h
0,0 → 1,9
#include <16F88.h>
 
#device adc=8
 
#fuses WDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, \
NODEBUG, NOPROTECT, NOFCMEN, NOIESO, CCPB3
 
#use delay(clock=4000000, RESTART_WDT)
 
/roboti/solarni/2005/jumpk/menic.sta
0,0 → 1,32
 
ROM used: 328 (8%)
328 (8%) including unused fragments
 
1 Average locations per line
6 Average locations per statement
 
RAM used: 21 (12%) at main() level
21 (12%) worst case
 
Lines Stmts % Files
----- ----- --- -----
115 51 100 C:\PIC\jumpk\menic.c
10 0 0 C:\PIC\jumpk\menic.h
275 0 0 C:\Program Files\PICC\devices\16F88.h
----- -----
800 102 Total
 
Page ROM % RAM Functions:
---- --- --- --- ----------
0 23 7 1 @delay_ms1
0 12 4 0 @const30
0 5 2 0 IntSSP
0 233 71 6 main
 
Segment Used Free
--------- ---- ----
00000-00003 4 0
00004-00036 51 0
00037-007FF 273 1720
00800-00FFF 0 2048
 
/roboti/solarni/2005/jumpk/menic.tre
0,0 → 1,10
ÀÄmenic
ÃÄmain 0/233 Ram=6
³ ÃÄ??0??
³ ÃÄ@delay_ms1 0/23 Ram=1
³ ÃÄ@delay_ms1 0/23 Ram=1
³ ÃÄ@delay_ms1 0/23 Ram=1
³ ÃÄ@const30 0/12 Ram=0
³ ÃÄ@delay_ms1 0/23 Ram=1
³ ÀÄ@delay_ms1 0/23 Ram=1
ÀÄIntSSP 0/5 Ram=0
/roboti/solarni/2005/schema.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property