bin gerade dabei zwei AVRs über eine Datenleitung mit 8 leitern zum komunizieren zu bringen. will aber noch nicht ganz so redht klappen. Deshalb frage ich hier: Kann ich die I/O-Pins der beiden AVRs direkt miteinander verbinden um die Signale des anderen AVRs auslesen zu können oder muss ich erst einen Pull-Up Wiederstand dazwischen schalten???
1 AVR auf Ausgang einer auf Eingang dann geht es. auch ohne Pullup der AVR hat PUSH/PULL Stufen an den Ausgängen.
soweit war ich auch schon. hat aber trotzdem nicht geklappt und laut Oszilskop kommt da nur ein frequenzschmodder heraus wenn beide verbunden sind(Testprogramme hab ich schon auf den AVRs).
Wie sieht der code denn aus? BTW: Gibt es einen Grund 8 Datenleitungen zu verbraten? Alle Welt geht weg von paralleler Übertragung. Grüße, Freakazoid
möchte einfach nur testen ob es möglich ist
Setz doch einfach mal konstant eine Port und les ihn ein. Welcher der Files soll den sender und welchermpfänger sein? Was sagt das Ozi ohne angeschlossenen zweiten AVR?
Solange du Programmierfehler nicht ausschließen kannst, solltest du Widerstände in die Verbindungsleitungen schalten, die den Kurzschlussstrom (wenn beide AVRs Ausgang sind) auf ein erlaubtes Maß begrenzen. Dann kannst du testen und machen, ohne dass etwas kaputt geht. ...
Stimmt, mach das mal, hatte ich ganz vergessen zu sagen g
In Test2.asm deklarierst Du PortB auch als Ausgang. Damit treibst Du mit beiden Ausgängen gegeneinander. Widerstände einbauen und Code ändern! Grüße, Freakazoid
BTW: ldi r16,0b00000000 ;Port C wird als Ausgang definiert out DDRC,r16 0=INPUT 1=OUTPUT Grüße, Freakazoid
vielleicht kannst du einen inverter (oder 2) dazwischenschalten. dann brauchts keine pullups oder -downs, ausserdem wird das bei RS232 ja auch so gemacht. oder irgend ein puffer, 74LS245 oder so was in die richtung. gruss
Es brauch auch so keine Pullups und -downs. Notfalls hätte er im AVR welche drinne. Inverter sind also überflüssig. Einzig die Strombegrenzung (Widerstände) ist Pflicht. Grüße, Freakazoid
danke für die Tips. Die Datei Test2 ist für den atmega der bei korrekt empfangenen Signal eine LED zum leuchten bringen soll. ATTest ist für den AT90S2313 und ohne Anschluss des Atmega zeigt das Oszi ein super Rechteck Signal an. Aber eine Frage noch, wie groß soll ich die Wiederstände wählen um das Signal nicht ganz abzuschwächen??? Bei der Logikspannung von 5 V soll meines Wissens nach eine Differenz von 0,2 V , zur Sicherheit, erlaubt sein. Das habe ich aber bisher aber nur in einem Buch über Mikroprozessoren gelesen(ist sehr interressant das Buch).
Abschwächen dürftest du das Signal mit einem Widerstnad nicht. Bei hohen Frequenzen werden nur die Signalflanken ein wenig schlechter. Der Widerstand sollte so sein, daß, wenn ein Einpang Vcc und der andere GND ist, der maximale Portstrom nicht überschritten wird. Bei einem AVR und 20mA bei 5V komme ich auf 250Ohm. Deshalb würde ich es einfach mal mit 560 versuchen, dann bist du auf der sicheren Seite. Mike
Hallo, in Test2.asm schreibst Du: "in r16,PORTB" das muss aber heißen: "in r16, PIND" s. auch IO Grundlagen im Tutorial... Gruß, Dennis
Sorry, "in r16, PINB" - 'B' wie Berta, natürlich...
Wie lang soll eigentlich die Verbindungsleitung werden? Wieviel solcher Leitungen soll es geben? Soll jeder AVR eine eigene (getrennte) Stromversorgung bekommen?
Ja jeder soll eine eigene Stromversurgung bekommen und die Verbindungsleitungen sollen nicht länger als 15 cm lang sein. für die Stromversorgung habe ich mir ein Spannungsstabilisiertes Netzteil mit zwei Ausgängen gebaut(nur 0,07V abweichung).
Sorry, hab mich im Cod etwas vershrieben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.