Projekte
BirgerT
nibo2_Birger_01
nibo2_global.h
Projekte
Forum
Doku
Öffentliche Projekte
Startseite
Beispielprogramme
Projekte von anderen
Welcome
Username
Passwort
Eingeloggt bleiben
Zugangsdaten vergessen?
Registrieren
Projektverwaltung
⇨ Please choose! ⇦
——————————————————
✎ Create new project...
★ Browse existing projects...
——————————————————
⚬ MotorTest#1
⚬ C Tutorial 8#1
⚬ NIBO2 C Project#1
⚙ C Tutorial 15#1
⚬ 2010_11_18_el_test001#1
nibo2_Birger_01
blib_utils.c
blib_utils.h
BSD_license.h
nibo2_global.h
nibo2_main.c
nibo2_main_01.h
nibo2_pwm_leds.c
nibo2_pwm_leds.h
nibo2_sensors.c
nibo2_sensors.h
Project details
Compiler settings
Nachrichten
Sie sind nicht eingeloggt.
Neuigkeiten
★
NiboRoboLib 3.6
2017-01-17: Neue Version 3.6
★
NiboRoboLib 3.4.1
2016-04-16: Neue Version 3.4.1
★
Coding Tutorial
2015-11-22: Jetzt auch für den NIBO burger!
Site-Statistic
7427 private projects
385 public projects
16183128 lines compiled
58224 builds
NIBO
@
nibo2_birger_1/nibo2_global.h [read only]
////////////////////////////////////////////////////////////////////////// // // NIBO2 GLOBAL // // (c) Birger Töpelmann toepelmann(A)web.de Version 141018a // // Globale Definitionen für alle NIBO2 Projekte von BirgerT // // - in allen Programmmodulen erforderliche Bibliotheksheader // - Makros für die PIN- und PORT-Funktionen des Nibo2 // - Standard defines für Hardware abhängige Konstanten // // // TODO: - Typedefs // Word, Byte und Flags testen und Funktionen Updaten // // - Strukturen // - für die Datenpakete von/zum Copro // - Parameter sichern wiederherstellen // - Fahren nach Zahlen // - Sensorwerte, Flankenmerker // // - Datei aufräumen // ////////////////////////////////////////////////////////////////////////// // // #ifndef _NIBO2_GLOBAL_H_ #define _NIBO2_GLOBAL_H_ // // BSD License see "license.h" // #include "BSD_license.h" // #ifdef __cplusplus extern "C" { #endif // ///////////////////////////////////////////////////////// Mein Nibo2.. ////////////////////////////////////////////////////////////////////////// // // 0 = NEIN / 1 = JA // #define HAT_GLCD 1 #define HAT_BGX1 0 #define HAT_NDS3 0 #define HAT_XBEE 0 // 0 = Nöö, 1 = UART0, 2 = UART1 #define HAT_S_NR 747 // Die Seriennummer (bei DuoLED 1) // // verwendete Standard Parameter bei EEPROM CRC Fehler: // - im Menü "SETUP" einstellen und mit SAVE speichern // //--------- für die UARTs (siehe bt_lib_uart.h) // Hinweis: Die serielle PC Schnittstelle muss für das UCOM IR 2X // auf Baud,8,e,1 eingestellt werden #define UART0_SET (uint16_t)0x6801 // 19200,8,n,1 #define UART1_SET (uint16_t)0x4801 // 9600,8,n,1 // UART-FIFOs in bt_lib_uart.h einstellen // //--------- Einschalt-Werte für die LED Intensität in 0..100% !! // - werden in init_pwm_leds() gesetzt #define PWM_LEDS (uint8_t)50 // Duo LEDs #define PWM_HEAD (uint8_t) 0 // Headlights #define PWM_GLCD (uint8_t)50 // LCD Hintergrund // //--------- Standard Applikation to Go nach dem Start mit SW3 #define PROGRAMM (uint8_t)0x00 // noch zu definieren (Flag o. Konstante) #define APP_EVADE (uint8_t)0x01 // Hindernissen ausweichen #define APP_TOUR (uint8_t)0x02 // Vorgegebene Route #define APP_D_LINE (uint8_t)0x04 // Folge Dunkler Linie #define APP_H_LINE (uint8_t)0x08 // " Heller " #define APP_L_WALL (uint8_t)0x10 // Folge der Wand Links #define APP_R_WALL (uint8_t)0x20 // ------ " ----- Rechts #define APP_SLALOM (uint8_t)0x30 // Slalom Parcour #define CNTDOWN (uint8_t) 60 // Startwert für Countdown [100ms] //--------- Melodie Nummer x abspielen bei Ereignis.. (0 = Stille) #define SND_START (uint8_t)4 // ..Einschalten #define SND_ERROR (uint8_t)9 // ..Fehler #define SND_TRIP (uint8_t)2 // ..vorm Losfahren #define SND_ENDE (uint8_t)7 // ..Ziel erreicht #define SND_LIMIT (uint8_t)3 // ..Hindernis // ///////////////////////////////////////////////////// Nibo 2 Toleranzen // // Definition von Grenzwerten die von Nibo2 zu Nibo2 abweichen können, // und über das Menü "HW_CHK" durch Ausprobieren ermittelt und mit // "SAVE EEP" gespeichert werden können. // #if (HAT_S_NR == 747) // Mein erster Nibo2 mit LEGO Rädern: // Anzahl der Odometrieticks für.. #define TICKS360 (uint16_t)262 // ..Vollkreis mit einem Rad #define TICKS_10 (uint16_t) 28 // ..10cm Fahrstrecke // Reflexsensor Grenzwerte #define FL_LIFT (uint8_t) 0 // Floorsens. ohne Boden #define FL_DARK (uint8_t) 0 // Dunkler Untergrund #define FL_NORM (uint8_t) 0 // Heller Untergrund // Grenzwerte für Distanzsensoren #define DIST_FREE (uint8_t) 50 // < freie Bahn #define DIST_NEAR (uint8_t) 90 // > Hindernis ist nah #define DIST_LOW (uint8_t)140 // > Hindernis ausweichen // Grenzwert Stromaufnahme #define CUR_MAX (uint8_t)90 // > Motoren Aus #define POW_LIMIT (uint8_t)126 // < Akkus leer #define POW_VOLL (uint8_t)166 // Akkus frisch geladen // die PID Parameter für den COPRO #define CO_PID_P (uint8_t)5 #define CO_PID_I (uint8_t)6 #define CO_PID_D (uint8_t)7 #elif (HAT_S_NR == 999) // Mein zweiter Nibo // Anzahl der Odometrieticks für.. #define TICKS360 (uint16_t)262 // ..Vollkreis mit einem Rad #define TICKS_10 (uint16_t) 28 // ..10cm Fahrstrecke // Reflexsensor Grenzwerte #define FL_LIFT (uint8_t) 0 // Floorsens. ohne Boden #define FL_DARK (uint8_t) 0 // Dunkler Untergrund #define FL_NORM (uint8_t) 0 // Heller Untergrund // Grenzwerte für Distanzsensoren #define DIST_FREE (uint8_t) 50 // < freie Bahn #define DIST_NEAR (uint8_t) 90 // > Hindernis ist nah #define DIST_LOW (uint8_t)140 // > Hindernis ausweichen // Grenzwert Stromaufnahme #define CUR_MAX (uint8_t)90 // > Motoren Aus #define POW_LIMIT (uint8_t)126 // < Akkus leer #define POW_VOLL (uint8_t)166 // Akkus frisch geladen // die PID Parameter für den COPRO #define CO_PID_P (uint8_t)5 #define CO_PID_I (uint8_t)6 #define CO_PID_D (uint8_t)7 #else // für alle anderen Nibo2s // Anzahl der Odometrieticks für.. #define TICKS360 (uint16_t)262 // ..Vollkreis mit einem Rad #define TICKS_10 (uint16_t) 28 // ..10cm Fahrstrecke // Reflexsensor Grenzwerte #define FL_LIFT (uint8_t) 0 // Floorsens. ohne Boden #define FL_DARK (uint8_t) 0 // Dunkler Untergrund #define FL_NORM (uint8_t) 0 // Heller Untergrund // Grenzwerte für Distanzsensoren #define DIST_FREE (uint8_t) 50 // < freie Bahn #define DIST_NEAR (uint8_t) 90 // > Hindernis ist nah #define DIST_LOW (uint8_t)140 // > Hindernis ausweichen // Grenzwert Stromaufnahme #define CUR_MAX (uint8_t)90 // > Motoren Aus #define POW_LIMIT (uint8_t)126 // < Akkus leer #define POW_VOLL (uint8_t)166 // Akkus frisch geladen // die PID Parameter für den COPRO #define CO_PID_P (uint8_t)5 #define CO_PID_I (uint8_t)6 #define CO_PID_D (uint8_t)7 #endif // // ///////////////////////////////////////////////////////// C Bibliotheken ////////////////////////////////////////////////////////////////////////// // #include "blib_utils.h" // erforderliche C- und AVR Libs, Makros // // Der UART0 ist über den ISP-Anschluß zugänglich; // mit dem UCOM-IR2X kann abwechselnd programmiert oder // mit einer Terminalsoftware kommuniziert werden. // //#include "blib_uart.h" // UART Kommunikation mit FIFO //#include "blib_terminal.h" // Mensch Mikrocontroller Kommunikation //#include "blib_debugutil.h" // Speicherdump, Laufzeitmessung // /////////////////////////////////////////////// NIBO2 IO-Ports und -Bits ////////////////////////////////////////////////////////////////////////// // // Hier werden die AT-Mega defines aus der avrio.h auf meine Namen für die // NIBO2 Ports und Pins definiert // // PORT A == LCD Datenport in nibo2_glcd.h // // PORT B = ISP (CoPro), LEDs und PWM Ausgänge // PB7 /OC1C/OC2 = OUT = LED_PWM (PWM Out Timer 1C oder 2) // PB6 /OC1B = OUT = LED_LCD (PWM Ausgang Timer 1B) // PB5 /OC1A = OUT = LED_HEAD (PWM Ausgang Timer 1A) // PB4 /OC0 = OUT = AUDIO (PWM Ausgang Timer 0) // PB3 /MISO = OUT = ISP_MISO (Signal an Copro) // PB2 /MOSI = INP = ISP_MOSI (Signal vom Copro) // PB1 /SCK = OUT = ISP_SCK // PB0 /SS = OUT = LCD_RESET und ISP_SS // ISP SS == LCD_RESET // #define ISP_SS PB0 #define ISP_SCK PB1 #define ISP_MOSI PB2 #define ISP_MISO PINB3 #define AUDIO PB4 #define LED_HEAD PB5 #define LED_LCD PB6 #define LED_PWM PB7 // PORT C = LEDs grün #define LED_GN PORTC // weitere defs in pwm_leds.h // // PORT D = Erweiterungsanschluss (NDS3) // // +---+ // PD0/SCL |* *| GND // PD1/SDA +* *| ExtA/PD6 // Reset * *| ExtB/PD5 // VCC (5V) +* *| ExtC/PD3/TxD1 // Power |* *| ExtD/PD4/RxD1 // +---+ // // PD7 /T2 = OUT = CO_RESET (Copro Reset) // PD6 /T1 = frei = EXT_A (Timer/Counter 1 Clock) // PD5 /XCK1 = frei = EXT_B // PD4 = PIND4 = SW3 // PD3 /TXD1/INT3 = frei = EXT_C (External Interrupt 3 / UART1) // PD2 /RXD1/INT2 = frei = EXT_D (External Interrupt 2 / UART1) // PD1 /SDA/INT1 = frei = I2C_SDA (External Interrupt 1) // PD0 /SCL/INT0 = frei = I2C_SCL (External Interrupt 0) // Taster SW3 INPUT 1 an PIND4 --> sensors.c //#define SW3_DOWN (!(TSTBIT(PIND,PIND4))) // (!(PIND & (1<<SW3))) // /* #define I2C_SCL_PORT PORTD #define I2C_SCL_PIN PIND #define I2C_SCL_BIT 0 #define I2C_SCL_DDR DDRD #define I2C_SDA_PORT PORTD #define I2C_SDA_PIN PIND #define I2C_SDA_BIT 1 #define I2C_SDA_DDR DDRD */ #define EXT_A_O SETBIT(DDRD,PD6) // als Output #define EXT_A_I CLRBIT(DDRD,PD6) // als Input #define EXT_A_H SETBIT(PORTD,PD6) // = 1 setzen #define EXT_A_L CLRBIT(PORTD,PD6) // = 0 setzen #define EXT_A_P TSTBIT(PIND,PIND6) // Pegel? // Input mit Pullups ein = EXT_A_I; EXT_A_H; #define EXT_B_O SETBIT(DDRD,PD5) // als Output #define EXT_B_I CLRBIT(DDRD,PD5) // als Input #define EXT_B_H SETBIT(PORTD,PD5) // = 1 setzen #define EXT_B_L CLRBIT(PORTD,PD5) // = 0 setzen #define EXT_B_P TSTBIT(PIND,PIND5) // Pegel? #define EXT_C_O SETBIT(DDRD,PD3) // als Output #define EXT_C_I CLRBIT(DDRD,PD3) // als Input #define EXT_C_H SETBIT(PORTD,PD3) // = 1 setzen #define EXT_C_L CLRBIT(PORTD,PD3) // = 0 setzen #define EXT_C_P TSTBIT(PIND,PIND3) // Pegel? #define EXT_D_O SETBIT(DDRD,PD2) // als Output #define EXT_D_I CLRBIT(DDRD,PD2) // als Input #define EXT_D_H SETBIT(PORTD,PD2) // = 1 setzen #define EXT_D_L CLRBIT(PORTD,PD2) // = 0 setzen #define EXT_D_P TSTBIT(PIND,PIND2) // Pegel? #define CO_RST_O SETBIT(DDRD,PD7) // Output #define CO_RST_H SETBIT(PORTD,PD7) // =1 #define CO_RST_L CLRBIT(PORTD,PD7) // =0 //--------- PORT E = LEDs rot #define LED_RD PORTE // weitere defs in pwm_leds.h //--------- PORT F = ADC Port, Jumper und BodenLED #define ADC_PORT PORTF #define ADC_FLOOR_R 0 #define ADC_FLOOR_L 1 #define ADC_LINE_L 2 #define ADC_LINE_R 3 #define ADC_INPUT3 4 #define ADC_INPUT2 5 #define ADC_SUPPLY 7 //--------- Jumper INPUT 3 (bei DuoLED 2) #define JMP_3_O SETBIT(DDRF,PF4) // als Output #define JMP_3_I CLRBIT(DDRF,PF4) // als Input #define JMP_3_H SETBIT(PORTF,PF4) // = 1 setzen #define JMP_3_L CLRBIT(PORTF,PF4) // = 0 setzen #define JMP_3_P TSTBIT(PINF,PINF4) // Pegel? //--------- Jumper INPUT 2 (bei DuoLED 3) #define JMP_2_O SETBIT(DDRF,PF5) // als Output #define JMP_2_I CLRBIT(DDRF,PF5) // als Input #define JMP_2_H SETBIT(PORTF,PF5) // = 1 setzen #define JMP_2_L CLRBIT(PORTF,PF5) // = 0 setzen #define JMP_2_P TSTBIT(PINF,PINF5) // Pegel? #define FLOOR_O SETBIT(DDRF,PF6) // als Output #define FLOOR_H SETBIT(PORTF,PF6) // = 1 Enable #define FLOOR_L CLRBIT(PORTF,PF6) // = 0 Disable // Port G = LCD Steuerung defines in glcd.h // //////////////////////////////////////////////////// Nibo 2 Bibliotheken ////////////////////////////////////////////////////////////////////////// // //#include "nibo2_register.h" // EEPROM Parameter #include "nibo2_pwm_leds.h" // Timer 1 und LED Funktionen #include "nibo2_sensors.h" // BodenSensoren, Taster, Events //#include "nibo2_copro.h" // CoPro Kommunikation, Drive actions //#include "nibo2_audio.h" // Timer 0 und Soundausgabe //#include "bt_lib_uart.h" // USART0/1 Kommunikation //#include "bt_lib_terminal.h" // GUI für GLCD u. UARTs //#include "bt_lib_glcd_demo.h" // GLCD Testfunktionen //#include "bt_lib_gfx_draw.h" // GLCD Grafikfunktionen //#include "bt_lib_glcd.h" // GLCD Ansteuerung //void main_zyklus(uint8_t); // main_zyklus für testing //#include "nibo/delay.h" //#include "nibo/display.h" //#include "nibo/gfx.h" //#include "nibo/spi.h" //#include "nibo/copro.h" //#include "nibo/adc.h" //#include "nibo/floor.h" //#include "nibo/leds.h" //#include "nibo/pwm.h" //#include "nibo/bot.h" //#include "nibo/sound.h" #ifdef __cplusplus } // extern "C" #endif #endif //_NIBO2_GLOBAL_H_
Compiler results:
Werbung
Online
ashleighmccann268
josch
magvaf
paulinegonsalves19
wadehirsch7523292
workwind