kramann.info
© Guido Kramann

Login: Passwort:










COACH2
1 Planung
2 Architektur
3 Anzeige
4 EEPROM
5 I2C
..5.1 MasterSendByte
..5.2 MasterSend2Bytes
..5.3 MasterReceiveByte
..5.4 MasterReceive2Bytes
6 UART
7 DFT
8 FFT
9 Planung2
10 Klassen
..10.1 AnzeigeTaster
..10.2 RS232
..10.3 MotorServo
..10.4 Drehgeber
..10.5 Sensor
..10.6 Funk
11 Adaption
..11.1 Programmiertechnik
..11.2 Evoopt
12 Fuzzy
..12.1 Uebungsaufgabe
..12.2 Fuzzygroesse
..12.3 Fuzzyset
..12.4 Lookuptable
13 Skript
..13.1 Funkkorrektur
..13.2 Skriptsprachen
..13.3 Anforderungen
..13.4 Agentensysteme
..13.5 Implementierung
..13.6 Experimente
14 Gesamtkonzept
..14.1 Skripterweiterung
..14.2 Makroverhalten
67 Echtzeitsysteme
..67.1 Einfuehrung
....67.1.1 Echtzeit
....67.1.2 Korrektheit
....67.1.3 Hardware
....67.1.4 Ziele
....67.1.5 Synchronprogramm
..67.2 Threads
....67.2.1 Java
....67.2.2 Synchronisierung
..67.3 COACH
....67.3.1 Kaskadenregler
....67.3.2 Zeitebene1
....67.3.3 Zeitebene2
....67.3.4 Zeitebene3
....67.3.5 Puck
....67.3.6 Puckschwarm
..67.4 RTAIlab
....67.4.1 Slax
....67.4.1 USB_Stick
....67.4.2 Sinus
..67.5 Semaphor
....67.5.1 Laufkatze
....67.5.2 Java
....67.5.3 Semaphor
..67.6 Audio
....67.6.1 wav
....67.6.2 Linux
..67.7 Lookup
....67.7.1 Fuzzy
....67.7.2 PWM
..67.8 NeuronaleNetze
....67.8.1 Neuron
....67.8.2 Backpropagation
....67.8.3 Umsetzung
....67.8.4 Winkelerkennung
..67.9 Internetprogrammierung
....67.9.1 Codegenerierung
....67.9.2 PHP_Programmierung
....67.9.3 PHP_OOP
....67.9.4 Java
....67.9.5 UDP
..67.10 DFT
..67.11 FFT
..67.12 Zustandsmaschine
..67.13 Fuzzy
....67.13.1 Fuzzylogik
....67.13.2 FuzzyRegler
....67.13.3 Uebung9
....67.13.5 Softwareentwicklung
......67.13.5.1 AgileSoftwareentwicklung
......67.13.5.2 FuzzyRegler
......67.13.5.3 Uebung
....67.13.6 Umsetzung
......67.13.6.1 FuzzyRegler
......67.13.6.2 Simulation
......67.13.6.3 Optimierung
......67.13.6.4 Uebung
....67.13.7 Haengependel
......67.13.7.1 Haengependel
......67.13.7.2 Simulation
......67.13.7.3 FuzzyRegler
......67.13.7.4 Optimierer
......67.13.7.5 Genetisch
....67.13.8 Information
....67.13.9 Energie

13.1 Korrektur des Funkprojekts

  • Eines der aufgetretenen Probleme bei der Verwendung des Funkprojekts liegen daran, dass
Verbindung PA7 am Mikrocontroller mit FSK am Sende/Empfangs-Modul

Bild 13.1-1: Verbindung PA7 am Mikrocontroller mit FSK am Sende/Empfangs-Modul

  • Wie obigem Layout entnehmbar ist, besteht eine Verbindung zwischen PA7 und FSK
  • FSK steht für "Transmit FSK Data" und muß während des Sende- und Empfangsbetriebs auf logisch High gesetzt werden.
  • Dies wurde im Programm aber bisher versäumt.
  • Im nachfolgenden verbesserten Projekt, wurde dies nachgeholt.
coach2.2_06_funk_PA7_plus5Volt.zip - AVR-Projekt mit korrigierter Klasse Funk in Funk.h
void Funk::init(void)
{    DDRA |= (1<<PA4);
    PORTA|= (1<<PA4);       // Power zum FUNK-Modul einschalten
//Auch PA7:
    DDRA |= (1<<PA7);
    PORTA|= (1<<PA7);       // Funkbetrieb aktivieren
    RF_DDR |= (1<<SDI)|(1<<SCK)|(1<<CS);
    RF_PORT|= (1<<CS);
    for (unsigned char i=0; i<50; i++)
        _delay_ms(10);        // wait until POR done
    trans(0xC0E0);            // Set CLK output frequency: 10MHz
    trans(0x80D7);            // Enable FIFO
    trans(0xC2AB);            // Data Filter: internal
    trans(0xCA81);            // Set FIFO mode
    trans(0xE000);            // Disable wakeuptimer
    trans(0xC800);            // Disable low duty cycle
    trans(0xC4F7);            // AFC settings: autotuning: -10kHz...+7,5kHz
}

Code 13.1-1: Änderung in Methode init()

void Funk::start(void)
{    
    init();                        // Funkmodul anschalten und grundlegende Register setzen (z.B. autotuning)
    setfreq(RF12FREQ(433.12));    // Sende/Empfangsfrequenz auf 433,12MHz einstellen (weniger Störungen als der Standard bei 433,92MHz)
    setbandwidth(4, 1, 4);        // 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm
    setbaud(19200);                // 19200 baud
    setpower(0, 6);                // 1mW Ausgangangsleistung, 120kHz Frequenzshift
}

Code 13.1-2: Methode start() ruft Methode init() auf.