Digitale PIO Karte ansprechen.

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Re: Digitale PIO Karte ansprechen.

Beitrag von - chris - »

Was soll das?

Code: Alles auswählen


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

wohl eher so:

Code: Alles auswählen


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

PB v5.72 x86/x64
Windows 10 Pro 64bit
H.Brill
Beiträge: 356
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Digitale PIO Karte ansprechen.

Beitrag von H.Brill »

Evtl. liegt es ja an dem Array.
Definiere mal für jedes Byte eine Variable.

Code: Alles auswählen

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: Alles auswählen

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: Alles auswählen

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.
PB 5.60
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Re: Digitale PIO Karte ansprechen.

Beitrag von Falko »

µ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]
...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
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
tinux
Beiträge: 12
Registriert: 06.12.2006 02:29
Wohnort: Bayern
Kontaktdaten:

Re: Digitale PIO Karte ansprechen.

Beitrag von tinux »

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: Alles auswählen

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
H.Brill
Beiträge: 356
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Digitale PIO Karte ansprechen.

Beitrag von H.Brill »

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.
PB 5.60
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Re: Digitale PIO Karte ansprechen.

Beitrag von Falko »

Da PB ja auch die Ein und Ausgänge überwachen kann, könnte man
doch auch ohne dem delay folgendes machen, oder?

Code: Alles auswählen

;....
While AvailableSerialPortOutput(6)>0
  WriteSerialPortData(6, @Request(), 7)
Wend
;.....
While AvailableSerialPortInput(15)>0
  ReadSerialPortData(6, @Response(), 15)
Wend
;.....
Gruß, Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Antworten