www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie komm' ich an die Daten aus einem 8-Beiner?


Autor: Koko Lores (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich vermute mal, dafür gibt es DebugWire oder so - leider gibt es 
noch keinen Artikel zum Software-Debuggen/Entwickeln.

Jedenfalls möchte ich mal sehen, was der ADC so mißt, aber wie? 
Messergebnis (10bit) vierteilen und per 8-bit PWM woanders ausgeben?

Bei Tastendruck ins EEprom schreiben und dann mit dem Programmieradapter 
auslesen?

Autor: Zacc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, man kann daten auch seriell an einem Pin ausgeben und dann mit dem 
Scope nachschauen.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, einen 8-Beiner hast Du da also. Das ist ja schön für Dich.

Du bist Dir offensichtlich nicht im klaren darüber, daß es -geschätzt- 
10E3 verschiedene Controller in dieser Bauform gibt ...

Also: WAS für ein 8-Beiner soll das sein?



(Sonst steht hier die nächste Steinigung mit Glaskugeln an)

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus t. Firefly wrote:
> Ach, einen 8-Beiner hast Du da also. Das ist ja schön für Dich.
>
> Du bist Dir offensichtlich nicht im klaren darüber, daß es -geschätzt-
> 10E3 verschiedene Controller in dieser Bauform gibt ...
>
> Also: WAS für ein 8-Beiner soll das sein?

Ach Rufus... Es handelt sich doch um einen Tiny13 aus der AVR-Familie, 
das weiß doch Jeder... - Oder ist Deine Glaskugel etwa schlecht 
gewartet??

>
>
>
> (Sonst steht hier die nächste Steinigung mit Glaskugeln an)

;-)

...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux wrote:

> Ach Rufus... Es handelt sich doch um einen Tiny13 aus der AVR-Familie,


Also ich habe mich jetzt auf den ATtiny25 als 8-Pinner eingeschossen.

Ein 2.Timer, 8MHz intern und Upgrade bis 8kB Flash kann nie schaden.


Peter

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tiny15 mit internem ADC ...? :D
Am einfachsten sit es echt das zeug ins EEPROM zu schreiben, mach ich 
meistens so.

Autor: Jörg B. (manos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:
> Hannes Lux wrote:
>
>> Ach Rufus... Es handelt sich doch um einen Tiny13 aus der AVR-Familie,
>
>
> Also ich habe mich jetzt auf den ATtiny25 als 8-Pinner eingeschossen.
>
> Ein 2.Timer, 8MHz intern und Upgrade bis 8kB Flash kann nie schaden.
Wow, Du hast upgradefähige Hardware? :)

Aber der OP meinte doch bestimmt AT24C08A oder hatte einfach nur 
Langeweile :)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Jedenfalls möchte ich mal sehen, was der ADC so mißt, aber wie?

Das ist bei 8-Beinern nicht vorgesehen. Deren ADC mißt einfach so vor 
sich hin, die Daten können aber nicht weiterverarbeitet werden.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Glasigung mit Steinkugeln

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tri-tra-trollalla...

Koko, ich verwende für Sowas eine synchrone serielle Übertragung ähnlich 
dem vereinfachten OWI-Protokoll, aber so langsam, dass es ohne 
Rechenzeiteinbuße im Timer-Interrupt laufen kann. Dabei sende ich ASCII 
(Text), der von einem "Terminal" (AVR mit LCD und 4 Tastern) angezeigt 
werden kann. Das Telegramm umfasst 1 Richtungsbit, 8 Datenbits und eine 
Synchronpause von einer Bitzeit. Es "klappert" mit etwa 1kHz vor sich 
hin, kann also max 100 Zeichen pro Sekunde übertragen.

Ich benutze es auch bidirektional zum Parametrieren kleiner Steuerungen 
mit Tiny13 über das "Terminal". Der eine benötigte Portpin tut dabei 
nicht weh, das Impulsmuster wird vom Timer-Interrupt (400Hz, also 4 
Interrupts pro Bit) nebenbei erzeugt und belastet den AVR kaum.

...

Autor: Jack Braun (jackbraun)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laßt den armen Kerl doch in Ruhe, der hat bestimmt was Besseres zu tun,
als mit Euch über 8-Beiner zu spekulieren ;-)

