Attiny2313 mit MAX487 zum Laufen bringen

#2751438
Lesenswert?

Hallo,
wie schon mal geschrieben bin ich ein ziemlicher Anfänger im Bereich der 
AVR Programmierung, aber ich lerne dazu.
Was bisher funktioniert: Attiny2313 kann mit AVR-Studio4 und WinAVR 
programmiert werden. Ports als Ein-/Ausgänge definieren ist auch kein 
Problem und eine LED mit PWM zu dimmen und per Schalter ein/ausschalten 
ist auch ok.

Allerdings scheitere ich zu Zeit an der Verbindung Attiny2313-MAX487 mit 
dem PC (Schnittstelle HXSP-2108G). Über Arduino und den COM-Monitor kann 
ich Daten senden bzw empfangen.
Das Problem ist aber, dass die gesendeten Zeichen als ganz andere 
Zeichen wieder ankommen und die Kommunikation einfach nicht 
zufriefenstellend funktioniert.

Gibt es einen Schaltplan für eine einfache Verbindung 
Attiny2313-MAX487-PC (inkl. Terminierung usw...) mit Softwarebeispiel in 
C (AVR-STUDIO)?

Würde mir wirklich sehr weiterhelfen.
Gast #2751460
Lesenswert?

Wo ist das Problem genau? Wenn nur wirre Zeichen kommen kann es sein das 
A und B vertauscht sind.  Du musst den Reciever des IC abschalten wenn 
du sendest bzw den Transmitter abschalten wenn du empfängst.
Gast #2751472
Lesenswert?

Achso, verstehe. Lieber was fertiges nehmen als selber Nachdenken bzw. 
Das Datenblatt lesen. Na dann viel Spass.

Wenn du die Details nicht wissen willst musst du dich nicht wundern 
wenn's nicht geht. So etwas nennt man Pfusch.
#2751896
Lesenswert?

so wars natürlich nicht gemeint, aber ich will ja damit nicht das Rad 
neu erfinden und wenns schon fertige Lösungen für die Kommunikation mit 
MAX487 gibt dann könnte ich ja darauf aufbauen... hab nur eben noch 
nichts passendes gefunden und wollte hier einfach fragen ob sowas jemand 
schon hat oder zufällig einen guten Link kennt...
#2758786
Lesenswert?

senden von attiny2313 => MAX487 => MAX487 => attiny2313 funktioniert 
einwandfrei, allerdings empfängt der PC die Daten nicht korrekt, also 
nur wirre Zeichen.
Ich verwende den internen Taktgenerator des Attiny2313, kann es daran 
liegen, dass die baudrate zu ungenau ist, jedoch von attiny2313 zu 
attiny2313 ausreichend genau ist?

Bitte um Hilfe, danke!


Hier der Code des Senders. Es wird bei Tastendruck jeweils ein x 
gesendet. Der Empfänger quittiert den empfang des Zeichens durch 
schnelles blinken einer LED wenn x erkannt wird, bzw durch langsames 
blinken bei einem anderen Zeichen.
1
// Software 1
2

3
#include <avr/io.h>
4
#include <util/delay.h>
5

6
#define F_CPU 1843200UL
7

8

9
int main (void)
10
{
11
CLKPR = 0x80;
12
CLKPR = 0x00;
13
unsigned char get;
14
get='x';
15

16

17
//baud=4800UL;
18
/* Set baud rate */
19
// Set baud rate bits
20
UBRRH = (23>>8);
21
UBRRL = 23;
22
/* Enable receiver and transmitter */
23
UCSRB = (1<<RXEN)|(1<<TXEN);
24
/* Set frame format: 8data, 1stop bit */
25
UCSRC = (0<<USBS)|(3<<UCSZ0);
26

27
DDRB = (1 << PB0); // Pin 1 von Port A (PA1) als Ausgang schalten (für LED)
28
DDRD = (1 << PD2); // Pin2 an Port D als Ausgang setzen zum aktivieren des MAX487
29
DDRB != ~(1 << PB1); // Pin 0 von Port B (PB0) als Eingang für Taster schalten
30

31
PORTB |= (1 << PB0);  // bit im Portregister auf 1 setzen => LED an
32
PORTD |= (1 << PD2);  // bit im Portregister auf 1 setzen => MAX487 sendet
33

34

35
// ab hier Endlosschleife
36
for (;;) {
37

38

39
  if (!(PINB & (1<<PINB1))) {   //Taste gedrückt
40
  /* Wait for empty transmit buffer */
41
  while ( !( UCSRA & (1<<UDRE)));
42
  /* Put data into buffer, sends the data */
43
  UDR = get;
44
  _delay_ms(1000);
45

46

47
}
48

49
}
50

51
}
#2759877
Lesenswert?

Hallo!
Bei so viel Unkenntnis will ich mal gnädig sein: Der interne 
Taktgenerator kann bei bestimmten Konstellationen geeignet sein, eine 
Kommunikation über das UART-Interface zu ermöglichen. Du liest jetzt 
hier "kann" und vermisst vielleicht "stabil" und "dauerhaft" und 
vielleicht auch "definierte Baudrate"; dafür ist der interne 
RC-Generator nicht gedacht und auch nicht geeignet. Zwischen zwei Tinys, 
aus der gleichen Charge, bei gleichen Umgebungsbedingungen kann man die 
Abweichungen ja überhaupt nicht bemerken. Erst im Zusammenspiel mit 
fixen Datenraten (PC) tritt das Chaos zu Tage.
Wenn Du dann noch sowas machst, wird es lustig:
> Ich verwende den internen Taktgenerator des Attiny2313,
> #define F_CPU 1843200UL
#2759898
Lesenswert?

