Hallo, ich hab eine frage zum Datenblatt als Anhang,(Seite 3) unswar will ich die seriellen Daten in ein 8535 einlesen und komme nicht mehr weiter ich hab die clock auf int0 und die daten leitung auf D0 wenn jetzt der interupt anfängt liest er mir doch die daten in ein register aber wie?? int0_handler: in temp1,pind und das als schleife bis der int0 weg is? oder bin ich total auf dem Holzweg ? für Unterstützung bin ich dankbar!
hab das mal ohne interupt gemacht, allerdings mit dem alten c64 im maschinensprache...... ich würde beim interupt ein bit einlesen (in eine wordvariable)einschreiben nach links schieben, test auf die frage: sind alle bit's drin, interupt wieder frei geben . wenn alle bits da sind: ausmaskieren--> vorzeichen und werte, asci wandel und was sonst noch.. tschaui
ja erstmal danke für die tips genau da bin ich in etwa beim probieren wie geht das ein bit weiter schieben int0_handler: rcall lcd_clear rcall up1 mov temp,r20 rcall lcd_data reti up1: ldi r21,8 ;8 Datenbits einlesen up2: in r23,pind ;Datenbit einlesen ror r23 ; ror r22 ; dec r21 ;alle Bits eingelesen? brne up2 ;nein -> Schleife nop nop in r23,pind ;Datenbit einlesen ret
also ich bin schon etwas raus, aber in einem interupt, also das clocksignal nimmt statt low high an, ist auch nur ein mögliches bit am datenpin zu lesen, es kommen nicht alle daten hinterher und das clocksignal bleibt solange high. so wie ich das sehe ist ein bit des datenstromes dann lesbar, wenn interupt erkannt worden ist. dann sollte das clocksignal wieder low werden und das nächst high auf dem clockpin löst dann den nächsten interupt aus, und das nächste bit des datenstromes ist dan am datenpin lesbar. bis dann alle bits gelesen wurden. also kurz gesagt jedes clocksignal biete ein bit am datenpin an. -_-_-_-_-......... <-----------clock 0 1 0 1 1 ......... <-----------daten ! ! ! ! ! ! ! ! ! ! da wo ein ausrufezeichen ist, ist auch ein interupt ist scho spääät tschaui
Hi, ja war gestern spät :-) im datenblatt ist ja die Beschreibung und das steht (so hab ichs verstanden wenn clock high dann 16 bit) oder nicht? aber wie weis ich wo welches bit ist ?
Also Datenblatt kann man das nicht nennen, dazu ist es zu dürftig. Nirgends steht, mit welcher Frequenz getaktet wird und wie man auf den Beginn eines Datensatzes synchronisiert. Mit viel gutem Willen kann man vermuten, daß nur alle 2s ein Datensatz gesendet wird. D.h. mit einem Timeout von <1s könnte man auf den Anfang synchronisieren. Ansonsten klingt das verdammt nach: Warum benutzt Du nicht einfach das SPI im Slave-Modus ? 16 Bit sind ja 2 Byte also 2 SPI-Interrupts. Mit 1s Timeout ist gemeint, daß wenn nicht innerhalb 1s nach dem 1.SPI-Interrupt alle restlichen Datenbytes empfangen wurden, dann wird das SPI neu initialisiert und wartet auf den Beginn des nächsten Datensatzes. Peter
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.