Bascom Uhr, erste Schritte, Fragen und Probleme

Status
Für weitere Antworten geschlossen.
Kann Bascom nicht subtrahieren ?

Code:
   Config Portc.4 = Output
   Led Alias Portc.4

Do
     If S5 - S3 = 1 Then
       Led=1            'Pin wird auf High, also 5V geschaltet
     else
       Led = 0          'Pin wird auf Low, also 0V geschaltet
     endif
     Waitms 100
Loop
Compilerfehler...
 
Kann Bascom nicht subtrahieren ?

Code:
Do
     If S5 - S3 = 1 Then
       Led=1            'Pin wird auf High, also 5V geschaltet
     else
       Led = 0          'Pin wird auf Low, also 0V geschaltet
     endif
     Waitms 100
Loop
Compilerfehler...
 
Wie komme ich aus eine Sub raus ?

Kurze Frage habe an Euch...

Folgendes möchte ich irgendwie lösen, geht aber nicht..:(

Code:
'Alarm auslösen

If S1 = S4 And S2 = S5 Then
   Led = 1
   Wait 2
   If Snooze = 0 Then
   End If
   Exit Sub

   Sound Speaker , 124 , 675
   Sound Speaker , 110 , 758
   Sound Speaker , 248 , 675
   Led = 0
End If

In der Sub wenn die Parametern S1=S4 and S2=S5 erfüllt werden geht eine LED an und wird ein kurzer ton abgespielt. (funzt) Nun möchte ich wenn während diese Zeit Snooze =0 ist dass ich aus der Sub vorzeitig rausspringen kann.
Beim compilieren bekomme eine Fehlermeldung "label not found und zeigt auf des Return am Codeende....kapiere nicht...
 
Hi
Sorry, das ich mich einmische... der Atmega dürfte irgenwo im Nirwana sein. Das Pollin-Board, das weiß ich aus eigener Erfahrung, hat ja einen 16 MHz Quarz, und wenn der schon benutzt wurde, siehe Beiträge zur ungenauen Uhr.. brauch's auch keinen Versuch mit ext. Takt. Da ist entweder der Reset platt oder irgend was anderes, jedenfalls ist hier mal ausnahmsweise Mülltonne angesagt.
Vielleicht kommen wir ja mal wieder in die Diskussion, schnelle Ergebnisse und wozu Grundwissen...:rolleyes:
Ein grundsätzlicher Tipp: Wenn da steht, das die Fuses auch gemeiner Weise ungebetene Gäste aussperren können, sollte man dies beachten und schauen, das die notwendigen Informationen vorliegen und verstanden sind. Auch hier mal wieder die Tutorial-Ecke von mikrocontorller.net.
Als ich diese gelesen habe, Respekt.
Auch hier wird gute Arbeit geleistet , keine Frage und es gibt schon ein paar Beiträge, die sehr hilfreich sind. Darum bin ich ja auch hier....:)
Gruß oldmax
 
Hi
Ich arbeite grad daran, Assembler anhand einer Anwendung zu vermitteln. Es ist allerdings ein etwas größeres Projekt und umfaßt insgesamt fast 200 Seiten.
Die Erfahrung würd ich euch gern zur Verfügung stellen. Vieleicht mal eine Assembleranwendung, die als Basis für eigene Programme dient und die Schnittstelle zu Open_Eye liefert. Dürfte so ca. 30 Seiten werden, Mal schauen, es kann etwas dauern, aber einiges kann ich aus bereits vorhandenem Material entnehmen. Allerdings, ich bin schon ein wenig neugierig, ob Thematik verständlich ist. Bei einer Schulung hab ich ja direkt Kontakt und stehe bei Fragen oder Unklarheiten zur Verfügung. In einem Forum brauche ich aber auch Feedback. Open_Eye hat mir aber gezeigt, "najaaaaa, ganz nett, ich schau's mir mal an ...."
Also, wenn ihr mir Feedback gebt, werd ich euch gern einen Leitfaden schreiben. Dann mach ich aber einen neuen Thread auf. Besteht Interesse ?
Gruß oldmax

PS: Ich mach das nicht selbstlos. Wenn ich in ein paar Jahren als Rentner nach Hause gehe, müssennahtlos weitere Aufgaben auf mich warten. Sonst vertrockne ich zu einem alten Sack. Und ich will das nicht........
 
