Seite 2 von 2

Re: Probleme mit serieller Schnittstelle und Atmel ATtiny13

Verfasst: Donnerstag 11. Februar 2010, 17:28
von KAKTUS
DA Ausgang mit 256Bit Auflösung
hehe, so schnell gehts, ist mir gar nicht aufgefallen, wir wissen ja was gemeint ist
8 Bit Auflösung, 256 Stufen.

Re: Probleme mit serieller Schnittstelle und Atmel ATtiny13

Verfasst: Donnerstag 11. Februar 2010, 18:05
von tmm
Hi,

du meinst wohl 256 Stufen, das entspricht dann 8 Bit.

Gruß MM

Re: Probleme mit serieller Schnittstelle und Atmel ATtiny13

Verfasst: Freitag 12. Februar 2010, 00:48
von KAKTUS
Hier der gewünschte Bascom Code. Hat ich doch auf noch auf meinem PC hier.

Von mir erstellter Bascom Code (neueste Version geprüft) für dieses Board http://www.robotikhardware.de/download/rnmega2560.pdf

Für andere Hardware bitte folgendes Anpassen:
$crystal
$baud
Reference = Internal_1.1

Code: Alles auswählen

'###############################################################
'Mai 2008 by KAKTUS
'Hardware:
'RoboterNetz Board RN-Mega2560 ab Version 1.0
'
'Aufgabe:
'Sammelt Daten der 16 A/D Wandler (10Bit) ein, bildet einen Mittwert
'zwecks Rauschunterdrückung der letzt 1-2Bits
'und gibt Daten über RS232 aus.
'
'##############################################################

'Diese Anweisung setzt die Fusebits automatisch korrekt (Syntax $PROG LB, FB , FBH , FBX )
$prog , 255 , &B11011001 ,                                  'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"                                   'Controllertyp
$hwstack = 82                                               '
$framesize = 68                                             '
$swstack = 68                                               '
$crystal = 16000000                                         'Quarzfrequenz
$baud = 256000                                              'RS232 Baudrate

' *** Ausgänge ***
Config Pind.5 = Output                                      'LED zeigt Datenübertragung auf RS232 an
Led Alias Portd.5
Const An = 0
Const Aus = 1

' *** Variablen***
Dim Kanal As Byte                                           'AD Kanal der gemessen werden soll
Dim Adcakt(16) As Long                                      'Array mit 16 Bytes in dem die Messwerte aufaddiert werden
Dim Index As Byte                                           'Zeiger auf Array Speicherplatz
Dim Wert As Word
Dim Spannung As Single
Dim Loop_counter As Long


' *** ADC ***
Config Adc = Single , Prescaler = Auto , Reference = Internal_1.1
' Referenzspannung intern 1,1 Volt
Const Referenzspannung = 1.133                              'tatsächliche Referenzspannung mit gutem Voltmeter am Ref Pin messen!
Start Adc

'*** HAUPTSCHLEIFE ***

Do

' *** Diese Schleife liest die 16 AD Kanäle und bildet einen Mittelwert ***
     For Loop_counter = 1 To 100                            ' Anzahl der Messzyklen zur Bildung eines Mittlwertes auf dem µC
         For Kanal = 0 To 15                                ' Anzahl der ADC Kanäle
               If Kanal > 7 Then Kanal = Kanal + 24         ' Die oberen 8 AD Eingänge erreicht ma nicht mit Getadc(8)..Getadc(15)
                  Wert = Getadc(kanal)

               If Kanal > 7 Then Kanal = Kanal - 24         '
               Kanal = Kanal + 1                            '+1 weil ADC 0-15 aber Array ADCakt 1-16
                     Adcakt(kanal) = Adcakt(kanal) + Wert   'Arrays beginnen bei 1 , hier 1-16
               Kanal = Kanal - 1
         Next Kanal
     Next Loop_counter



