-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: PIC Datenuebertragung??

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.10.2005
    Ort
    Bremerhaven
    Beiträge
    101

    PIC Datenuebertragung??

    Anzeige

    Sers

    Bin gerade dabei ein RC-Auto so umzubauen das ich die Geschwindigkeit ueber Hallsensoren am Hinterrad messen kann. Die ganzen Daten sollen dann an einen PC uebertragen werden.

    Hab schon mal ein Programm in C geschrieben. (Assembler bin ich leider nicht so gut)
    Die Signale des Sensors werden in einer Variablen summiert.
    Ein Timer gibt dann alle 1/10s die Werte aus.
    Somit laesst sich aus der Zeit und den Impulsen die Geschwindigkeit und Beschleunigung berechnen - aber soweit bin ich noch nicht.

    Mein Problem ist das ich einfach nicht weis wie ich die Daten Sinnvoll in den PC-bekomme. Klar RS232 bietet sich an.
    Aber wie kann ich eine int2 Variable ueber einen Output des Pics senden?
    Muss ich die Werte noch vorher umrechnen oder gibts es Befehle in PIC-C die ich dafuer verwenden kann.

    Sers

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.08.2004
    Ort
    Winterthur
    Beiträge
    312
    Hallo

    Da gibts zwei prinzipiell zwei Möglichkeiten:

    int2 = 16Bit ?

    1) Du sendest die zwei Bytes so wie sie sind (binär) nacheinander durch den Kanal. Die Empfangssoftware muss daraus dann wieder die korrekte Zahl machen und als Zahl (ASCII) anzeigen.

    2) Du verwendest sowas wie printf(...) um die int2 Zahl als Klartext (ASCII) an die RS232 auszugeben. Das Empfangs/Anzeigeprogramm braucht dann keine weitere "Intelligenz", also würde Hyperterminal reichen.

    Was für'n C-Compiler hast Du?

    Gruess
    Fritzli

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.10.2005
    Ort
    Bremerhaven
    Beiträge
    101
    Sers

    Schon mal danke.

    Hab den PIC-C (PCW C) Compiler
    Und nen 16F628A PIC

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.08.2004
    Ort
    Winterthur
    Beiträge
    312
    Hallo

    Mit dem CCSC Compilern ists einfach: Schau mal im Handbuch unter printf() nach. Damit kann man beliebige Zahlen beliebig ausgeben, läuft gleich wie die ANSI C printf-Funktion.


    Gruess
    Fritzli

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.10.2005
    Ort
    Bremerhaven
    Beiträge
    101
    Jo

    alles klar werds gleich mal nachsehen.

    Gruss

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.10.2005
    Ort
    Bremerhaven
    Beiträge
    101
    Hi

    Schon mal danke soweit.

    Blick mit dem RS232 noch nicht wirklich durch. Vielleicht kann mir ja jemand helfen.

    So hab jetzt eine Verbindung zum Computer. Mit dem Programm COM Terminal wollte ich dann mal das Einganssignal darstellen. Das Signal hab ich direkt am T1Out Pin des MAX232 abgegriffen.

    Ì 204 11001100
    Ë 203 11001011
    Ì 204 11001100
    Ë 203 11001011
    È 200 11001000
    Æ 198 11000110
    Å 197 11000101
    0 00000000

    Das ist der Input nach einem Sendezyklus. Am Oszi hab ich ein Ausgangssignal mit 24 Flanken. Wie kann es sein das soviel mehr empfangen wird?

    Das ist der Sendebefehl innerhalb meines Programms.

    printf("%d,%d,%d,\n",timercount,hallgear,hallwheel );

    Bsp. 01,23,34

    Dachte die RS232 Schnittstelle gibt alles gleich in ASCI aus?

    Gruss

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.08.2004
    Ort
    Winterthur
    Beiträge
    312
    Hallo

    Probier's doch erst mal mit einem einfacheren Testprogramm:

    Code:
    // config, etc
    int i;
    i=0;
    while(TRUE)
    {
     printf("%d\n", i);
     delay_ms(10); // damits etwas gemächlicher geht
     i++;
    }
    Als Terminalprogramm kannst Du auch Hyperterminal nehmen (das liefert allerdings keine Hex oder Binärdarstellung, es sei denn, der PIC macht das)


    Dachte die RS232 Schnittstelle gibt alles gleich in ASCI aus?
    Was meinst Du damit? RS232 liefert grundsätzlich nur Spannungspegel. Was Sichtbares daraus macht erst das Terminalprogramm. Das interpretiert die Daten dann normalerweise nach dem ASCII-Standard. Damit das Empfangsprogramm also das richtige anzeigt, muss der Controller die selbe Sprache (also z.B. ASCII) sprechen.

    Die Binär-zu-ASCII-Codierung einer Zahl macht übrigends das "%d" im printf.

    Gruess
    Fritzli

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.10.2005
    Ort
    Bremerhaven
    Beiträge
    101
    Hi

    Ok wenn ich das jetzt richtig verstanden habe sendet der PIC die Daten als ASCI Code und das Hyperterminalprogramm sollte die Daten wieder von ASCI umwandeln koennen.

    Habs jetzt probiert mit Hyperterminal. Bekomme aber leider gar keine Daten rein. Einstellung sind alle gleich. 8Bit, 9600Bits per second, Parity none, 1 Stopbit.

    Hab gerade mal die Spannung am Ausgang des Max232 gemessen. Hab da ungefaehr 6,5 Volt. Soweit ich weiss benoetigt die RS232 am PC 12Volt Pegel. Kann das vielleicht das Problem sein?
    Hab den Max232 standardmaessig beschalten. (siehe File)

    Gruss
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken max232_791.jpg  

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.08.2004
    Ort
    Winterthur
    Beiträge
    312
    Hallo

    Richtiger COM-Port ausgewählt?

    Schaltung sieht soweit ok aus.
    Die 6.5V sollten kein Problem darstellen. Funktioniert im Prinzip auch mit 5V/0V - Pegeln. War bei der Messung der PC dran?

    Was für'n PIC?
    Kannste mal den gesamten Code posten?

    Gruess
    Fritzli

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.10.2005
    Ort
    Bremerhaven
    Beiträge
    101
    Guten Morgen

    Also COM PORT ist der richtige. Zumahl ich nur einen am PC habe und ich ja mit COM TERMINAL schon einen Datenempfang hatte.
    Im Programm hab ich auch com 1 gewaehlt

    Habs einmal mit und einmal ohne PC gemessen. Mit PC hab ich einen minimalen Spannungsabfall von 0,1 Volt. Also das sollte dann soweit OK sein.

    PIC628A

    Code anbei.

    Gruss
    Angehängte Dateien Angehängte Dateien
    • Dateityp: c asdf.c (1,3 KB, 4x aufgerufen)

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •