Dirk (Diskussion | Beiträge) K |
Dirk (Diskussion | Beiträge) K (→Autoren) |
||
(122 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | [[Bild:WTR_Controller.PNG|AREXX Wild Thumper mit Controller|right|500px]] | ||
==Allgemein== | ==Allgemein== | ||
+ | In diesem Artikel geht es um die Programmierung des [http://www.conrad.de/ce/de/product/191428/Arexx-Allrad-Gelaende-Roboterplattform-JSR-6WD AREXX Wild Thumper Roboters (JSR-6WD)] mit [http://www.conrad.de/ce/de/product/191607/Arexx-Ansteuerungsmodul-WTR-CK1 AREXX Wild Thumper Controller (WTR-CK1)]. | ||
+ | |||
+ | Zu den Grundlagen des [[Wild_Thumper|Wild Thumper Roboters]] ('''"WTR"''') gibt es eine eigene Seite. | ||
+ | |||
+ | <br/> | ||
==RobotLoader== | ==RobotLoader== | ||
Zeile 22: | Zeile 28: | ||
===Projekte=== | ===Projekte=== | ||
Siehe [[RP6_-_Programmierung#Projekte|hier]]! | Siehe [[RP6_-_Programmierung#Projekte|hier]]! | ||
+ | |||
+ | <br/> | ||
==Dokumentation== | ==Dokumentation== | ||
Zeile 53: | Zeile 61: | ||
===AVR-GCC=== | ===AVR-GCC=== | ||
+ | '''Einrichtung''' | ||
+ | |||
+ | Siehe [[Wild_Thumper#Einrichten_der_Demo_Programme|hier]]! | ||
+ | |||
+ | ====Motor==== | ||
+ | ====Main==== | ||
===Windows Application=== | ===Windows Application=== | ||
+ | |||
+ | [[Bild:WTR_Application.PNG|WTR Windows Application|thumb]] | ||
+ | |||
+ | '''Installation''' | ||
+ | |||
+ | Siehe [[Wild_Thumper#Installation_der_Windows_Application|hier]]! | ||
+ | |||
+ | <br/><br/><br/><br/><br/><br/><br/> | ||
==Library== | ==Library== | ||
Zeile 147: | Zeile 169: | ||
'''Zu *:''' Auf der Wild Thumper Controller CD-ROM! | '''Zu *:''' Auf der Wild Thumper Controller CD-ROM! | ||
− | === | + | ===Motor=== |
− | Die Wild Thumper | + | Die Wild Thumper Motor Library besteht aus der Motor und der Motor UART Library. |
− | ==== | + | ====WildThumperLib_Motor==== |
=====Bug-Report===== | =====Bug-Report===== | ||
=====Konfiguration===== | =====Konfiguration===== | ||
=====Port-Verwendung===== | =====Port-Verwendung===== | ||
− | Die Verwendung der Ports des WTR-CK1 | + | Die Verwendung der Ports des WTR-CK1 Motor Microcontrollers wird festgelegt in der Header-Datei "WT_Config_Motor.h". In dieser Datei wird auch noch Folgendes aufgeführt: |
* Quarzfrequenz (F_CPU) | * Quarzfrequenz (F_CPU) | ||
* True/false Definition | * True/false Definition | ||
− | * Definitionen für das APC-220 Funkmodul | + | * Definitionen für das APC-220 Funkmodul (?) |
− | Hier eine Tabelle mit den '''Port-Definitionen für den | + | Hier eine Tabelle mit den '''Port-Definitionen für den Motor Microcontroller des WTR-CK1''': |
Erklärung der Spalten: | Erklärung der Spalten: | ||
Port -> Atmel Portpin Bezeichnung | Port -> Atmel Portpin Bezeichnung | ||
Zeile 188: | Zeile 210: | ||
| | | | ||
| | | | ||
− | | | + | |I_MOTOR6 |
− | | | + | | |
− | | | + | |ADC_MOTOR6 |
|- | |- | ||
|PA1 | |PA1 | ||
Zeile 198: | Zeile 220: | ||
| | | | ||
| | | | ||
− | | | + | |I_MOTOR5 |
− | | | + | | |
− | | | + | |ADC_MOTOR5 |
|- | |- | ||
|PA2 | |PA2 | ||
Zeile 208: | Zeile 230: | ||
| | | | ||
| | | | ||
− | | | + | |I_MOTOR4 |
− | | | + | | |
− | | | + | |ADC_MOTOR4 |
|- | |- | ||
|PA3 | |PA3 | ||
Zeile 218: | Zeile 240: | ||
| | | | ||
| | | | ||
− | | | + | |I_MOTOR3 |
− | | | + | | |
− | | | + | |ADC_MOTOR3 |
|- | |- | ||
|PA4 | |PA4 | ||
Zeile 228: | Zeile 250: | ||
| | | | ||
| | | | ||
− | | | + | |I_MOTOR2 |
− | | | + | | |
− | | | + | |ADC_MOTOR2 |
|- | |- | ||
|PA5 | |PA5 | ||
Zeile 238: | Zeile 260: | ||
| | | | ||
| | | | ||
− | | | + | |I_MOTOR1 |
− | | | + | | |
− | | | + | |ADC_MOTOR1 |
|- | |- | ||
|PA6 | |PA6 | ||
|ADC6/PCINT6 | |ADC6/PCINT6 | ||
|In | |In | ||
− | | | + | |1 |
| | | | ||
| | | | ||
− | | | + | |EF_MOTOR2 |
− | | | + | | |
− | | | + | |Fehler Motor 2 |
|- | |- | ||
|PA7 | |PA7 | ||
|ADC7/PCINT7 | |ADC7/PCINT7 | ||
|In | |In | ||
− | | | + | |1 |
| | | | ||
| | | | ||
− | | | + | |EF_MOTOR1 |
− | | | + | | |
− | | | + | |Fehler Motor 1 |
|- | |- | ||
|PB0 | |PB0 | ||
|T0/XCK/PCINT8 | |T0/XCK/PCINT8 | ||
− | | | + | |In |
− | + | ||
|1 | |1 | ||
| | | | ||
− | | | + | | |
− | | | + | |EF_MOTOR5 |
− | | | + | | |
+ | |Fehler Motor 5 | ||
|- | |- | ||
|PB1 | |PB1 | ||
|T1/CLKO/PCINT9 | |T1/CLKO/PCINT9 | ||
− | | | + | |In |
− | + | ||
|1 | |1 | ||
| | | | ||
− | | | + | | |
− | | | + | |EF_MOTOR4 |
− | | | + | | |
+ | |Fehler Motor 4 | ||
|- | |- | ||
|PB2 | |PB2 | ||
|AIN0/INT2/PCINT10 | |AIN0/INT2/PCINT10 | ||
|In | |In | ||
− | | | + | |1 |
| | | | ||
| | | | ||
− | | | + | |EF_MOTOR3 |
− | | | + | | |
− | | | + | |Fehler Motor 3 |
|- | |- | ||
|PB3 | |PB3 | ||
Zeile 296: | Zeile 318: | ||
|Out | |Out | ||
| | | | ||
− | | | + | |0 |
| | | | ||
− | | | + | |MOTOR2_PWM |
− | | | + | | |
− | | | + | |PWM Motor 2 |
|- | |- | ||
|PB4 | |PB4 | ||
Zeile 306: | Zeile 328: | ||
|Out | |Out | ||
| | | | ||
− | | | + | |0 |
| | | | ||
− | | | + | |MOTOR1_PWM |
− | | | + | | |
− | | | + | |PWM Motor 1 |
|- | |- | ||
|PB5 | |PB5 | ||
Zeile 318: | Zeile 340: | ||
|0 | |0 | ||
|ISP | |ISP | ||
− | | | + | |SR_DATA |
− | | | + | |HDR1: 4 |
|ISP MOSI | |ISP MOSI | ||
|- | |- | ||
|PB6 | |PB6 | ||
|MISO/OC3A/PCINT14 | |MISO/OC3A/PCINT14 | ||
− | | | + | |Out |
− | + | ||
| | | | ||
+ | |0 | ||
|ISP | |ISP | ||
− | | | + | |SR_STR |
− | | | + | |HDR1: 1 |
|ISP MISO | |ISP MISO | ||
|- | |- | ||
Zeile 338: | Zeile 360: | ||
|0 | |0 | ||
|ISP | |ISP | ||
− | | | + | |SR_SCK |
− | | | + | |HDR1: 3 |
|ISP SCK | |ISP SCK | ||
|- | |- | ||
Zeile 348: | Zeile 370: | ||
| | | | ||
|I2C-Bus | |I2C-Bus | ||
− | | | + | |I2C_SCL |
− | | | + | |HDR2: 7, 8 |
|I2C SCL | |I2C SCL | ||
|- | |- | ||
Zeile 358: | Zeile 380: | ||
| | | | ||
|I2C-Bus | |I2C-Bus | ||
− | | | + | |I2C_SDA |
− | | | + | |HDR2: 5, 6 |
|I2C SDA | |I2C SDA | ||
|- | |- | ||
|PC2 | |PC2 | ||
|TCK/PCINT18 | |TCK/PCINT18 | ||
− | | | + | |Out |
− | + | ||
| | | | ||
+ | |0 | ||
|JTAG | |JTAG | ||
− | | | + | |I2C_INT |
− | | | + | |HDR2: 9, 10 |
− | | ** | + | |I2C Interrupt ** |
|- | |- | ||
|PC3 | |PC3 | ||
|TMS/PCINT19 | |TMS/PCINT19 | ||
|In | |In | ||
− | | | + | |0 |
| | | | ||
|JTAG | |JTAG | ||
− | | | + | |SIG_MOTOR4 |
− | | | + | |J11: 2 |
− | | ** | + | |Encoder Motor 4 ** |
|- | |- | ||
|PC4 | |PC4 | ||
|TDO/PCINT20 | |TDO/PCINT20 | ||
|In | |In | ||
− | | | + | |0 |
| | | | ||
|JTAG | |JTAG | ||
− | | | + | |SIG_MOTOR3 |
− | | | + | |J8: 2 |
− | | ** | + | |Encoder Motor 3 ** |
|- | |- | ||
|PC5 | |PC5 | ||
|TDI/PCINT21 | |TDI/PCINT21 | ||
|In | |In | ||
− | | | + | |0 |
| | | | ||
|JTAG | |JTAG | ||
− | | | + | |SIG_MOTOR2 |
− | | | + | |J7: 2 |
− | | ** | + | |Encoder Motor 2 ** |
|- | |- | ||
|PC6 | |PC6 | ||
|TOSC1/PCINT22 | |TOSC1/PCINT22 | ||
− | | | + | |In |
+ | |0 | ||
| | | | ||
− | |||
| | | | ||
− | | | + | |SIG_MOTOR1 |
− | | | + | |J4: 2 |
− | | | + | |Encoder Motor 1 |
|- | |- | ||
|PC7 | |PC7 | ||
|TOSC2/PCINT23 | |TOSC2/PCINT23 | ||
− | | | + | |In |
− | + | ||
|1 | |1 | ||
| | | | ||
− | | | + | | |
− | | | + | |EF_MOTOR6 |
− | | | + | | |
+ | |Fehler Motor 6 | ||
|- | |- | ||
|PD0 | |PD0 | ||
Zeile 428: | Zeile 450: | ||
| | | | ||
|UART0 | |UART0 | ||
− | | | + | |RX_MOTOR |
− | | | + | |HDR3: 2 |
|UART0 RX | |UART0 RX | ||
|- | |- | ||
Zeile 438: | Zeile 460: | ||
|0 | |0 | ||
|UART0 | |UART0 | ||
− | | | + | |TX_MOTOR |
− | | | + | |HDR3: 3 |
|UART0 TX | |UART0 TX | ||
|- | |- | ||
Zeile 448: | Zeile 470: | ||
| | | | ||
|UART1 | |UART1 | ||
− | | | + | |SIG_MOTOR6 |
− | | | + | |J15: 2 |
− | | | + | |Encoder Motor 6 |
|- | |- | ||
|PD3 | |PD3 | ||
|TXD1/INT1/PCINT27 | |TXD1/INT1/PCINT27 | ||
− | | | + | |In |
− | + | ||
|0 | |0 | ||
+ | | | ||
|UART1 | |UART1 | ||
− | | | + | |SIG_MOTOR5 |
− | | | + | |J12: 2 |
− | | | + | |Encoder Motor 5 |
|- | |- | ||
|PD4 | |PD4 | ||
Zeile 466: | Zeile 488: | ||
|Out | |Out | ||
| | | | ||
− | | | + | |0 |
| | | | ||
− | | | + | |MOTOR6_PWM |
− | | | + | | |
− | | | + | |PWM Motor 6 |
|- | |- | ||
|PD5 | |PD5 | ||
Zeile 476: | Zeile 498: | ||
|Out | |Out | ||
| | | | ||
− | | | + | |0 |
| | | | ||
− | | | + | |MOTOR5_PWM |
− | | | + | | |
− | | | + | |PWM Motor 5 |
|- | |- | ||
|PD6 | |PD6 | ||
Zeile 486: | Zeile 508: | ||
|Out | |Out | ||
| | | | ||
− | | | + | |0 |
| | | | ||
− | | | + | |MOTOR4_PWM |
− | | | + | | |
− | | | + | |PWM Motor 4 |
|- | |- | ||
|PD7 | |PD7 | ||
|OC2A/PCINT31 | |OC2A/PCINT31 | ||
− | | | + | |Out |
+ | | | ||
|0 | |0 | ||
| | | | ||
+ | |MOTOR3_PWM | ||
| | | | ||
− | | | + | |PWM Motor 3 |
− | + | ||
− | + | ||
|- | |- | ||
|} | |} | ||
Zeichen: | Zeichen: | ||
− | + | ** JTAG muss deaktiviert werden! | |
− | ** | + | |
Abkürzungen der IO-Stecker (Spalte Stecker): | Abkürzungen der IO-Stecker (Spalte Stecker): | ||
− | + | HDR1 ISP-2X3HDR | |
− | + | HDR2 I2C-2X5HDR | |
− | + | HDR3 UART-2X5HDR | |
− | + | ||
− | + | ||
=====Timer-Nutzung===== | =====Timer-Nutzung===== | ||
+ | ======Timer 0====== | ||
+ | ======Timer 1====== | ||
+ | ======Timer 2====== | ||
====WT_UART==== | ====WT_UART==== | ||
− | === | + | ===Main=== |
− | Die Wild Thumper | + | Die Wild Thumper Main Library besteht aus der Main und der Main UART Library. |
− | ==== | + | ====WildThumperLib_Main==== |
=====Bug-Report===== | =====Bug-Report===== | ||
=====Konfiguration===== | =====Konfiguration===== | ||
=====Port-Verwendung===== | =====Port-Verwendung===== | ||
− | Die Verwendung der Ports des WTR-CK1 | + | Die Verwendung der Ports des WTR-CK1 Main Microcontrollers wird festgelegt in der Header-Datei "WT_Config_Main.h". In dieser Datei wird auch noch Folgendes aufgeführt: |
* Quarzfrequenz (F_CPU) | * Quarzfrequenz (F_CPU) | ||
* True/false Definition | * True/false Definition | ||
− | * Definitionen für das APC-220 Funkmodul | + | * Definitionen für das APC-220 Funkmodul |
− | Hier eine Tabelle mit den '''Port-Definitionen für den | + | Hier eine Tabelle mit den '''Port-Definitionen für den Main Microcontroller des WTR-CK1''': |
Erklärung der Spalten: | Erklärung der Spalten: | ||
Port -> Atmel Portpin Bezeichnung | Port -> Atmel Portpin Bezeichnung | ||
Zeile 560: | Zeile 582: | ||
| | | | ||
| | | | ||
− | | | + | |BAT_VOLTAGE |
− | | | + | |HDR4: 8 |
− | | | + | |ADC_BAT_VOLTAGE |
|- | |- | ||
|PA1 | |PA1 | ||
Zeile 570: | Zeile 592: | ||
| | | | ||
| | | | ||
− | | | + | |LDR1 |
− | | | + | |HDR4: 7; HDR5: 8 |
− | | | + | |ADC_LDR1 (links) |
|- | |- | ||
|PA2 | |PA2 | ||
Zeile 580: | Zeile 602: | ||
| | | | ||
| | | | ||
− | | | + | |LDR2 |
− | | | + | |HDR4: 6; HDR5: 10 |
− | | | + | |ADC_LDR2 (rechts) |
|- | |- | ||
|PA3 | |PA3 | ||
Zeile 590: | Zeile 612: | ||
| | | | ||
| | | | ||
− | | | + | |TEMPERATURE |
− | | | + | |HDR4: 5 |
− | | | + | |ADC_TEMPERATURE |
|- | |- | ||
|PA4 | |PA4 | ||
Zeile 600: | Zeile 622: | ||
| | | | ||
| | | | ||
− | | | + | |Z_ACC |
− | | | + | |HDR4: 4 |
− | | | + | |ADC_Z_ACC * |
|- | |- | ||
|PA5 | |PA5 | ||
Zeile 610: | Zeile 632: | ||
| | | | ||
| | | | ||
− | | | + | |Y_ACC |
− | | | + | |HDR4: 3 |
− | | | + | |ADC_Y_ACC * |
|- | |- | ||
|PA6 | |PA6 | ||
|ADC6/PCINT6 | |ADC6/PCINT6 | ||
|In | |In | ||
− | | | + | |0 |
| | | | ||
| | | | ||
− | | | + | |X_ACC |
− | | | + | |HDR4: 2 |
− | | | + | |ADC_X_ACC * |
|- | |- | ||
|PA7 | |PA7 | ||
|ADC7/PCINT7 | |ADC7/PCINT7 | ||
|In | |In | ||
− | | | + | |0 |
| | | | ||
| | | | ||
− | | | + | |BUTTON |
− | | | + | |HDR4: 1 |
− | | | + | |ADC_BUTTON (Taster S2) |
|- | |- | ||
|PB0 | |PB0 | ||
|T0/XCK/PCINT8 | |T0/XCK/PCINT8 | ||
− | | | + | |Out ² |
+ | | | ||
|1 | |1 | ||
| | | | ||
− | | | + | |BUMPER1 |
− | | | + | |HDR6: 8; HDR5: 12 |
− | | | + | |Bumper rechts |
− | + | ||
|- | |- | ||
|PB1 | |PB1 | ||
|T1/CLKO/PCINT9 | |T1/CLKO/PCINT9 | ||
− | | | + | |Out ² |
+ | | | ||
|1 | |1 | ||
| | | | ||
− | | | + | |BUMPER2 |
− | | | + | |HDR6: 7; HDR5: 11 |
− | | | + | |Bumper links |
− | + | ||
|- | |- | ||
|PB2 | |PB2 | ||
|AIN0/INT2/PCINT10 | |AIN0/INT2/PCINT10 | ||
|In | |In | ||
− | | | + | |0 |
| | | | ||
| | | | ||
− | | | + | |IR_RECEIVER |
− | | | + | |HDR6: 6 |
− | | | + | |IR Empfänger (TSOP) |
|- | |- | ||
|PB3 | |PB3 | ||
Zeile 668: | Zeile 690: | ||
|Out | |Out | ||
| | | | ||
− | | | + | |1 |
− | + | ||
− | + | ||
| | | | ||
− | | | + | |IR_H |
+ | |HDR6: 5; HDR5: 6 | ||
+ | |ACS Sendedioden HiPwr | ||
|- | |- | ||
|PB4 | |PB4 | ||
Zeile 678: | Zeile 700: | ||
|Out | |Out | ||
| | | | ||
− | | | + | |1 |
| | | | ||
− | | | + | |IR_L |
− | | | + | |HDR6: 4; HDR5: 4 |
− | | | + | |ACS Sendedioden LoPwr |
|- | |- | ||
|PB5 | |PB5 | ||
Zeile 690: | Zeile 712: | ||
|0 | |0 | ||
|ISP | |ISP | ||
− | | | + | |MOSI |
− | | | + | |HDR6: 3; HDR11: 4 |
|ISP MOSI | |ISP MOSI | ||
|- | |- | ||
|PB6 | |PB6 | ||
|MISO/OC3A/PCINT14 | |MISO/OC3A/PCINT14 | ||
− | | | + | |In |
− | + | ||
|0 | |0 | ||
+ | | | ||
|ISP | |ISP | ||
− | | | + | |MISO |
− | | | + | |HDR6: 2; HDR11: 1 |
|ISP MISO | |ISP MISO | ||
|- | |- | ||
Zeile 710: | Zeile 732: | ||
|0 | |0 | ||
|ISP | |ISP | ||
− | | | + | |SCK |
− | | | + | |HDR6: 1; HDR11: 3 |
|ISP SCK | |ISP SCK | ||
|- | |- | ||
Zeile 720: | Zeile 742: | ||
| | | | ||
|I2C-Bus | |I2C-Bus | ||
− | | | + | |SCL_PC |
− | | | + | |HDR7: 8; HDR12: 7, 8 |
|I2C SCL | |I2C SCL | ||
|- | |- | ||
Zeile 730: | Zeile 752: | ||
| | | | ||
|I2C-Bus | |I2C-Bus | ||
− | | | + | |SDA_PC |
− | | | + | |HDR7: 7; HDR12: 5, 6 |
|I2C SDA | |I2C SDA | ||
|- | |- | ||
|PC2 | |PC2 | ||
|TCK/PCINT18 | |TCK/PCINT18 | ||
− | | | + | |In |
+ | |1 | ||
| | | | ||
− | |||
|JTAG | |JTAG | ||
− | | | + | |TCK |
− | | | + | |HDR7: 6; HDR13: 1 |
− | | | + | | ** |
|- | |- | ||
|PC3 | |PC3 | ||
|TMS/PCINT19 | |TMS/PCINT19 | ||
|In | |In | ||
− | | | + | |1 |
| | | | ||
|JTAG | |JTAG | ||
− | | | + | |TMS |
− | | | + | |HDR7: 5; HDR13: 5 |
− | | | + | | ** |
|- | |- | ||
|PC4 | |PC4 | ||
|TDO/PCINT20 | |TDO/PCINT20 | ||
|In | |In | ||
− | | | + | |1 |
| | | | ||
|JTAG | |JTAG | ||
− | | | + | |TDO |
− | | | + | |HDR7: 4; HDR13: 3 |
− | | | + | | ** |
|- | |- | ||
|PC5 | |PC5 | ||
|TDI/PCINT21 | |TDI/PCINT21 | ||
|In | |In | ||
− | | | + | |1 |
| | | | ||
|JTAG | |JTAG | ||
− | | | + | |TDI |
− | | | + | |HDR7: 3; HDR13: 9 |
− | | | + | | ** |
|- | |- | ||
|PC6 | |PC6 | ||
|TOSC1/PCINT22 | |TOSC1/PCINT22 | ||
− | | | + | |Out |
− | + | ||
| | | | ||
+ | |1 | ||
| | | | ||
− | | | + | |ACS__LF |
− | | | + | |HDR7: 2; HDR5: 7 |
− | | | + | |ACS Sendediode vorn links |
|- | |- | ||
|PC7 | |PC7 | ||
|TOSC2/PCINT23 | |TOSC2/PCINT23 | ||
− | | | + | |Out |
+ | | | ||
|1 | |1 | ||
| | | | ||
− | | | + | |ACS__L |
− | | | + | |HDR7: 1; HDR5: 9 |
− | | | + | |ACS Sendediode links |
− | + | ||
|- | |- | ||
|PD0 | |PD0 | ||
Zeile 800: | Zeile 822: | ||
| | | | ||
|UART0 | |UART0 | ||
− | | | + | |RX_MAIN |
− | | | + | |HDR8: 8; HDR14: 2 |
|UART0 RX | |UART0 RX | ||
|- | |- | ||
Zeile 810: | Zeile 832: | ||
|0 | |0 | ||
|UART0 | |UART0 | ||
− | | | + | |TX_MAIN |
− | | | + | |HDR8: 7; HDR14: 3 |
|UART0 TX | |UART0 TX | ||
|- | |- | ||
Zeile 820: | Zeile 842: | ||
| | | | ||
|UART1 | |UART1 | ||
− | | | + | |RX_APC |
− | | | + | |HDR8: 6; APC: 4 |
− | | | + | |UART1 RX |
|- | |- | ||
|PD3 | |PD3 | ||
|TXD1/INT1/PCINT27 | |TXD1/INT1/PCINT27 | ||
− | | | + | |Out |
− | + | ||
| | | | ||
+ | |0 | ||
|UART1 | |UART1 | ||
− | | | + | |TX_APC |
− | | | + | |HDR8: 5; APC: 5 |
− | | | + | |UART1 TX |
|- | |- | ||
|PD4 | |PD4 | ||
Zeile 838: | Zeile 860: | ||
|Out | |Out | ||
| | | | ||
− | | | + | |1 |
| | | | ||
− | | | + | |SET_APC |
− | | | + | |HDR8: 4; APC: 7 |
− | | | + | |APC-220 SET |
|- | |- | ||
|PD5 | |PD5 | ||
Zeile 848: | Zeile 870: | ||
|Out | |Out | ||
| | | | ||
− | | | + | |1 |
| | | | ||
− | | | + | |ACS__RF |
− | | | + | |HDR8: 3; HDR5: 5 |
− | | | + | |ACS Sendediode vorn rechts |
|- | |- | ||
|PD6 | |PD6 | ||
Zeile 858: | Zeile 880: | ||
|Out | |Out | ||
| | | | ||
− | | | + | |1 |
| | | | ||
− | | | + | |ACS__R |
− | | | + | |HDR8: 2; HDR5: 3 |
− | | | + | |ACS Sendediode rechts |
|- | |- | ||
|PD7 | |PD7 | ||
|OC2A/PCINT31 | |OC2A/PCINT31 | ||
− | | | + | |In |
− | + | ||
|0 | |0 | ||
| | | | ||
− | |||
| | | | ||
− | | | + | |I2C_INT |
+ | |HDR8: 1; HDR12: 9, 10 | ||
+ | |I2C Interrupt | ||
|- | |- | ||
|} | |} | ||
Zeichen: | Zeichen: | ||
− | ** JTAG | + | * Frei, da U13 (Accelerometer) nicht bestückt ist! |
+ | ** Frei, wenn JTAG deaktiviert wird! | ||
+ | ² Anmerkung: Sollte eher ''In'' sein! | ||
Abkürzungen der IO-Stecker (Spalte Stecker): | Abkürzungen der IO-Stecker (Spalte Stecker): | ||
− | + | HDR11 ISP-2X3HDR | |
− | + | HDR12 I2C-2X5HDR | |
− | + | HDR13 JTAG-2X5HDR | |
+ | HDR14 UART-2X5HDR | ||
+ | APC APC-220 Sockel | ||
=====Timer-Nutzung===== | =====Timer-Nutzung===== | ||
+ | ======Timer 0====== | ||
+ | ======Timer 1====== | ||
+ | ======Timer 2====== | ||
====WT_UART==== | ====WT_UART==== | ||
Zeile 895: | Zeile 924: | ||
==Projekte== | ==Projekte== | ||
+ | Die hier vorgestellten Software Projekte (Libraries, Demos) für den WTR findet ihr auch in der Datei '''[http://www.roboternetz.de/community/attachment.php?attachmentid=31076&d=1450987441 WTR_Software.zip]'''! | ||
+ | |||
+ | ===Libraries=== | ||
+ | Hier sollen die Libraries für den Wild Thumper mit WTR-CK1 Controller weiter entwickelt werden. In diesem Abschnitt sind immer meine neuesten Versionen (ab Version 2.0) zu finden. | ||
+ | |||
+ | ====Versionen==== | ||
+ | {| {{Blauetabelle}} | ||
+ | |Config Main | ||
+ | |Main | ||
+ | |Main UART | ||
+ | |Config Motor | ||
+ | |Motor | ||
+ | |Motor UART | ||
+ | |Config | ||
+ | |I2C Master | ||
+ | |I2C Slave | ||
+ | |- | ||
+ | |2.1 | ||
+ | |2.1 | ||
+ | |1.1 | ||
+ | |2.2 | ||
+ | |2.2 | ||
+ | |1.0 | ||
+ | |2.2 | ||
+ | |1.0 | ||
+ | |1.0 | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | ====Config==== | ||
+ | =====WT_Config.h===== | ||
+ | |||
+ | ====Motor==== | ||
+ | Am Anfang der Entwicklung neuer Libraries für den WTR mit WTR-CK1 Controller steht die Library für den Motor Controller. Dieser Controller wird als I2C Slave arbeiten, d.h. er nimmt Befehle vom I2C Master über den I2C Bus entgegen. I2C Master ist der Main Controller. | ||
+ | |||
+ | Die aktuelle Library für den Motor Controller baut auf der mitgelieferten Library (Version 1.0) auf, enthält aber folgende Änderungen/Verbesserungen/Fehlerbeseitigungen: | ||
+ | * '''AKTUELLE Version 2.2 (08.10.2015)''': | ||
+ | ** PID Controller Task hinzugefügt | ||
+ | ** Drive Control Task hinzugefügt mit 5 Kontroll-Modes: OFF (keine Kontrolle), DIRECT (PWM = SetPoint), PID (Kontrolle durch PID Controller), SOFT (verzögertes Beschleunigen/Abbremsen), SOFTPID (SOFT & PID) | ||
+ | ** Aktueller Stand: '''ALPHA!!!''' | ||
+ | |||
+ | * Version 2.1 (18.09.2015): | ||
+ | ** Aufruf des PID Controllers in festem Zeit-Intervall | ||
+ | ** Kleinere Änderungen im PID Controller Code | ||
+ | ** Encoder Impuls-Auswertung neu geschrieben | ||
+ | |||
+ | * Version 2.0 (06.09.2015): | ||
+ | ** Hardware PWM zur Ansteuerung der Motoren (anstelle von Software PWM) | ||
+ | ** Timer 1 OVF Interrupt für Delays, Stopwatches ... | ||
+ | ** Funktion PID_ResetIntegrator() hinzugefügt (für PID Controller) | ||
+ | ** Makros PULSE_MM, PULSE_CM und PULSE_M hinzugefügt | ||
+ | ** Makros nop() und sysSleep() hinzugefügt | ||
+ | ** Namen der Variablen Typen geändert zu ISO C99 | ||
+ | ** Unnötige Includes und Defines beseitigt | ||
+ | ** Funktion delayCycles() und Makro delay_us() hinzugefügt | ||
+ | ** Universelle Timer Variable mit 100µs Auflösung hinzugefügt | ||
+ | |||
+ | * Version 1.2 (26.08.2015): | ||
+ | ** Entfernungs-Zähler (Motoren 2 und 5) hinzugefügt | ||
+ | ** WTR Config Header Datei (WT_Config.h) hinzugefügt | ||
+ | ** Abweichung der Stopwatches um 10% berichtigt | ||
+ | |||
+ | * Version 1.1 (19.08.2015): | ||
+ | ** ISR(PCINT2_vect) und ISR(PCINT3_vect) verbessert, um die Quadratur-Encoder des WTR (anstelle der WTR-CK1 Radencoder) nutzen zu können | ||
+ | ** JTAG Schnittstelle deaktiviert | ||
+ | ** Hinweis: Die Änderungen dieser Version gegenüber der Version 1.0 werden im Abschnitt [[Wild_Thumper#Motor_Library|Anpassen der Libraries - Motor Library]] beschrieben! | ||
+ | |||
+ | =====WT_Config_Motor.h===== | ||
+ | =====WildThumperLib_Motor.h===== | ||
+ | =====WildThumperLib_Motor.c===== | ||
+ | =====WT_UART===== | ||
+ | |||
+ | ====Main==== | ||
+ | Das Programm im Main Controller bestimmt, wie sich der WTR bewegt bzw. auf seine Umwelt reagiert. Zur Vereinfachung der Programme wird eine Main Library benötigt. Der Main Controller wird als I2C Master arbeiten, d.h. er sendet Befehle an den I2C Slave über den I2C Bus. I2C Slave ist der Motor Controller. | ||
+ | |||
+ | Die aktuelle Library für den Main Controller baut auf der mitgelieferten Library (Version 1.0) auf, enthält aber folgende Änderungen/Verbesserungen/Fehlerbeseitigungen: | ||
+ | |||
+ | * '''AKTUELLE Version 2.1 (08.10.2015)''': | ||
+ | ** LED- und Textanzeige kann jetzt ausgeschaltet werden | ||
+ | ** Kleinere Änderungen | ||
+ | |||
+ | * Version 2.0 (07.10.2015): | ||
+ | ** PINB0/1 (BUMPER1/2) jetzt als EINGÄNGE definiert | ||
+ | ** Makros nop() und sysSleep() hinzugefügt | ||
+ | ** Namen der Variablen Typen geändert zu ISO C99 | ||
+ | ** Unnötige Includes und Defines entfernt | ||
+ | ** Funktion delayCycles() und Makro delay_us() hinzugefügt | ||
+ | ** Universelle timer Variable mit 100µs Auflösung hinzugefügt | ||
+ | ** JTD Bit in MCUCR gesetzt (JTAG deaktiviert!) im Makro portInit() | ||
+ | ** Kleinere Änderungen | ||
+ | |||
+ | * Version 1.2 (26.08.2015): | ||
+ | ** Kleinere Änderungen | ||
+ | |||
+ | * Version 1.1 (12.08.2015): | ||
+ | ** ACS_Check_Right() -> LED8, ACS_Check_Front_Right() -> LED9 | ||
+ | |||
+ | =====WT_Config_Main.h===== | ||
+ | =====WildThumperLib_Main.h===== | ||
+ | =====WildThumperLib_Main.c===== | ||
+ | =====WT_UART===== | ||
+ | Die UART Library für den Main Controller wurde bisher nur geringfügig angepasst, um sie für die neuen Programme ab Version V2 nutzen zu können. | ||
+ | |||
+ | * '''AKTUELLE Version 1.1 (11.12.2015)''': | ||
+ | ** Kompatibilität mit den neuen Main Programmen V2 | ||
+ | |||
+ | ====Common==== | ||
+ | =====WT_Config.h===== | ||
+ | =====WT_I2Cmaster===== | ||
+ | =====WT_I2Cslave===== | ||
+ | |||
+ | ===Demo-Programme=== | ||
+ | ====AVR-GCC==== | ||
+ | =====Motor===== | ||
+ | =====Main===== | ||
+ | ====Windows Application==== | ||
+ | |||
+ | <br/><br/> | ||
+ | |||
+ | ==Erfahrungsberichte== | ||
+ | |||
+ | <br/><br/> | ||
+ | |||
+ | ==Siehe auch== | ||
+ | * [[Wild Thumper]] | ||
+ | * [[RP6]] | ||
+ | * [[RP6 - Programmierung]] | ||
+ | * [[RP6v2]] | ||
+ | * [[RP6 Sensor Board und Xtra Module]] | ||
+ | * [[RP6 Kamera - Mitmach-Projekt]] | ||
+ | * [[RP6v2 I2C-Portexpander]] | ||
+ | * [[RP6v2 USB-RS232-Adapter]] | ||
+ | * [[RP6v2 Orientierung]] | ||
+ | * [[RP6 Multi IO Projekt]] | ||
+ | * [[RP6 Multi IO Projekt - Software]] | ||
+ | * [[RP6 ArduIO]] | ||
+ | * [[RP6 ArduIO - Software]] | ||
+ | * [[Induktive_Ladestation_f%C3%BCr_den_RP6|Induktive Ladestation für den RP6]] | ||
+ | * [[IR-bake_f%C3%BCr_den_RP6|IR-bake für den RP6]] | ||
+ | * [[CCRP5]] | ||
+ | * [[Yeti]] | ||
+ | * [[Asuro]] | ||
+ | * [[C't-Bot]] | ||
+ | |||
+ | <br/><br/> | ||
+ | |||
+ | ==Weblinks== | ||
+ | ===Einzelne Projekte=== | ||
+ | ===Schule, Lehre und Ausbildung=== | ||
<br/><br/> | <br/><br/> | ||
Zeile 901: | Zeile 1.079: | ||
==Autoren== | ==Autoren== | ||
− | --[http://www.roboternetz.de/community/members/1972-Dirk Dirk] | + | --[http://www.roboternetz.de/community/members/1972-Dirk Dirk] 20:33, 16. Aug 2017 (CET) |
Aktuelle Version vom 16. August 2017, 19:33 Uhr
Inhaltsverzeichnis
Allgemein
In diesem Artikel geht es um die Programmierung des AREXX Wild Thumper Roboters (JSR-6WD) mit AREXX Wild Thumper Controller (WTR-CK1).
Zu den Grundlagen des Wild Thumper Roboters ("WTR") gibt es eine eigene Seite.
RobotLoader
Der RobotLoader ist die Weiterentwicklung des RP6Loaders.
Loader Versionen
Hier eine Tabelle der (mir) bekannten RobotLoader Versionen für den Wild Thumper Controller:
ZIP-Datum | Version | Bemerkungen | Examples |
16.06.2011 | 1.6b | Version auf der AREXX Wild Thumper CD-ROM! | ab Juli 2011 |
Hinweise: Neuere Versionen des RobotLoaders ab Version 2.0 findet ihr hier.
Projekte
Siehe hier!
Dokumentation
Manuals
Die "Anleitung" zum WTR gibt es hier.
Die Anleitung zum WTR-CK1 könnt ihr hier herunterladen.
Schematics
Einen Schaltplan zum WTR gibt es nicht. Die Stromkabel der rechten und linken Motoren sind bei Auslieferung jeweils an einer Lüsterklemmen-Leiste parallel geschaltet, siehe die Abb. "Lüsterklemmen-Leiste" in diesem Abschnitt!. Am Ende dieses Abschnitts zeigt die Abb. "Encoderstecker" die Belegung der Encoderstecker. Die Schaltung der Encoder-Motoren des WTR könnt ihr hier herunterladen.
Die Schaltpläne zum WTR-CK1 sind in der Anleitung von Seite 63 bis 67 einzusehen.
Datasheets
Das Datenblatt der WTR Motoren könnt ihr hier herunterladen.
Die Datenblätter relevanter Bauteile des WTR-CK1 sind im Ordner \Datasheets der CD-ROM zum Controller enthalten. Sie sind darüber hinaus problemlos kostenfrei im Internet erhältlich.
Demo-Programme
AVR-GCC
Einrichtung
Siehe hier!
Motor
Main
Windows Application
Installation
Siehe hier!
Library
Die Libraries für den WTR-CK1 bestehen aus folgenden 14 Dateien:
Library | Datei | Funktion |
Main | WT_Config_Main.h | Main Konfiguration |
Main | WildThumperLib_Main.h | Main Library Header |
Main | WildThumperLib_Main.c | Main Library Source |
Main UART | WT_UART.h | Main UART Funktionen Header |
Main UART | WT_UART.c | Main UART Funktionen Source |
Motor | WT_Config_Motor.h | Motor Konfiguration |
Motor | WildThumperLib_Motor.h | Motor Library Header |
Motor | WildThumperLib_Motor.c | Motor Library Source |
Motor UART | WT_UART.h | Motor UART Funktionen Header |
Motor UART | WT_UART.c | Motor UART Funktionen Source |
I2C Master | WT_I2Cmaster.h | I2C Master Funktionen Header |
I2C Master | WT_I2Cmaster.c | I2C Master Funktionen Source |
I2C Slave | WT_I2Cslave.h | I2C Slave Funktionen Header |
I2C Slave | WT_I2Cslave.c | I2C Slave Funktionen Source |
Versionen
Hier eine Tabelle der (mir) bekannten Library Versionen des WTR-CK1:
Version | Config Main | Main | Main UART | Config Motor | Motor | Motor UART | I2C Master | I2C Slave |
1.0 * | 13.07.2011 | 11.07./18.07.2011 | 08.07.2011 | 30.06.2011 | 18.07.2011 | 28.06.2011 | 01.12./16.12.2010 | 25.11./01.12.2010 |
Zu *: Auf der Wild Thumper Controller CD-ROM!
Motor
Die Wild Thumper Motor Library besteht aus der Motor und der Motor UART Library.
WildThumperLib_Motor
Bug-Report
Konfiguration
Port-Verwendung
Die Verwendung der Ports des WTR-CK1 Motor Microcontrollers wird festgelegt in der Header-Datei "WT_Config_Motor.h". In dieser Datei wird auch noch Folgendes aufgeführt:
- Quarzfrequenz (F_CPU)
- True/false Definition
- Definitionen für das APC-220 Funkmodul (?)
Hier eine Tabelle mit den Port-Definitionen für den Motor Microcontroller des WTR-CK1:
Erklärung der Spalten: Port -> Atmel Portpin Bezeichnung Name -> Atmel Funktionsbezeichnung In/Out -> Eingang (In) oder Ausgang (Out) Pullup -> Falls Eingang: Pullup ein- (1) oder ausgeschaltet (0) Wert -> Falls Ausgang: Logikpegel high (1) oder low (0) Funktion -> Schnittstellenfunktion Bezeichnung -> Portpin Bezeichnung der Library Stecker -> Portpin verfügbar an STECKER: Pin Anmerkungen -> Kommentare (ADC_xx: ADC-Kanal Bezeichnung)
Port | Name | In/Out | Pullup | Wert | Funktion | Bezeichnung | Stecker | Anmerkungen |
PA0 | ADC0/PCINT0 | In | 0 | I_MOTOR6 | ADC_MOTOR6 | |||
PA1 | ADC1/PCINT1 | In | 0 | I_MOTOR5 | ADC_MOTOR5 | |||
PA2 | ADC2/PCINT2 | In | 0 | I_MOTOR4 | ADC_MOTOR4 | |||
PA3 | ADC3/PCINT3 | In | 0 | I_MOTOR3 | ADC_MOTOR3 | |||
PA4 | ADC4/PCINT4 | In | 0 | I_MOTOR2 | ADC_MOTOR2 | |||
PA5 | ADC5/PCINT5 | In | 0 | I_MOTOR1 | ADC_MOTOR1 | |||
PA6 | ADC6/PCINT6 | In | 1 | EF_MOTOR2 | Fehler Motor 2 | |||
PA7 | ADC7/PCINT7 | In | 1 | EF_MOTOR1 | Fehler Motor 1 | |||
PB0 | T0/XCK/PCINT8 | In | 1 | EF_MOTOR5 | Fehler Motor 5 | |||
PB1 | T1/CLKO/PCINT9 | In | 1 | EF_MOTOR4 | Fehler Motor 4 | |||
PB2 | AIN0/INT2/PCINT10 | In | 1 | EF_MOTOR3 | Fehler Motor 3 | |||
PB3 | AIN1/OC0A/PCINT11 | Out | 0 | MOTOR2_PWM | PWM Motor 2 | |||
PB4 | SS/OC0B/PCINT12 | Out | 0 | MOTOR1_PWM | PWM Motor 1 | |||
PB5 | MOSI/ICP3/PCINT13 | Out | 0 | ISP | SR_DATA | HDR1: 4 | ISP MOSI | |
PB6 | MISO/OC3A/PCINT14 | Out | 0 | ISP | SR_STR | HDR1: 1 | ISP MISO | |
PB7 | SCK/OC3B/PCINT15 | Out | 0 | ISP | SR_SCK | HDR1: 3 | ISP SCK | |
PC0 | SCL/PCINT16 | In | 0 | I2C-Bus | I2C_SCL | HDR2: 7, 8 | I2C SCL | |
PC1 | SDA/PCINT17 | In | 0 | I2C-Bus | I2C_SDA | HDR2: 5, 6 | I2C SDA | |
PC2 | TCK/PCINT18 | Out | 0 | JTAG | I2C_INT | HDR2: 9, 10 | I2C Interrupt ** | |
PC3 | TMS/PCINT19 | In | 0 | JTAG | SIG_MOTOR4 | J11: 2 | Encoder Motor 4 ** | |
PC4 | TDO/PCINT20 | In | 0 | JTAG | SIG_MOTOR3 | J8: 2 | Encoder Motor 3 ** | |
PC5 | TDI/PCINT21 | In | 0 | JTAG | SIG_MOTOR2 | J7: 2 | Encoder Motor 2 ** | |
PC6 | TOSC1/PCINT22 | In | 0 | SIG_MOTOR1 | J4: 2 | Encoder Motor 1 | ||
PC7 | TOSC2/PCINT23 | In | 1 | EF_MOTOR6 | Fehler Motor 6 | |||
PD0 | RXD0/PCINT24 | In | 1 | UART0 | RX_MOTOR | HDR3: 2 | UART0 RX | |
PD1 | TXD0/PCINT25 | Out | 0 | UART0 | TX_MOTOR | HDR3: 3 | UART0 TX | |
PD2 | RXD1/INT0/PCINT26 | In | 0 | UART1 | SIG_MOTOR6 | J15: 2 | Encoder Motor 6 | |
PD3 | TXD1/INT1/PCINT27 | In | 0 | UART1 | SIG_MOTOR5 | J12: 2 | Encoder Motor 5 | |
PD4 | XCK1/OC1B/PCINT28 | Out | 0 | MOTOR6_PWM | PWM Motor 6 | |||
PD5 | OC1A/PCINT29 | Out | 0 | MOTOR5_PWM | PWM Motor 5 | |||
PD6 | ICP/OC2B/PCINT30 | Out | 0 | MOTOR4_PWM | PWM Motor 4 | |||
PD7 | OC2A/PCINT31 | Out | 0 | MOTOR3_PWM | PWM Motor 3 |
Zeichen: ** JTAG muss deaktiviert werden! Abkürzungen der IO-Stecker (Spalte Stecker): HDR1 ISP-2X3HDR HDR2 I2C-2X5HDR HDR3 UART-2X5HDR
Timer-Nutzung
Timer 0
Timer 1
Timer 2
WT_UART
Main
Die Wild Thumper Main Library besteht aus der Main und der Main UART Library.
WildThumperLib_Main
Bug-Report
Konfiguration
Port-Verwendung
Die Verwendung der Ports des WTR-CK1 Main Microcontrollers wird festgelegt in der Header-Datei "WT_Config_Main.h". In dieser Datei wird auch noch Folgendes aufgeführt:
- Quarzfrequenz (F_CPU)
- True/false Definition
- Definitionen für das APC-220 Funkmodul
Hier eine Tabelle mit den Port-Definitionen für den Main Microcontroller des WTR-CK1:
Erklärung der Spalten: Port -> Atmel Portpin Bezeichnung Name -> Atmel Funktionsbezeichnung In/Out -> Eingang (In) oder Ausgang (Out) Pullup -> Falls Eingang: Pullup ein- (1) oder ausgeschaltet (0) Wert -> Falls Ausgang: Logikpegel high (1) oder low (0) Funktion -> Schnittstellenfunktion Bezeichnung -> Portpin Bezeichnung der Library Stecker -> Portpin verfügbar an STECKER: Pin Anmerkungen -> Kommentare (ADC_xx: ADC-Kanal Bezeichnung)
Port | Name | In/Out | Pullup | Wert | Funktion | Bezeichnung | Stecker | Anmerkungen |
PA0 | ADC0/PCINT0 | In | 0 | BAT_VOLTAGE | HDR4: 8 | ADC_BAT_VOLTAGE | ||
PA1 | ADC1/PCINT1 | In | 0 | LDR1 | HDR4: 7; HDR5: 8 | ADC_LDR1 (links) | ||
PA2 | ADC2/PCINT2 | In | 0 | LDR2 | HDR4: 6; HDR5: 10 | ADC_LDR2 (rechts) | ||
PA3 | ADC3/PCINT3 | In | 0 | TEMPERATURE | HDR4: 5 | ADC_TEMPERATURE | ||
PA4 | ADC4/PCINT4 | In | 0 | Z_ACC | HDR4: 4 | ADC_Z_ACC * | ||
PA5 | ADC5/PCINT5 | In | 0 | Y_ACC | HDR4: 3 | ADC_Y_ACC * | ||
PA6 | ADC6/PCINT6 | In | 0 | X_ACC | HDR4: 2 | ADC_X_ACC * | ||
PA7 | ADC7/PCINT7 | In | 0 | BUTTON | HDR4: 1 | ADC_BUTTON (Taster S2) | ||
PB0 | T0/XCK/PCINT8 | Out ² | 1 | BUMPER1 | HDR6: 8; HDR5: 12 | Bumper rechts | ||
PB1 | T1/CLKO/PCINT9 | Out ² | 1 | BUMPER2 | HDR6: 7; HDR5: 11 | Bumper links | ||
PB2 | AIN0/INT2/PCINT10 | In | 0 | IR_RECEIVER | HDR6: 6 | IR Empfänger (TSOP) | ||
PB3 | AIN1/OC0A/PCINT11 | Out | 1 | IR_H | HDR6: 5; HDR5: 6 | ACS Sendedioden HiPwr | ||
PB4 | SS/OC0B/PCINT12 | Out | 1 | IR_L | HDR6: 4; HDR5: 4 | ACS Sendedioden LoPwr | ||
PB5 | MOSI/ICP3/PCINT13 | Out | 0 | ISP | MOSI | HDR6: 3; HDR11: 4 | ISP MOSI | |
PB6 | MISO/OC3A/PCINT14 | In | 0 | ISP | MISO | HDR6: 2; HDR11: 1 | ISP MISO | |
PB7 | SCK/OC3B/PCINT15 | Out | 0 | ISP | SCK | HDR6: 1; HDR11: 3 | ISP SCK | |
PC0 | SCL/PCINT16 | In | 0 | I2C-Bus | SCL_PC | HDR7: 8; HDR12: 7, 8 | I2C SCL | |
PC1 | SDA/PCINT17 | In | 0 | I2C-Bus | SDA_PC | HDR7: 7; HDR12: 5, 6 | I2C SDA | |
PC2 | TCK/PCINT18 | In | 1 | JTAG | TCK | HDR7: 6; HDR13: 1 | ** | |
PC3 | TMS/PCINT19 | In | 1 | JTAG | TMS | HDR7: 5; HDR13: 5 | ** | |
PC4 | TDO/PCINT20 | In | 1 | JTAG | TDO | HDR7: 4; HDR13: 3 | ** | |
PC5 | TDI/PCINT21 | In | 1 | JTAG | TDI | HDR7: 3; HDR13: 9 | ** | |
PC6 | TOSC1/PCINT22 | Out | 1 | ACS__LF | HDR7: 2; HDR5: 7 | ACS Sendediode vorn links | ||
PC7 | TOSC2/PCINT23 | Out | 1 | ACS__L | HDR7: 1; HDR5: 9 | ACS Sendediode links | ||
PD0 | RXD0/PCINT24 | In | 1 | UART0 | RX_MAIN | HDR8: 8; HDR14: 2 | UART0 RX | |
PD1 | TXD0/PCINT25 | Out | 0 | UART0 | TX_MAIN | HDR8: 7; HDR14: 3 | UART0 TX | |
PD2 | RXD1/INT0/PCINT26 | In | 0 | UART1 | RX_APC | HDR8: 6; APC: 4 | UART1 RX | |
PD3 | TXD1/INT1/PCINT27 | Out | 0 | UART1 | TX_APC | HDR8: 5; APC: 5 | UART1 TX | |
PD4 | XCK1/OC1B/PCINT28 | Out | 1 | SET_APC | HDR8: 4; APC: 7 | APC-220 SET | ||
PD5 | OC1A/PCINT29 | Out | 1 | ACS__RF | HDR8: 3; HDR5: 5 | ACS Sendediode vorn rechts | ||
PD6 | ICP/OC2B/PCINT30 | Out | 1 | ACS__R | HDR8: 2; HDR5: 3 | ACS Sendediode rechts | ||
PD7 | OC2A/PCINT31 | In | 0 | I2C_INT | HDR8: 1; HDR12: 9, 10 | I2C Interrupt |
Zeichen: * Frei, da U13 (Accelerometer) nicht bestückt ist! ** Frei, wenn JTAG deaktiviert wird! ² Anmerkung: Sollte eher In sein! Abkürzungen der IO-Stecker (Spalte Stecker): HDR11 ISP-2X3HDR HDR12 I2C-2X5HDR HDR13 JTAG-2X5HDR HDR14 UART-2X5HDR APC APC-220 Sockel
Timer-Nutzung
Timer 0
Timer 1
Timer 2
WT_UART
Common
WT_I2Cmaster
WT_I2Cslave
Projekte
Die hier vorgestellten Software Projekte (Libraries, Demos) für den WTR findet ihr auch in der Datei WTR_Software.zip!
Libraries
Hier sollen die Libraries für den Wild Thumper mit WTR-CK1 Controller weiter entwickelt werden. In diesem Abschnitt sind immer meine neuesten Versionen (ab Version 2.0) zu finden.
Versionen
Config Main | Main | Main UART | Config Motor | Motor | Motor UART | Config | I2C Master | I2C Slave |
2.1 | 2.1 | 1.1 | 2.2 | 2.2 | 1.0 | 2.2 | 1.0 | 1.0 |
Config
WT_Config.h
Motor
Am Anfang der Entwicklung neuer Libraries für den WTR mit WTR-CK1 Controller steht die Library für den Motor Controller. Dieser Controller wird als I2C Slave arbeiten, d.h. er nimmt Befehle vom I2C Master über den I2C Bus entgegen. I2C Master ist der Main Controller.
Die aktuelle Library für den Motor Controller baut auf der mitgelieferten Library (Version 1.0) auf, enthält aber folgende Änderungen/Verbesserungen/Fehlerbeseitigungen:
- AKTUELLE Version 2.2 (08.10.2015):
- PID Controller Task hinzugefügt
- Drive Control Task hinzugefügt mit 5 Kontroll-Modes: OFF (keine Kontrolle), DIRECT (PWM = SetPoint), PID (Kontrolle durch PID Controller), SOFT (verzögertes Beschleunigen/Abbremsen), SOFTPID (SOFT & PID)
- Aktueller Stand: ALPHA!!!
- Version 2.1 (18.09.2015):
- Aufruf des PID Controllers in festem Zeit-Intervall
- Kleinere Änderungen im PID Controller Code
- Encoder Impuls-Auswertung neu geschrieben
- Version 2.0 (06.09.2015):
- Hardware PWM zur Ansteuerung der Motoren (anstelle von Software PWM)
- Timer 1 OVF Interrupt für Delays, Stopwatches ...
- Funktion PID_ResetIntegrator() hinzugefügt (für PID Controller)
- Makros PULSE_MM, PULSE_CM und PULSE_M hinzugefügt
- Makros nop() und sysSleep() hinzugefügt
- Namen der Variablen Typen geändert zu ISO C99
- Unnötige Includes und Defines beseitigt
- Funktion delayCycles() und Makro delay_us() hinzugefügt
- Universelle Timer Variable mit 100µs Auflösung hinzugefügt
- Version 1.2 (26.08.2015):
- Entfernungs-Zähler (Motoren 2 und 5) hinzugefügt
- WTR Config Header Datei (WT_Config.h) hinzugefügt
- Abweichung der Stopwatches um 10% berichtigt
- Version 1.1 (19.08.2015):
- ISR(PCINT2_vect) und ISR(PCINT3_vect) verbessert, um die Quadratur-Encoder des WTR (anstelle der WTR-CK1 Radencoder) nutzen zu können
- JTAG Schnittstelle deaktiviert
- Hinweis: Die Änderungen dieser Version gegenüber der Version 1.0 werden im Abschnitt Anpassen der Libraries - Motor Library beschrieben!
WT_Config_Motor.h
WildThumperLib_Motor.h
WildThumperLib_Motor.c
WT_UART
Main
Das Programm im Main Controller bestimmt, wie sich der WTR bewegt bzw. auf seine Umwelt reagiert. Zur Vereinfachung der Programme wird eine Main Library benötigt. Der Main Controller wird als I2C Master arbeiten, d.h. er sendet Befehle an den I2C Slave über den I2C Bus. I2C Slave ist der Motor Controller.
Die aktuelle Library für den Main Controller baut auf der mitgelieferten Library (Version 1.0) auf, enthält aber folgende Änderungen/Verbesserungen/Fehlerbeseitigungen:
- AKTUELLE Version 2.1 (08.10.2015):
- LED- und Textanzeige kann jetzt ausgeschaltet werden
- Kleinere Änderungen
- Version 2.0 (07.10.2015):
- PINB0/1 (BUMPER1/2) jetzt als EINGÄNGE definiert
- Makros nop() und sysSleep() hinzugefügt
- Namen der Variablen Typen geändert zu ISO C99
- Unnötige Includes und Defines entfernt
- Funktion delayCycles() und Makro delay_us() hinzugefügt
- Universelle timer Variable mit 100µs Auflösung hinzugefügt
- JTD Bit in MCUCR gesetzt (JTAG deaktiviert!) im Makro portInit()
- Kleinere Änderungen
- Version 1.2 (26.08.2015):
- Kleinere Änderungen
- Version 1.1 (12.08.2015):
- ACS_Check_Right() -> LED8, ACS_Check_Front_Right() -> LED9
WT_Config_Main.h
WildThumperLib_Main.h
WildThumperLib_Main.c
WT_UART
Die UART Library für den Main Controller wurde bisher nur geringfügig angepasst, um sie für die neuen Programme ab Version V2 nutzen zu können.
- AKTUELLE Version 1.1 (11.12.2015):
- Kompatibilität mit den neuen Main Programmen V2
Common
WT_Config.h
WT_I2Cmaster
WT_I2Cslave
Demo-Programme
AVR-GCC
Motor
Main
Windows Application
Erfahrungsberichte
Siehe auch
- Wild Thumper
- RP6
- RP6 - Programmierung
- RP6v2
- RP6 Sensor Board und Xtra Module
- RP6 Kamera - Mitmach-Projekt
- RP6v2 I2C-Portexpander
- RP6v2 USB-RS232-Adapter
- RP6v2 Orientierung
- RP6 Multi IO Projekt
- RP6 Multi IO Projekt - Software
- RP6 ArduIO
- RP6 ArduIO - Software
- Induktive Ladestation für den RP6
- IR-bake für den RP6
- CCRP5
- Yeti
- Asuro
- C't-Bot
Weblinks
Einzelne Projekte
Schule, Lehre und Ausbildung
Autoren
--Dirk 20:33, 16. Aug 2017 (CET)