Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 01. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

Eine Abfrage oder Schleife in einer Schleife

ATMega-Controller in BASIC programmieren

Postby el_caputo » Tue Oct 07, 2008 12:00 am

Schon wieder ein neues Thema von mir

Also nach all den anfänglichen Schwierigkeiten habe ich nun die Hardware und das Grundprogramm Fehlerfrei am laufen. Aber wie es im Leben nun mal so ist, kann man an allem weitermachen. Dieses wollte ich auch tun aber leider erfolglos. Seit Tagen versuche ich meine letzten beiden Ports auch noch zu verwenden. Das sieht im folgenden so aus.

Am Portd.6 soll über eine Taste gegen Masse ein Startsignal gegeben werden. Dieses Signal soll nun an Porta.5 ausgegeben werden ( im moment an eine LED zu testzwecken ).

Mein Programm besteht mitlerweile aus einer großen schleife die in 25 Stufen unterteilt ist. Jetzt soll in jede Stufe dieses Startsignal mit integriert werden und nach einer bestimmten Zeit wieder ausschalten. Die Ausschaltzeit soll am Ende des Projekts bei jeder Stufe unterschiedlich sein, da ich bei der ersten Stufe ca 10ms einschaltdauer benötige und bei Stufe 25 dann schon ca 1sec. Ich hoffe dass mir mal wieder jemand weiterhelfen kann.

Ich hätte nie gedacht, dass einem die Programmierung so viele Schwierigkeiten machen kann.

MfG Frank
el_caputo
 
Posts: 24
Joined: Fri Jan 03, 2014 1:52 pm

Postby hardwarebasic » Wed Oct 08, 2008 12:00 am

Sollen die Anläufe sich überlappn oder nacheinander abgespiet werden? Vielleicht könntest Du mal sowas ähnliches, wie Flussdiagramm senden - und den Schaltungsauszug natürlich.
VG Michael
hardwarebasic
 
Posts: 4
Joined: Fri Jan 03, 2014 1:52 pm

Postby el_caputo » Wed Oct 08, 2008 12:00 am

Also ein Flussdiagramm zeichnen da bin ich net so der Held drin aber ich versuch es besser zu beschreiben.

Die Schlaufe fängt an mit

If U = 0 Then
...
...
...
...
...
End if

If U = 1 Then
...
...
...
...
End if

und so geht das bis

If U = 25 Then
....
...
...
...

End if
loop
end

soweit steht und funktioniert das Programm

Jetzt sollte in jede If U = ... Bedingung eine Abfrage des Portd.6. Ist der port nicht nach masse gezogen, dann normal weiter. Ist der der port nach masse gezogen, soll auf Porta.5 High gehen. Nach einer festgelegten Zeit soll der Porta.5 wieder auf Low gehen. Das dumme ist nur, dass die Zeit in der der Porta.5 auf High ist, in jeder If U .... Bedingung eine andere Zeitspanne beträgt. Natürlich sollten die If U = ... Bedingungen auch ausgeführt werden. In den Bedingungen ist nämlich meine Digitalanzeige und meine Relaisausgänge beschrieben.

Ich hoffe dass die Erklärung verständlich ist aber zur Sicherheit hänge ich noch die Datei an.


MfG Frank
Attachments

[The extension bas has been deactivated and can no longer be displayed.]

el_caputo
 
Posts: 24
Joined: Fri Jan 03, 2014 1:52 pm

Postby hardwarebasic » Wed Oct 08, 2008 12:00 am

Tut mir jetzt etwas leid, jedoch verstehe ich die Aufgabenstellung nicht ansatzweise. Wenn ich wüsste WAS alles gemessen werden soll und wie der SCHALTPLAN aussieht, würd ich nochmal versuchen zu helfen. VG Michael
hardwarebasic
 
Posts: 4
Joined: Fri Jan 03, 2014 1:52 pm

Postby el_caputo » Wed Oct 08, 2008 12:00 am

Ok dann versuch ich es mal mit der Schaltungsbeschreibung

An einem AT Mega 32 sind drei 7 Segment Anzeigen direkt angeschlossen ( = 21 Ports ). Am AD Wandler ADC7 ist ein Poti angeschlossen. Die Spannung von 0-5V ist in 25 Stufen unterteilt. Jede Stufe steht für 250V. An 5 Weiteren Ports hängen Hochspannungsrelais die mit Unterschiedlichen Funkenstrecken verschaltet sind. Wenn ich nun z.B. Stufe 1 einstelle so schaltet das Relais für 250V und auf den 7 Segment Anzeigen erscheint 0.25. Die Spannung soll als kV angezeigt werden. Durch die 25 Stufen kann ich in 250V Schritten bis 6000V durchschalten. Je nach Einstellung werden die Relais in Reihe geschaltet bzw kurzgeschlossen. Somit kann ich auch mit den Funkenstrecken 250V - 6000V darstellen.

soweit funktioniert die Schaltung schon.

Jetzt das Problem:

An einem weiteren Port soll eine Start Taste angeschlossen werden die einen kurzen Impuls gibt und somit einen weiteren Port für eine gewisse Zeit auf High schaltet.

Mit dieser Startschaltung wird das IC UC3842 gestartet das wiederum eine Hochspannungskaskade aufläd. Deswegen auch die verschiedenen Zeiten denn es dauert ja bekanntlich länger 6000V aufzuladen als 250V.

Ich hoffe ich konnte es dir etwas näher erklären.

MfG Frank
el_caputo
 
Posts: 24
Joined: Fri Jan 03, 2014 1:52 pm


Return to BASCOM-AVR-Kurs

Who is online

Users browsing this forum: No registered users and 1 guest