PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ansteuerung mit einem At90S2313



Schorsch321
28.02.2005, 21:31
Hi Leute.

Will hier ein ziemlich komplexes Projekt planen und bauen. Den Microcontroller At90S2313 und entsprechenden teile für den bau hab ich schon (siehe schaltung).
Ich hab eine kurze Zeichnung gemacht über den Aufbau des Microcontrollers und die zu schaltenden Kabel. Ich hab noch dazu kleine Relais mitbestellt die ich direkt an den Microcontroller anschließen kann und somit alle Kabel schalten kann (nicht auf Zeichnung zu sehen). Abgesehen vom Zusammenbau hab ich noch das Problem mit der Programmierung des Controllers. Bin grade drüber mir noch eine Schnittstelle zu bauen. Programme hab ich auch(ponyprogV206c und BASCOM-AVR Demo).
Ich habe mir gedacht alles Über Basic zu programmieren. Leider habe ich nicht so viel Ahnung. Habe früher lediglich einen Grafikfähigen Taschenrechner zu schulzeiten programmiert (mit Basic).
Ich hatte gehofft das mir jemanden vielleicht dabei helfen könnte. Vielleicht auch wie ich am besten die „kleinen“ Relais für die Ansteuerung am Controller anschließen sollte. Ich hab mir mal aufgeschrieben wie der Controller programmiert werden müsste:

(Link des Schaltbildes)
http://home.arcor.de/hasimausi65/schaltung.jpg

Funktion der Schaltung (erklärung)

- Wenn 6-Kabel einen 2 fachen Masse Impuls von 0,8 sek. innerhalb 3 sek. gibt soll der
Microkontroller anfangen zu arbeiten. (Aktivierung)

Microcontroller soll folgende Schritte durchführen:

-5Kabel auf plus schalten
-1Kabel auf plus schlaten (Zündung) und 3 sek. warten
-nach 3 sek. 2Kabel für 2sek. auf plus schalten (Anlasser), 5sek. warten
-Prüfen ob Kabel3 Strom führt (also ob der Motor angesprugen ist),
wenn nicht, soll er den Anlasser noch mal für 2 sek. auf plus schlaten und 5sek. warten
wenn jetzt kabel 3 Strom führt weiter zum nächsten Schritt,
wenn nicht,alles abschlaten und auf 2 faches Impuls von Fernsteuerung warten (Anfang)
-nächster Schritt: 4Kabel auf Plus schalten (Geräte im Auto) und 20 min. warten
-nach 20 min. alles abschlaten (Anfang-warten auf 2 fachen Impuls....)

Ich möchte den Vorgang im Microcontroller immer per Fernbedingen durch einmaliges Drücken (0,8 sek. Impuls am Kabel6) stoppen können. So damit sich der microcontroller alles auschaltet und wieder auf den 2 fachen Impuls wartet. Desweitern soll Kabel7 genauso den Microcontroller stoppen können (dauer masse)

So, ich hoffe ihr versteht meine Logik *G* ich danke schon mal im vorraus für euer Hilfe.

Mit freundlichen Grüßen Marcus

04.03.2005, 22:04
Hallo,
hab deine Logig zwar nicht verstanden aber du sagtses, du hast schon GETRs programmiert, dann sagen dir wohl die Befehle etwas:
Do
Loop
Goto
for a=? to ?
next a
die Neuen Befehle zum ansteuern von Ports und die Warteschleife ist eigentlich relativ einfach

$regfile = "2313def.dat"
$crystal = 10000000

Das ist die Floskel die dem Compiler den Chip und die Quarzfrequenz angibt
Hoffe das bringt dich dem Ziel etwas näher:
grüßle :D
Um einen Port anzusteuern musst du einen Port oder Pin als ein-bzw Ausgang definieren:
Config portx = input/output
Config pinx.y = input/output
wenn der port definiert ist kanste in so ansteuern:
Portx = ?
portx.y = 0/1
eine Warteschlaufe wird der Compiler selbst erzeugen wenn:
wait ? (warte sekunden)
waitms ? (warte milisekunden)
waitus ? (warte mikrosekunden)

Alle angaben gelten für den Compiler Bascom ( Demo gibts zum Downloaden)

Schorsch321
06.03.2005, 21:35
Hallo.

Danke für die Antwort, hab schon gedacht das mir niemand helfen kann.

