PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tiny15 voll belegt? und neues Problem!



astro9481
31.01.2006, 16:57
Hi,

ich habemal wieder eine kleine Fragem und zwar entwerfe ich gerade eine shcaltung mit einem Tiny15. Es wäre aber jetzt alle 6IO belegt. Aber wie wird der denn dann programmiert? weil ich brauche doch zumindest den rest Pin, oder??

Ciao Marco

Mehto
31.01.2006, 18:48
Hallo,

ja, wenn du den Resetpin einmal deaktiviert hast kanst du den Tiny nicht mehr per ISP programmieren.

Das geht dann nur noch per Highvoltage.

Gruß,
Mehto

Ratber
31.01.2006, 21:46
Teste deine Programteile auf den anderen 5 Pinnen.
Zum Ende läst du einen entbehrlichen weg (zb. Status-LED's) um das ganze Programm zu testen.
Wenn das läuft dann den Reset im Programm wieder belegen und schreiben.
Danach das Fuse für den Reset ändern damit der Pin normal genutzt werden kann.

Fertig.

Haste aber denoch nen Fehler im Programm dann haste die A-Karte und mußt ,wie Mehto schon sagte, per Hcchvolt wieder drann.

astro9481
31.01.2006, 22:21
Ja alles klar, dann werde ich das so testen, und wenns klappt werde ich den port umschalten auf reset und fertig.

Nur mal so zur Info was brauche ich denn zum Hochvolt programmieren?

Cia Marco

izaseba
31.01.2006, 23:06
Nur mal so zur Info was brauche ich denn zum Hochvolt programmieren?

z.B. STK500

Ratber
01.02.2006, 00:13
Nur mal so zur Info was brauche ich denn zum Hochvolt programmieren?

Im Grunde ist das nicht so kompliziert wie es sich vieleivht anhöhrt.


Normalerweise arbeitet ein AVR mit bis zu 5V.

Programiert wird meist über den Seriellen SPI Modus den fast jeder AVR kann.
Dh. der Resetpin wird auf masse gezogen und schon kann es auf den SPI-Pinnen (SCK,MISO,MOSI) losgehen.

Wenn der Reset aber mit der "Reset-Disable Fuse" abgeschaltet wird dann isses damit natürlich Essig also hat man sich eine anfdere Möglichkeit offen gelassen.

Wenn am alten Reset-Pin eine eindeutige Spannung anliegt (In diesem Falle +12V weil die Deutlich von den max 5V entfernt ist) dann läast er sich wieder programieren bzwm die ResetDisable Fuse zurücksetzen.

Natürlich ist es mit 12V allein nicht getan.
Das ganze ist ein Zeitlich genau abgestimmter Vorgang der vorschreibt wann welcher Pinn welchen pegel bekommt und in welcher Reihenfolge die Spannungen anliegen müssen.

Das ganze ist übrigens schön in fast jedem Datenblatt unter "Memory Programming" beschrieben.

Das STK500 hat einenen HV-Programiermodus mit drinne aber nur dafür rund 90-100€ ausgeben ist etwas überzogen.
Es gibt auch einige Selbstbauprogrammer nebst Software die das ermöglichen und wesentlich günstiger sind.
zb. der HV-Prog.

Aber das beste ist immernoch "vorher" drüber nachzudenken und mehrmals zu kontrollieren bevor man den Finalen Schritt macht.

Ich persönlich nehme lieber nen größeren Controller wenn die Pinne nicht mehr reichen.
Leider ist der nächst größere gleich 20 Polig.
Bei den Pic's ist die Auswahl da besser.
Einen 14 Poligen AVR hab ich mir auch schon ne weile gewünscht.
Manche lösen das indem se nen Tinyx5 nehmen und per I2C oder Schieberegister ne Porterweiterung machen aber wenn ich dem 8 Poligen nen 14/16 Poligen dahinter hänge dann kann ich auch gleich zb. nen Tiny26 nehmen ,der kommt kleiner und billiger.

Vom 15L hab ich mich übrigens diese Woche verabschiedet.
Mit den neueren Bascom versionen ist der nicht mehr zu Proggen.
Is zqwar schade wegen des günstigen Preises von 1.23€ aber der T13 ist mit 1.39€ mittlerweile auch billig und etwas besser zu handhaben (In Bezug auf Bascom ist das aber noch zu überprüfen.Hab gerade keinen da)

astro9481
02.02.2006, 19:01
Ja alles klar,
habe jetzzt auch angefangen zu programmieren,
aber schon kommt das nächste Problem,
und zwar kann man keine ALias vergeben bei dem attiny?
(sagt mir in einer If then anweisung Invalid Datentyp)
Und auch keine variablen definieren?
Wenn nein, wie kann ich dann dann einen Analogwert einlesen?`

Ciao Marco

Ratber
02.02.2006, 19:20
Die 8-Poligen Tinys zwischen 11 und 15 sind in der Unterstützung durch Bascom sehr starkt eingeschränkt.
Eigentlich sollte man sie besser in Assembler programieren oder man muß mit dem wenigen was da iat tricksen.

Wenn es auf den Euro nicht ankommt dann sind die Tx5 ne gute alternative.
Ich rabeite seit letztem jahr mit dem Tiny45.
Neben mehr Flash bringt der auch mehr Hardware mit.
Kostet aber auch etwas mehr

astro9481
02.02.2006, 19:25
ist eigentlich nur ne winzige anwendung, lohnt schon fast gar nicht mit uC, aber zum üben habe ich mir gedacht machst das mal mit uC. Wwerde mir den Tiny45 mal angucken

Also das mit dem alias klappt jetzt glaub ich. zumindest gibt er keinen Fehler mehr an.
Und denb analogwert abfragen kann ich doch auch direkt in der If schleife machen, also so

If getadc(2) < 200 then
usw
usw

das sollte doch klappen, oder?

Ciao Marco

PS: ich muss echt mal sagen das der Support hier echt spitze ist, erlebt man nicht in allen Foren

Ratber
02.02.2006, 19:38
Also wenn du nur mal so rumexperimentieren willst dann wäre der Mega8 oder Mega16 viele Flexibler.
Da haste genug Ports ,Hardware und Flash.

astro9481
02.02.2006, 19:48
Ja habe ja eine Experementierboard mit Mega8, aber wollte jetzt was eigenes machen.
Soll eine Schaltung fürs Auto werrden die Überwacht die Helligkeit, die Zündung und die Zentralverreigelung.
Und wenn die Zündung aus ist, das signal für die Stellmotoren zum abschließen kommt und es dunkel genug ist soll für 10min ein paar Scheinwerfer angehen.


hier mal der Code,
wie gesagt ich weiß nicht ob man diese For next schleife ohne variable machen kann.



$regfile = "at15def.dat"
$crystal = 3686400

Config Portb = &B00001011 'Ausgangs Eingangszuweisung

Set Portb.0 'Pull Up


Funkzu Alias Pinb.0 'Alias
Zuendung Alias Pinb.1 'alias
Led Alias Portb.2 'alias
Helligkeit Alias Pinb.3 'alias'
Relais Ldr Alias Portb.4 'Alias
Relais Alias Portb.5 'Alias

'Dim Licht As Integer
Dim Helfer As Integer

Declare Sub Ausgang


Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc


Do
If Zuendung = 0 Then 'Abfrage ob zündung an ist
If Funkzu = 1 Then 'abfrage ob das ZV signal anliegt
Ausgang 'rufe Sub Ausgang auf
Else
Goto Ende 'Springe Zu Ende
Else
Goto Ende 'springe zu ende
Ende:
Loop
End




Sub Ausgang
Neustart:
Relais = 1
If Getadc(2) < 200 Then
Relais Ldr = 1
Print "Dunkelheit erreicht, schaltung aktiv!!!"
End If
For Helfer = 0 To 600
If Funkzu = 1 Then Print "Zeit neu gestartet durch Funk Signal!!!"
If Funkzu = 1 Then Goto Neustart 'Wenn ZV_Signal anliegt wieder zum Anfang springen
Next
Relais = 0
Relais Ldr = 0
End Sub Ausgang



Edit:
Was meinst du für enen Prozessor mit X5??
Und wo bekommt man den Attiny45, habe bei reichelt und COnrad geguckt, aber nichts gefunden. Das Daenblatt habe ich, abe mehr nicht, zumindest auf die schnelle

Ciao MArco

DIYLAB
02.02.2006, 20:27
Und wo bekommt man den Attiny45

Moin,

den Tiny45 bekommst Du hier -> http://www.csd-electronics.de/de/index.htm.

Genau so gut geht der Tiny13.
Ich benutze den schon länger und er macht mit Bascom keine Probleme.
Dein Projekt wäre damit eins-fix fertig.

LG,
Bruno

astro9481
02.02.2006, 20:32
ok, werde da mal gucken, mit dem attiny 13 bzw 45 macht er zumindest schonmal keine probs mehr wegen dem fehlenden sram

DIYLAB
02.02.2006, 20:48
ok, werde da mal gucken, mit dem attiny 13 bzw 45 macht er zumindest schonmal keine probs mehr wegen dem fehlenden sram

Jo.
Der Tiny13 macht auch sonst keine Probs unter Bascom.
Hab schon die verrücktesten Sachen damit gemacht.
Aber bitte ins Datenblatt gucken, sonst erlebst Du wohlmöglich eine kleine Überraschung in Bezug auf die interne Referenzspannung O:)

LG,
Bruno

astro9481
02.02.2006, 20:56
Warum was ist denn damit?
Werde gleich mal gucken wegen der Referenzspannun.
Allerdings habe ich jetzt schon wieder ein Problem, und zwar macht er mit ne Fehlermeldung.
Setze den code mal eben an.
er schreibt was von
.equ not found, probably using function that are no supported bei the selected chip(ubrr)
und noch 3 fehlermeldungen


$regfile = ""attiny13.dat "
$crystal = 3686400


Config Portb = &B00001011 'Ausgangs Eingangszuweisung

Set Portb.0 'Pull Up


Funkzu Alias Pinb.0 'Alias
Zuendung Alias Pinb.1 'alias
Led Alias Portb.2 'alias
Helligkeit Alias Pinb.3 'alias'
Relais Ldr Alias Portb.4 'Alias
Relais Alias Portb.5 'Alias

Dim Licht As Integer
Dim Helfer As Integer


Config Adc = Single , Prescaler = Auto , Reference = Internal

Start Adc


Do
Licht = Getadc(2)
If Zuendung = 0 Then 'Abfrage ob zündung an ist
If Funkzu = 1 Then 'abfrage ob das ZV signal anliegt


Neustart:
Set Relais
If Licht < 200 Then
Set Relais Ldr
Print "Dunkelheit erreicht, schaltung aktiv!!!"
End If
'For Helfer = 0 To 600
'If Funkzu = 1 Then Print "Zeit neu gestartet durch Funk Signal!!!"
'If Funkzu = 1 Then Goto Neustart 'Wenn ZV_Signal anliegt wieder zum Anfang springen
'Next
Reset Relais
Reset Relais Ldr 'rufe Sub Ausgang auf


End If
End If
Ende:
Loop
End

astro9481
02.02.2006, 21:00
schon gut habs gefunden.
Ich darf keine Print Befehle schreiben, ist ja auch logisch, hatt ja keine uart

astro9481
02.02.2006, 21:32
hmm, eine interne Feference von 1,1V,
kann ich die auch auf 5V setzen?
Weil ich habe ja keinen extra eingang dafür, oder muss ich bei dem config befehl einfach vcc schreiben anstatt internal??

Ratber
02.02.2006, 22:51
@Astro

Ja,CSD haste ja schon genannt bekommen.
Da kauf ich auch immer ein.
Die sind schnell,Preiswert (Auch versandkosten) und wenn man mal ne Extrawurst will dan geht das oft auch noch.



Ich darf keine Print Befehle schreiben, ist ja auch logisch, hatt ja keine uart

Kannst dir ja ne Softuart zulegen dann gehts wieder



hmm, eine interne Feference von 1,1V,
kann ich die auch auf 5V setzen?
Weil ich habe ja keinen extra eingang dafür, oder muss ich bei dem config befehl einfach vcc schreiben anstatt internal??

Ja wie immer kannste auch Vcc nehmen.

Neben den 1.1V gibts auch noch die gewohnten 2.56V

DIYLAB
03.02.2006, 06:45
Neben den 1.1V gibts auch noch die gewohnten 2.56V

Moin,

wie soll man denn das verstehen? Laut Datenblatt gibts nur eine interne Referenz und die ist auf 1.1V festgelegt.

VG,
Bruno

astro9481
03.02.2006, 07:10
CSD sieht echt gut aus, da werde ich wohl auch mal bestellen, danke für den Tip.

Was verstehst du unter Softuart? Die dann nur in der Simulation läuft??


Und wie mache ich das mit der Reference? Wenn ich doch auf external stelle muss ich doch auch einen Pin haben wo ich die Spannung anlege, oder nicht? der kann man direkt bei config auf VCC stellen.

Und nochmal zur Frage zur Verständnis des Referenzwertes. Ich lege doch hiermit nur fest in welchen Bereich ich de 10bit auflösung habe, oder? Also wenn ich die Rferenzspannung auf 5V habe entspricht 0-5V einem Wert von 0-1024, und wenn ich referenz von 1,1V habe entspricht 0-1,1V einem Wert von 0-1024. SOmit wäre die Auflösung höher. Mehr steckt da doch nicht hinter, oder??


Und dann noch ne Frage zu dem Programm, hbe das jetzt mal solange zum trsten in den Mega8 gespielt, allerdings habe ich das Problem das die for next schleife immer nur bis 10 zählt und dann wieder auf 0 zurück springt.
Und dann noch ein Problem, ich lese den Analogwertt ja aus, er zeigt mir den auch richtig an, aber wennn ich dann nachher die Abfrage mache auf kleiner 200 stellt er den analogen wert immer auf einen festen wert, also egal was ich vorher eingelesen habe??
Was kann das sein?

Werde nachher mal den code posten.



Ciao Marco

Ratber
03.02.2006, 12:47
Neben den 1.1V gibts auch noch die gewohnten 2.56V

Moin,

wie soll man denn das verstehen? Laut Datenblatt gibts nur eine interne Referenz und die ist auf 1.1V festgelegt.

VG,
Bruno


Ich glaube wir reden beide von unterschiedlichen Controllern.

Der Tiny13 hat nur 1.1V
Ich meinte den Tinyx5


@astro


Was verstehst du unter Softuart? Die dann nur in der Simulation läuft??

Schau mal in der Hilfe unter "Open" nach da stehts erklärt.
Die Serielle ist zwar nur Simuliert und hat einschränkungen aber zum absetzen von Daten ausreichend.


Und wie mache ich das mit der Reference? Wenn ich doch auf external stelle muss ich doch auch einen Pin haben wo ich die Spannung anlege, oder nicht? der kann man direkt bei config auf VCC stellen.

Ja,ich weiß jetzt nicht welchen Tiny du willst (13/x5) deswegen mal für beide.

Beim Tiny13 kannste nur zwischen der Internen 1.1V Referenz und der Versorgungsspannung (Vcc) wählen.

Beim Tinyx5 zwischen 1.1 und 2.56V Intern,Versorgungsspannung (Vcc) und einer frei wählbaren Spannung (Muß innerhalb der Versorgungsspannung liegen) also Vref an Pin B0



Und nochmal zur Frage zur Verständnis des Referenzwertes. Ich lege doch hiermit nur fest in welchen Bereich ich de 10bit auflösung habe, oder? Also wenn ich die Rferenzspannung auf 5V habe entspricht 0-5V einem Wert von 0-1024, und wenn ich referenz von 1,1V habe entspricht 0-1,1V einem Wert von 0-1024. SOmit wäre die Auflösung höher. Mehr steckt da doch nicht hinter, oder??

Korrekt.



Und dann noch ne Frage zu dem Programm, ...........

..........Werde nachher mal den code posten.

Ja,ohne Code versteh ich nicht was gemeint ist.

astro9481
04.02.2006, 00:53
So, ist zwar später geworden, aber jetzt kommt auch der code.

Wie gesagt ist für den ATmega8 im moment umgeschriben.


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


Config Portc = &B11110100 'Ausgangs Eingangszuweisung

Set Portc.0 'Pull Up
Set Portc.1

Funkzu Alias Pinc.0 'Alias
Zuendung Alias Pinc.1 'alias
Led Alias Portc.2 'alias
Helligkeit Alias Pinc.3 'alias'
Relais Ldr Alias Portc.4 'Alias
Relais Alias Portc.5 'Alias

Dim Licht As Integer
Dim Helfer As Byte

Declare Sub Ausgang

Config Adc = Single , Prescaler = Auto , Reference = Internal

Start Adc


Do
Licht = Getadc(3)
Print "Helligkeit: " ; Licht
If Zuendung = 0 Then
Print "zuendung aus!!!" 'Abfrage ob zündung an ist
Print
If Funkzu = 1 Then 'abfrage ob das ZV signal anliegt
Print "Zuendung aus und Funk Signal erhalten!!!"
Print
Wait 2
Set Relais
Print "Relais ohne LDR: " ; Relais
Print "Licht: " ; Licht
Wait 2
If Licht < 200 Then
Set Relais Ldr
Print "Relais mit LDR: " ; Relais Ldr
Print
Wait 2
End If
Neustart:
For Helfer = 0 To 60
Wait 1
If Funkzu = 1 Then Helfer = 0
Print "Istzeit: " ; Helfer
Next
Reset Relais
Print "Relais ohne LDR: " ; Relais
Reset Relais Ldr
Print "Relais mit LDR: " ; Relais Ldr
Wait 2
End If
End If
Ende:
Loop
End



EDIT:
Jetzt habe ich auch noch das problem das Relais ldr gar nicht mehr gesetzt wird, also diese If licht<200 then wird gar nicht verarbeitet.
Ich versthes echt nicht mehr


Und wegen dem Attiny. Ich hatte mich auch für en Attiny13 entschieden, da ich den X5 nicht gefunden habe.
Wie schalte ich den denn auf VCC um??

Ciao MArco

Ratber
04.02.2006, 01:12
Config Adc = Single , Prescaler = Auto , Reference = AVCC

astro9481
04.02.2006, 01:15
Schläfst du eigentlich auch mal?? :-)
Ist ja echt detr hammer, wie schnell hier die antworten kommnen.
Ja das hatte ich mir schon fast gedacht, aber der Tiny hat ja keinen eingang für AVCC, ist das dann die ganz normale Versorgungsspannung? Weil der Mega8 hat ja z.B. eine AVCC Eingang.

Hast wegen meinen Problemen auch mal geguckt??

Ratber
04.02.2006, 02:41
Schlafen hab ich mir abgewöhnt.
Kann ich mir nicht mehr leisten :lol:




a das hatte ich mir schon fast gedacht, aber der Tiny hat ja keinen eingang für AVCC, ist das dann die ganz normale Versorgungsspannung?

Ja,das ist die Versorgungsspannung.
Es müßte korrekterweise Vcc heissen aber dafür in Bascom jetzt ne ausnahmereglung zu machen wäre dnn doch etws übertrieben.




Hast wegen meinen Problemen auch mal geguckt??

Nö,hab ich noch nicht.
Hab jetzt nur nen hastigen Blick riskiert und einge Punkte mit Fragezeichen.

1. Wie misst du "Licht" ?
Schonmal probiert nen 10K Poti an den AD-Eingang zu hängen (Oder einfach auf Masse schalten) um auszuschließen das die Messung nicht in ordnung ist.

2. Variablen mit Leerzeichen sind mir immer suspekt.
Mach mal nen Unterstrich statt der Leerzeichen rein.
Also Relais_ldr

3.
"Set Portc.0 'Pull Up "

Das geht ? (Hab ich nie probiert)
Ansonsten mal "Portc.0 = 1" nehmen.Das geht in jedem fall


4. Nur so für die Gewohnheit.

Config Portc = &B11110100

C6 und 7 sind als ausgang konnfiguriert.
Natürlich ist C6 per Fuse Fest als Eingang (Reset) und das Portbit wird ignoriert und C7 gibt es nicht aber man sollte sich angewöhnen unbenutzte Pinne immer im globalen Einschaltzustand zu lassen,Also als Eingang.
Config Portc = &B00110100 ist da korrekter.
Beim M8 ist das zwar egal aber wenn man sich diese kleine unbedeutende nachlässigkeit erstmal angewöhnt hat dann wird man se schwer los und man kann sich so versehentlich selbst schwierigkeiten bereiten.
Ich sprech da aus Erfahrung.
Is aber wie gesagt jetzt nebensächlich.


Ansonsten sehe ich jetzt nix besonderes.
Hak mal die Punkte ab.

Wenn das dann immernoch nicht geht dann kann ich ja mal die Schaltung aufbauen.
Nene M8 hab ich noch vom Servoprogramm auffem Board.
Is schnell umgesteckt.

astro9481
04.02.2006, 11:52
ZU 1.)
Ich hab ein Poti dran, er liest den Wert ja auch aus. Aber wenn er dann die ertse If bedingung weiter ist dann ist der wert auf einmal komplett anders.
Das sieht dann so aus.

Licht1: 1021
zuendung aus!!!
Licht2: 12337


Zu 2.)
Ja habe ich geändert mit dem Leerzeichen.

Zu 3.)
Habe ich auch geändert.

Zu 4.)
Habe ich auch geändert.

Hier nochmal der aktuelle Code.

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


Config Portc = &B00110100 'Ausgangs Eingangszuweisung

Portc.0 = 1 'Pull Up
Portc.1 = 1

Funkzu Alias Pinc.0 'Alias
Zuendung Alias Pinc.1 'alias
'Led Alias Portc.2 'alias
'Helligkeit Alias Pinc.3 'alias'
Relais_ldr Alias Portc.4 'Alias
Relais Alias Portc.5 'Alias

Dim Licht As Integer
Dim Helfer As Integer

Declare Sub Ausgang

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Start Adc


Do
Licht = Getadc(3)
Print "Licht1: " ; Licht
Wait 1
If Zuendung = 1 Then
Print "zuendung aus!!!" 'Abfrage ob zündung an ist
Print "Licht2: " ; Licht
Print
Wait 1
If Funkzu = 0 Then 'abfrage ob das ZV signal anliegt
Print "Zuendung aus und Funk Signal erhalten!!!"
Print "Licht3: " ; Licht
Wait 1
Ausgang
End If
End If
Ende:
Loop
End

Sub Ausgang

Set Relais
Print "Relais ohne LDR: " ; Relais
Print "Licht4: " ; Licht
Wait 1
If Licht < 200 Then
Print "Licht5: " ; Licht
Wait 1
End If
Neustart:
For Helfer = 0 To 60
Wait 1
If Funkzu = 1 Then Helfer = 0
Print "Istzeit: " ; Helfer
Print "Licht6: " ; Licht
Next
Reset Relais
Print "Relais ohne LDR: " ; Relais
Reset Relais_ldr
Print "Relais mit LDR: " ; Relais_ldr
Wait 1
End Sub



Ciao Marco

Ratber
04.02.2006, 13:32
Die brennende Frage ist ja wie es die Variable "Licht" schafft scheinbar ihren Wert zu ändern.

Hab da ne Vermutung


Ich hab die Hauptschleife mal etwas umgebaut und einen Index für die ausgaben geschaffen damit man sieht welcher Wert zu welcher Runde gehöhrt.

Das Label "Ende" hab ich mal rausgenommen weils nirgends genutzt wurde.
Zusätzlich hab ich noch die Wartebefehle der Hauptschleife auf Waitms umgestellt weil man damit feiner dosieren kann und in eine zusätzliche Verzögerung von 300ms eingesetzt.

An der Sub hab ich nix gemacht.

Probier das mal aus und schau ob es immernoch unregelmäßigkeiten gibt.


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


Config Portc = &B00110100 'Ausgangs Eingangszuweisung

Portc.0 = 1 'Pull Up
Portc.1 = 1

Funkzu Alias Pinc.0 'Alias
Zuendung Alias Pinc.1 'alias
'Led Alias Portc.2 'alias
'Helligkeit Alias Pinc.3 'alias'
Relais_ldr Alias Portc.4 'Alias
Relais Alias Portc.5 'Alias

Dim Licht As Integer
Dim Helfer As Integer
Dim Index As Word

Declare Sub Ausgang

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
index = 0

Do
Licht = Getadc(3)
Print index ; "Licht1: " ; Licht
Waitms 1000
If Zuendung = 1 Then
Print "zuendung aus!!!" 'Abfrage ob zündung an ist
Print index ; "Licht2: " ; Licht
Print
Waitms 1000
If Funkzu = 0 Then 'abfrage ob das ZV signal anliegt
Print "Zuendung aus und Funk Signal erhalten!!!"
Print index ; "Licht3: " ; Licht
Waitms 1000
Ausgang
End If
End If
Waitms 300
Incr index
Loop

End


Sub Ausgang

Set Relais
Print "Relais ohne LDR: " ; Relais
Print index ; "Licht4: " ; Licht
Wait 1
If Licht < 200 Then
Print index ; "Licht5: " ; Licht
Wait 1
End If
Neustart:
For Helfer = 0 To 60
Wait 1
If Funkzu = 1 Then Helfer = 0
Print "Istzeit: " ; Helfer
Print index ; "Licht6: " ; Licht
Next
Reset Relais
Print "Relais ohne LDR: " ; Relais
Reset Relais_ldr
Print "Relais mit LDR: " ; Relais_ldr
Wait 1
End Sub

astro9481
04.02.2006, 14:14
Also irgendwie klappt das immer noch nicht.
Also der Wert ändert sich immer noch.
Er schreibt mir das hier im Terminal(ist nur ein Ausschnitt)

50Licht1: 12341
zuendung aus!!!
49Licht2: 14644

53Licht1: 13109
zuendung aus!!!
57Licht2: 14133

52Licht1: 12853
zuendung aus!!!
51Licht2: 12597

56Licht1: 13877
zuendung aus!!!
55Licht2: 13621
Hier habe ich den eingang c.1 betätigt
50Licht1: 12341
50Licht1: 12341
50Licht1: 12341
50Licht1: 12341



und hier nochmal ein auszug ausm Terminal:

7Licht1: 55
zuendung aus!!!
7Licht2: 55

8Licht1: 56
9Licht1: 57 jetzt habe ich wider den Taster c.1 gedrückt
10Licht1: 12337
56Licht1: 13877
56Licht1: 13877
56Licht1: 13877
56Licht1: 13877
zuendung aus!!!
55Licht2: 13621

50Licht1: 12341
zuendung aus!!!
49Licht2: 14644

Ratber
04.02.2006, 18:00
Achso,du meinst generell die Schwankungen ?

Ja die lassen sich kaum vermeiden.
Wenn die Versorgung des ADC's und die zu messende Größe nicht stabil sind.

Aber wo wir schonmal dabei sind.

Warum Integer für die Variablen ?
Rechnest du mit negativen Werten ?

astro9481
04.02.2006, 22:41
Also eigentlich nicht,
Nur bei dem anderen, also dem Mega habe ich teilweise auch negative Werte.
Ja stimmt hätte dann auch ein Word nehmen können.

Das mit den schwankungen ist schon klar.

Aber das eigentliche Problem ist, Bei den Ausschitten oben, warum springt er auf einmal auf 12337. Obwohl er eigentlich nur 57 hat. Das verstehe ich nicht. Und warum springt er auf einmal bei Index auf 56. Er müsste das doch normalerweise nacheinander hochzählen.

Ratber
04.02.2006, 22:58
Ja,das ist mir schon aufgefallen das die Zahlen querbeet kommen.

Als ob da einer im Ram rumgeistert.


Hast du bei den Compilereinstellungen für den Stack was geändert ?
Es empfielt sich das immer im Code zu verankern.

also zb.

$hwstack = 32
$swstack = 10
$framesize = 40


Ansonsten fällt mir langsam nix mehr ein.


Ich probier morgen mal dein Programm ob ich das gleiche Spielchen hab.
Am lebenden Objekt sieht man mehr.

astro9481
04.02.2006, 23:04
Ich könnt sich knutschen, :-)
das war der entscheidene Tip,
habe schon an mir gezweifelt.
Werde es jetzt immer im Programm verankern, damit sowas nicht nochmal passiert.
Aber eigentlich habe ich da nicht rumgespielt. Aber gut es klappt ja jetzt. Zumindest das was ich bis jetzt testen konnte.

Ciao Marco

Ratber
04.02.2006, 23:40
Aha,auf das naheliegendste kommt man oft zuletzt. :lol:

astro9481
04.02.2006, 23:45
Ja, stimmt, sie lösung war doch so nah bzw einfach.
aber gut, das Programm klappt jetzt genauso wie ich mir das gedacht habe.

Werde jetzt Anfang der Woche meine Ätzanlage zusammenbaun. Und dann mal mit Platinenen ätzen beginnen.
Werde mir die Ätzanlage baun die hier im Foum beschrieben ist, also diese Baunaleitung meine ich.


Und dann wird mal am lebenden selbnst gebauten Objekt getestet.
Lebendes Objekt habe ich ja mit der Mega8 Testplatine auch schon.

Werde mir auchmal eine Testboard zulegen, also so ein Steckbrett meine ich. Das scheint ja echt sehr sinnvoll zu sein.

So dann werde ich mich jetzt mal wieder mit dem anderen Programm(Temp und Druckmesssung) beschäftigen, damit ich den Code wieder kleiner bekomme.


Ciao Marco

Ratber
05.02.2006, 00:12
Werde mir auchmal eine Testboard zulegen, also so ein Steckbrett meine ich. Das scheint ja echt sehr sinnvoll zu sein.


Ja,geht schnell und Anderungen sind auch kein Akt.






Werde mir die Ätzanlage baun die hier im Foum beschrieben ist, also diese Baunaleitung meine ich.

Hab ich nicht gesehen.

Was wirds denn ?

Schaumätzer,Küvette...oder was anderes ?

astro9481
05.02.2006, 00:17
Wird ne Küvette.
Lasse mir gerade die Glasscheiben schneiden. Die Heizung und die Belüftung habe ich auch schon. Werde dann nächste Woche die Sache verkleben. Brauche nur noch Kunstoffprofile für den Platinenhalter.

Hier mal der Link
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=7415&highlight=%E4tzger%E4t


Habe da noch ne Frage zu dem anderen Programm, kann es sein wenn ich Long bzw Word nehme das dann keine kommastellen gehen?
Weil der druck soll ja in 0,1bar schritten angezeigt werden.

Ratber
05.02.2006, 00:31
Wird ne Küvette.

Yo,nutze ich auch.
Hab mir damals eine gekauft.
War zwar nicht billig aber hält bis heute.



Habe da noch ne Frage zu dem anderen Programm, kann es sein wenn ich Long bzw Word nehme das dann keine kommastellen gehen?
Weil der druck soll ja in 0,1bar schritten angezeigt werden.


Das ist richtig.
Bit,Byte,Word,Integer und Long geben nur ganze Zahlen aus.
Ich hab ja deswegen geraten die Zahlenwerte einfach je nach Stellenzahl um den Faktor 10,100,1000 zu erhöhen.
Zur Anzeige machste einfach nen String draus den du formatierst und an passender Stelle das Koma einfügst.

Ist zwar etwas umständlicher aber dafür Platzsparender.
Zudem frissts nicht soviel Rechenzeit.

Kannst ja mal aus jux alles auf Double stellen und schauen was dann an Resourcen flöten geht.

astro9481
05.02.2006, 00:36
OK, das mit dem formatieren war der entscheidene Tip. Werde dann jetzt nochmal testen.

Und dann habe ich auch mal mit dem Alias Befehl getestet, es ging ja da drum das ich bevor ich das Sub zur Berechnung aufrufe ich sagen will welche Datazeile er nehmen soll. Mit alias klappt aber nicht. Hast du da evtl noch ne andere Idee? Ich will wie gesagt alle 8 Kurven der verschiedenen NTC's in einer Datazeile hinterlegen und dann einfach sagen bevor ich das sub aufrufe nehme zeile 1 , zeile 4 usw usw

Ratber
05.02.2006, 00:39
Ja,da überleg ich auch wie man das am platzsparendsten hinbekommen kann.



Bis jetzt bin ich immernoch bei der Indexmethode die ich schonmal angesprochen habe.

astro9481
05.02.2006, 01:11
So das Problem mit dem umrechnen ist gelöst, habe es mit der Formatierung gemacht. klappt hervorragend. Und wesentlich weniger Speicher verbraucht.

danke nochmal.

Werde mir jetzt mal das mit dem Index angucken.

astro9481
05.02.2006, 17:39
Ich habe jetzt nochmal ins Datenblatt geschaut, und zwar hat der Attiny15 ja doch einen Pin für die Reference Spnnung. Heißt das ich muss den dan anklemmen? Oder ist wenn ich in der Config Zeile auf AVCC gestellt habe die 5V aktiv?

Ratber
05.02.2006, 17:41
Wenn du keine eigene Ref. benötigst dann kannste AVCC nehmen und hast so den Pin frei

astro9481
05.02.2006, 17:44
ne brauche ich nicht, aber ich kann doch in der config nur OFF , AVCC or INTERNAL einstellen.
Was müsste ich denn einstellen wenn ich die reference vom Eingangspin nutzen wllte?
Weil wenn ich internal nehme nimmt er die 1,1V, wenn ich AVCC nehme nimmt er die Versorgungsspannung.

Ratber
05.02.2006, 18:28
............aber ich kann doch in der config nur OFF , AVCC or INTERNAL einstellen.........



....und Aref

astro9481
05.02.2006, 21:55
Das ist Korrekt,
danke.

Kann man das bei jedem Atmel machen??

Ratber
05.02.2006, 22:15
Das ist vom jeweiligen Controller abhängig.

Die Tiny 11/12 haben überhaupt keinen AD-Wandler und der Tiny13 keinen Aref.