Hi
Ein unterprogramm soweit ich kenne, begint irgendwo mit einem Label My_SubRoutine:
dann kommen deine Anweisungen
Am Ende steht ein Get.
Wie In Basic ein Label angesprungen wird, weiß ich nicht, aber ich nehme an Goto My_Subroutine
Also, mal ein Beispiel
Hauptprogramm
anweisung
Anweisung
etc
Goto MySubroutine
Anweisung
etc.
Goto Hauptprogramm ! Auf keinen Fall darf hier dein Programm weiterlaufen
denn hier stehen nun deine Unterprogramme
My_Subroutine:
Anweisung
Anweisung
Ret
Übrigends, ich halte es für einen schlechten Programmierstil, mitten in einer Subroutine auszusteigen. Ein Unteprogramm wird nur am Ende mit Ret verlassen und bevor die Gemeine gleich schreit...:fie: gewöhnt es euch einfach an, glaubt mir, ihr werdet es sonst irgendwann einmal verfluchen.:cool:
Gruß oldmax
 
Hallo!

Bascom kann schon subtrahieren.
So wie Du das machst, geht's nicht.

Aber so z.B.

S = S5 - S3

If S = 1 Then
......

Aber vieles steht in der Hilfe!

MfG
 
Hallo sulawesi!

Wie kommst du denn überhaupt zu "Alarm auslösen"? :hmmmm:
Es steht da zwar etwas von "Exit Sub", aber........... wenn es eine Subroutine ist die du z.B. via "Gosub" aufgerufen hast, dann fehlt das Return.... und nicht "Exit Sub".

Ich muss aber ehrlich zugeben, dass wir gar nicht weiter suchen sollten! :cool:

Wie ich schon mal geschrieben habe, finde ich deine Uhrenidee als Programmierübung wirklich super.
Bevor du nun aber anfängst das jetzige Uhrenprogramm in einen Wecker zu verwandeln würde ich erst einmal beginnen, den alten Programmcode zu ordnen, zu strukturieren und zu optimieren.
Erst DANN solltest du mit zusätzlichen Optionen beginnen.
Anderenfalls wirst du mit deiner jetzigen Programmstruktur sehr schnell an die "Grenzen" stoßen.

Außerdem lernst du so wieder etwas und kannst später auf dieses Wissen alle anderen Programme beginnen. ;)

Gruß,
Cassio
 
Danke Leute,

mit dem Voschlag bin einverstanden..übrigens meine Uhr ist soweit "fertig" , was ich probiert habe funzt, aber ich möchte gerne noch einige tipps zu optimierung haben...wenn ich morgen den Code sauber gemacht habe zeige ich Euch...;)

zwischendurch habe was interresantes gefunden wo ich die Bascom Befehle durchgestöbert habe..beim kaffeetrinken.. musste ich was einfaches probieren aber...

Code:
$regfile = "m8def.dat"
$crystal = 16000000
$hwstack = 100
$swstack = 100
$framesize = 100

Dim Messung As Word
Dim Volt As Single

Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , _
   Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
Config Lcd = 16 * 2

Const Adc_multi = 0.0048828125    ' = 5.0 / 1024.0

Config ADC = Single, PRESCALER = Auto, Reference = AVCC
Start Adc

Messung = Getadc(0)
Volt = Messung * Adc_multi


Cls
Do
   Locate 1 , 1
   Lcd "Messergebniss"
   Locate 2 , 1
   Lcd Volt
   Waitms 5
Loop

End

Verstehen tu ich alles, aber warum wird die Spannung am getadc(0) Also am Pin23 nur einmal gemessen ? (+5V aus-an dann wird neu gemessen )

+5V Poti GND
Schleife an Pin23
 
Hallo,

Hi
Sorry, das ich mich einmische... der Atmega dürfte irgenwo im Nirwana sein. Das Pollin-Board, das weiß ich aus eigener Erfahrung, hat ja einen 16 MHz Quarz, und wenn der schon benutzt wurde, siehe Beiträge zur ungenauen Uhr.. brauch's auch keinen Versuch mit ext. Takt. Da ist entweder der Reset platt oder irgend was anderes, jedenfalls ist hier mal ausnahmsweise Mülltonne angesagt.
ich hab das mal komplett durchgetestet. Alle Oszillatoreinstellungen von
vorn bis hinten verwendet. Man kann sogar parallel zum angeschlossenen
Quarz einfach den externen Oszillator ransetzen. Wenn es "nur" der Takt
ist den man sich verdreht hat kann man das Ding absolut sicher mit nem
externen Oszillator zwangversorgen. Das funktioniert.