' *** Gesammelte Daten über Serielle Schnittstelle ausgeben ***
      Led = An
          For Index = 1 To 16
              Spannung = Adcakt(index) / 100
              Spannung = Spannung * Referenzspannung
              Spannung = Spannung / 1024                    'berechnen der Spannung am AD Eingang
              Print Fusing(spannung , "#.###") ; "|";       'Bitteschön mit einem Vorkomma und drei Nachkommastellen auf RS232 ausgeben
              Adcakt(index) = 0
          Next Index
          Loop_counter = 0
          Print
      Led = Aus
Loop
[/size]

Zugehöriges Profilab Projekt im Anhang!

Nur für privaten Gebrauch.

Re: Probleme mit serieller Schnittstelle und Atmel ATtiny13

Verfasst: Mittwoch 14. April 2010, 22:06
von nikolaus10
Hallo

Ich hab mich mal an dem Program orientiert.
Nur, wie bekomme ich aus dem String , der ja ein Word aus vier Ascii Zeichen darstellt, einen Wert der z.B. durch ein analoges Messgeraet dargestellt werden kann?

Grüsse

Re: Probleme mit serieller Schnittstelle und Atmel ATtiny13

Verfasst: Mittwoch 14. April 2010, 22:13
von KAKTUS
Hi nikolaus10,

am einfachsten mit :
$VAL
Wandel die Zeichenkette am Eingang $ in einen numerischen Wert, der am Ausgang V ausgegeben wird.

Re: Probleme mit serieller Schnittstelle und Atmel ATtiny13

Verfasst: Donnerstag 15. April 2010, 09:51
von nikolaus10
Hallo

Schoen Dank fuer die Antwort.
Klappt auch schon fast.
Aber es wird nur der numerische Teil gewandelt,
die Buchstaben nicht.
z.B wird aus 03A4 ein 34 und nicht ein 932.
Haetest du dafuer eine Loesung ?

Gruesse

Re: Probleme mit serieller Schnittstelle und Atmel ATtiny13

Verfasst: Donnerstag 15. April 2010, 09:54
von KAKTUS
Was für Buchstaben?

Könntest du mal dein Problem mal genauer erklären. In meinem Beispiel kommen keine Buchstaben vor.
Ich sende die Daten in ASCII, also Zahlen von 0-1023 für einen 10 Bit AD-Wandler.
Sieht am Ausgang COM String empfangen so aus: 511|1023|0|455|688|588 ... CR LF

Oder willst du von HEX nach Dezimal wandeln?

Re: Serielle Schnittstelle und Atmel ATtiny13

Verfasst: Donnerstag 8. Juli 2010, 11:17
von KAKTUS
@Nikolaus10

Projekt eingeschlafen?

Re: Serielle Schnittstelle und Atmel ATtiny13

Verfasst: Sonntag 11. Juli 2010, 11:53
von nikolaus10
Nein, das Projekt nicht aber ich (wg der Temperaturen ;-)

Im Augenblick schwanken wir zwischen einer EXEL/VBA Loesung und PL.
Einige wollen Excel weil sie das kennen und ich will ein Loesung die sich gut "warten" laesst.
Vor allem bei dem aehnlich gelagerten "Netzteil Thread" scheiden damit DLL Loesungen und selbstgetrickte Treiber aus. Standards sind dann die erfolgreichsten Wege.

Trotzdem vielen Dank fuer die Muehe, fuer die schoenen Loesungsanzaetze und die Inspiration.

Re: Serielle Schnittstelle und Atmel ATtiny13

Verfasst: Samstag 28. August 2010, 20:00
von Uncle
I have some rs232 hardware (atmega8a), that use 0xFF, 0x00 and other any chars in 8- byte sendins. I wrote .dll (dev.C++) module, and with PLE project (run at 4 -5 kHz) I have one error byte for 4k received, that is enough for me.
Speed is 9600, it is about 20 8-byte messages in second transmitted and 20 received. So I think if it is not possible to reprogram your hardware device, .dll module can receive any char message.

But I have onother problem - I can't find puls generator with more than 1 kHz, so I can send 232 messages only 1k bytes a second (with SendByte). Can I sinchronize with more than 1kHz friequency?