Archiv verlassen und diese Seite im Standarddesign anzeigen : Einige Fragen zu Bascom
Hannebambel
21.02.2005, 17:21
Also 1.
Wie funktionieren die datalines ?
data: &HFF....
Werden die nacheinander abgefragt bis zur nächsten sprungmarke?
2. Wie benutzt man (beim mega 8) den pin T0 um den timer zu starten und zu stoppen das hat doch etwas mit interrupt zu tun oder?
Und kann man den pin mit debounce entprellen oder muss das mit nem externen rc gemacht werden?
3. Wie lange braucht der mega bis er einen ausgelösten interrupt ausführt (mit register sichern und so weiter) und bis er wieder zum Hauptprogramm zurückkehrt.
4.Kann die serielle uart daten puffern bis sie abgeholt werden (ohne belastung der Prozessorzeit)
ich weiß fragen über fragen und ich danke euch schonmal für die kompetenten antworten.
fang ich mal von hinten an ;)
4.Kann die serielle uart daten puffern bis sie abgeholt werden (ohne belastung der Prozessorzeit)
im mega gibts nen empfangsbuffer von einem byte, dh das jeweils letzte zeichen liegt dort, bis es ausgelesen wurde.
tipp: es gibt nen interrupt, der in diesem fall ausgelöstz wird. damit kansnt du dann schnellstmöglichst die daten abspeichern...
3. Wie lange braucht der mega bis er einen ausgelösten interrupt ausführt (mit register sichern und so weiter) und bis er wieder zum Hauptprogramm zurückkehrt.
ich hab kein ahnung wie effizient bascom den code hinkriegt. es dürfte aber nicht viel mehr als 100 takte dauern schätz ich mal...
2. weiß ich nicht, weil ich mich mit den timern noch nicht näher beschäftig habe
1. weiß ich auch nicht...
darwin.nuernberg
21.02.2005, 19:43
Also Generell galt in Basic dass DATAs nur sequenziell abgerufen werden konnten. Aber eben nur ein Datablock pro Proramm.
Bascom scheint hier anders zu arbeiten.
Mittels dem Restore Befehl und der Sprungmarke wird auf den Anfang eines DATA Satzes gesprungen / gewechselt.
Somit ist es möglich mehrere Data Blöcke unterschiedlicher Typen zu definieren.
Durch das Restore wird aber immer zum ersten Eintrag des Satzes gesprungen (sonst dürfte der Befehl nicht restore heissen).
ALSO:
Mit Restore Dta4 wir der Zeiger auf den ersten Eintrag nach der Sprungmarke Dta4: gesetzt.
(Habe ich nicht geprüft, aber die Hilfe gibt das so her.)
Action
Instruct the compiler to store the data in the DATA lines following the $DATA directive, in code memory.
Syntax
$DATA
Remarks
The AVR has built-in EEPROM. With the WRITEEEPROM and READEEPROM statements, you can write and read to the EEPROM.
To store information in the EEPROM, you can add DATA lines to your program that hold the data that must be stored in the EEPROM.
A separate file is generated with the EEP extension. This file can be used to program the EEPROM.
The compiler must know which DATA must go into the code memory or the EEP file and therefore two compiler directives were added.
$EEPROM and $DATA.
$EEPROM tells the compiler that the DATA lines following the compiler directive, must be stored in the EEP file.
To switch back to the default behavior of the DATA lines, you must use the $DATA directive.
The READ statement that is used to read the DATA info may only be used with normal DATA lines. It does not work with DATA stored in EEPROM.
See also
$EEPROM , READEEPROM , WRITEEEPROM
ASM
NONE
Example
'-------------------------------------------------------------
' READDATA.BAS
' Copyright 1999-2002 MCS Electronics
'-------------------------------------------------------------
Dim A As Integer , B1 As Byte , Count As Byte
Dim S As String * 15
Dim L As Long
Restore Dta1 'point to stored data
For Count = 1 To 3 'for number of data items
Read B1 : Print Count ; " " ; B1
Next
Restore Dta2 'point to stored data
For Count = 1 To 2 'for number of data items
Read A : Print Count ; " " ; A
Next
Restore Dta3
Read S : Print S
Read S : Print S
Restore Dta4
Read L : Print L 'long type
End
Dta1:
Data &B10 , &HFF , 10
Dta2:
Data 1000% , -1%
Dta3:
Data "Hello" , "World"
'Note that integer values (>255 or <0) must end with the %-sign
'also note that the data type must match the variable type that is
'used for the READ statement
Dta4:
Data 123456789&
'Note that LONG values must end with the &-sign
'Also note that the data type must match the variable type that is used
'for the READ statement
Was den seriellen Buffer betrifft, da gibts es in Basom auch Funktionen die Buffer für die Ein- und Ausgabe anlegen. Die Buffergröße legst du selbst fest. In vielen ANwendungen ist es sehr empfehlenswert diese zu nutzen.
z.B. Beispiel:
Config Serialin = Buffered , Size = 160
Gruß
Frank
aber woher weiß ich genau wie groß ich die machen soll??
gruß
patrick
Hannebambel
21.02.2005, 22:22
Aha also man schreibt die datalines ins eeprom macht das bascom automatisch?
was den buffer betrifft ich lege den also fest und kann daten reinschreiben und irgendwann abrufen ohne wertvolle prozessorzeit beim beschreiben zu verschwenden?
gibt es eigentlich einen befehl der alle ausgangsports auf low setzt?
jetzt weiß ich aber ímmernoch nicht wie das mit dem timer funktioniert.
was den buffer betrifft ich lege den also fest und kann daten reinschreiben und irgendwann abrufen ohne wertvolle prozessorzeit beim beschreiben zu verschwenden?
nein, das schreiben in den buffer wird von bascom wahrscheinlich in einen interupt gepackt. somit brauchst du halt zwischendurch immer nen paar takte dafür...
was hast du vor? ist deine anwendung sooo zeitkritisch? dannn würd ich schon fast von bascom zu assembler wechseln...
gibt es eigentlich einen befehl der alle ausgangsports auf low setzt?
also alle pins eines port ist klar... und das müsstest du dann nen paar mal machen um sämtliche ports zu schalten...
zeit dafür: in asm würd die ganze aktion fünf takte brauchen bei vier ports am avr...
aber woher weiß ich genau wie groß ich die machen soll?
ist doch klar: so groß dass alle daten reinpassen die ankommen könnten, bis der buffer das nächste mal ausgelesen wird....
Hannebambel
22.02.2005, 17:20
wirklich zeitkritisch ist sie warscheinlich nicht ist nur son erstes uC projekt und ich kann die zeit noch nicht so einschätzen. aber ich glaub für meinen fall wird es allemal genügen.
wie brennt man die datalines ins eeprom? kann man das bei bascom einstellen oder macht er das automatisch?
Ich hab mir das mit den timern mal in der hilfe angeschaut, aber wirklich schlau bin ich daraus nicht geworden also wenn jemand weiß wie das funktioniert...
Hannebambel
23.02.2005, 15:50
und gleich noch was werden die datalines vom flash speicher aus adressiert bzw habe ich die vollen 512 byte zur verfügung oder fressen die Sprungmarken auch speicher?
Hannebambel
24.02.2005, 09:08
Wie kann man hex daten spiegeln (in bascom) z.b. 7f und gespiegelt ef
bzw 10110011 gespiegelt 11001101
Dein Bsp. ist kein Spiegel! der Spiegel von &H7f ist &H80
7f: 01111111
80: 10000000
Erreichst du zb. durch: spiegel = 255 - wert
Hannebambel
24.02.2005, 17:36
das ist invertiert nicht gespiegelt
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.