simples BASCOM Programm?!?!? könnt ihr mir beim erklären helfen????

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 18 10 2024  13:27:48      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 Nächste Seite )      


Autor
simples BASCOM Programm?!?!? könnt ihr mir beim erklären helfen????

    







BID = 374414

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika
 

  


Da kenn ich keine ...


mfg

_________________

BID = 374419

bastelheini

Schriftsteller



Beiträge: 618
Wohnort: Sachsen

 

  

oder ne seite wo man übungsaufgaben hat und sich die lösung später angucken kann?

_________________
-----------------------------
---MfG Bastelheini---
-----------------------------

BID = 374749

bastelheini

Schriftsteller



Beiträge: 618
Wohnort: Sachsen

hi ich hab noch mal ein einfaches lauflicht geschrieben...

$regfile = "m8def.dat"
$crystal = 8000000
$baud = 1200
Ddrb = &B1111111
Anfang:
Waitms 10
Portb = &B00000001
Waitms 10
Portb = &B00000010
Waitms 10
Portb = &B00000100
Waitms 10
Portb = &B00001000
Waitms 10
Portb = &B00010000
Waitms 10
Portb = &B00100000
Waitms 10
Portb = &B01000000
Waitms 10
Portb = &B10000000
Goto Anfang

das ganze werd ich dann auch noch mal in einer DO LOOP schleife machen....vielleicht mit verschiedenen modi


_________________
-----------------------------
---MfG Bastelheini---
-----------------------------

BID = 377207

bastelheini

Schriftsteller



Beiträge: 618
Wohnort: Sachsen

hi

da jetzt alles nötige angekommen und aufgebaut ist kann ich weiter fragen

und zwar:

kann es sein das bascom bei dem befehl "waitms" keine variablen annimmt? also ich nicht b als zeit festlegen kann und a dann irgendwo verändern kann?

wie funktioniert das mit den interrupts?

ich wollte ein programm schreiben, in dem 2 led's abwechselnd blinken. zwischen beiden blinkbefehlen wird jeweils "waitms" gesetz.....standartwert sollte da 50 sein und ich wollte es so lösen: "b=50"
dann sollte bei tstendruck (t1) b=50 werden bei taster2 b=b+10 und bei taster3 b=b-10.......dazu brauche ich doch aber die interrupts oder?



_________________
-----------------------------
---MfG Bastelheini---
-----------------------------

BID = 377226

bastelheini

Schriftsteller



Beiträge: 618
Wohnort: Sachsen

ich noch mal.....das mit variablen funktioniert doch.....ging bloß vorhin nicht....hab keine ahnung warum....

also bräuchte ich jetzt nur noch die interrupt erklärung.....

_________________
-----------------------------
---MfG Bastelheini---
-----------------------------

BID = 377250

Humus

Aus Forum ausgetreten

Moin Moin,

also zum Thema Interrupts hilft dir das sicherlich weiter:
Du musst bei Einführung 5 schauen.
http://rowalt.de/mc/index.htm

Desweitern kann ich dir das Buch von Roland Walter nur ans Herzlegen, siehe Link!

Dann zu deinem Lauflicht, das hast du jetzt meiner Meinung nach etwas umständlich geschrieben kann man sich auch etwas vereinfachen mit hilfe von Arrays.

So hier den Code zu deinem Lauflicht:


Code :

'Lauflicht.bas

'----------------------------------------------------------------------
$Regfile = "m8def.dat" 'ATmega8
$Crystal = 4000000 '4 MHz

DDRD = &B11111111 'PortD als Ausgang festlegen
PORTD = &B00000000 'alle LEDs aus

'Variablen definieren
Dim LED(8) As Byte 'Array mit 8 Feldern definieren
Dim zaehler As Byte

LED(1) = 0 : LED(2) = 1 : LED(3) = 2 : LED(4) = 3 : LED(5) = 4 : LED(6) = 5 : LED(7) = 6 : LED(8) = 7 'Array felder mit Werten Füllen

'Hauptschleife
Do

For zaehler = 1 To 8 Step 1
Toggle PORTD.LED(zaehler)
Waitms 250
Toggle PORTD.LED(zaehler)
Next zaehler

Loop
End



Der Befehl Toggle invertiert den Aktuellen Wert von PORTD.

Wenn du Fragen zu dem Programm hast sag bescheid!


[ Diese Nachricht wurde geändert von: Humus am 12 Okt 2006 16:53 ]

BID = 377301

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Hallo Bastelheini,

du kannst die INTn-Quellen benutzen.
Schau mal ins Datenblatt, dort stehen alle wichtigen Register, die man beschreiben muss.

Dann schließt du deine Taster an die INT-Eingänge an. Einen Pull-Up nach VCC und einen Pin des Tasters auf Masse. Wird nun der Taster gedrückt, ensteht kurzeitig ein LOW-Pegel. Wenn man einstellt, dass der Interrupts ausgeführt wird bei einer fallenden Flanke wird nun ein Unterprogramm aufgerufen. Dort solltest du entsprechende Maßnahmen zur Entprellung des Tasters treffen. (z.B. einige 10ms warten, bis der Taster sich beruhigt.)

Du musst ebenfalls im Programm deine Interrupts anschalten:

Enable Interrupts

Dann musst du jedes einzelne Interrupts aktivieren:
Enable INT0 'Taste 1
Enable INT1 'Taste 2

Dann müssen die Labels für das zu startende Unterprogramm angegeben werden:

On INT0 Goto taste1_druck
On INT1 Goto taste2_druck

Danach müssen noch die Einstellungen für das Triggern eingestellt werden, wie das geht, steht im Datenblatt und/oder in der BASCOM-Hilfe zu den INTs.

