joh_walt
19.05.2007, 18:41
Hallo,
ich beschäftige mich seit ein paar Tagen mit dem AVR µC und konnte bisher schon einiges im RN-Wiki lernen. Danke allen, die dort bisher ihr Wissen beigetragen haben.
Was ich versuche ist, Text über ein Videobild zu überlagern, also ein OSD.
Ziel ist, Bitmaps als Spannungsimpulse über SPI (schreiben über SPDR) zu senden. Ein zwei andere Projekte im Web machen das so.
Da das bisher nicht funktioniert, dachte ich daran, einfach einen Port-Ausgang für kurze Zeit auf aktiv zu schalten und damit eine Linie zu erzeugen. Das funktioniert mit folgendem Code (Port-Pin über Widerstand an Videosignal):
Init:
DDRB = 0x00;
PORTB = 0xFF;
im Interrupt:
DDRB |= (1<<DDB3);
Wait();
DDRB &= ~(1<<DDB3);
Der erwähnte Interrupt kommt von einem LM1881 und stellt den HSync des Videosignals dar.
Was ich nicht verstehe ist, weshalb folgender Code nicht zum gleichen Ergebnis führt:
Init:
DDRB = (1<<DDB3);
PORTB = ~(1<<PB3);
im Interrupt:
PORTB |= (1<<PB3);
Wait();
PORTB &= ~(1<<PB3);
Der Zustand des Pins zum Zielzeitpunkt ist doch der gleiche: Output und High. Eine LED bekomme ich auf beiden Wegen zum Blinken. Worin besteht also der Unterschied?
Grüße,
Johannes
ich beschäftige mich seit ein paar Tagen mit dem AVR µC und konnte bisher schon einiges im RN-Wiki lernen. Danke allen, die dort bisher ihr Wissen beigetragen haben.
Was ich versuche ist, Text über ein Videobild zu überlagern, also ein OSD.
Ziel ist, Bitmaps als Spannungsimpulse über SPI (schreiben über SPDR) zu senden. Ein zwei andere Projekte im Web machen das so.
Da das bisher nicht funktioniert, dachte ich daran, einfach einen Port-Ausgang für kurze Zeit auf aktiv zu schalten und damit eine Linie zu erzeugen. Das funktioniert mit folgendem Code (Port-Pin über Widerstand an Videosignal):
Init:
DDRB = 0x00;
PORTB = 0xFF;
im Interrupt:
DDRB |= (1<<DDB3);
Wait();
DDRB &= ~(1<<DDB3);
Der erwähnte Interrupt kommt von einem LM1881 und stellt den HSync des Videosignals dar.
Was ich nicht verstehe ist, weshalb folgender Code nicht zum gleichen Ergebnis führt:
Init:
DDRB = (1<<DDB3);
PORTB = ~(1<<PB3);
im Interrupt:
PORTB |= (1<<PB3);
Wait();
PORTB &= ~(1<<PB3);
Der Zustand des Pins zum Zielzeitpunkt ist doch der gleiche: Output und High. Eine LED bekomme ich auf beiden Wegen zum Blinken. Worin besteht also der Unterschied?
Grüße,
Johannes