mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Migration Tiny13->Tiny25 bzw. 45


Autor: Sebastian Voitzsch (voitzsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein Projekt, bei dem bisher ein Tiny13 zum Einsatz kommt. Es 
handelt sich um einen Protokollumsetzer, der Blitzgeräte zu 
Digitalkameras kompatibel macht.

Nun möchte ich das Programm erweitern und die 1024 Bytes Speicher des 
Tiny13 sind zu knapp. Die Wahl ist daher auf den Tiny25 bzw. zu 
Testzwecken erstmal den Tiny45 gefallen.

Die Fusebytes habe ich angepaßt, zudem hat die von mir verwendete 
AVR-libc einen Bug, sodass die Pin-Change-IRQ-Routine SIG_PIN_CHANGE 
(statt SIG_PIN_CHANGE0) heißen muss. Auch das habe ich geändert sowie 
die Pins PB1 und PB2 umbelgt (INT0 wird benutzt und sitzt bei beiden auf 
verschiedenen Pins).

Das Programm funktioniert nun im Großen und Ganzen. An PB2 liegt ein 
Taksignal von der Kamera an (dafür wird INT0 verwendet), was durch 
verschieden lange Taktpulse Lesen, Schreiben, die einzelnen Bits und 
einen Vorblitz ankündigt. PB1 führt die entsprechenden Daten. Der Blitz 
hängt an PB3 und PB4, wobei auf PB3 das Taktsignal durchgeschleift wird 
und PB4 die Daten überträgt. All dies klappt wunderbar.

Was nicht klappt: wenn auf PB0 ein LOW anliegt, heißt das, dass der 
Blitz gezündet wurde. In diesem Fall (PIN_CHANGE) wertet die Software 
die Daten aus und steuert die Länge des Blitzes. Und genau dieser Teil 
funkioniert nicht.

intfire:mov templo,fltime
        sbrs templo, 5
        subi fltime, (-0x20)
        sbrc templo, 5
        subi fltime, (0x20)
        andi fltime, 0x3f
nocorr: ldi zlo, lo8(FLASH_TIME_TBL)                    // flash time 
table
        ldi zhi, hi8(FLASH_TIME_TBL)
        add zlo, fltime                                 // add offset
        adc zhi, zero_reg
        lpm ylo, Z                                      // get flash 
time low byte
        clr yhi
        cpi fltime, 0x37
        brlo nohigh
        adiw ylo, 63                                    // add 100 on 
upper 16 values
        adiw ylo, 37

nohigh: rcall flash

Die Routine passt den von der Kamera empfangenen Wert an und schlägt 
dann die korrekte Belichtungszeit in einer Tabelle nach. Aus irgeneinem 
Grund stimmt der Stopp-Befehl (wird ebenfalls über die Taktleitung 
gemacht) nicht, er kommt viel zu früh. Hat sich an der Adressierung über 
das Z-Register im Zusammenhang mit lpm was geändert?

So, nach der ganzen Vorgeschichte nun die Frage: gibt es einen 
Unterschied zwischen Tiny25 und Tiny13, den ich nicht bedacht habe? Die 
Taktfrequenz ist bei beiden gleich eingestellt (sonst würde auch die 
Erkennung der Lese- und Schreibzyklen nicht erkennen, das ist über einen 
Timer realisiert, der die Längen der Pulse prüft).

Es werden der Pin-change-Interrupt, INT0 und Timer0 (mit 
Overflow-Interrupt) benutzt. Sonstige Änderungen gab's nicht; die 
Objektfiles vor dem Linken sind identisch (bis auf die Pin-Änderungen 
natürlich).

Hat jemand eine Idee?

Danke,
Sebastian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.