Im Programm sind nun irgendwo deine Labels:

taste1_druck:
[es folgt Code, der nicht zu lang sein sollte]
Return 'Springt wieder an die Stelle, wo das laufende Programm durch den Interrupts unterbrochen wurde.

_________________

BID = 377446

bastelheini

Schriftsteller



Beiträge: 618
Wohnort: Sachsen

hi

@humus

ich fang gleich mal mit den fragen an

also "Dim LED(8) As Byte"
legt led(1), led(2), led(3),...led(8) sozusagen als einzelne variablen an, die aber numeriert sind!? soweit richtig?


und ein array ist sozusagen eine tabelle in der daten abgelegt werden...dann stellt "LEDxxx" die spalte dar und "(X)" die zeile?!?!?

und zb "led(4) =3 heist, dass PD4 auf high geschaltet wird?!?!? ja?

nur warum invertierst du den wert mit dem befehl toggle?????? das begreif ich noch nicht so ganz?!

das auf rowalt.de les ich mir gleich mal durch....

@doncomi

ich werde es mal probieren und dann wieder berichten ob es geklappt hat....

_________________
-----------------------------
---MfG Bastelheini---
-----------------------------

BID = 377471

Humus

Aus Forum ausgetreten


Zitat :
also "Dim LED(8) As Byte"
legt led(1), led(2), led(3),...led(8) sozusagen als einzelne variablen an, die aber numeriert sind!? soweit richtig?


Ja!


Zitat :
und ein array ist sozusagen eine tabelle in der daten abgelegt werden...dann stellt "LEDxxx" die spalte dar und "(X)" die zeile?!?!?

Ja!


Zitat :
und zb "led(4) =3 heist, dass PD4 auf high geschaltet wird?!?!? ja?

Nein!

LED(4) = 3

LED(4) ist meine Variable in die ich den Wert 3 lade. Dieser Wert steht für die PORT - Nummer: PD0...PD7. In deinem Beispiel wäre es der PORTD3.


Zitat :
nur warum invertierst du den wert mit dem befehl toggle?????? das begreif ich noch nicht so ganz?!


Icb Invertiere den Wert, da meine PORTs vorher alle auf 0 sind d.h. Ausgeschaltet sind, 0 Invertiert = 1 Ausgeschalter invertiert Eingeschaltet. Verstanden?

Und dies mach ich zwei mal mit toggle. Einmal zum einschalten und das zweite mal zum ausschalten. Dazwischen liegt meine Wartezweit "WaitMs 250" .

Was ich dir noch empfehlen kann ist die Hilfe von Bascom auch sehr hilfreich.

hoffe, ich hab das einigermaßen verständlich erklärt, ansonsten einfach weiter Fragen!

BID = 377477

bastelheini

Schriftsteller



Beiträge: 618
Wohnort: Sachsen

danke jetzt habe ichs verstanden.....werd mich noc´h bisschen über interrupts und PWM einlesen....danke

hat du ein paar ansatzpunkte zur PWM?

_________________
-----------------------------
---MfG Bastelheini---
-----------------------------

BID = 377524

Humus

Aus Forum ausgetreten

An der PWM bin ich gerade selber am Ausprobieren!

Ich bin auch noch recht frisch in Bascom....

Musst auf jeden fall mit einem Timer Arbeiten

Wünsche dir weithin viel spaß beim ausprobieren!

BID = 379292

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

So, es ist immer hilfreich, sich die entsprechenden Datenblaetter durchzulesen, da dort die Hardware und alle wichtigen Register beschreiben sind.

Die BASCOM-Befehle wuerde ich dafuer nicht benutzen.


Schoene Gruesse aus Assuan, Aegypten

_________________

BID = 384476

bastelheini

Schriftsteller



Beiträge: 618
Wohnort: Sachsen


hallo ich mal wieder....


kann mir jemand sagen warum dieses programm zur PWM nicht funktioniert.... egal welchen wert ich bei "compare1a=2 einsetze.....die led ist immer aus.......am anfang des programmes lasse ich sie kurz an und wieder ausgehen es liegt also weder an der led noch am atmega8..........



$regfile = "m8def.dat"
$crystal = 8000000

Config Pind.5 = Output

Portd.5 = 1
Waitms 15
Portd.5 = 0

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1

Do
Compare1a = 55
Loop

End

ich bin ratlos....:-(

_________________
-----------------------------
---MfG Bastelheini---
-----------------------------

BID = 384536

PhyMaLehrer

Schriftsteller



Beiträge: 911
Wohnort: Leipzig

Also, ich habe diese Funktion noch nicht selbst benutzt (deshalb bitte um Nachsicht, falls ich mich irre), aber sind für PWM-Ausgaben nicht zwei Ausgänge festgelegt - OC1A (PB.1) und OC1B (PB.2)?

BID = 384560

bastelheini

Schriftsteller



Beiträge: 618
Wohnort: Sachsen

ach soooooo dann ist das die HARDWARE PWM und nicht software PWM......aha..........wie mache ich das dann softwareseitig sodass ich einen beliebigen pin zur PWM nehmen kann? kann mir da einer ein (komentiertes) beispielprogramm schreiben? wäre nett!

_________________
-----------------------------
---MfG Bastelheini---
-----------------------------


Vorherige Seite       Nächste Seite
Gehe zu Seite ( Vorherige Seite 1 | 2 | 3 Nächste Seite )
Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 22 Beiträge im Durchschnitt pro Tag       heute wurden bisher 5 Beiträge verfasst
© x sparkkelsputz        Besucher : 182195554   Heute : 1961    Gestern : 4612    Online : 533        18.10.2024    13:27
4 Besucher in den letzten 60 Sekunden        alle 15.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0468089580536