PureBoard
http://forums.purebasic.com/german/

Digitale PIO Karte ansprechen.
http://forums.purebasic.com/german/viewtopic.php?f=17&t=24099
Seite 2 von 2

Autor:  - chris - [ 02.04.2011 12:43 ]
Betreff des Beitrags:  Re: Digitale PIO Karte ansprechen.

Was soll das?

Code:

For i=0 To 6
  Debug @Byte(i)
Next



wohl eher so:

Code:

For i=0 To 6
  Debug Byte(i)
Next


Autor:  H.Brill [ 02.04.2011 13:16 ]
Betreff des Beitrags:  Re: Digitale PIO Karte ansprechen.

Evtl. liegt es ja an dem Array.
Definiere mal für jedes Byte eine Variable.
Code:
ADC.b
Portb.b
Portc.b
Portd.b
DatenPortB.b
DatenPortC.b
DatenPortD.b


und schicke die nacheinander rüber. Der AVR kann
sowieso nur Byte für Byte einlesen. Dann mal beides
probieren :

Code:
WriteSerialPortData(port, @ADC)
WriteSerialPortData(port, @Portb)
usw.
oder
WriteSerialPortString(port, Chr(ADC))
WriteSerialPortString(port, Chr(Portb))
usw.


oder halt mal einzelne Strings evtl. mal
mit Chr(13).

Da gibts ja viele Möglichkeiten, die man ausprobieren
kann.

Wie sieht denn das Empfangen (Request) aus ?
Evtl. nimmt der AVR die Daten an und die Empfangs-
routine stimmt nicht. Da würde ich auch nur immer
byteweise empfangen :

Code:
While AvailableSerialPortInput(port)
        ReadSerialPortData(port, @s_byte,1)
        ; s_byte ist eine Chr - Variable --> s_byte.c
        text2 = Chr(s_byte)
        ; hier mal testen, ob Bytes kommen
 Wend 


Wie oben schon gesagt, gibt es mehrere Möglichkeiten.

Autor:  Falko [ 02.04.2011 14:50 ]
Betreff des Beitrags:  Re: Digitale PIO Karte ansprechen.

µPIO.pdf
µPIO Software
in Profilab Expert werden noch weitere Links ausgegeben:

http://www.electronic-software-shop.com ... pio-c-2_28

Vielleicht kann man ohne Hardware damit was anfangen.
[Edit]
Zitat:
...PS: 49 € ist aber ganz schön teuer für so ein Board
mit USB + TTL Wandler, AVR, und ein paar Kleinigkeiten.


Er hätte auch dieses Board ungeflasht nehmen können.
http://www.electronic-software-shop.com ... pio-c-2_28
Dann hätte er ca. 20€ gespart, wenn er den AVR selbst über ISP programmieren kann.

Ich habe den Source oben nochmal angepasst, da es eigentlich sieben Bytes sind, die geschickt werden müssen.
Bei Dim.. müssten dann auch 7 angegeben werden, womit erst dann eine Antwort vom AVR ausgelöst werden
würde und daraufhin müssten 15 Bytes erst empfangen werden, die ausgewertet werden können.

[/Edit]


Gruß Falko

Autor:  tinux [ 03.04.2011 10:15 ]
Betreff des Beitrags:  Re: Digitale PIO Karte ansprechen.

Habe leider keine Ahnung von AVR programmieren.
Bin aber ein Stück weiter gekommen, da ich jetzt wenigstens eine Antwort vom AVR bekomme.
Das Delay(70) hat gefehlt.

Code:
Dim Request.b(6)
Dim Response.b(14)

Request(0)=%000001
Request(1)=%111111
Request(2)=%111111
Request(3)=%111111
Request(4)=%111111
Request(5)=%111111
Request(6)=%111111

OpenSerialPort(6, "COM6", 57600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
Delay(70)

WriteSerialPortData(6, @Request(), 7)

ReadSerialPortData(6, @Response(), 15)

CloseSerialPort(6)

For i=0 To 14
  Debug Response(i)
Next


Debugger Ausgabe.

63
63
61
3
-1
3
-1
3
-1
3
-1
3
-1
3
-1

Gruß, tinux

Autor:  H.Brill [ 03.04.2011 11:16 ]
Betreff des Beitrags:  Re: Digitale PIO Karte ansprechen.

Da lag ich mit dem Delay() ja richtig.
Mußt halt nur in deiner Doku schauen, was
da zurück kommt bzw. wie es interpretiert
werden sollte.

Kommt halt darauf an, wie der AVR programmiert
ist. Also ob nur über Polling auf die Daten an der
RS232 gewartet wird, oder halt über Interrupt.
Ich machs am liebsten über Interrupt, da hier
keine Daten verloren gehen können.

Da die Karte (bzw. der AVR) auch selbst programmiert
werden kann, kannst auch mal bei http://www.myAvr.de
vorbeischauen.
Und die Demo von BASCOM kann bis 4 KB große Programme
compilieren. Das dürfte für kleine Sachen wie hier gerade reichen.
Ich habe mir auf mein AVR MK II Programmer einfach einen
10poligen Wannenstecker gelötet. Somit kann ich mit einem
Flachbandkabel auch andere Boards per ISP programmieren.

Autor:  Falko [ 03.04.2011 20:03 ]
Betreff des Beitrags:  Re: Digitale PIO Karte ansprechen.

Da PB ja auch die Ein und Ausgänge überwachen kann, könnte man
doch auch ohne dem delay folgendes machen, oder?
Code:
;....
While AvailableSerialPortOutput(6)>0
  WriteSerialPortData(6, @Request(), 7)
Wend
;.....
While AvailableSerialPortInput(15)>0
  ReadSerialPortData(6, @Response(), 15)
Wend

;.....
Gruß, Falko

Seite 2 von 2 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/