ein gutes Schlussplädoyer für den thread hier würd ich sagen![]()
Nein ist nicht Ansichtssache.Zitat von Hanni
Wenn man Basic als Interpreter-Sprache versteht,
z.B. wie vor Urzeiten der VC20/C64 und Kollegen, dann ja.
Beispiel: Teil (Zeile) des Codes übersetzten, ausführen und wieder von vorne.
Bascom wird jedoch nicht interpretiert sondern Compliliert.
Sprich es wird der gesamte Code zunächst komplett übersetzt bevor er ausgeführt wird.
Ob jetzt Bascom oder C einen besseren Code liefern kann ich nicht sagen (Tendiere aber für einen leichten Vorsprung von C).
Wenn es wirklich knallhart zeitkritisch wird,
dann hilft eh nur noch pures Assembler.
Außerdem ist der Begriff Zeitkritisch an sich eine Gummiband Auslegung.
Echtzeit wäre hier wohl der passendere Ausdruck.
Da tut sich aber jeder Chip schon schwer was soll man da von der verwedneten Hochsprache schon sagen.
Dann kann man auch gleich in binärcode arbeiten.
Widersprüche?
Gruss
Darwin (meine Projekte sind auf meiner Pinnwand zu finden)
ein gutes Schlussplädoyer für den thread hier würd ich sagen![]()
Vor den Erfolg haben die Götter den Schweiß gesetzt
Nee, blos nicht.Zitat von Vitis
Es könnte doch noch einer eine ander geniale Idee haben
(die dann doch wieder ihre Macken hat)
Gruss
Darwin (meine Projekte sind auf meiner Pinnwand zu finden)
genau wenn einer noch eine Idee hat dann soll er sie doch bitte noch dazu schreiben. Ich werde mich dann mal an die arbeit machen das mit dem IRQ aus zu probieren.
Hallo zusammen,
die beiträge sind ja schon etwas älter.
Kann mir hier jemand ein Beispielcode für die Slave geben?
ich kome einfach nicht weite
Tobias
so in etwa, aber in nem anderen thread hab ich mal ne ausführliche Sache gesehen, find sie aber nicht ... ich schau mal zuhaus nach heut abendCode:on urxc uartinterrupt enable urxc enabe interrupts ddrc = &B00000100 portc.2 alias rw_rs485 rw_485=1 ' empfangesrichtung dim Zeiger as byte dim Message(20) as byte zeiger=0 do ' Hauptschleife loop uartinterrupt: incr zeiger message(zeiger)=UDR return end
Vor den Erfolg haben die Götter den Schweiß gesetzt
Guten Morgen,
Ich weiß, dieses Thema ist schon bischen älter, aber ich hoffe, ich bekomme Trotzdem vielleicht eine Antwort. Ich habe mir paar Infoblätter durchgelesen und dort ergaben sich noch so die ein oder andere Frage. Folgende wären das:
Als Slave spricht dort was gegen den ATTiny2313? In meinem Fall sollen die Slaves nur auf Anfrage Daten aus einem Sensor holen, Verarbeiten und auf Kommando an den Master Schicken.
Als Master würde ich den ATmega644p nehmen, der hat 2 Uarts den er soll mit Bus UND dem PC Kommunizieren und mit dem PC per RS232 (Kabellänge von 50m +- etwas machbar?)
Als System dachte ich an die 4-Draht Lösung, weil dort reagieren, wenn ichs richtig verstanden habe, die Slaves nur auf Master-Anfragen und nicht auf die Slave Sendungen.
Was für ein Treiber müsste ich den für das 4-Draht System nehmen?
Beim 2 Draht System wollte ich den "sn75176" nehmen, ich weiß nicht der Sparsamste aber bei insgesamt max 15 Units denk ich ist er okay.
Für die Adressierung werde ich mich vermutlich für Dip Schalter entscheiden, aber das ist ja Geschmackssache oder?
Vom Protokoll her wollte ich es wie folgt machen:
1. Master sendet im vorgegeben Zyklus an 00 (ist ja Adresse für Alle, wenn ich das richtig verstanden habe) den Befehl, Daten aus dem Sensor holen.
2. Master Spricht nun alle Slaves seperat an und holt die Daten
3. Slaves Antworten
4. Master bereitet Daten für Ausgabe auf und los gehts.
Michael
PS: Ich hoffe man hört was von Euch und bitte berichtigt mich, wenn ich irgendwo Falsch liege.
Wenn Dein Programm da reinpasst, spricht da nichts dagegen.
50m ??? Eher nicht (ohne weiteres). Warum nicht auch RS485 ? Oder Master näher am PC plazieren.
Da bringst Du was durcheinander. 4-Draht Lösung bedeutet Full-Duplex, also gleichzeitiges Senden und Empfangen.
Bei 2-Draht RS485 (Half-Duplex) wird der Reihe nach Gesendet und danach Empfangen.
Da gibt es sehr viele...............
z.B. MAX485/MAX488/MAX491/u.s.w.
Geht auch mit 4-Draht Bus.
Richtig.
Ich nehme allerdings feste Adressen im Programm. Warum sollte ich die Adressen ändern ?
Wozu Schritt 1 ?
Mein Protokoll habe ich mit MPCM (9Bit Übertragung) aufgebaut (im Datenblatt nachschauen).
Die Slaves (der Master auch) schauen in der ISR auf gesetztes 9.Bit (Adresse wird übertragen) und machen dort nur weiter wenn sie adressiert sind (darauf folgendes Frame) > Telegramm holen und entsprechend reagieren / wenn nein > weiter in der Hauptschleife.
Man muß nur das MPCM-Bit sinnvoll auf "1" und "0" schalten..............
(der µC wird nur bei gesetztem 9.Bit in die ISR geschickt wenn der MPCM-Modus aktiv ist)
Slaves :
Die Hauptschleife bearbeitet den Sensor und der µC wird ab und zu in die ISR geschickt.
Master:
Die Slaves der Reihe nach adressieren, Daten abholen (auch in der ISR) und weiterverarbeiten..........
mfG
Willi
Kann den Bascom das überhaupt? Also mit dem 9.Bit? Habe irgendwo gelesen, dass Bascom dafür nicht optimal ist. Von daher müsste ich mir was überlegen.
Und vom Bus her denke ich, ich bleib beim 2-Wire-Bus. Habe so noch ein wenig Reservem im Cat.5 Kabel.
Und an sich sollen die Slaves ja nur Daten ermitteln und weiterleiten. Und gut, dann müsste ich mir was für die Kommunikation mit dem PC überlegen. Der PC soll aber nur mit dem Master Kommunizieren. Von daher dachte ich an RS232. Und man kann doch auch die Signale Verstärken mit passenden Treibern oder? Vorallem soll der PC nicht ständig drin hängen, sondern nur bei Bedarf. Er soll die Uhr Stellen und die Daten auch erhalten können bei Abruf.
Was ich vll noch nicht sagte ist, der Master bekommt ein RTC Chip.
Mit den Slaves hat er nix zu tun.
Und für die Dip Schalter Lösung entschied ich mich, weil ich so alle Slaves gleich bauen kann und die gleiche Software drauf spielen kann. Also so an sich Identisch. Jede Unit bekommt auch Abschlußwiderstände, die Per Jumper Aktiviert bzw. Deaktiviert werden können. Hat den Grund, so kann ich den Bus verlängern ohne großen Aufwand. Einfach Jumper bei letzten Unit raus, neue Unit hinter packen, Jumper dort rein, richtig Adressieren und fertig.
Gut ich muss dem Master sagen, dass eine weitere Unit zu gekommen ist, aber dafür kann man sich ja noch was überlegen, also ein art "Automatisches Setup". Bei diesem läuft er einfach alle Adressen durch, die möglich sind und wenn keine Antwort kommt weiß er, er ist durch.
Alternativ kann man auch sagen er läuft die Gesamten Adressen durch und Speichert alle die eine Antwort geben in einem Array ab, der nach abschluß des Setups im EEprom gepackt wird. Also Variante B wäre für den fall, dass man "unsauber" adressiert.
Michael
Geändert von lwl (04.08.2012 um 23:08 Uhr)
........... Bascom kann ! Auch Bits schreiben und lesen !
Kann man.
RS485 Treiber hast Du aber in Händen.
Warum nicht. Dann man los........
Viel Erfolg !
mfG
Willi
Lesezeichen