-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: AtMega32 ASURO im Vollausbau

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847

    AtMega32 ASURO im Vollausbau

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    ich wollte euch noch meinen voll ausgebauten Atmega32 - ASURO vorstellen:

    - Atmega32 Erweiterung
    - 3 IR-Leds zur Entfernungsmessung
    - Bluetooth
    - ISP Adapter
    - LCD Display 1x16 Zeichen

    In diesem Ausbau sind nun alle PINs des Prozessors belegt und dennoch alle Grundfunktionen des Standart-Asuros verfügbar.

    P.S. Special Thanx to Mr. E-Robotix für die Unterstützung.

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Hallo pinsel120866,

    da bist Du ja richtig flott vorangekommen. Gratulation, Glückwunsch, volles Lob. Sieht SEHR aufgeräumt aus. Allerdings sind dann noch etliche Pinne belegbar - denn der asuro hat ja auch etliche gleich doppelt belegt *gggg*. War nicht wirklich ernst gemeint, das ist ja nicht so wichtig.

    Wie geht das mit dem Blauzahn? Hast Du da schon eine Kommunikation mit dem PC in Betrieb? Das würde mich interessieren.
    Ciao sagt der JoeamBerg

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    Hallo Nachbar,

    danke für das Lob, was die Mehrfachbelegung der PINS angeht hast du recht, allerdings wird es dann etwas schwierig für mich mit der Programmierung wie dir ja hinlänglich bekannt ist. Die mittlere IR-Diode habe ich eingebaut weil der Abstand der anderen beiden zu groß war und der Asuro bei einem zu schmalen Hindernis (Stuhlbein) mittig dagegengeknallt ist.

    Was Bluetooth angeht, schicke ich mir derzeit die Daten der IR-Dioden, Liniensensoren und die Odometriedaten auf den PC. Auch eine Fernsteuerung mit der Tastatur habe ich schon erfolgreich getestet. Leider ist "nur" eine Serielle Verbindung möglich, sonst hätte ich schon überlegt Audio- und Videodaten auf den PC zu schicken, aber dafür reicht wohl die Bandbreite nicht aus.

    Prozessor flashen via Bluetooth wäre eine coole Sache, da bin ich aber nicht mal in Ansatz so weit einen Treiber zu programmieren. Derzeit muss ich, wenn ich via ISP flashe das LED abstecken (so viel zum Thema Mehrfachbenutzung der PINS )

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    70
    Beiträge
    1.344
    hi Pinsel,
    gefällt mir, habe zur zeit leider gar keine zeit für den asuro, schaue nur sporadisch mal ins forum rein

    wie machst du es mit der lib? Alles auf den atm32 umgestrickt?
    gruß inka

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Zitat Zitat von pinsel120866
    ... da bin ich aber nicht mal in Ansatz so weit einen Treiber zu programmieren ...
    Wenn ich sehe, wie viel und wie sauber Du bisher alles hinbekommen hast, dann habe ich für den weiteren Fortschritt keinerlei Bange. Das bringt einfach die Zeit mit sich . . . .

    Viel Erfolg weiterhin
    Ciao sagt der JoeamBerg

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    Hi inka,

    nett dass du mal wieder reinschaust - alle Prüfungen positiv bestanden? Die Lib ist an den Atmega32 angepasst, stimmt.

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    70
    Beiträge
    1.344
    hi pinsel,
    ja, sofern man das als bestandene prüfung betrachten kann, dass man nach 6 jahren zwangspause als konstrukteur und nach einem 4monatigem cad-lehrgang den arbeitgeber im laufe von 2 monaten von seinen qualitäten überzeugen kann, dann hast recht

    ich muss mal die nächsten 2 monate noch abwarten, dann möchte ich wieder hier was tun...
    gruß inka

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    Nun möchte ich noch den Abstand meiner mittleren IR-LED ausgeben. Die LED ist am PIN33 (PA7) des Atmega32 angehängt.

    In der asuro.h habe ich folgendes eingetragen:

    Code:
    #define IR_RIGHT  (1 << MUX1)	//rechts
    #define IR_LEFT	  ((1 << MUX0) | (1 << MUX1))	//links
    #define IR_MITTE  (1 << MUX2) //mittig???
    In der asuro.c:

    Code:
    /* Funktion zum Auslesen der IR-Sensoren (links, rechts, mitte) */
    void IRData(unsigned int *data)
    
    {
        // Prozessorinterne Referenz verwenden
        // Multiplexer auf linken Sensor schalten
        ADMUX = (1 << REFS0) | (1 << REFS1) | IR_LEFT;	
    	// Wandlung starten
        ADCSRA |= (1 << ADSC);				
    	// Warten, bis Wandlung beendet			        
        while (!(ADCSRA & (1 << ADIF)));	                
    	// ADCIF zurücksetzen
        ADCSRA |= (1 << ADIF);			        
    	// ADC-Wert auslesen
        data[0] = ADCL + (ADCH << 8);			
    
        // Prozessorinterne Referenz verwenden
        // Multiplexer auf rechten Sensor schalten
        ADMUX = (1 << REFS0) | (1 << REFS1) | IR_RIGHT;	
    	// Wandlung starten
        ADCSRA |= (1 << ADSC);				
    	// Warten, bis Wandlung beendet		
        while (!(ADCSRA & (1 << ADIF)));			
    	// ADCIF zurücksetzen
        ADCSRA |= (1 << ADIF);
    	// ADC-Wert auslesen
        data[1] = ADCL + (ADCH << 8);
    				
        // Prozessorinterne Referenz verwenden
        // Multiplexer auf rechten Sensor schalten
        ADMUX = (1 << REFS0) | (1 << REFS1) | IR_MITTE;	
    	// Wandlung starten
        ADCSRA |= (1 << ADSC);				
    	// Warten, bis Wandlung beendet		
        while (!(ADCSRA & (1 << ADIF)));			
    	// ADCIF zurücksetzen
        ADCSRA |= (1 << ADIF);				
    	// ADC-Wert auslesen
        data[2] = ADCL + (ADCH << 8);			
    }
    Die Werte der rechten und linken LED stimmen, aber die Mittlere liefert Quatsch.

    Was habe ich falsch gemacht?

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Hallo pinsel120866,

    es ist ja schon wieder mal spät und ich war wieder mal eine ganze Strecke unterwegs - bin also etwas hirnträger als sonst. Aber ich habe irgendwie im Hinterkopf, dass beim Umschalten von einem ADC-Port auf den anderen besondere Vorsicht nötig ist. Siehe dazu die Dokumentation 8155A–AVR–06/08 auf S. 214 22.6 Changing Channel or Reference Selection. Ich glaube, da muss man ein bestimmtes Timing einhalten.
    Ciao sagt der JoeamBerg

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beiträge
    847
    OK, ich hab's gelesen und nun folgende Syntax daraus interpretiert:

    Code:
    #define IR_RIGHT  					 (1 << MUX1)   //rechts ADC2 
    #define IR_LEFT     (	(1 << MUX0) |(1 << MUX1))   //links ADC3
    #define IR_MITTE  	(	(1 << MUX0) |			(1 << MUX2)) //mittig ADC5
    Gibt mir folgendes aus:

    Code:
    Linksschwenk - Liniensensor Links:243 Mitte:662 Rechts:236
    Geradeaus - Liniensensor Links:248 Mitte:661 Rechts:227
    Geradeaus - Liniensensor Links:248 Mitte:705 Rechts:240
    Geradeaus - Liniensensor Links:254 Mitte:704 Rechts:231
    Geradeaus - Liniensensor Links:256 Mitte:706 Rechts:240
    Halbrechtsschwenk - Liniensensor Links:271 Mitte: 406 Rechts:236
    Hier ist das Timing (glaube ich) eingehalten, aber die Werte der Mitte stimmen nicht...

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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