Aber einwas hab ich noch nicht verstanden. Wie kann ich realiesieren wenn der Controller gerade 5 minuten wartet (wait 300) um danach ein bestimmte sache anzusteueren, wie ich dann den Vorgang durch einen masseimpuls bzw. "dauermasse" an einem bestimmten port unterbrechen kann und damit der controller auf ausgangsposition zurück springt???


Gruß Marcus

teslanikola
06.03.2005, 21:49
Tja, bin zwar in bascom recht ;-) gut bewandert,
muss da aber au mal drüber nachdenken!! ](*,) :-k

teslanikola
06.03.2005, 22:04
[glow=red:699c387101]Das ist die Lösung deines problems:[/glow:699c387101]

Dim A As Integer

Do
Waitms 1
A = A + 1
Loop Until A = 500000 Or Portd.0 = 1

Entweder portd.0 = 1 oder die 3 Min sind vorbei wird dei schlaufe unterbrochen!

teslanikola
06.03.2005, 22:05
Unterschätzt nie die Macht eines Anfängers

Schorsch321
07.03.2005, 16:57
Hey Leute.

Danke für die Antworten ;)

also ich hab mir das jetzt mal theoretisch (dareienach) so gedacht:

Ein zweifacher masseimpuls von jeweils 0,8sek (innerhalb von ca. 3-7 sek) startet einen beliebigen Vorgang



Config Portb = Output
Config PortD = Input
Lbl A
If Pind.6 = 0 (erster impuls von 0,8 sek)
Then Goto A
Else Goto B
Lbl B
1=W
Lbl C
W+1=W
If W=8
Then Goto A
Else Goto D
Lbl D
If Pind.6 = 0 (zweiter impuls von 0,8 sek)
Then Goto C
Else Goto E
Lbl E
jetzt wird irgendetwas geschalten....

Mein Controller funktioniert mit einen 4 Mhz Quarz... wie gesagt, das ist nur erstmal theorie vielleicht
muss ich den zähler noch erhöhen oder verringern, aber das werde ich sehen (durch probieren)

Was sagt ihr zu diesen anfangsprogramm?? ist ein fehler in meinen Überlegungen? Wäre für jeden Radschlag
Dankbar..


MFG Marcus

teslanikola
07.03.2005, 17:03
Frage haste das schon mal Simuliert????
Goto geht in Bascom nämlich so:

start:

BlaBlaBlaBla

goto start

07.03.2005, 18:11
Hallo @ teslanikola

wie kann ich denn ein programm simulieren was ich über basic geschrieben habe??? gibs da programm wo ich auch direkt meinen typ von microcontroller anwählen kann??? (in meinem fall Atmal AT90S2313)???

MFG Marcus Bocksch

Schorsch321
07.03.2005, 18:17
Also der "Gast" grade eben war ich...

hab nur noch was vergessen zu fragen bezüglich den "goto" befehl....
also muss ich schreiben:

A
blabalbal
If....
Then Goto B
Else Goto A
B
blabalbal


Stimmt das so??

teslanikola
07.03.2005, 20:15
Wichtig Doppelpunkt ned vergesse, da der compiler sonst denkt das des a Variable is:

a ' variable
a: ' wegpunkt
Als compiler und simulator versuchs mal damit ( nehm i a )
http://www.mcselec.com/download_avr.htm
die demo ist nur in der Codegröße begrenzt ( nur bis 2 kB flash )
aber reicht locker auch für komliziertere codes locker

Ps 1: Komentare beginnen in bascom mit ' ( clr + # )
Ps 2: hasch du ICQ?[/code]

07.03.2005, 20:48
Okey...hab jetzt mal ein Programm in Bascom-AVR geschrieben und wollte mein programm simulieren.
Da kam die Fehlermeldung

"OBJ or DBG file not found"

was hat das zu bedeuten??

Meine icq nummer lautet 103458672

teslanikola
07.03.2005, 21:22
bin in ICQ testfahrer, schau mal

Schorsch321
21.03.2005, 19:29
wir haben jetzt durch zufall eine möglich lösung gefunden. Und zwar statt

www.roboternetz.de
mal:
https://www.roboternetz.de/phpBB2/portal.php

eingeben.....


jetzt geht es.......... muss an der Verlinkung liegen...

übrigens, danke für eure schnelle Antwort .

Gruß Marcus

könnt ja mal schreiben, wenn es euch weitergeholfen hat..

Schorsch321
21.03.2005, 19:30
also DAS war jetzt garantiert die Antwort im falschen Forumzweig *G* (zja, wenn man immer so viele Fenster mit einmal offen hat) *G*