Danke!
Mittlerweile habe ich mich schon mehr eingelesen und hab mir gleich mal 
Quarze bestellt (natürlich auch 22pf Kondensatoren) um einen stabilen 
Takt zu erzeugen. (Dann muss ich noch die Fuses richtig setzen etc..)
Ich gehe eben nach dem Prinzip learning-by-doing vor und wer liest schon 
die 240 Seiten des Attiny2313 durch bevor er eine kleine Testschaltung 
zusammenbaut? ;)
Das ist eben mein allererster Versuch einen Mikroprozessor zu 
programmieren, aber dafür bin ich mit dem Fortschritt recht zufrieden ;)
#2768327
Lesenswert?

OK, jetzt funktioniert (dank Quarz) die Kommunikation zwischen PC und 
attiny2313 (PC-COM1-ICL232-MAX487-MAX487-attiny2313), mit einem kleinen 
Problem: Pin 7 am seriellen Port (also DTS) ist immer auf High und 
deshalb ist auch der MAX487 immer aktiviert und verhindert den Empfang 
der Daten (manuelles high und low Pegel setzen funktioniert, dann kann 
ich dementsprechend senden/empfangen)

Kann es am Logilink USB2Seriell Adapter liegen, dass DTS immer High ist? 
wie kann ich dieses Problem lösen?
#2784165
Lesenswert?

Kurzer Zwischenbericht:
die Haussteuerung funktioniert (das Problem lag am einzigen fertig 
gekauften Teil: dem USB auf RS485 Adapter)

Die Frage ist nun welches Kabel idealerweise für das gesamte System 
benutzt wird?

Es sollte 4 Adern haben (+5V, GND, A, B) wobei A,B eben verdrillt sein 
sollten. Verbraucher sind nur die Attiny2313 mit MAX487 (ca 40 STK in 
der Endausbaustufe), MosFETs für die LED-Steuerung, Transistoren, die 
über eine seperate 12V Leitung die Relais schalten und evtl Brandmelder, 
die aber nicht viel Leistung beziehen. Also an sich sollte nicht viel 
Last an der 5V Leitung hängen.
#2854726
Lesenswert?

Mein Hausbus-System läuft! Vielen Dank für die Hilfe bzw die zahlreichen 
hilfreichen Einträge im gesamten Forum!

Hier mal die Eckdaten:

- Attiny2313 mitttels MAX487 an RS485-Bus und passt in eine 
Unterputzdose (siehe Bild in Anhang)

- jeweils 12 frei konfigurierbare Ports für Taster - inverse Taster - 
LED mit Software PWM - Rollläden Steuerung - Rauchmelder Vernetzung I/O 
- DS18S20 (Temperatur) bzw DS2438 (Temperatur+A/D Wandler) 1-wire 
Sensoren

- die Software am Attiny2313 (hat gerade noch drauf gepasst mit 2026 
bytes) ist auf jedem Controller gleich und man kann an jedem beliebigen 
Port jedes Gerät anschließen - die Konfiguration erfolgt ausschließlich 
über den PC bzw den RS485 Port

- die Steuerung erfolgt zentral über einen PC und die serielle 
Schnittstelle

- Konfiguration und Daten werden über eine MYSQL Datenbank 
abgelegt/ausgelesen, somit ist der Zugriff auch über PHP möglich

- Android App folgt noch
Angehängte Dateien:
Gast #2858308
Lesenswert?

Hi!

Erst mal Gratulation! In knapp drei Monaten vom "ziemlicher Anfänger" 
zum fertigen Hausbus, das ist nicht schlecht. Zumal, zumindest in diesem 
Thread, keine echte Hilfestellung gegeben wurde. Auf die Einlassungen 
der "Gnädigen" hättest Du sicher verzichten können. -scnr-

Gibt's denn noch ein paar Infos zum Gesamtsystem?
Z.B.: PC-Steuerung, Betriebssystem, Aktoren, etc.
Würde mich (und sicher Andere auch) interessieren und, man muss das Rad 
ja nicht jedesmal neu erfinden. ;-)

Readya
Charlie
#2869855
Lesenswert?

charlie schrieb:
> Gibt's denn noch ein paar Infos zum Gesamtsystem?
> Z.B.: PC-Steuerung, Betriebssystem, Aktoren, etc.
> Würde mich (und sicher Andere auch) interessieren und, man muss das Rad
> ja nicht jedesmal neu erfinden. ;-)

Leider hab ich derzeit ein bisschen Stress, denn das Haus um die 
Steuerung muss auch gebaut werden ;)

Die Steuerung ist in C programmiert und läuft auf einem Windows7 PC, auf 
dem auch gleich in einer VirtualBox ein FreeNAS Server läuft.
Die Aktoren sind auch selbst gelötet, zB für Rolläden mit Transistor und 
12V Relais, 230V (LED) Dimmer mit Nulldurchgangsdetektor und 
Phasenanschnittsteuerung...

wenn ich mal dazu komme werde ich bestimmt eine detailiierte Aufstellung 
posten!
#3122527
Lesenswert?

Der Hausbau startet bald und ich bin schon gespannt, ob die 
Haussteuerung in der Praxis auch so funktioniert, wie bei mir am 
Schreibtisch ;)

Werde auf jeden Fall den Einbau/Aufbau etc dokumentieren!

Gestern habe ich von SOS-electronic den CO2 Sensor erhalten um damit die 
kontrollierte Wohnraumlüftung überwachen/steuern zu können.

Ich denke damit sind alle Geräte vorhanden und ich wünsche ein schönes 
Frühjahr!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren