www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega8 Roboter


Autor: danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo. CIh habe mir überlegt einen kleinen roboter zu bauen.

Dazu habe ich diese Software geschrieben. Würde diese Funktionieren?. 
Das ist natürlich nur das grundgerüsst, das ich später erweitern werde.

An den ports  D0-D3 sind die 2 motoren angeschlossen. An pinC 0 (also am 
ADC des mega8) hängt ein IR sensor. Neben dem IR senosr werce ich auf 
derplatine einen IR LED anbringen.

.include "m8def.inc"

//beschreibung
// motoren sind angeschlossen an:
// portd 0/1 beide motoren für die vorwärtsbewegung (das beide in die 
gleiche richtung drehen an die ports d0 und d1)
// die anderen 2 kontakte der motoren an portd2 und d3
// lenkung erfolgt durch diverenz der drehgeschwindigkeiten
//ADC leuft selbstständig und liefert ununterbrochen ergebnisse ohne 
interuppts
//von pin C 0(so weit ich das mit den einstellungen begriffen habe)
// sobald die spannung an pin C 0 größer als 3,93 V is schaltet das prog 
die beiden motoren
//um, sodass sie Rückwärtslaufen. Nach einer Gewissen zeit, laufen die 
wieder vorwärts
// und lencken durch die diferenz der Motordrehzahlen den roboter eine 
gewisse zeitlang.
//Danach fährt er wieder Vorwärts.


.org $000
rjmp initialisierung




initialisierung:
ldi r16, low(ramend)
out SPL, r16
ldi r16, high(ramend)
out SPH, r16

sei
ldi r16, 0b11100111
out ADCSRA, r16
sei
sbi ADMUX, 5
sbi ADMUX, 0

ldi r16, 0b00000011
out ddrd, r16
out portd, r16   // motoren drehen vorwärts



main:
sei

in r16, ADCH
ldi r17, 200
cp r16, r17
brsh MOTOR_Ruckwarts
rjmp main


MOTOR_Ruckwarts:

ldi r16, 0b00001100  // die ports bit 3 und 2 werden nun auf 5 V 
geschalten=> motoren stoppen und drehen sich anders herrum
out ddrd, r16
out portd, r16

warten:   // zeit wie lange er rückwärtsfährt und dan wieder vorwärts

ldi r16, 255
ldi r17, 255
a1:
dec r16
brne a1
dec r17
brne a1

motorenvorwarts_mit_lenkung:
ldi r16, 0b00000011

out ddrd, r16
ldi r16, 0b00000001
ldi r17, 0b00000010
ldi r18, 200

//nun kommt die lenkung
bbb111:
ldi r26, 200
b1:
out portd, r16  //leuft ununterbrochen und der andere wird durch impulse 
verlangsamt
ldi r18, 200
m1:
dec r18
brne m1
out portd, r17
ldi r18, 50
m2:
dec r18
brne m2
cbi portd, 1
dec r26
brne b1


motor_vorwarts_ohne_lenkung:
ldi r16, 0b00000011
out ddrd, r16
out portd, r16   // motoren drehen vorwärts
rjmp main


ich hoffe jemand kann mir sagen ob dieses prog laufen würde( so wie 
gewollt), dar ich die Platine erst später aufbauen werde. Der mega wird 
mit 4 MHZ bzw 8 MHZ laufen.

lg
danny

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.