Forum: Mikrocontroller und Digitale Elektronik ATmega8 Roboter


von danny (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.