AVR µC mit USB-RS232

Antworten
Roberto
Beiträge: 116
Registriert: Mittwoch 15. September 2010, 20:34
Wohnort: Graz (Austria)
Kontaktdaten:

AVR µC mit USB-RS232

Beitrag von Roberto » Mittwoch 28. August 2013, 00:32

Hallo Leute

Habe da zwei Tage an einem Programm gestrickt.... leider funktioniert es nicht immer so wie es soll :-(

Also das Ganze ist so..

Habe da ein Gerät das ich per RS232 ansprechen kann und das im Prinzip nur eine Schaltbox mit Relais und AVR ist

Ich will bis zu 12 Zellen hintereinander durch schalten und dann Aktionen machen..

Also z.B. auf erste Zelle schalten, wenn Spannung zu nieder, dann Netzteil dazu schalten und ein bisschen laden.
Spannungsverlauf aufzeichnen und auch Akkuspannung als Leuchtbalken speichern.
(Spannungswert komme per AVR über die Serielle zurück)

Dann weiter zur Zelle zwei u.s.w.



Leider tut das Programm aber nicht so recht...
Macht manchmal ganz komische Fehler.. :-(
Teilweise durcheinander , Teilweise werden Werte in anderen Bereichen angezeigt.

Habe dann bei allen MonoFlops ein Power-ON-Reset dazu gemacht...
Ging dann besser, aber nach einer halben Stunde gingen manche Sachen wieder durcheinander...

Zu hause habe ich das dann auf meinem Hauptrechner ohne Serielle Verbindung probiert und da lief das 1 Stunde ohne Probleme.. ?!


Den Start-Button müsste ich noch verriegeln, damit man da nicht öfter draufdrücken kann, sonst laufen mehrere Wellen durch die Kette.....


Die Serielle Kette von den Abläufen ist vermutlich nicht so gut gelöst.... aber mir viel da nicht viel anderes ein...
Sonst müsste man vermutlich viele Multiplexer verwenden, die das alles auf max. 12 Teile aufteilen..?!


Habt Ihr dazu vielleicht Ideen oder Verbesserungsvorschläge ?


l.G. Roberto
Dateianhänge
Zellen_Laden V1.10--.zip
(17.33 KiB) 372-mal heruntergeladen

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Hilfe zu einem Programm

Beitrag von KAKTUS » Mittwoch 28. August 2013, 13:16

Hallo Roberto,

so eine Schaltung kann nicht funktionieren. Sie ist ein Beispiel dafür wie man es nicht machen sollte.

Das Zauberwort heißt "MAKRO"

Zerlege deine Schaltung in Aufgabenbereiche und packe diese in ein Makro. Schließe an dieses Makro Sprünge an. Damit bleibt die Schaltung übersichtlich. Wenn das Makro funktioniert kann man es duplizieren. Wenn das Makro verändert wird, lösche die Kopien und dupliziere das geänderte Makro.

Dein Hauptproblem wird in der Kommunikation mit dem AVR sein. Damit habe ich mich eingehend beschäftigt und eine sichere Lösung gefunden.
Aber in deiner Schaltung blickst du nicht durch, geschweige denn andere. Und ich würde auch keine Bauteile überlappen.
Dateianhänge
makro.png
makro.png (71.08 KiB) 8668 mal betrachtet
stachlige Grüße, Kaktus

Roberto
Beiträge: 116
Registriert: Mittwoch 15. September 2010, 20:34
Wohnort: Graz (Austria)
Kontaktdaten:

Re: Hilfe zu einem Programm

Beitrag von Roberto » Mittwoch 28. August 2013, 15:35

Hallo Kaktus.

Ja, Makro könnte ich machen..

Schaut ein bisschen unübersichtlich aus, sind aber nur 12 gleiche Teile

Das erste Teil wurde gemacht und getestet und dann 12 mal kopiert und dann verbunden.

Leider funktioniert es in der Serie nicht so recht..

Die Power-on-Reset auf den Bauteilen war nur ein Schnellschuss um zu sehen, ob es damit vielleicht funktioniert...
Normal lege ich keine Bauteile übereinander !


Wie hast du den die Grafik mit den Makros gemacht ?
Gibt es dafür eine Funktion? oder nur die Bilder der Makros kopiert und zusammengesetzt ?

l.G. Roberto

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Hilfe zu einem Programm

Beitrag von KAKTUS » Mittwoch 28. August 2013, 16:11

Wie hast du den die Grafik mit den Makros gemacht ?
Die Frage verstehe ich jetzt nicht so 100%ig

Falls du jetzt die Rahmen im Schaltplan meinst mit den Überschriften..
Einfach um einen Schaltungsbereich eine geschlossene Verbindungslinie zeichnen und evtl drüber noch einen Bereich für eine Überschrift.
Ist nur eine rein optische Sache um Schaltungsteile abzugrenzen.

Was für eine Relaiskarte benutzt du?
Bitte Protokollbeschreibung.
stachlige Grüße, Kaktus

Roberto
Beiträge: 116
Registriert: Mittwoch 15. September 2010, 20:34
Wohnort: Graz (Austria)
Kontaktdaten:

Re: Hilfe zu einem Programm

Beitrag von Roberto » Mittwoch 28. August 2013, 21:19

Hallo Katus...

Achso.. die Bilder sind aus PL.....ok :oops:
Da machst Du dann alles noch mit Sprüngen....?!
Ich mache normal Makros und verbinde sie dann im PL. (meist ohne Sprünge)



Zu der Relaiskarte..
Das ist alles Eigenbau..

Befehl "Z0" schaltet z.B. "Relais 0" EIN u.s.w.

Mit einem anderen Befehl vordere ich einen AD-Wert vom AVR an..

Alles über die Serielle(USB)

Würdest Du(ihr) den Ablauf des Programms anders machen ?
So läuft das ja wie eine Kette durch ... (sind 12 gleiche Teile)
Leider alles mit Monoflops..

Die andere Idee wäre, das ich einen Wahlschalter für die 12 Teile mache...
Der dann von 1 bis 12 durläuft.
Müsste aber alle Bauteile multiplxen.. z.B. Anzeigen, Stringausgabe u.s.w.
grübel grübel....
Könnte vielleicht auch 12 Makros machen und dann nacheinander ansprechen lassen...
Ich werde mal probieren...

l.G. Roberto

funkybaer
Beiträge: 440
Registriert: Mittwoch 22. Oktober 2008, 08:51
Wohnort: Kitzingen

Re: Hilfe zu einem Programm

Beitrag von funkybaer » Donnerstag 29. August 2013, 07:45

Hallo Roberto

Vielleicht der Weg:

mach Dir ein "Komunikationsmodul". D.H Du sendest die 12 Werte für Deine Relais auf einmal
zum AVR und danach bekommst du die AD werte zurück .

Dann kannst Du vorher die Werde aus Deinen Modulen zusammenstellen und senden , die Empfangenen Werte zerlegen und verarbeiten .

Somit kommst Du nicht durcheinander welches Modul gerade dran ist .

Das "Ganze" in einenm vernünftigen Zyklus gesendet und empfangen ( alle Sekunden / alle 10 sekunden ) und verarbeitet.

Gruß Gerhard

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: Hilfe zu einem Programm

Beitrag von abacom » Donnerstag 29. August 2013, 08:21

ein Gerät das ich per RS232 ansprechen kann und das im Prinzip nur eine Schaltbox mit Relais und AVR ist
Macht manchmal ganz komische Fehler.. :-(
teilweise durcheinander , Teilweise werden Werte in anderen Bereichen angezeigt.
Ein beliebter Fehler bei der Programmierung von µC ist es, für den seriellen Empfang keinen oder einen zu kleinen Empfangspuffer
deklariert zu haben.

In BASCOM stellt man die Puffer z.B. so ein...

Code: Alles auswählen

' *** USB / SRIAL ***
Config Serialin = Buffered , Size = 40                      ' RS232 input buffer
Config Serialout = Buffered , Size = 40                     ' RS232 output buffer
Ohne Puffer können Zeichen unter Umständen im AVR verloren gehen, und dann hat man Probleme.

... und dann wäre da auch noch das beliebte Thema "Freilaufdioden" und Entstörung der Relaiskontakte(!).
viewtopic.php?f=31&t=784&hilit=Freilaufdioden
ABACOM support

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Hilfe zu einem Programm

Beitrag von KAKTUS » Freitag 30. August 2013, 07:48

Genau das ist der Punkt.

Was Abacom schreibt ist wichtig. Denn UART so programmieren das RX und TX über Buffer arbeitet.

Ohne Buffer wartet der AVR bis alles über den UART rausgeschrieben ist, mit Buffer schreibt er einfach in den Buffer und kann weitermachen, also auch wieder empfangen.

zu deiner Frage:
Würdest Du(ihr) den Ablauf des Programms anders machen ?
Ja. Ich würde den ganzen RS232 Teil anders aufbauen. Und zwar so das du aus dem RX Datenstrom deine Werte und Relaisstellungen ausfilterst. Profilab hat sehr gute String Verarbeitungs Funktionen.

Ich habe dir mal aus einem größeren Projekt von mir den wesentlichen Teil der RS232 Verarbeiten heraus kopiert. Bitte mal genau anschauen.
Was unklar ist bitte Fragen stellen. Ein wesentliches Bauteil ist $PART.

Wenn Test1*Test2 empfangen wird und man stellt * als Trennzeichen ein, so hat man am Ausgang 1 Test1 und Ausgang Test2.
Dateianhänge
PROFILAP.zip
(8.83 KiB) 437-mal heruntergeladen
stachlige Grüße, Kaktus

Antworten

Zurück zu „Thema RS232“