Hallo, ich komme mit einem warscheinlich ganz einfachen Problem zu euch, ich möchte mit meinem ATMega128 über den Seriellen Port auf eine kleine Platine auf der ein Max223 und ein ATmega 8515 drauf ist zugreifen und dieser 8515 soll mir dann 12 relais schalten. 4 der Pins sollen noch zur adress eingabe mittels DIP swich benutzt werden. Hat jemand von euch einen code der die Seriellen Daten empfängt, den stream mit der eingestellten Adresse vergleicht und gegebenenfalls die entsprechenden Bits am Ausgang aktiviert? Währe über jeden Tip froh. Danke euch vielmals. LG Holgi
Also für Dein Problem gibt's wahrscheinlich keine fertige maßgeschneiderte Lösung, da das Problem zu benutzerspezifisch ist. Hast Du denn schon die Kommunikation zwischen den beiden µC überprüft, so dass die Kommunikation stabil und (wenigstens das Empfangen) im Interrupt funktioniert? Das wäre der erste Schritt. Danach kannst Du auf diese Funktionen ein eigenes Transport-Protokoll aufsetzen. Mit Start/Stop/CRC-Zeichen, je nach Anforderung an Datensicherheit etc. Wahrscheinlich ist das was hiernachkommt für 12 Relais total überdimensioniert, aber ich hab's halt noch hier ;-) Fürs reine Transport-Protokol ein Ausschnitt (für signed 16-Bit Worte), mehr zum Ansatz für ein eigenes Protokoll... Features: - komplettes Variablenarray kann gesendet werden - Handshake - Timeout mit Variablenrücksetung - gleichberechtigte Kommunikation (nicht Master/Slave) (fernes Gerät sollte nach Erhalt seine VariablenListe schicken, also fürs Handshake) - beide Kommunikationspartner müssen die gleiche Arraylänge senden, dafür kann aber der Code gemeinsam verwendet werden. Bemerkung: Die SB_Structure ist nur reine u08-Pufferverwaltung mit fester Größe: Zeichen ans Ende anfügen, Counter erhöhen, am Ende des Puffers erstes Zeichen löschen und Neues am Ende einfügen etc.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
WOW, saugeil :) werde es mal leicht abändern (handshake brauche ich zur zeit nicht) und werde es mal auf der ersten Platine testen (später werden es dann mal 8 parallel mit unterschiedlichen Adressen) Danke dir vielmals LG Holgi
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.