GPIO schneller als 1MHz takten

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Raspberry Forum,

    kurze Vorstellung - ich bin 26 Jahre Maschinenbau Student und bastel gerne mit Software und Elektronik aller Art. Ich bin seit gestern stolzer Besitzer eines Raspberry Pi Modell B und habe auch direkt losgelegt das nette Gerät in Betrieb zu nehmen. Ich habe Erfahrungen mit Atmel AVR's in Assembler Basic und C - das aktuelle Projekt benötigt eine USB Schnittstelle welche auf einem 8bit AVR selbst mit Zusatzbaustein recht umständlich zu implementieren ist (für mich der nur Grundlagen C drauf hat). Daher dachte ich mir ich greife mir mal was neues wo ich mich um diese Geschichte nicht kümmern muss.

    Okay kurz worum es geht:

    Ich habe eine Textdatei auf dem USB Stick, welche nur aus Nullen und Einsen besteht. Diese Datei möchte ich einlesen und damit einen Port entsprechen High oder Low schalten...und jetzt das eigentliche Problem, dass ganze ziemlich schnell und ohne große Abweichungen. Schnell heißt hier ca. 1MHz.

    Ich habe mit wiringPi und C einfach mal einen Port ohne delay getoggelt und konnte durchschnittlich eine Frequenz von 4MHz messen, was mich erstmal sehr fröhlich gestimmt hat. Bei genauerer Bertrachtung waren aber häufige Interrupts zu sehen, welche durch das Betriebsystem bedingt längere Pausen in meinem Datenstrom erzeugen.

    Ich bin grundsätzlich sehr angetan vom Raspberry, alleine die schnelle und unkomplizierte Inbetriebnahme begeistert mich. Ich hatte vorher noch nie was mit Linux zu tun und es macht mir trotzdem von Anfang an großen Spass, auch das erfolgreiche kompilieren meiner Beispieldatei hat sich erstmal gut angefühlt. Ich hoffe Ihr hab gute Nachrichten für mich und könnt mir einen Hinweise geben wie ich das ganze stabilisieren kann um den Raspberry für mein Projekt verwenden zu können.

    Also nochmal ich habe eine ca. 150MB große Datei mit Nullen und Einsen, diese soll eingelesen werden und dann Stück für Stück über einen GPIO rausgeschickt werden mit ca. 1MHz - gerne auch schneller.

    Dann Feuer frei für die Spezialisten

    Grüße
    motzer

    Einmal editiert, zuletzt von motzer (9. November 2013 um 01:05)


  • ...
    Also nochmal ich habe eine ca. 150MB große Datei mit Nullen und Einsen, diese soll eingelesen werden und dann Stück für Stück über einen GPIO rausgeschickt werden mit ca. 1MHz - gerne auch schneller.
    ...

    Zunächst mal willkommen hier im Forum.
    So recht verstehe ich jetzt allerdings Dein Problem nicht ... Du hast ja bereits Daten mit ca. 4 MHz erzeugt.
    Also wo liegt das Problem? An den Unterbrechungen durch Interrupts?

    cu,
    -ds-

  • Hallo -ds-,
    ja genau das ist das Problem, die Unterbrechungen durch das OS. ich habe auch schon Kontakt zu Gordon dem Entwicker von wiring Pi und er hat mir jetzt geraten das ganze via SPI umzusetzen. werde ich versuchen, aber vielleicht hat ja noch jemand eine bessere Idee.

    gruß
    motzer

  • Ja hi,

    naja ... Linux ist halt kein RT-OS

    Der RPi kann aber mit pigpio erstaunlich saubere PWM-Signale erzeugen, die auch sehr stabil sind. Irgendwo glaube ich mal gelesen zu haben, dass Frequenzen bis 29 MHz realisierbar sind.
    Vielleicht funktionierts, wenn Du den Umweg über PWM nimmst und dann die Daten per ISR liest und auf den Pin schiebst?

    cu,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!