Vielleicht kommen wir ja mal wieder in die Diskussion, schnelle Ergebnisse und wozu Grundwissen...:rolleyes:
Ein grundsätzlicher Tipp: Wenn da steht, das die Fuses auch gemeiner Weise ungebetene Gäste aussperren können, sollte man dies beachten und schauen, das die notwendigen Informationen vorliegen und verstanden sind. Auch hier mal wieder die Tutorial-Ecke von mikrocontorller.net.
Als ich diese gelesen habe, Respekt.
Auch hier wird gute Arbeit geleistet , keine Frage und es gibt schon ein paar Beiträge, die sehr hilfreich sind. Darum bin ich ja auch hier....:)
Gruß oldmax
Da kann ich zustimmen. Es gibt auch ein paar Fuses die einen ganz sicher
aussperren wenn man keinen HV-Programmer wie den STK500 oder nen
JTAG hat. Wobei ... wenn man die JTAG-Fuse abgeschaltet hat dann nutzt
einem nur noch HV-Programmierung was :D

Gruß
Dino
 
Hi oldmax,

also grundsätzlich besteht immer Interesse. Dümmer wird man durch weitere
Infos ja nicht ;) Wenn die ewigen Zeitprobleme nicht wären würde ich auch
bestimmt etwas mehr machen ... :eek:

Gruß
Dino
 
Halle Leute, schön das das Thema wieder angesprochen wird, ich vermute daß ich etwas mit der CKSEL irgendwas veranstaltet habe....

Könnte man über das Pollin Board Steckbrett etwas versuchen ? nur Just for fun....
 
Hi,

Halle Leute, schön das das Thema wieder angesprochen wird, ich vermute daß ich etwas mit der CKSEL irgendwas veranstaltet habe....

Könnte man über das Pollin Board Steckbrett etwas versuchen ? nur Just for fun....
schau mal in Beitrag #8 in diesem Thread. Da habe ich einen Link auf den
Beitrag gesetzt in dem ich das mal erklärt habe. Du mußt nicht unbedingt
nen Quarzoszillator nehmen wie ich das gemacht habe. Nimm dir nen NE555
und bau nen Oszillator der so um die 250kHz...1MHz schwingt. Pack den an
den Pin XTAL1 des Atmels (beim Mega8 ist das Pin 9) und dann wird man
sehen. XTAL1 ist der Eingang des Oszillators. Wenn du da ein Signal anlegst
dann zwingst du dem Atmel dieses Signal als Systemtakt auf. Egal was du
als externe Taktquelle eingestellt hast. Es kann auch ruhig noch der Quarz
mit dranhängen. Der stört dabei nicht.

Gruß
Dino
 
Aber....und wenn ich alles so weit afgebaut habe..wie geht es denn weiter ?
Dann programmierst du ihn so als wenn du die Taktquelle nicht verstellt wäre :cool:
Also als erstes würde ich ihn komplett löschen und die Fuses auf Factory-Default
setzen. Entweder werden die mit der kompletten Löschung auch zurückgesetzt
oder man muß es selber machen. Weiß ich aber zu so später/früher Stunde im
Moment nicht aus dem Kopf. Auf jeden Fall wirst du ihn auslesen können wenn
es nur die Taktquelle war die du verstellt hast.

Notfalls morgen weiter wenn die Gedanken durch ein paar Stündchen Schlaf
wieder frisch und geordnet sind :vollkommenauf: :D

Gruß
Dino
 
Guten Morgen erstmal

Verständnisfrage:

Flashen, standard, tue ich über Pollin Board ( RS232 PonyProg ) Quarz liegt schon an Atmega an.

Was ist der Unterschied, wenn ich den Atmega auf dem Steckbrett aufbaue mit Ext. Quarz oszillator oder Takt ?

Muss ich dann eine Verbindung vom Pollinboard (ISP Port ) ein Kabel zum Atmega legen ?

Ich habe rigendwo noch ein LPT to ISP Kabel..würde es helfen ?
 
Hi
Na gut, wenn es wirklich nur am Takt liegt..Schau mal hier www.mikrocontroller.net/articles/AVR_Fuses#Taktquellen_Fuse_Einstellung
Ich hab es schon ein paarmal erwähnt, das es da ganz gute Lektüre zum Nachlesen gibt.
Einen Takt bringt man dem Controller mit ner Secknadel bei... wenn ich mich richtig erinner Pin 6. Zum Programmieren den µC aber im Board lassen.
Gruß oldmax
 
Hallo!

Naja, so ganz sicher bin ich mir nicht, ob Du alles verstehst.

Aber dieser Fehler ist so trivial dass Du mit 2 Sekunden nachdenken
selber draufkommen wirst.

MfG
caargoo
 
Status
Für weitere Antworten geschlossen.

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)