Hallo Sebastian, Ich habe das Eagle File noch mal überarbeitet und eine Version entwickelt die nur mit dem DCC Signal auskommt oder die man Stationär mit Spannung versorgt und das DCC Signal ( nur das Plus ) zum ansteuern nimmt. Bei Einbau in Loks oder Wagons mus das DCC Signal auf die mit < 20 ~ Bezeichneten Pole gelegt werden. Ansonsten den auf dem Bild mit R1 bezeichneten 220K Widerstand auf R2 löten, dann das DCC Kabel auf den mit " DCC bei Ext. V " bezeichneten PAD löten. Den Gleichrichter an den mit " < 20 ~ " Bezeichneten Polen an einen Trafo anschließen. So wird Digitalspannung gespart. Ich habe bei meinen Wagons bis zu 15 LED´s eingebaut, da hat die Schaltung so um die 7,4 mA verbraucht. Die Ausgänge habe ich noch mal Bezeichnet mit F1 bis F4 dann ist es Leichter bei dem Anlöten die richtigen PAD´s zuzuordnen. Der Plus von den LED´s kommt auf den gemeinsamen Pol der mit " VCC " gekennzeichnet ist, der Minus wird jeweils geschaltet PAD F1 bis F4. Die Wiederstände sind so berechnet das LED´s dort direkt angeschlossen werden können ( paralell )möchte man mit Glühbirnchen arbeiten muss der Wiederstand verringert werden, in der vorhandenen Schaltung beträgt er 1,5K. So jetzt hast Du alles auf dem neusten Stand. Weiter bin ich noch nicht gekommen. Gruß Muetze
Hallo, ich bin auf der Suche nach einem Funktionsdecoder mit folgenden Eigenschaften: - Kurze und Lange Adresse (CV1, CV17/18) - Functionmapping, also die F-Tasten beliebig den Ausgängen zuordnen - fahrtrichtungsabhängig (FL/FR) - Dimmen der Ausgänge - Leuchtstoffröhren Effekt bei F1-Fx konfigurierbar - ggf. auch Analogbetrieb Erfüllt das evtl. schon einer oder hat so einen jemand in Arbeit? Andi
Hallo, Entschuldigung das ich den alten Beitrag wieder rauskrame. Ich möchte gern das Programm von Muetze mit Tiny15 zu Versuchszwecken auf einen ATmega32 spielen. Ich habe dazu die Timer und das Programm geändert, so das ich in der Ausgabe keine Fehler erhalte. Lediglich 4 Warnungen bezüglich der Verwendung der Register ab R26 bis R29. Ich vermute das es ein Problem mit dem Takt des µC gibt. Der Tiny15 hat ja 1,6MHZ internen Takt welcher im Programm für die Timer verwendet wird. Wie passe ich dies am Besten an für ATMega32 oder gibt es ein generelles Problem bei der Verwendung eines ATM32. Vielen Dank MFG Robert
Hi, erst mal ein Frohes neues Jahr 2011 ;-) so ich wollte mal horchen ob sich hier schon einer einen Kopf darum gemacht hat das der Tiny15 jetzt vom Tiny25 quasi abgelöst wurde. Welchen Tiny25 sollte man nehmen den mit 10MHz oder mit 20MHz? Und hat sich schon wer daran gemacht das Programm anzupassen? MfG Sebastian
Sebastian G. schrieb: > Hi, > > erst mal ein Frohes neues Jahr 2011 ;-) Jou, Frohes und Gesundes... > so ich wollte mal horchen ob sich hier schon einer einen Kopf darum > gemacht hat das der Tiny15 jetzt vom Tiny25 quasi abgelöst wurde. > Welchen Tiny25 sollte man nehmen den mit 10MHz oder mit 20MHz? Ist diese Frage Dein Ernst? Welche Taktfrequenzen kann der Tiny25 ohne externen Taktgeber? Welche Rolle spielt es dann, ob der Tiny25 10 oder 20 MHz Takt verträgt? > Und hat sich schon wer daran gemacht das Programm anzupassen? Nicht schwätzen, sondern machen. > > MfG > Sebastian ...
In der App-note 501 von Atmel wird alles beschrieben,welche einstellungen und Befehle man verwenden mus.
Hallo, ich bin über einen 5V Regler im SOT-23 Gehäuse gestolpert. Damit lassen sich evtl. noch ein paar mm^2 einsparen: TA 78L 05F TOSHIBA (z.B. €0.53 bei C... ) Noch hab' ich den Thread nicht durchgeackert. Wird für die Signalübertragung die Versorgungsspannung umgepolt oder kurz ausgeschaltet? Her(t)zliche Grüße Harald
Hi, ich habe jetzt mal Mützes Multifunktiondecoder Programm versucht etwas um zubauen. Und zwar will ich das beim schreiben der CV 8 diese zwar weiterhin beibehalten wird aber alle CV's in den 'Auslieferungszustand' zurückgesetzt werden. Dazu habe ich folgendes geändert:
1 | Servicemode: ; Programmiermodus CV-Lesen, Schreiben, Bitmanipulation |
2 | |
3 | ldi TEMP1, 0b01110100 ; lade Abbild 01110100 in TEMP1 / prüfe Funktionscode |
4 | cp ByteA, TEMP1 ; vergleiche ByteA und TEMP1 ob gleich / auf CV Verify Byte |
5 | breq PRGVERIFY ; wenn ByteA und TEMP1 gleich , dann springe zu PRGVERIFY / Verifizierung |
6 | ldi TEMP1, 0b01111100 ; lade Abbild 01111100 in TEMP1 / prüfe Funktionscode |
7 | cp ByteA, TEMP1 ; vergleiche ByteA und TEMP1 ob gleich / auf CV Write Byte |
8 | breq PRGWRITE ; wenn ByteA und TEMP1 gleich , dann springe zu PRGWRITE / Schreiben |
9 | ; Prüfung auf Reset |
10 | in TEMP1, TIFR ; kopiere TIFR nach TEMP1 / hole Timer Interuptflag |
11 | sbrs TEMP1, TOV1 ; Wenn Timer Counter 1 Resetzeit abgelaufen dann überspringe den nächsten Befehl / und kein Programmierbefehl |
12 | rjmp MAIN ; springe zu Main / Endlosschleife |
13 | rjmp RUN ; springe zu RUN / setze Timer auf RUN-Werte |
14 | |
15 | PRGVERIFY: |
16 | mov TEMP1, ByteB ; kopiere ByteB nach TEMP1 / setze Lese-Adresse |
17 | rcall readEEPROM ; springe zu readEEPROM / lies |
18 | cpse TEMP2, ByteC ; vergleiche TEMP2 und ByteC und springe wenn gleich / und vergleiche |
19 | rjmp main ; wenn gleich dann springe zu Main / Endlosschleife |
20 | sbi PortB, PB3 ; setze einen Motorausgang / Quittung an Zentrale ( min 60mA Verbrauch ) |
21 | rjmp PRGACK ; springe zu PRGACK |
22 | |
23 | PRGWRITE: |
24 | |
25 | ldi TEMP1, 0b00000110 ; lade Abbild 00000110 in TEMP1 / prüfe Funktionscode |
26 | cp ByteB, TEMP1 ; vergleiche ByteB und TEMP1 ob gleich / auf Schreib-Adresse CV Versions ID |
27 | breq PRGACK ; wenn ByteB und TEMP1 gleich , dann springe zu PRGACK / beende Schreiben wenn gleich |
28 | ldi TEMP1, 0b00000111 ; lade Abbild 00000111 in TEMP1 / prüfe Funktionscode |
29 | cp ByteB, TEMP1 ; vergleiche ByteB und TEMP1 ob gleich / auf Schreib-Adresse CV Hersteller ID |
30 | breq CVRESET ; wenn ByteB und TEMP1 gleich , dann springe zu CVRESET / CV in Auslieferungszustand wenn gleich ;PRGACK ; wenn ByteB und TEMP1 gleich , dann springe zu PRGACK / beende Schreiben wenn gleich |
31 | ldi TEMP1, 0b00001000 ; lade Abbild 00001000 in TEMP1 / prüfe Funktionscode |
32 | cp ByteB, TEMP1 ; vergleiche ByteB und TEMP1 ob gleich / Schreib-Adresse CV Hersteller Typ |
33 | breq PRGACK ; wenn ByteB und TEMP1 gleich , dann springe zu PRGACK / beende Schreiben wenn gleich |
34 | cp PRGCHECK, ByteD ; vergleiche ByteD und PRGCHECK ob gleich / (XOR-Byte) |
35 | brne PRGWRACK ; wenn ByteD und PRGCHECK ungleich , dann springe zu PRGWRACK / springe wenn ungleich |
36 | mov TEMP1, ByteB ; kopiere ByteB nach TEMP1 / setzte Schreib-Adresse |
37 | mov TEMP2, ByteC ; kopiere ByteC nach TEMP2 / hole Daten |
38 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
39 | rjmp PRGWRACK ; springe zu PRGWRACK |
40 | |
41 | CVRESET: ; Zurücksetzen der CV's in Auslieferungszustand |
42 | |
43 | ldi TEMP1,0b00000000 ; lade 00000000 in TEMP1 / setze Schreib-Adresse für CV1 |
44 | ldi TEMP2,0b00000011 ; lade 00000011 in TEMP2 / hole Daten für CV1 |
45 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
46 | ldi TEMP1,0b00000001 ; lade 00000001 in TEMP1 / setze Schreib-Adresse für CV2 |
47 | ldi TEMP2,0b00000000 ; lade 00000000 in TEMP2 / hole Daten für CV2 |
48 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
49 | ldi TEMP1,0b00000010 ; lade 00000010 in TEMP1 / setze Schreib-Adresse für CV3 |
50 | ldi TEMP2,0b10000000 ; lade 10000000 in TEMP2 / hole Daten für CV3 |
51 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
52 | ldi TEMP1,0b00000011 ; lade 00000011 in TEMP1 / setze Schreib-Adresse für CV4 |
53 | ldi TEMP2,0b10000000 ; lade 10000000 in TEMP2 / hole Daten für CV4 |
54 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
55 | ldi TEMP1,0b00000100 ; lade 00000100 in TEMP1 / setze Schreib-Adresse für CV5 |
56 | ldi TEMP2,0b10000000 ; lade 10000000 in TEMP2 / hole Daten für CV5 |
57 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
58 | ldi TEMP1,0b00000101 ; lade 00000101 in TEMP1 / setze Schreib-Adresse für CV6 |
59 | ldi TEMP2,0b01101001 ; lade 01101001 in TEMP2 / hole Daten für CV6 |
60 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
61 | |
62 | ldi TEMP1,0b00010000 ; lade 00010000 in TEMP1 / setze Schreib-Adresse für CV17 |
63 | ldi TEMP2,0b11001000 ; lade 11001000 in TEMP2 / hole Daten für CV17 |
64 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
65 | ldi TEMP1,0b00010001 ; lade 00010001 in TEMP1 / setze Schreib-Adresse für CV18 |
66 | ldi TEMP2,0b10001010 ; lade 10001010 in TEMP2 / hole Daten für CV18 |
67 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
68 | ldi TEMP1,0b00010010 ; lade 00010010 in TEMP1 / setze Schreib-Adresse für CV19 |
69 | ldi TEMP2,0b00000000 ; lade 00000000 in TEMP2 / hole Daten für CV19 |
70 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
71 | |
72 | ldi TEMP1,0b00011000 ; lade 00011000 in TEMP1 / setze Schreib-Adresse für CV25 |
73 | ldi TEMP2,0b00110000 ; lade 00110000 in TEMP2 / hole Daten für CV25 |
74 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
75 | ldi TEMP1,0b00011001 ; lade 00011000 in TEMP1 / setze Schreib-Adresse für CV26 |
76 | ldi TEMP2,0b00001010 ; lade 00001010 in TEMP2 / hole Daten für CV26 |
77 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
78 | ldi TEMP1,0b00011010 ; lade 00011000 in TEMP1 / setze Schreib-Adresse für CV27 |
79 | ldi TEMP2,0b00000100 ; lade 00000100 in TEMP2 / hole Daten für CV27 |
80 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
81 | ldi TEMP1,0b00011011 ; lade 00011011 in TEMP1 / setze Schreib-Adresse für CV28 |
82 | ldi TEMP2,0b00000011 ; lade 00000011 in TEMP2 / hole Daten für CV28 |
83 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
84 | ldi TEMP1,0b00011100 ; lade 00011000 in TEMP1 / setze Schreib-Adresse für CV29 |
85 | ldi TEMP2,0b00000000 ; lade 00000000 in TEMP2 / hole Daten für CV29 |
86 | rcall writeEEPROM ; springe zu writeEEPROM / schreibe ins EEPROM |
87 | |
88 | |
89 | PRGWRACK: |
90 | |
91 | mov PRGCHECK, ByteD ; kopiere ByteD nach PRGCHECK / Datencheck |
92 | sbi PortB, PB3 ; setze einen Motorausgang / Quittung an Zentrale ( min 60mA Verbrauch ) |
93 | |
94 | PRGACK: ; Acknowledge |
95 | |
96 | cli ; Globales Interrupt Flag auf 0 / alle Interrupts ausschalten |
97 | ldi TEMP1, ACKTime ; lade ACKTime in TEMP1 / lade den Timer/Counter1 |
98 | ldi TEMP1,0b00001100 ; lade Abbild 00001100 in TEMP1 / 1 1 0 0 CK/128 für Resetzeit und ACK |
99 | out TCCR1,TEMP1 ; Lade Abbild von TEMP1 nach Timer Counter Register1 |
100 | out TCNT1, TEMP1 ; Lade Abbild von TEMP1 nach TimerCounter1 / setze Zeit für Acknowlege |
101 | in TEMP1, TIFR ; Lade Abbild von Timer Counter InterruptFlag nach TEMP1 / hole Timer Interuptflag |
102 | sbrs TEMP1, TOV1 ; wenn Timer counter overflowFlag =1 dann Ackzeit abgelaufen |
103 | rjmp PC-2 ; Programmcouter um 2 zurück / Schleife |
104 | ldi TEMP1,0b00000110 ; lade Abbild 00000110 in TEMP1 / lösche Timer Interupts |
105 | out TIFR, TEMP1 ; Lade Abbild von TEMP1 nach Timer Counter InterruptFlag |
106 | clr TEMP1 ; lösche TEMP1 |
107 | out PortB, TEMP1 ; lade Abbild von TEMP1 nach PortB / lösche Motorausgang |
108 | sei ; alle Interrupts wieder einschalten / auf 1 |
109 | rjmp MAIN ; springe zu Main / Endlosschleife |
Neu ist dabei Hauptsächlich das Label CVRESET und der zugehörige Aufruf im Label PRGWRITE. Mein Problem ist nur, dass nach dem CVRESET kein Acknowledge erzeugt wird und ich nicht genau weis warum. Ein anderes Problem ist noch das ich beim lesen der CV's ebenfalls kein Acknowledge bekomme. Kann mir da wer weiter Helfen? MfG Sebastian
@Mütze Kannst du mir bitte sagen was ich tun muss damit ich den Reversierbetrieb wieder ins Programm bekomme, um im Steuerwagenbetrieb die beiden Ausgänge für FL zu tauschen? Und ob es eine einfache Möglichkeit gibt das Neonflackern nicht nur beim ersten Start des Dekoder bei schon betätigte Funktion gibt, sondern auch beim einschalten der jeweiligen Funktion im laufnden Betrieb? Gruß Sebastian
Sebastian G. schrieb: > @Mütze > > Kannst du mir bitte sagen was ich tun muss damit ich den > Reversierbetrieb wieder ins Programm bekomme, um im Steuerwagenbetrieb > die beiden Ausgänge für FL zu tauschen? so das habe ich schon wie folgt gelöst: Die Auskommentierung hier bei den letzten beiden Code-Zeilen enfernt
1 | RESET: |
2 | |
3 | [...] |
4 | |
5 | ldi TEMP1, EELongADR ; Lade EELongADR in TEMP1 / Lange Adresse |
6 | rcall readEEProm ; Springe zu readEEprom |
7 | bst Temp2, 5 ; Lade aus TEMP2 BIT 5 / Lange Adresse ( CV29 ) |
8 | bld DCCReg, LongADR ; schreibe T-Bit in DCCReg, LongADR ( BIT 7 ) |
9 | bst Temp2, 0 ; Lade aus TEMP2 BIT 0 für Reversierbetrieb ( CV29 ) |
10 | bld DCCReg, RevDir ; schreibe T-Bit in DCCReg, RevDir ( BIT 6 ) |
11 | |
12 | [...] |
und das Label Steuerw um die Überprüfung des DCCReg auf Reversierbetrieb wie folgt ergänzt
1 | Steuerw: |
2 | |
3 | cbr Temp1,0b00000011 |
4 | sbrc stop,7 ; wenn das Bit 6 auf 1 ist |
5 | rjmp pc+16 ; springe im Programm Counter 15 vor |
6 | sbrs DCCReg,FL ; Wenn Fahrtlicht Bit = 1 dann |
7 | rjmp PC+14 ; springe im Programm Counter 13 vor |
8 | sbrs stop,6 ; wenn das Bit 6 im Sopregister auf Null steht |
9 | rjmp pc+12 ; springe im Programm Counter 13 vor |
10 | sbrc DCCReg,DIR ; Wenn Fahrtrichtung Bit Rückwärts 1 dann |
11 | rjmp PC+6 ; springe im Programm Counter 4 vor |
12 | ;********** FL Vorwärts ********************************************************************** |
13 | sbrc DCCReg,RevDir ; wenn RevDir = 0 überspringe nächste Anweisung |
14 | sbr TEMP1, 0b00000010 ; sonst Fahrtrichtung Reversiert |
15 | sbrs DCCReg,RevDir ; wenn RevDir = 1 überspringe nächste Anweisung |
16 | sbr Temp1,0b00000001 ; sonst Fahrtrichtung 'Standard' |
17 | rjmp PC+5 ; springe im Programm Counter 3 vor |
18 | ;********* FL Zurück ************************************************************************* |
19 | sbrc DCCReg,RevDir ; wenn RevDir = 0 überspringe nächste Anweisung |
20 | sbr Temp1,0b00000001 ; sonst Fahrtrichtung Reversiert |
21 | sbrs DCCReg,RevDir ; wenn RevDir = 1 überspringe nächste Anweisung |
22 | sbr Temp1,0b00000010 ; sonst Fahrtrichtung 'Standard' |
23 | ;********* FL Aus **************************************************************************** |
24 | ret ; springe zu Main / Endlosschleife |
So nun habe ich aber noch fesgestellt das der Betrieb mit langer Adresse noch nicht so richtig funktioniert, werd mir das noch mal anschauen, bin aber auch hier weiterhin für Hilfe dankbar ;-) MfG Sebastian
Sebastian G. schrieb: > So nun habe ich aber noch fesgestellt das der Betrieb mit langer Adresse > noch nicht so richtig funktioniert, werd mir das noch mal anschauen, bin > aber auch hier weiterhin für Hilfe dankbar ;-) Das Problem lag wohl nicht am Programm als mehr an meinem duseligen Twin-Center das es nicht gebacken bekommt ordentlich lange Adressen zu Programmieren. Gruß Sebastian
Hallo Sebastian G. schrieb: > Mein Problem ist nur, dass nach dem CVRESET kein Acknowledge erzeugt > wird und ich nicht genau weiß warum. > Ein anderes Problem ist noch das ich beim lesen der CV's ebenfalls kein > Acknowledge bekomme. > Kann mir da wer weiter Helfen? Sebastian G. schrieb: > Und ob es eine einfache Möglichkeit gibt das Neonflackern nicht nur beim > ersten Start des Dekoder bei schon betätigte Funktion gibt, sondern auch > beim einschalten der jeweiligen Funktion im laufenden Betrieb? Kann mir da keiner weiter helfen Gruß Sebastian
Hallo, Sebastian G. schrieb: > Sebastian G. schrieb: >> Mein Problem ist nur, dass nach dem CVRESET kein Acknowledge erzeugt >> wird und ich nicht genau weiß warum. ich meine gelesen zu haben, daß hier das ACK vor dem Beschreiben der EEPROM-Zellen erfolgen muß und angenommen wird, daß die Werte erst nach einem Neustart des Dekoders übernommen werden. Das Beschreiben der vielen CVs/EEPROM-Zellen dauert einfach zu lang. Gruß Volkmar
Volkmar schrieb: > ich meine gelesen zu haben, daß hier das ACK vor dem Beschreiben der > EEPROM-Zellen erfolgen muß und angenommen wird, daß die Werte erst nach > einem Neustart des Dekoders übernommen werden. Das Beschreiben der > vielen CVs/EEPROM-Zellen dauert einfach zu lang. Gibt es denn entweder eine Möglichkeit den Vorgang zu beschleunigen oder eine andere Möglichkeit eine Reset der CV-Werte in den "Auslieferungszustand" zu bewältigen. Gruß Sebastian
Hallo, habe den Code erfolgreich auf einem ATTINY45 zum Laufen gebracht. Ich möchte aber die Ausgänge invertieren - sprich Outputs sind low wenn eingeschaltet. Frage: Hat das schon jemand probiert? Vorab mal ein großes DANKESCHÖN!
Eine Frage: Warum hast Du für den Funktionsdecoder 1206er Widerstände genommen? Wg der Last? Überlege mir einen Schwung dieser Decoder zu bauen. Die Platinen werde ich dann wohl doppelseitig ausführen und herstellen lassen. Daher halt die Frage, ob man die Widerstände nicht auch in 0805 nutzen kann. Zum löten ist das ja nicht viel komplizierter :) Muss gestehen, dass ich nicht den ganzen Thread gelesen habe - vielleicht war das schon mal diskutiert worden :/ Danke & Gruß, Torsten
ach ja - und dann noch eine Frage: Wie testet ihr die Decoder? Gibt es dafür spezielle Tools mit der man eine DCC-Zentrale "steuern" kann? Ich hatte mal vor einiger Zeit selbst mal versucht einen Dekoder zu programmieren. Leider hat das dann im realen Betrieb nicht richtig funktioniert. Hatte seinerzeit aber auch "nur" eine Lenz-Zentrale, welche nun bei meinem Vater verbaut ist und fleißig genutzt wird :) Danke & Grüße, Torsten
Hallo gibt es eigentlich schon neuigkeiten zu dem projekt vom Siegfried Saueressig "DCC-Decoder m8lok" Hat die Umsetzung funktioniert. Danke für eine Antwort
Hallo, ich habe den Dekoder auf Basis eines Attiny45 plus L272 nachgebaut und bekomme leider keine Rückmeldung, wenn ich ihn an meine Roco Multimaus anschließe und ansteuere. Ich möchte gerne ausschließen, dass die von mir kompilierte hex Datei Fehler beinhaltet. Kann mir jemand die hex Datei für den Attiny45 bereitstellen? Welche Fusebits müssen im Vergleich zum Auflieferungszustand geändert werden? Sind eigentlich im Quellcode Standard CV gesetzt? Vielen Dank, Niklas
Nachtrag zu vorigem Post: Die von mir kompilierte hex Datei basiert auf dem angehängten Quellcode, der hier weiter oben im Thread bereitgestellt wurde, siehe Anhang. Ein Vergleich mit der Version für den AT15 zeigt, dass nur Registernamen und Ports getauscht worden sind. Die erhöhte Frequenz des At45 im Verlgeich zum At15 wurde nicht berücksichtigt. Deshalb habe ich auf Grundlage des weiter oben geposteten PDF (ATtiny15zu25.pdf) den At45 in den Kompatibilitätsmodus versetzt. Das Ergebnis ist, dass ich den At45 nicht mehr mittels Programmer ansprechen kann. Kann mir jemand helfen? Hat jemand Erfahrung mit dem Umstieg von Attiny15 zu Attiny25/45? Bg, Niklas
Niklas Freeman schrieb: > Kann mir jemand helfen? Ich versuche es, obwohl ich es für sinnfrei halte, diese uralte auf Tiny15 optimierte Software auf einem Tiny45 laufen zu lassen. Denn unter Nutzung der Features des Tiny25/45/85 (zweiter Timer, bessere Hardware-PWM, höherer Controllertakt, ...) ließe sich das durch Neuprogrammierung bedeutend effizienter umsetzen. Niklas Freeman schrieb: > Das Ergebnis ist, dass ich den At45 > nicht mehr mittels Programmer ansprechen kann. Ich vermute mal, Du hast die CKDIV8-Fuse nicht rausgenommen, nun klappert der Tiny45 im Kompatiblitätsmodus zu langsam für Deinen ISP-Takt. Du müsstest also mal mit dem ISP-Takt Deines Programmers auf unter 1/4 des Controllertaktes runter gehen. Ich kann mich da aber auch irren, habe zwar schon viele Tiny85 für Gartenbahn-Soundmodule (Dampf/Diesel) benutzt, aber noch keinen im T15-Kompatiblitätsmodus. Niklas Freeman schrieb: > Sind eigentlich im Quellcode Standard CV gesetzt? Hast Du eigentlich in den von Dir geposteten Quelltext geschaut??? Was meinst Du, was das hier ist?:
1 | ;** hier beginnt das EEProm ** |
2 | .ESEG |
3 | .ORG $0000 |
4 | |
5 | .db 0x01, 0x00 ; CV1 Adresse und CV2 StartSpeed |
6 | .db 0x80, 0x80 ; CV3 IncVAL und CV4 DecVal |
7 | .db 0x80, 0x71 ; CV5 MaxSpeed und CV6 OSCCAL |
8 | .db 0xFF, 0x01 ; CV7 Hersteller und CV8 Typ ID |
9 | .db 0xFF, 0xFF ; CV9 Frei und CV10 Frei |
10 | .db 0xFF, 0xFF ; CV11 Frei und CV12 Frei |
11 | .db 0xFF, 0xFF ; CV13 Frei und CV14 Frei |
12 | .db 0xFF, 0xFF ; CV15 Frei und CV16 Frei |
13 | .db 0x00, 0x02 ; CV17 HI-Byte und CV18 LO-Byte |
14 | .db 0x00, 0xFF ; CV19 Consist und CV20 Frei |
15 | .db 0xFF, 0xFF ; CV21 Frei und CV22 Frei |
16 | .db 0xFF, 0xFF ; CV23 Frei und CV24 Frei |
17 | .db 0xFF, 0xFF ; CV25 Frei und CV26 Frei |
18 | .db 0xFF, 0xFF ; CV27 Frei und CV28 Frei |
19 | .db 0x00, 0xFF ; CV29 Configuration Data und CV30 Frei |
Musst natürlich auch die EEP-Datei mit in den Controller übertragen... ...
Guten Morgen, Danke für die Antwort. Die CV Standardwerte habe ich mittlerweile auch gefunden, sie stehen halt ganz am Ende vom Code. Allerdings wird bei mir keine eep Datei beim Kompilieren erstellt. Die CKDIV8-Fuse ist definitiv nicht das Problem, denn wenn ich nur diese Fuse ändere gibt es kein Problem. Gruß, Niklas
Niklas Freeman schrieb: > Allerdings wird bei mir keine eep Datei beim > Kompilieren erstellt. Wenn der Quelltext ein Eeprom-Segment enthält, sollte auch eine EEP-Datei assembliert werden. Ist dies nicht der Fall, dann bedienst Du Dein AVR-Studio falsch. Niklas Freeman schrieb: > Die CKDIV8-Fuse ist definitiv nicht das Problem, denn wenn ich nur diese > Fuse ändere gibt es kein Problem. Na denn ist's ja gut... ...
Nik schrieb: > Ich werde mal mein Projektordner nach einigen anschaulichen Dateien > durchforsten, muss aber noch anmerken, dass ich in diesem Forum wohl ein > bisschen ein Exot bin, da ich in C programmiere und > Silabs-Mikrocontroller (z.B. den C8051F310, siehe > http://www.silabs.com/public/documents/tpub_doc/dsheet/Microcontrollers/Small_Form_Factor/en/C8051F31x.pdf) > verwende. Diese Chips sind extrem leistungsfähig (bis zu 25 MIPS) bei > bloss 5mA, verfügen selbst bei winzigen Massen (ab 3 x 3 mm) über ein > grosses Repetoire an integrierter peripherer Hardware (PWM, ADC, SPI > etc.) und können dank JTAG built-in-programmiert und debugged werden. > > Doch bevor ihr fragt: nein, ich werde nicht von Silabs gesponsert! :) > Ich bin nur sehr begeistert von den kleinen Chips, das ist alles. Aber > ich muss auch zugeben, dass ich noch nicht allzu viele andere Mikros > genauer unter die Lupe genommen habe; ich lasse mir also gerne die > Vorzüge der Amtel-Chips erklären. :) > > Gruss, Nik Erst einmal bitte ich um Entschuldigung diesen Thread zu exumieren, aber mich würde interessieren ob NIK (Gast) hier noch zu erreichen ist. Mich würde interessieren ob aus der Erfahrung mit den Silabs 8051 Derivaten in Hinsicht auf DCC etwas erstanden ist auf dass man zurückgreifen könnte. Leider überschneided sich DCC stark mit dem C-Compilerenvironment SDCC womit unter der Fülle an Links zu letzterem mögliche Spuren auf eine DCC Protokoll ziemlich untergehen... Alle Sachdienlichen Hinweise werden mehr oder weniger vertraulich behandelt ;) Gruß aus LA(ndshut) Bergy
Moin aus Hamburg, Ich bin auch ein Freund von Parsic. Gibt es schon einen Encoder also ein kleines Programm welches DCC schon "lesen"kann.? Ich hätte es gern in Parsic um es besser verstehen zu können. Danke für eine Rückmeldung. Tschüß Lemmi
Hallo zusammen. Dieser thread war Super. Schade, das er eingeschlafen ist. MFg Arnold
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.