Forum: Mikrocontroller und Digitale Elektronik serout mit BASCOM


von Eray Kerim (Gast)


Lesenswert?

Hallo,
ich möchte gerne einestring über portB.6 eine string senden die etwa so 
aussieht...
3B 78 12 00 00 47 C4 02 05 FF FF 6F 04


Programiert habe ich es so...
$baud = 9600
$crystal = 3532900
$regfile = "8515def.dat"
Dim A As Byte , S As String * 38
A = "3B 78 12 00 00 47 C4 02 05 FF FF 6F 04"
Serout A , 38 , B , 6 , 9600 , 1 , 8 , 2
end


Mein problem fängt hier an. Mit PRINT A bekommen ich den string, jedoch 
wenn ich den portB.6 auslese bekomme ich einen langen string die so aus 
sieht...
33 42 20 37 38 20 31 32 20 30 30 20 30 30 20 34 37 20 43 34 20 30 32 20 
30 35 20 46 46 20 46 46 20 36 46 20 30 34

Die jeweiligen buchstaben und zahlen wird in ASCII umgewandelt.

Was muss ich machen damit ich auch die richtigen daten am port auslesen 
kann?


In Thema DELPHI bin ich ziehmlich weit aber mit AVR habe ich erst 
angefangen.

mfG
Eray

von Eray Kerim (Gast)


Lesenswert?

Hi,
gibt es da etwa eine andere methode als...
"Serout A , 38 , B , 6 , 9600 , 1 , 8 , 2"

Könnte ich vielleicht die daten auch mit der
"Config Serialout = Buffered , Size = 38"
methode senden. Ich habe paar versuche gemacht, jedoch war nichts am 
port zu empfangen.

Ich benutze zur Zeit einen sg. FUN-Card.
http://www.maxking.co.uk/images/funcardchip.jpg

Wie kann ich die daten an die portB.6 so zuweisen, dass ich auch die 
gewünschte format bekomme?

Ich hoffe das jemand mir helfen kann.
Dank im vorraus,
Eray

von Bernd Schmidt (Gast)


Lesenswert?

Hallo

probier mal folgendes:

$baud = 9600
dim t as byte
dim b as byte
restore DTA

for t = 1 to 4                          ' anpasssen an Anzahl Bytes
   read b                               ' Zeichen aus Tabelle lesen
   print chr(b);                        ' und ausgeben
next t

end

dta:
data &H3b , &H78 , &H12 , &H00          ' und so weiter


Gruss Bernd

von Eray Kerim (Gast)


Lesenswert?

Hallo,
danke für´s Antwort.
Leider gibt es keine reaktion auf dem port.
Ich habe die code genauso eingegeben wie du es gepostet hast. Sollte ich 
da etwa die port eingeben?

von Bernd Schmidt (Gast)


Lesenswert?

So wie beschrieben wird der eingebaute Uart mit den entsprechenden Pins 
benutzt.

 statt Print chr(b) müsste der Befehl für Software-Uart lauten:
  Serout b , 0 , B , 6 , 9600 , 1 , 8 , 2

habe ich aber nicht auspobieren können.

Bernd

von Eray Kerim (Gast)


Lesenswert?

Abend,
somit habe ich wieder rum einen sehr langen und undefinierbaren string 
bekommen.
 77 5E 07 70 00 00...  usw.

Irgend etwas scheint nicht zu stimmen, aber was?

Wenn ich die daten in dem Eeprom eingebe, und das von Eeprom aus sende, 
wie müsste ich denn dann vorgehen? Oder geht es wieder rum nicht?

von Bernd Schmidt (Gast)


Lesenswert?

Noch eine andere Methode die ich vergessen hatte:


open "comb.6:9600,8,N,2" for output as #1
dim t as byte
dim b as byte
restore DTA

for t = 1 to 4 ' anpasssen an Anzahl Bytes
   read b ' Zeichen aus Tabelle lesen
   print #1 chr(b); ' und ausgeben
next t

end

dta:
data &H3b , &H78 , &H12 , &H00 ' und so weiter


Daten können nicht direkt aus dem EEProm mit Restore geladen werden.

$EEprom
dta:
data &H3b , &H78 , &H12 , &H00 ' und so weiter
speichert die Daten ins EEprom.
Auslesen kann man die Daten z.B. READEEPROM.

Bernd

von Eray Kerim (Gast)


Lesenswert?

Hi,
diesen zeile will der Bascom nicht komplimieren. Wenn ich "#1" 
rausnehme, tut es complimieren aber bei portB.6 ist kein reaktion. Muss 
da etwa wieder anstatt print, serout ausdruck geben?


Zu Thema "eeprom"...
Die versuche mache ich mit einem FUN-Card (smartcard), und in dem Karte 
ist eine integrierte eeprom (AT24C64).
http://www.maxking.co.uk/images/funcardchip.jpg
Wenn ich die daten in dem externen eeprom einspeise, und bei bedarf die 
adresse abrufe. Aber laut schaltbild gehen die daten über die portb.0 
oder portB.1 in dem prozessor, und dann wieder raus. Also ohne den 
problem mit dem HEXADEZIMAL zu lösen, würde ich wieder "33 42" statt 
"3B" bekommen.


Danke für dein Hilfsbereitschaft!
Eray

von Bernd Schmidt (Gast)


Lesenswert?

Hallo

  print #1, chr(b); ' und ausgeben
fehlte ein Komma nach dem #1.

Ohne Komma werden die daten auf den Hardware-Uart ausgegeben.
In der Hilfe sind die Befehle mit Beispiel erklärt.

Das EEprom kann über die SPI- oder I2C Befehle ausgelesen (und 
programmiert) werden. Leider kenne ich diese seriellen EEprom nicht.

Bernd

von Eray Kerim (Gast)


Lesenswert?

Danke Bernd.
Leider hat das mir auch nicht geholfen.
In der Hilfe datei habe ich auch über diesen thema durchsucht, aber 
leider gabs da auch keine formel, die hexadezimal daten umwandelt, oder 
anders rum.
Ich werde nochmal Google´n. Vielleicht werde ich da einen formel finden! 
;)

Oder vielleicht kennt sich ein anderer mit diesem problematik aus.

von Bernd Schmidt (Gast)


Lesenswert?

Was für Hexadezimalzahlen sollen denn umgewandelt werden?
Stehen die Daten schon fest (davon gehe ich mal aus) kann der Compiler 
diese umwandlen.
Die Eingabe erfolgt dann mit : Data &H1a, &Hcd &Hef usw.
direkt in Hexadezimal.

Bernd

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.