Autor: Koko Lores (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist doch völlig egal, was für einer, wenn's ums Prinzip geht..!?
Aber egal: Ihr hattet Euren Glaskugel-Spaß (wobei ich die 'Formulierung' 
wohl eher in einem Computer-Kinder-Forum erwarten würde, als hier von 
den kompetenten), und ich weiß ein bißchen mehr. Die serielle Ausgabe 
per Software ist mir gar nicht konkret in den Sinn gekommen.

Wie schiebt man denn dann das Wert-Bit an das Ausgangs-Bit?

Danke!

Autor: Zacc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
 for i:=1 to 8 do {
  if ((data and 0x80)== 0x80) then portpin:=1
  else portpin:=0;
  shiftleft(data);
  }

Etwa so.

Autor: Koko Lores (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, also das MSB ausgeben, und dann alles nach links schieben. das kann 
ich.
Ich hatte gedacht, man kann das vielleicht direkt auf den ausgangs-port 
operieren. zu kompliziert für mich. egal.
probier ich mal, dankeschön!

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie schiebt man denn dann das Wert-Bit an das Ausgangs-Bit?

Das kommt darauf an, welcher Empfänger verfügbar ist.

Wenn Du an UART und PC-Terminal denkst, dann wirst Du an der 
Ungenauigkeit des internen Takt-Oszillators scheitern (oder zumindest 
verzweifeln).

SPI-Master in Software ist kein Problem, braucht aber zwei Portpins.

Ich sende vom Master, also vom kleinen Controller, (durch Pause 
getrennt) 9 Impulse, bei denen die Information im Tastgrad (25% oder 
75%) steckt. Der erste Impuls gibt die Datenrichtung an, legt also fest, 
wer Sender und wer Empfänger ist (in Deinem Fall noch nicht relevant). 
Die anderen 8 Impulse beinhalten die Datenbits. Die Pause sorgt dafür, 
dass der Slave (der Controller mit LCD) weiß, wo ein neues Byte beginnt. 
Der Slave sammelt die Bits ein und gibt sie an das LCD aus. Einige 
vereinbarte Steuercodes erlauben eine saubere Formatierung der Ausgabe.

Du kannst die Ausgabe aber auch so langsam machen, dass Du die Bitwerte 
per Auge mitzählen (und mitschreiben) kannst.

In Deinem Fall (Servoimpulserzeugung) kannst Du den ADC-Wert aber auch 
als "Servoposition" ausgeben und statt des Servos ein Oszilloskop oder 
ein Multimeter mit Tastgrad-Messung (gibts bei Pollin für um die 13 
Euro) anschließen.

Achja, die 8-Beiner AVRs sind nicht alle gleich. In der AT90S-Reihe gibt 
es 8-Beiner mit Hardware-UART. Die können also (Quarz vorausgesetzt) 
recht einfach über RS232 mit dem PC (Terminalprogramm) kommunizieren.

...

Autor: Koko Lores (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!

Autor: Koko Lores (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So kann's gehen:

static uint8_t bit;
  uint16_t data = 0b1010101010101010;
  
  if(bit < 16)
  {
    if(((uint16_t)data<<bit) & 0b1000000000000000)
    {
      PORTB |= ( 1<<PB0 );       // high
    }
    else
    {
      PORTB &= ~( 1<<PB0 );       // low
    }
  }
  else 
  {
    PORTB &= ~( 1<<PB0 );       // low
  }
  
  if(bit==50)
  {
    bit=0;
    PORTB |= ( 1<<PB0 );       // high
  }
  else
  {
    bit++;
  }

Autor: Koko Lores (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Aha, anscheinend geht der Anhang verloren, wenn man mal auf Vorschau 
klickt..

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ist doch völlig egal, was für einer, wenn's ums Prinzip geht..!?

Na wenn das egal ist, dann nimm einfach den eingebauten UART und schicke 
die Daten als Text an den PC.

Autor: Koko Lores (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na, wenn das nicht egal ist, hätte es doch gereicht, mich zu fragen, ob 
mein 8-Beiner keinen eingebauten UART hat.
Dann hätte ich direkt 'nein' geantwortet.

Und?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Ausstattung der AVRs ist so unterschiedlich, dass es nur wenige 
allgemeingültige Aussagen gibt. Also immer schön konkret benennen um was 
es sich im speziellen Fall handelt. Bezeichnungen wie "mein ATMEL" oder 
"mein ATMEGA", "mein Mega", "mein Tiny" "(m)ein 8-Beiner" mögen zwar 
cool klingen, provozieren aber (berechtigterweise!) zu Widerspruch. Also 
nicht aufregen, wenn es Leute gibt, die solchen Kokolores nicht ganz 
ernst nehmen.

...

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.