mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Funktion von Bascom auf C portiert


Autor: drakesoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen steige zur zeit von Bascom auf den gcc compilier um. Da 
ich den SRF02 (Ultraschall Sensor) ansprechen möchte, es aber nur Code 
für Bascom gibt habe ich versucht die funktion in C zu schreiben. Und 
wollte euch fragen ob das so richtig ist. Als software uart wurde das 
hier 
http://www.avrfreaks.net/index.php?module=Freaks%2... 
benutzt.

Hier das portierte:
int messung( char ID) {
    unsigned char highbyte, lowbyte;

    // ID + Befehl zum messen senden
    sputchar( ID );
    sputchar( 84 );
    
    // Antwort
    while( !kbhit() );
    highbyte = sgetchar();
    while( !kbhit() );
    lowbyte = sgetchar();

    return ( (highbyte << 8) | lowbyte );
}

Hier den Bascom code:
Function Srf02_entfernung(byval Slaveid As Byte) As Integer

Local Lob As Byte

Local Hib As Byte



   Print #1 , Chr(slaveid) ; Chr(84);                       'Messvorgang in cm starten

   Inputbin #2 , Hib , Lob                                  'Warte auf Ergebnis

   Srf02_entfernung = Makeint(lob , Hib)

End Function


Grüße

drakesoft

Autor: Wilhelm F. (ferkes-willem)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@drakesoft:

Ohne dir jetzt eine konkrete Hilfe zum Beispiel zu geben:

Im Grunde mußt du Basic und C beherrschen. Funktionen sollten sich auch 
separat zerlegen und portieren lassen.

Ich selbst, portiere gerade einen Assemblercode nach C. Das ist nicht 
weniger einfach. Manchmal komme ich nicht umhin, für eine Funktion den 
Umweg über Flußdiagramme oder Struktogramme zu nehmen. Also, aus der 
Assemblerfunktion, ein Struktogramm erstellen, und daraus dann den 
C-Code.

Natürlich, ist das Arbeit im Detail.

Autor: Rainer Unsinn (r-u)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Bascom-Beispiel sieht nach Hardware-UART aus, oder? Wie groß ist 
Dein Empfangspuffer? Warum wartet Die C-Funktion auf eine Taste (kbhit?)

Naja Du wirst es wissen.

also sende erstmal an den PC/Terminalprogramm, guck, daß dann die 
gleichen 2 Zeichen rauskommen mit beiden Funktionen. Wenn das 
funktioniert, sende 2 Zeichen mit dem PC(Tastatur) zurück und guck ob 
sie richtig ankommen. Du wirst so sicher viele Deiner Probleme finden.

Autor: Leichtgewicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die while !kbhit zeilen sind endlos.

Autor: Rainer Unsinn (r-u)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht wenn Du richtig doll draufhaust! :-)

kbpress? kbtouch? kbstreichel?

Autor: Winfried J. (Firma: Nisch-Aufzüge) (winne)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das past schon,

wenn kbhit einen returnwert liefert welcher aus einer Interruptroutine 
resultiert.

Autor: drakesoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte kbhit läuft so lange bis ein zeichen gesendet wird und ich es 
dann mit sgetchar auslesen kann.
Und in Bascom ist es auch ein Soft UART und Inputbin wartet auch so 
lange bis ein Zeichen gesendet wird.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
drakesoft schrieb:
> Ich dachte kbhit läuft so lange bis ein zeichen gesendet wird und ich es
> dann mit sgetchar auslesen kann.

kbhit macht das, was du in die Funktion hineinprogrammierst.
Genauso wie sgetchar

Beide Funktionen gibt es nicht in C. Du musst sie selber programmieren.


Vielleicht doch erst mal ins avr-gcc-Tutorial schauen und nachlesen, wie 
man mit er UART umgeht?
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Edit: Kann natürlich auch sein, dass diese Funktionen bereits jemand in 
dem AVR-Freaks Paket für dich implementiert hat. Aber ich melde mich da 
jetzt nicht an, um mir das von dir verlinkte Paket anzusehen.

Autor: drakesoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie oben schon gesagt ich benutze den schon programmierten Soft Uart. 
Hier noch mal der Link: 
http://www.avrfreaks.net/index.php?module=Freaks%2...

Compilieren kann ich das ganze ohne fehler, was aber nicht heißt das 
logic fehler drin sind.

Autor: drakesoft (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
oder hier der DL

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.