Forum: Mikrocontroller und Digitale Elektronik Frage an Atmlel Profis


von Neuling AVR (Gast)


Lesenswert?

Hallo habe angefangen mich mit dem 90S2313 zu befassen.
Leider bin ich noch nicht fit mit dem 90S2313.

Ich hoffe Ihr könnt mir Helfen ?

Nun mein Problem:
Ich möchte den 90S2313 so programmieren,
das wenn am eingang 1-4 ein Low zustad ist am ausgang
1   z.b.   2 High impulse
2   z.b.   5 High impulse
3   z.b.  15 High impulse
ausgegeben werden

Wie könnte so ein listing aussehen ??

Vielen Dank im voraus
Reiner Klein

von ThomasB (Gast)


Lesenswert?

Listing ???
welcher Compiler - Programmiersprache, oder Assembler ???? ;-)

von Peter D. (peda)


Lesenswert?

Vergiß erstmal alle Programmiersprachen.

Schalte den PC aus, nimm Papier und Stift und male Dir einen
Programmablaufplan auf.

Dann erst kannst Du auch anfangen, die einzelnen Programmschritte in
Code umzusetzen.

Und wenn dabei Probleme auftreten, frag ruhig wieder.

Falls ein Schritt mal zu komplex ist, unterteile ihn erstmal in weitere
Teilschritte.

Es ist nämlich viel einfacher ein Problem Schritt für Schritt zu lösen,
als alles zusammen auf einen Ruck.


Wenn die Probleme aber schon beim Aufmalen des Programmablaufs
auftreten wirds echt schwierig. Denn wenn Du schon nicht richtig weißt,
was Dein Programm machen soll, wie soll das dann erst ein anderer
rauskriegen ?


Peter

von Neuling AVR (Gast)


Lesenswert?

OK Danke das werde ich jetzt mal machen.



Aber ein beispiel würde mich schon mal interessieren.
damit ich den weg sehen kann.

Wegen der Programmiersprache währe ich auch für Hilfe dankbar,
da ich wie gesagt erst am beginnen bin.

Momentan habe ich mir mit dem 90s2313 ein Programierboard gebaut,
bei dem ich 8 schalter und 8 leds drauf habe.
OK led ein oder aus das bekomme ich hin,  aber wie gesagt ich möchte
lernen  wenn ich den taster 1 drücke dieser ist (low) soll die  erste
Led 2 mal blinken.
wenn ich taster 2 drücke soll die zweite led 5 mal blinken usw....

Wenn ich jetzt ein beispiel sehen würde könnte ich mir das viel
leichter vorstellen.

Danke bis bald
Gruß Rainer

von ThomasB (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
In Bascom AVR sieht das so aus.
Siehe Dateianhang


mfg:ThomasB

von AVR Neuling (Gast)


Lesenswert?

Hallo Thomas

Danke habe mich gerade damit beschäftigt und durch Deine Hilfe ist mir
jetzt einiges klar geworden.
Vielen Dank
Werde Jetzt gleich mal ein bischen probieren.

Gruß und Dank
Rainer

von Kainz Albert (Gast)


Lesenswert?

Hallo Super Forum
Bin auch gerade am anfang mit dem AVR aber in C
kann mir vieleicht einer ein listing für C einstellen.
Vieleicht finde ich dann auch den richtigen weg.

Danke
Albert

von Christoph (Gast)


Lesenswert?

Hallo AVR ler
bin nun auch noch am basteln mit led und so und wollte noch einen
schritt weiter gehen. Ich arbeite unter Bascom Avr und habe mir auch
die schaltung mit dem 2313 und einem 8515 aufgebaut.
eine led soll leuchten wenn ich taster 1 drücke und soll erst wieder
ausgehen wenn ich zwei mal taster 2 betätige.
Leider geht sie bei mir nicht mehr aus.

Bitte auch um Hilfe
Christoph

von Frank Linde (Gast)


Lesenswert?

Hallo Christoph,

dann zeig' uns doch mal Deinen Sourcecode.

Gruß, Frank

von Christoph (Gast)


Lesenswert?

Hallo Frank hier mein Listing.
lach mich bitte nicht gleich aus aber aller anfang ist schwer.


Gruß
Christoph


$sim
$regfile = "2313def.dat"
$crystal = 4000000
Dim A As Byte
Ddrb = 255 : Portb = 255
Do
Debounce Pind.0 , 1 , Led1 , Sub
'------------------------------------
Led1:
For A = 1
      Portb.0 = 1
      Wait Port PIND.0 = 2
 Then Portb.0 = 0

Return
Loop

von Christoph (Gast)


Lesenswert?

Ich nochmal Christoph
hier ist mein letzter versuch, habe ja schon bestimmt 30 verschiedene
wege versucht.


$sim
$regfile = "2313def.dat"
$crystal = 4000000
Dim A As Byte
Ddrb = 255 : Portb = 255
Do
Debounce Pind.0 , 1 , Led1 , Sub
Debounce Pind.1 , 1 , Led2 , Sub
'------------------------------------
Led1:
Portb.0 = 1
Return
Next
'------------------------------------
Led2:

Portb.0 = 0 if led2 = 2
Next
Return

von ThomasB (Gast)


Lesenswert?

Hallo Leute:
Der Befehl "$SIM" könnt ihr weglassen,ist nur zum simulieren da.
ddrb=255:portb=255
dim a as byte
do
    Debounce pind.0,1,led1,sub
    ...
    ...
    ...
loop =fehlt im Quellcode
led1:
for a= 1 to 2           rem Lässt Led0 2 mal blinken
   portb.0 = 0
   waitms 60
   portb.0 =1
   waitms 60
next
ddrb=255:portb=255 rem Schaltet alle LED´s wieder aus
return  rem und zurück zur Tastaturabfrage.

mfg ThomasB

von Christoph (Gast)


Lesenswert?

Hallo Danke erstmal.

Aber wie kann ich dann folgende aufgabe realisieren ??


Wenn ich taster 1 drücke (pind.0) soll die led leuchten (portb.0) und
soll erst wieder ausgehen wenn ich zwei mal taster 2 (pind.0)
betätige.


Mein kopf raucht schon (ich glaube das lerne ich nie)
gibt es irgendwo eine list für die befehle und deren bedeutung ??

Danke Euer lernwilliger Christoph

von Christoph (Gast)


Lesenswert?

Sorry Jetzt ist es korrekt habe oben für taster zwei falschen port
angegeben gehabt.
Wow ich wede immer besser.


Hallo Danke erstmal.

Aber wie kann ich dann folgende aufgabe realisieren ??


Wenn ich taster 1 drücke (pind.0) soll die led leuchten (portb.0) und
soll erst wieder ausgehen wenn ich zwei mal taster 2 (pind.1)
betätige.


Mein kopf raucht schon (ich glaube das lerne ich nie)
gibt es irgendwo eine list für die befehle und deren bedeutung ??

Danke Euer lernwilliger Christoph

von ThomasB (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein Quellcode ,wie man es machen könnte.
Habe Code in den 2313 gepummt,funktioniert einwandfrei.

MfG ThomasB

von Christoph (Gast)


Lesenswert?

Hallo Thomas
Danke werde mir morgen mal alle befehle und deren zusammenhang genau
ansehen damit ich den ablauf verstehen  kann.

Gruß
Christoph

von Rino (Gast)


Lesenswert?

Hallo Avr `Freaks
Hay ThomasB habe mich auch schon an dem einsteiger kurs eingegliedert.
Hätte aber noch eine Frage zur letzten  an2aus.bas .
Soweit bin ich mit hilfe meines buches auch gekommen,
aber jetzt wenn ich noch einen Timer miteinbauen will verlässt mich
mein schlaues buch !

Also alles wie bei an2aus.bas aber wenn nicht inerhalb 10 sec.  taster
2 gedrückt wird soll die led von selber aus gehen.

Geht das überhaupt ?? das man in die laufende Tastenabfrage noch einen
Timer miteinbaut ??
Währe interesannt wie das geht.

Danke und immer weiter so .

P.S.
Habe hier im Forum schon mehr gelernt wie mit dem Bascom AVR Buch.

Gruß aus Norddeutschland
Rino

von Peter D. (peda)


Lesenswert?

Hallo Rino,

für die Erzeugung von Wartezeiten ohne CPU-Zeitverschwendung ist ein
grundsätzlich anderes Herangehen an die Programmierung notwendig.

Ich habe hier mal ein fertiges Programm mit Beschreibung reingestellt:

http://www.mikrocontroller.net/forum/read-4-49709.html


Leider kann ich kein Basic, sondern nur C und Assembler. Das Beispiel
wurde deshalb mit dem kostenlosen WINAVR übersetzt.


Peter

von Rino (Gast)


Lesenswert?

Hallo Peter
Danke gut gemeint aber Assembler und C kann ich überhaupt noch nicht.

Bräuchte Hilfe Listing in Basic.

Leute helft mir !

Gruß Rino

von Peter D. (peda)


Lesenswert?

Ne, ohne C-Kenntnisse brauchst Du Dir das garnicht erst anzusehen.

So ein Scheduler ist schon ne feine Sache, aber ich glaube nicht, daß
es etwas ähnliches schon fertig für Bascom gibt.


Vielleicht, daß der Bascom-Entwickler sowas noch dazuentwickelt.

Aber von C nach Bascom umzuschreiben sollte auch schwer werden, da
Bascom keine Strukturen und Funktionspointer unterstützt.
In C siehts ja schon nicht so einfach aus und ich habe auch lange dran
gesessen.


Peter

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.