-
        

Ergebnis 1 bis 3 von 3

Thema: Tierische Probleme mit SPI an Atmega32

  1. #1

    Tierische Probleme mit SPI an Atmega32

    Anzeige

    Hallo zusammen,

    ich bin hier im Forum so neu wie in der Programmierung mit C und habe auch gleich ein großes Problem!

    Ich bekomme keine saubere Kommunikation zwischen zwei Atmegas hin.

    Die Aufgabe ist eigentlich einfach.
    Ein Controller misst Abstände über drei Ultraschallsensoren (SRF04) und sendet die Messergebnisse (Differenz aus Timer-Startwert und Timerzählstand bei Interrupt) an den Slave-Controller, der ein Fahrwerk steuert. Ist der gemessene Abstand kleiner 6cm, sollen die Maschinen stoppen, ansonsten starten.

    Kurz zur Konfiguration:

    Mastercontroller (Steuerung.c)
    ================

    PA0 bis PA2 --> Triggerausgänge Ultraschallsensoren
    PC5 bis PC7 --> Echoeingänge Ultraschallsensoren

    Slavecontroller (Fahrwerk.c)
    ===============

    PB3 --> PWM-Ausgang Maschine 1
    PD7 --> PWM-Ausgang Maschine 2

    Beide Controller sind über SPI miteinander verbunden.

    Das Problem:

    Aus einem mir nicht verständlichen Grund kommen die gesendeten Bytes auf
    dem Slavecontroller teilweise in einer anderen Reihenfolge an. Ich
    vermute, dass Bytes "verschluckt" werden, also verloren gehen.
    Den Grund dafür habe ich nicht gefunden. Und weiter weiss ich leider
    auch nicht mehr.

    Mache ich da offensichtlich was verkehrt, oder steckt der Teufel im Detail?

    Ich hoffe, mir kann jemand helfen!

    Danke für jeden Hinweis!!!!

    Dennis
    Angehängte Dateien Angehängte Dateien

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    03.07.2008
    Beiträge
    10
    Hallo, das klingt, als ob die Sendebytes schneller ins USART Register (bzw. Shift Out Register UCSRA) geschrieben werden, als diese gesendet werden können.
    Einfacher Test dafür: Baudrate erhöhen
    Viel Erfolg

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.384
    das ist SPI und nicht uart, das arbeitet synchron und wenn das SPIF flag gesetzt ist, ist die übertragung auch ausgeschlossen ... ich hab zur zeit viel zu tun sonst würd ich mir dein code genauer anschauen, aber das was ich gesehen habe sieht ok aus ... in meinen augen liegt das problem irgendwo in nem kleinen detail das ich übersehen habe oder eventuell in der elektronik, wie haste die controller denn verbunden ? (welche distanz)

    das einzige was mir im code auffällt, du hast die slaveleitung vom SPI-slave nicht auf ausgang ... obwohl ich mir grad nicht sicher bin, ob das im slave modus nu miso oder mosi sein muss

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •