PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATtiny12 Blinker Schaltung. Brauche dringend Hilfe!



Viktor
15.05.2006, 19:19
Hallo Leute!

Ich hoffe mir kann jemand weiterhelfen, denn ich bin schon seit zwei Tagen dabei und ich komme irgendwie nicht weiter.

Ich verwende tiny12 um eine Blinkersteuerung zu realisieren.

Ich habe drei Taster, linke Blinker, rechte Blinker und Warnblinker. Dann natürlich noch zwei Relais für die Lampen.

Nun zur Funktion:
Wenn der Taster links betätigt wird, beginnen linke Blinker zu leuchte mit einem bestimmten Intervall, bis dieser Taster wieder betätigt wird. Wird Taster rechts betätigt, während die linken Blinker noch aktiviert sind, werden einfach linke Blinker ausgeschaltet und rechte eingeschaltet.

Und da komm ich einfach nicht weiter ich kann die Tester gar nicht abfragen. Es klappt einfach nicht. Ich habe sogar bei www.mcselec.com ein ähnliches Beispiel gefunden, welches sogar hardwaremäßig mit meiner übereinstimmt aber einige Befehle der Software kann ich bei Tiny12 nicht verwenden. Anfangs ging überhaupt nichts denn ich konnte den Controller gar nicht programmieren, nachdem ich den Flash paar Mal gelöscht hatte, konnte ich einfache Programme landen und sie liefen auch nur die Taster konnte ich nicht nutzen.

Bitte helft mir!



$regfile = "at12def.dat" 'ATtiny12-Deklarationen
$crystal = 1200000 'Quarz: 1.2 MHz

Switch_l Alias Pinb.0
Switch_r Alias Pinb.1
Switch_a Alias Pinb.2

Relay_l Alias Portb.3
Relay_r Alias Portb.4

'---------[Taster]---------
Config Portb.0 = Input 'Taster "linker Blinker"
Config Portb.1 = Input 'Taster "rechter Blinker"
Config Portb.2 = Input 'Taster "Warnbliklicht"

'---------[Relais]---------
Config Portb.3 = Output 'Relais Blinker Links
Config Portb.4 = Output 'Relais Bliner Rechts

'--------[Main Program]-------------------------------
Main:

Do

If Switch_l = 1 Then
Waitms 150
Goto Blinker_links
End If

Waitms 400

If Switch_r = 1 Then
Waitms 150
Goto Blinker_rechts
End If
Waitms 400
If Switch_a = 1 Then
Waitms 150
Goto Warnblinklicht
End If

Loop



'---------[Subs]---------------------------------------

Blinker_links:

Toggle Relay_l

Goto Main


Blinker_rechts:




Goto Main

Warnblinklicht:




Goto Main 'end program

Ich benutze den internen RCoscilator dadurch wird Tiny12 mit 1,2MHz getaktet

Hanni
15.05.2006, 21:30
Hmm ... poste doch einfach mal deinen Code, dann wirst du wohl am ehesten Leute finden, die sich damit auseinandersetzten wollen ...

Viktor
17.05.2006, 17:12
Was mach ich nur falsch??! Ich verstehe das echt nicht, denn code ist doch völlig richtig, aber es tut sich nichts. ](*,)

teslanikola
17.05.2006, 17:14
Das Problem liegt bei den Wait Befehlen, BASCOM benötigt für jene den SRAM, da der Tiny12 aber keinen hat wird die sache nie laufen.

Viktor
17.05.2006, 19:15
Ich habe es echt nicht gewußt! :-s
Dankeschön, ich habe bis jetzt nur mit ATmega128 gespielt!
Kann man das Problem irgedwie anders lösen?

izaseba
17.05.2006, 19:27
Kann man das Problem irgedwie anders lösen?

Ja, nimm Assembler.

Gruß Sebastian

Viktor
17.05.2006, 19:30
Ich kann leider kein Assembler. Ich könnte zwar mit WinAVR C versuchen aber ich kenne mich mit dem noch weniger aus. Ich dachte bloß ich mache das eben schnell mit Bascom. Ich hole mir dann einfach ATtiny13 der hat SRAM.

izaseba
17.05.2006, 19:35
Ich dachte bloß ich mache das eben schnell mit Bascom.
das was Du da vorhast ist auch schnell mit Assembler gemacht, wäre ein Grund um eben über den Tellerrand zu schauen.


Ich hole mir dann einfach ATtiny13 der hat SRAM
Das ist auch eine Alternative.

Gruß Sebastian

Viktor
17.05.2006, 19:50
Dankeschön dass ihr mich drauf hingewiesen habt.

Besten Dank!

Ich habe in der Doku von Bascom nur gefunden, dass solche Befehle GOSUB RETURN den SRAM benötigen und bei dem WAIT Befehl habe ich einen kurzen Assemblercode gefunden, in dem in einigen Zeilen der Behl zum Speichern eines Wertes im SRAM verwendet wurde.

Windi
17.05.2006, 21:32
Oder Du nimmst den Tiny13. Der hat SRAM.

Viktor
17.05.2006, 21:42
Ich habe den Datenblat zu Tiny13 gelesen und ich brauch einen höheren Takt, weil 128kHz ist irgendwie zu wenig oder?
Da man keinen Quarz anschließen, also muss ich den Keramikresonator nehmen??

Windi
17.05.2006, 21:52
Ich habe den Datenblat zu Tiny13 gelesen und ich brauch einen höheren Takt, weil 128kHz ist irgendwie zu wenig oder?
Da man keinen Quarz anschließen, also muss ich den Keramikresonator nehmen??

Also wenn Dir 128 kHz beim Tiny13 zu wenig sind dann kannst Du natürlich auch den internen Oszillator auf 4,8 oder 9,6 MHz stellen. Ich denke das sollte reichen.

Für eine einfache Blinkersteuerung wie Du sie hast würden aber auch die langsamen 16 kHz (128/8) reichen die Du beim Tiny13 ebenfalls einstellen kannst.

Viktor
17.05.2006, 22:09
Ich habe die Doku nur schnell durhgesehen, das ist doch prescaler?

Wie kann man das in Bascom einstellen?

Gute Nacht an alle! Ich muss früh aufstehen. ;)


Vielen Danke für eure Hilfe.

Windi
17.05.2006, 22:11
Wie kann man das in Bascom einstellen?
Die Taktfrequenz und den Prescaler stellst Du über die Fuses ein.