www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Daten auf einer Leitung Senden


Autor: Karsten B. (k-duke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seid gegrüßt liebe Elektronik-Freunde,

nach langer Zeit habe ich mich mal wieder an ein kleines Projekt gewagt 
und stecke nun bereits fest.
Ich habe vor Daten über eine Leitung zu senden, also Daten und Clock auf 
derselben. Ich habe mir das für mich so zusammengebastelt, dass Ich den 
Pegel des Pins am uC auf High setze und dann entweder zwei OVF0 für ein 
gesetztes bit, bzw. ein OVF0 für ein nicht gesetztes Bit warte, bevor 
ich den Pegel des Pins wieder auf Low ziehe.

Das ganze funktioniert schon wunderbar. Ich habe ein 
Soundkarten-Oscilloscop an den Controller angeschlossen und das zu 
sendende Byte, welches ich Hardcoded habe wird auch wunderbar 
übertragen, sobald ich den Taster, welcher das Senden startet betätige.

Das einzige Problem ist nur, dass der uC nicht mehr aufhört Daten zu 
senden.
Mir ist klar, dass es durchaus passieren kann, dass in der Zeit, in der 
ich den Taster betätige die Sende-Sequenz mehrmals durchläuft. Jedoch 
hört der uC selbst nach einigen Sekunden nicht auf zu senden, was 
insbesondere verwirrend ist, da im AVR-Simulator alles Reibungslos 
klappt.

Hier noch die Randdaten:
Genutzter uC:            attiny2313
Genutzter Compiler:      avr-gcc
Genutzte IDE:            AVR-Studio
Genutztes Testboard:     Atmel Evaluation Board 2.0 von Pollin.
Genutztes "Oscilloskop": Soundkarte mit Spannungsteiler auf Breadboard
                         mit Christian Zeitnitz' Programm
                         (http://www.zeitnitz.de/Christian/index.php?sel=scope_de)

Ich würde euch fragen, ob Ihr so gnädig sein würdet mal einen kurzen 
Blick auf meinen (durchgehend kommentierten) C-Code zu werfen?
Dieser ist als C-Datei an diesen Post angehangen.

Wahrscheinlich übersehe ich etwas total marginales.

mit freundlichen Grüßen
Karsten B.

Autor: willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorg erstmal softwaremäßig dafür das du wirklich nur einmal sendest, so 
kannst du dann bestimmen ob der fehler im µC oder vielleiciht im pc ist

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gibts auch schon was: 1-wire
Falls du das ganze nicht neu erfinden willst.

Autor: Karsten B. (k-duke)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Mir ist grad aufgefallen, dass der Quellcode gar nicht mitgekommen ist 
hehe X-D

@willi
Am PC liegt es eindeutig nicht. Ich habe an dem Pin zusätzlich eine LED 
zum Testen mal angehangen. Es macht keinen Unterschied, ob das 
Soundkarten-Oscilloskop dran hängt oder nicht.
Darüber hinaus versuch ich es ja, dass es Softwaremäßig nur ein mal 
sendet :-)

@Gast
An sich funktioniert ja das, was ich habe wie 1-Wire.
Nur die Timings sind anders und das Signal ist invertiert.

mit freundlichen Grüßen
Karsten B.

PS: Hoffe diesmal kommt die Datei mit ^^

Autor: Karsten B. (k-duke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs inzwischen schon rausgefunden.

Wie gedacht war das Problem mal wieder so einfach, dass man den Wald vor 
lauter Bäumen nicht sehen konnte.

Ich hatte ja beschrieben, dass der interne Pull-Up im uC angeschaltet 
ist, jedoch hab ich nicht dran gedacht, dass die Taster am Atmel 
Evaluation Board 2.0 von Pollin externe Pull-Downs hat. Dass das dann 
nicht klappt mit internem Pull-Up ist klar rot-werd.

mit freundlichen Grüßen

Karsten B.

PS: Wer interesse an dem von mir geposteten Code hat kann diesen gerne 
nutzen!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karsten B. schrieb:
> ist, jedoch hab ich nicht dran gedacht, dass die Taster am Atmel
> Evaluation Board 2.0 von Pollin externe Pull-Downs hat.

Dann löte mal schleunigst die Kondensatoren an den Tasten raus.
Die ergeben schöne Spikes auf VCC, wenn sie beim Drücken schlagartig 
geladen werden.
Hier wurden deshalb schon "mysteriöse" Resets berichtet.


Peter

Autor: Karsten B. (k-duke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Peter,

hm... hatte mir bis jetzt noch nie wirklich angeschaut, wie das Board 
aufgebaut ist. Wieso setzt man denn Kondensatoren an Taster?
Sollen die etwa zur Entprellung dienen?

Seltsame Idee wie ich find.

mit freundlichen Grüßen

Karsten B.

Autor: maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur so als Hinweis, Suchwort LIN Bus. Man muss ja nicht das Protokoll 
nutzen, es geht ja auch mit einem uart und dem LIN Tranceiver...

Gruß,
m.

Autor: Karsten B. (k-duke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@maddin

Danke für den Hinweis... LIN-Bus kannte ich noch gar nicht.
Aber an sich versuche ich mein eigenes Ding zu entwickeln, nicht weil 
ich denke, dass ich dies besser kann als studierte Akademiker, sondern 
um mich mindestens einmal mit Problemen solcher Entwicklungen 
auseinandergesetzt zu haben.
Das hat den Vorteil, dass man an sich wächst, was (bei mir) nicht so 
schön funktioniert, wenn man bereits ausgeklügelte Patentlösungen 
anwendet.
Dennoch werde ich mir den LIN-Bus ebenfalls zu Gemüte führen, um weitere 
Anregungen und Ideen zur Realisierung einer Ein-Draht-Datenübertragung 
in Erfahrung zu bringen.



Ich möchte nur noch mal klarstellen, dass ich nach Ansätzen gesucht 
habe, warum das Signal nicht abbricht, was ich vorerst in der Logik 
meines Quelltextes vermutet habe und nicht nach einer bestehenden Lösung 
für eine Ein-Draht-Datenübertragung. Es tut mir wirklich leid, falls 
dies aus meinem Startpost heraus nicht erkenntlich war.
Es hat sich halt herausgestellt, dass ich einen internen Pull-Up an 
einem Taster aktiviert habe, der einen Pull-Down hat.

Ich würde damit behaupten, dass der Thread damit abgeschlossen ist.

@Peter
Noch mal vielen Dank für den Hinweis auf die Kondis an den Tastern. Dies 
wird mir wahrscheinlich noch viel Ärger ersparen.

@all
Nochmal vielen Dank für die konstruktiven Beiträge ^^

mit freundlichen Grüßen
Karsten B.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.