ATmega8 negovanie bitu
Moderátor: Moderátoři
ATmega8 negovanie bitu
velmi by mi pomohla pomoc s nasledovnym problemom - chcem negovat jeden bit vystupneho portu bez toho, aby som nejak ovplivnil dalsie bity... Ako nato? Nenasiel som na to ziadnu instrukciu ako je napr. v klasickych atmeloch napr.: cpl P1.7. Este teda podotknem, ze to programujem v assembleri pre AVR. Zrejme na to bude potrebny nejaky podprogramik ale vsetky moje napady sa mi javia zlozite a neverim, ze by sa to nedalo napisat pomocou 2-3 instrukcii...
Prosim poradte!
Vdaka
negace
Pokaždé když zavoláš tenhle podprogram tak se např. pin 5 překlopí.
NEGA: com R20 ;one´s complement
sbrc R20,5 ;Skip if Bit in Register Cleared
cbi PORTD,5 ;Clear Bit in I/O Register
sbrs R20,5 ;Skip if Bit in Register Set
sbi PORTD,5 ;Set Bit in I/O Register
ret
Jinak:
a) sehnat jiny programator, ktery toto umi (ja mam AVR Dragon, kde se da nastavit ISP frekvence od 51 Hz do 8 MHz)
b) vnutit procesoru vyssi frekvenci hodin zvnejsku (misto Xtalu pripojit vystup treba 4 MHz z generatoru nebo treba z RC oscilatoru z nejakych hradel apod.)
c) pouzit paralelni programovani (nebo JTAG, kdybys mel procesor, ktery ho umi) - tyto metody nemaji problemy u procesoru bez hodin. kmitoctu nebo s jeho nizkou frekvenci
Problemy s nizkou hodinovou frekvenci jsou i pri pouzivani DebugWire, ale az pri frekvencich hodin pod cca. 100 kHz a je to loterie, nekdy bezi a jindy ne.