-
Thread
Bitte um Prüfung meines C-Codes
sieht die Hardware aus? Funktioniert die? Hast du Pulse am uC-Pin? Im Code werden keine Pullups am PortC eingeschlatet. Hast du externe Pullups?
Es geht. Danke nochmal an euch :)
-
Thread
Bascom alias
Moin moin nein das geht nicht. Die alias Funktion ist nur für ein bessere Verständlichkeit/Lesbarkeit des Programmes da. Wird das Programm kompeliert, wird dem alias eine Variable zugewiesen.
hwstack = 32 $swstack = 30 $framesize = 40 Config Porta = Output Config Portb = Output Config Portc = Output Config Portd = Output Portd = 255 Portc = 255 Porta = 255 Config Timer0 = Timer , Prescale = 64 On Timer0 Timer_isr Enable Timer0 Enable Interrupts Stop Timer0 Config Portd.5
-
Thread
Wie setzt ihr Klammern?
jeweils einen anderen Codingstyle haben. Sobald man den jeweiligen Codingstyle verinnerlicht hat, geht das umstellen auch einfacher und schneller. Wichtig ist vor allem Konsistenz innerhalb eines Projektes.
#define then { #define endif } #define else }else{ void test(int i){ if (i==1) then PORTC += 1; PORTD += 1; else PORTC -= 1; PORTD -= 1; endif } [/c]
-
Thread
2x16 LCD
Hallo, was Port C angeht: Beide GND und AVCC richtig angeschlossen? Sonst hat PortC keine Betriebsspannung, weil der beim ATMega8 auch der ADC-Port ist. Gruß aus Berlin Michael
sich.... bzw... kann wer nen link posten.... aber schonmal danke für die vielen antworten das geht ja echt fix hier^^ mfg Frank
-
Thread
Probleme mit while
. int main (void) { uint16_t Counter; .. Counter = 300; zCounter = 0; sei(); PORTC |= (1 << PC0); while (zCounter < Counter); PORTC &= ~(1 << PC0); cli(); .. } Die while- Schleife wird einfach übergangen. Wenn ich da "while (zCounter != Counter);" schreibe, klappt
währenddessen mindestens 300mal direkt hintereinander abgearbeitet werden kann. Weil das schneller geht, als dein Auge es erfassen kann, denkst du, die While-Schleife wurde übersprungen. Warum verhält sich das Programm bei "while(zCounter != Counter);" anders? Da zwischen zwei Interrupthandleraufrufen
-
Thread
Tastatur -> AVR -> LCD
Tastaturdaten empfange, weiß ich schon, danach habe ich 8Bit in einer Variable gespeichert (UART-Rx geht nicht, da auf PORTC das LCD hängen muss). Wenn ich "LCD_Print(0,0, x)"(x = Empfangenes Zeichen) kommt nur eine Fehlermeldung beim Compilieren(WinAVR/Make.exe). ASCII ist das Zeichen ja schon, d.h. itoa
Tastaturdaten empfange, weiß ich schon, danach habe ich 8Bit > in einer Variable gespeichert (UART-Rx geht nicht, da auf PORTC das LCD > hängen muss). Das, vor allem der letzte Satz macht mich stutzig. Bevor ich aber nicht mehr darüber weiß, spare ich mir sonstige Kommentare dazu.
-
Thread
Tastenmatrix 3x4 mittels Interrupt abfragen?
ich drücke soll der Int. ausgelöst werden. Ich möchte hier aber nur einen einzigen Int. verwenden. Geht das? [c] #include <avr\io.h> #define NOP(); asm volatile("nop"::); #define KEY_PIN PINB #define KEY_PORT PORTB #define KEY_DDR DDRB // Pin 0..3 = column 1..4
// wait until inputs sampled if( ~KEY_PIN & 1<<4 ) { row = 5; PORTC |= (1<<PC0); //Spalte1 } if( ~KEY_PIN & 1<<5 ) { row = 9; PORTC |= (1<<PC1); //Spalte2 } if( ~KEY_PIN & 1<<6 ) { row = 13; PORTC |= (1<<PC2);
-
Thread
LCD Display 2x16 Zeichen
Standardansteuerung PORT C. Da kann auch das JTAG Fuse dazwischenfunken. Ist das aktiviert sind einige Pins an PORTC für JTAG "reserviert" Ich glaube PC2-PC5
wenn der Enable Impuls kommt. Sehe gerade, dass der EN nicht über den 164 läuft. Stimmt, dann geht's.
-
Thread
Ausgang 1s High schalten ohne Schleife mit delay zu unterbrechen
{ ZaehlerIST = ZaehlerIST + 1; } else { PORTC |= (1<<PC5); continue; } Das ist mal eine Abfrage der Eingänge mit der Schleife. Jetzt leuchtet im Fehlerfall die LED an PC5, leider aber dann durchgängig. Ich würde sie aber gerne
verarbeitest Du dann Ereignisse, wie: while (1) { if (PINE & (1<<PINE2)) // Startsignal { PORTC |= (1<<PC5); // LED an ende=systemtimer+1000; } if (systemtimer>ende) { PORTC &= ~(1<<PC5); // LED aus } } Das geht natürlich auch mit anderen Timer-Frequenzen. Zur weiteren
-
Thread
GLCD 128x64 lässt sich nicht programmiern
exchanged by a little delay (this is the safe way) } */ LCD_DATA_PORT=0x00; // Daten Portc wieder löschen }
dann kompatibel zu meinem NT7108 gestellt wird, wenns doch nicht ganz zutrifft. Naja, Hauptsache es geht jetzt! ALSO, MEGA MEGA GROßEN DANK AN EUCH FÜR EURE HILFESTELLUNG !!!
-
Thread
Taster an Atmega8 -> Problem
//Port wird auf High gelegt, leds leuchten nicht DDRC = 0x00; //Port wird eingang PORTC = 0x00; //Port wird low gesetzt und die internen pull ups sind aus if ( (PINC & (1<<PINC2)) ) // Tasterport C , wenn pin 0 auf low geht dann führe was aus { PORTD = 0x00;
doppelten widerstände waren der fehler. habe jetzt die taster direkt an den AVR und massu gelegt. geht super. thx für deine Hilfe
-
Thread
DCF77 library
und folgendes im Programm hinzugefügt: im Header: #define DCF77_PON PC6 im Hauptprogramm: PORTC |= (1<<DCF77_PON); PORTC &= ~(1<<DCF77_PON); damit gebe ich ihm doch eine fallende Flanke - oder? Ich habe diese Schaltung in einem Forum gefunden von jemandem mit einem ähnlichen Problem wie
ok, die Dinge waren schnell gegoogelt. Punkt an euch ^^ Hab die Schaltung jetzt aufgebaut, geht aber noch nicht.
-
Thread
for Schleife durch Tastendruck neu starten
1; // Taste_4 setzen (Licht aus) } DDRC = DDRC | 0x0F; // PortC wieder auf Ausgang } Wär cool wenn ihr mir da helfen könntet! gruß xASP
// Enable-Signal auf 0 DDRC = DDRC & 0xF0; // Port C auf Eingabe schalten PORTC = 0x0F; // Pullup-Rs eingeschaltet [/C] lass das DDR Register und die Pullup in Ruhe. Diese Dinge stellt man am Anfang *einmal* ein und dann lässt man sie in Ruhe
-
Thread
einfache LED Schaltung
" sagen? 3. außerdem sieht: DDRB = 0xff; PORTB = 0xff; DDRC = 0xff; PORTC = 0x00; DDRD = 0x00; PORTB = 0x00; DDRD = 0x00; PORTD = 0xFF; sehr merkwürdig aus
>for(i=0;i<500000;i++){}; und die schleife geht vermutlich schneller als du denkst - bei optimierung werden es 0µs sein
-
Thread
JTAG ICE 3 an Atmega 32
Das JTAGICE muss natürlich an die JTAG-Anschlüsse. Und die befinden sich an PORTC (PC2 bis PC5). Außerdem muss der Reset noch verdrahtet werden. Gruß Marius
Bei ISP geht dann auch das debugen ?
-
Thread
delay Funktion
Warteroutinen #include <avr\interrupt.h> while(1) { if (WS) an_WA; else aus_WA; if (start_BEETE) PORTC |= 0b00100000; // Markise öffnen if (start_HECKE) PORTC &= 0b11011111; // Markise schließen if (start_RASEN) { an_MA; // Anzeige Markise ZU _delay_ms(3000); // Warten } aus_MA; } Noch eine
mach das? Nach betätigen WS, WA schaltet ein. Nach betätigen „start_RASEN“, „MA“ schaltet ein und geht nicht mehr aus. Ganzes Programm hängt (Nach Ablauf der delay Funktion müsste wieder „MA“ ausschalten und alles andre funktionieren.
-
Thread
Variable Portzuweisung WinAVR (C) ATmega
seitenlange >Bit-setzen- oder Bit-lesen-Makros? >Gibt es dafür eine einfache Syntax? Ich fürchte das geht nur mit komplizierten Makros. Man kann ja die Verdrahtung im AVR nicht ändern. Ist ja kein FPGA ;-). MFG Falk
gib es im Ergebnis auf // Bit Nr 0 #define PORT_BIT_B PORTC // vom PORTC ... #define BIT_B 0 // ... nimm Bit Nr 0 ... #define RESULT_BIT_B 2 // ... und gib es im Ergebnis auf
-
Thread
LCD Ansteuerung im 8 Bitmodus
Wie wärs mit einem Blick ins Datasheet vom HD44780? Da steht drin wie es geht.
und die 4 // Datenleitungen müssen auf aufeinanderfolgenden Pins liegen #define LCD_PORT PORTC #define LCD_DDR DDRC #define LCD_DB PC0 // LCD RS <--> PORTC Bit PA0 (RS: 1=Data, 0=Command) #define LCD_RS PA0 // LCD EN <--> PORTD Bit PA2 (EN
-
Thread
Atmega8-16 ADC von Poti
: an(PORTC,PB1); int main () { // Helligkeit in % int pb1_soll=50; int pb2_soll=100; int counter=0; // Ausgänge schalten DDRB|=(1<<PB1); DDRB|=(1<<PB2); DDRB|=(1<<PB3); an(PORTB
habe war der Verlauf korrekt. Poti ist ein Lineares 10kOhm. Spannungsabgriff in der mitte. Nun geht's an die Fehlersuche im Code :D
-
Thread
interne Pull-Up's
PORTC = 0b00111111; Schau mal ob dein Compiler nicht doch Probleme mit dem 0b.. hat und gib mal direkt in Hex oder Dezimal den Wert vor. Schnapp dir mal nen 47k Widerstand und zieh darüber den Pin
Und Achtung, einige neuere AVRs haben separate Register für die Pullups. Da geht das so wie oben nicht mehr. Tiny841 z.B. gruß cyblord
-
Thread
Atmega8 SPI läuft nicht
// sende Zeichenfolge über Bluetoothemodul an Terminal spi_tranceiver(0x0f); PORTC|=(1<<PC0); PORTC&=~(1<<PC0); _delay_ms(1000); Kommentiere ich den "spi_tranceiver..." aus kommt auf meinem Terminal das Signal vom Befehl "UART_puti" im 1 sek Takt auf dem Terminal. Ist die SPI-Zeile
Hallo, soweit richtig. Es geht aber um den Pin SS (PB2), das gehört zur SPI-Hardware. Und wenn eben der SPI als Master gesetzt wird, kann dieser Pin entweder als Ausgang gesetzt werden und unabhängig genutzt werden oder er wird als
-
Thread
Probleme mit Interrupt0 Atmega32
den Externen Interrupt 0 einzurichten. Jedoch funktioniert dieser nicht wie gewollt. Manchmal geht er, manchmal nicht, teilweise setzt er sich selbst etc. Ich habe das Gefühl als wollte er mich "verarschen" ;-) Mein Code: #include <avr/io.h> #include <avr/interrupt.h> ISR(INT0_vect) { PORTC &=~(1<<PC7); } int main(void) { DDRC =0xFF; GICR|=(1<<INT0); MCUCR|=((1<<ISC01)|(1<<ISC00)); sei(); PORTC |= (1<<PC7); while(1) { // Zum Test leere Schleife } return 0;
-
Thread
C-Programm compilieren
es ist vollbracht! Der Fehler war tatsächlich der Starttaster, dessen Belegung zwischen Programm (Portc.3) und Schaltbild (Portc.2) differierte. ICH habe das Programm _nicht_ erstellt. Wie ich weiter oben schon schrieb, beherrsche ich "C" nicht. Deswegen hat mich die Fehlersuche auch so viel Zeit
Schön das es jetzt geht. Gruß Marcus
-
Thread
"static const" Objekt "wegoptimieren"?
Markus Grabner schrieb im Beitrag #3381452: > aber mir geht es hier darum auszuloten, wie weit man mit den > Sprachelementen von C++ (und der optimizer-Implementierung im avr-g++) > kommt. Das Problem ist, dass der Compiler zwar erkennen kann dass solche
}; constexpr PortFactory PORTA (0); constexpr PortFactory PORTB (1); constexpr PortFactory PORTC (2); constexpr PortPin LED1 { PORTC[3] }; int main () { PORTA [0].set (); PORTB [5].clear (); LED1.set (); }[/c] Die PORTA,B,C,LED1 Instanzen werden hier natürlich wieder wegoptimiert
-
Thread
Tastercode ATMega8, AVR
weiter geholfen :( if (!(PINB & (1<<PB0))) { PORTB |= (1<<PB0); _delay_ms(2000); PORTC &= ~ (1<<PC2); } else { turnLedOn(BIT_6,1); turnLedOn(BIT_7,1); } habe es jetzt so, wenn ich den Taster drücke, gehen die LED's für 2 sekunden aus
an diesem Pin den Pullup einschalten while( 1 ) { if( !( PINB & (1 << PB0) ) ) PORTC |= ( 1 << PC2 ); else PORTC &= ~( 1 << PC2 ); } } [/c] das ist einfach nur eine Zusammensetzung aus den Elementen der [[Bitoperationen]] und dem Wissen, was man im DDR Register
-
Thread
Displaytech 64128c Osama's lab GLCD-Lib
anzusprechen! CS richtig verbunden? Tausche mal beide CS und schau ob dann die rechte Hälfte nicht geht. und überprüf das mal: //#define CS_ACTIVE_LOW 1 //Define this if your GLCD CS //is active low (refer to datasheet)
#1988611: > CS richtig verbunden? Tausche mal beide CS und schau ob dann die rechte > Hälfte nicht geht. Habe ich schon probiert, gleiches ergebnis: nur rechte hälfte geht. Nils S. schrieb im Beitrag #1988611: > und überprüf das mal: > //#define CS_ACTIVE_LOW 1 //Define this if your GLCD CS
-
Thread
C Code für SED1520, Dip122 oder DIP180
define SED1520_DATA_PORT = [PORTA0,PORTA2,PORTB4,PORTB7,...] #define SED1520_CONTROL_PORT = [PORTC0,PORTC1,PORTD0,PORTD2,...] (/pseudocode) Wenn ja wie? oder geht das nicht? Danke schon mal..
-
Thread
ATMega328P - Hardware SPI - SCK hoert nach ein paar Durchlaeufen auf zu wackeln
UART_BAUD_RATE 125000 #define CS_DDR DDRC // Chip Select fuer TI Temp Sensor #define CS_PORT PORTC #define P_CS PORTC4 volatile uint32_t Zehn_Millisekunden = 0; volatile uint32_t Mittelwert_ADC = 0; volatile uint8_t Mittelwert_Zaehler = 0; volatile uint8_t diesen_Mittelwert_ignorieren
Avr Noob schrieb im Beitrag #2955605: > Doch dann geht SCK zwischen zwei Übertragungen auf high und bleibt dort. Vermutlich der SPI-Standardfehler, wie hast Du den /SS Pin beschaltet bzw. definiert? Peter
-
Thread
Ports am ATmega 16
Danke für deine flotte Antwort. Aber geht das auch nicht mit Pxn oder _BV()?
oder im gleichen Sockel? Wie geht das?
-
Thread
Tastenentprellung verweigert Tasten
Problem, welches ich einfach nicht lösen kann. Es funktionieren nur zwei der 4 Tasten! Sie hängen an PortC 0-3 und funktionieren nur die Tasten die an Pin 0 und 1 hängen. Hab auch schon den Atmega16 getauscht, weil ich dachte, dass vielleicht die Pins defekt sind aber dem war nicht so. Es geht mit beiden
Hi >Sie hängen an PortC 0-3 und funktionieren nur die Tasten die an Pin 0 >und 1 hängen. JTAG abschalten. MfG Spess
-
Thread
Portkonfiguration ATmega32
Hallo, allerseits! Ich habe ein Problem mit der Portkonfiguration bei einem Mega32. PORTC ist über DDRC=0x01111111 bis auf C7 als Ausgang konfiguriert. Schalte ich aber über PORTC.2=0; den Ausgang ab, so geht der Pegel dort zwar auf Low, scheint aber hochohmig zu werden (sagt zumindest
funktioniert? Öffne ich ein neues Projekt und lasse mir vom Codewizard das Programm generieren, geht es. Kopiere ich aber die Initialisierungszeilen von dem Programm in meinen ursprünglichen Quelltext, geht es wieder nicht mehr. Ich nehme an, es liegt an den Projekteinstellungen. Aber welche könnten
-
Thread
fehlerhafte übertragung von ponyprog auf atmega16?
.2 (3.pin rechts oben) mit 1 deklariert und gar nicht porta.0 und erst recht nicht portc. wieso kommt das dann? liegt noch ein altes skript auf dem atmega16? oder vielleicht liegt es an meinem neuen skript? vielleicht ist das falsch? ####################################### $regfile
Wait 17 geht nicht max wait 3 welches programmiergerät benutzt du denn ???
-
Thread
atmega168pa programmieren
WDP3); [/c] Ergebnis: Programm arbeitet wie vorgesehen. Ausgeschaltet, eingeschaltet, Programm geht nicht mehr, auch nicht nach reset. Nur einige der PORTC-Pins sind low. Neu geflasht, geht das Programm wieder. Das ist reproduzierbar nach Spannungsverlust so. Die Zeile aus dem Programm habe ich wieder
hätte jedoch "-mmcu=atmega168" statt dessen einsetzen müssen. Kaum macht man es richtig, schon geht es. Immer wieder verblüffend. Danke für Euren Rat, Stephan
-
Thread
PIC16F872 ds18s20
hab mal schnell eingefügt das, wenn ich "q" eingebe mir "ok" ausgegeben wird und.... siehe da das geht! Aber bei dem "t" befehl für's auslesen und anzeigen der Temperatur geht nichts|-( Die .asm Datei leg ich mal dabei vielleicht sieht einer von euch den Fehler den ich schon so oft übersehen habe.
register setzten, lesen (sspie) oder....... > muss ich den pic in master mode setzten?? oder nur den portc,0 setzten > nicht setzten dabei lesen und schreiben?? Warum versuchst Du es nicht und schaust, ob es dann geht? Der Lerneffekt ist dabei sicher am grössten. Oder schaust auf http://www.gidf.de
-
Thread
Frage zum LCD - Header: Pins selber einstellen
Benutze die Lib. von Fleury mit der geht das.
Diffinition müssen nun doch auch noch "Adressen" liegen. Für PIN1 zum Beispiel sowas wie 0x01. Wie geht man nun weiter vor? Gruß Timo
-
Thread
Tricks, wie ich mein Compilat kleiner kriege
eine einzige 32-bit Multiplikation mit 10 drin, die mir ein mulsi3 beschert hat. Mit a = b<<3 + b<<1 geht es in dem Fall kürzer. Wie gesagt, map-File beobachten. - alle Variablen nur so breit wie nötig: Hatte ich eigentlich schon, nur an einigen wenigen Stellen war ich da etwas nachlässig. Mitunter reicht
auf 16-Bit aufgebläht: [c] void foo(uint8_t a, uint8_t b) { uint8_t x; if (a == b) PORTC = 1; x = ~b; if (a == x) PORTC = 0; } [/c]
-
Thread
Verständnisproblem PullUp PullDown
ich zur Sicherheit mal nach: Atmega88, PortC. [c] DDRC |= (1<<PINC0) // PinC0 = Eingang PORTC |= (1<<PINC0) // interner PullUp an [/c] Verbinde ich nun PinC0 mit Masse (Taster), dann ist die if-Abfrage True und der Code in der Klammer wird ausgeführt: [c] if (PINC & (1<<PINC0)) {
Bit) in PINB geloescht (0) ist */ if ( !(PINB & (1<<PINB2)) ) { /* Aktion */ } [/c] Das geht soweit ich weiss gar nicht. [c] if (PINC & ~(1<<PINC0)) { // Tu was... } [/c]
-
Thread
AVR läuft instabil / Interrupts deaktivieren sich?
macht etwas im Spielgeschehen. Als Eingabe benutze ich einen handelsüblichen Joystick: Anschluss PortC 0 und 1 X und Y Achse mit jeweils 100k Pulldown, Port C 2 und 3 die Buttons 1/2. PortC 0 und 1 werte ich per ADC aus. Dazu gleich ne weitere Frage: Kann ich trotz aktiviertem ADC ganz normal per in temp, PORTC den Port einlesen (dann halt nicht die ADC Werte sondern in dem Fall für die Buttons)? Damit hab ich auch noch Probleme, die sind allerdings erstmal egal. Zurück zum Hauptproblem: Das Programm läuft
-
Thread
SPI Slave mit DMA auf XMEGA128A1
---------------------------------------------------------------------- ISR( DMA_CH0_vect ) { PORTC.OUTTGL = 0x01; }
---------------------------------------------------------------------- ISR( DMA_CH0_vect ) { PORTC.OUTTGL = 0x01; DMA.INTFLAGS |= (1<<DMA_CH0TRNIF_bp); DMA.CH0.CTRLA |= (1<<DMA_CH_ENABLE_bp); }
-
Thread
Servo funktioniert nicht
Bitte nicht gleich die Köpfe einschlagen. Es geht darum zu testen, ob ich es schaffe ein Servon anzusteuern. Bevor ich ein aufwändiges Programm schreibe möchte ich mal einfach versuchen, das Servo zum laufen zu bringen. Mit dem Board habe ich schon
util/delay.h> int main (void) { DDRC = (1<<PC0); _delay_ms(3000); while(1) { PORTC |= (1<<PC0); _delay_us(1500); // in den 1500 steckt die Lageinformation PORTC &= ~(1<<PC0); _delay_ms(18); // ist nicht kritisch } return 0; }[/c]
-
Thread
Zu bloed fuer den Atmega88?
18432000 $baud = 115200 Config Adc = Single , Prescaler = 8 , Reference = Off Start Adc Config Portc = Input : Config Portb = Input : Config Portd = Input Portb = 0 : Portc = 0 : Portd = 0 Dim Uc As Integer Dim Channel As Byte Print "start" Do For Channel = 0 To 7 lds r25
versuchen, den gleichen Code in C zu schreiben und das *.hex oder *.bin zur Verfuegung stellen? Wenns geht mit gleicher Baudrate und gleicher Quarzfrequenz. Es schlug uebrigens auch ein Simulieren im AVR-Studio fehl, wobei das aber in Schleifen hing, wo es gar nicht haette haengen duerfen. Danke und
-
Thread
16 Bit Timer mit Atmega 1284p
TIMSK0|=(1<<OCIE1A); // Interrupt erlauben } ISR (TIMER1_COMPA_vect) // ISR { PORTC ^= (1<<PC6); // toggelt PC6 tcount ++; } [/c] Wenn ich das richtig verstanden habe, arbeitet mein Prz mit 16MHz, teile es mit 64 runter und setze den Wert auf 12499. Damit erreiche ich
reset condition becomes active, even if the clock is not running. Demnach sollten die Pins von PORTC nach dem Einschalten im Tristate Zustand sein, d.h. wohl als INPUT und ohne Pullup Widerstand.
-
Thread
SPI deaktivieren unter BASCOM
Warum willst du das machen ? Danach geht kein ISP mehr, und daher lässt sich ISP auch nicht über ISP abschalten.
...immer dieses Kleingedruckte ;-) Danke Portc 0...3 funzen als Ausgänge auch richtig. Nur 4 und 5 wollen keine Eingänge sein *seufz*
-
Thread
Atmega 32 Timer0 will nicht
] TCCR0 |= (1<<WGM01) | (1<<CS00); TIMSK |= (1<<OCIE0); OCR0 = 15;[/c] Aber irgendwie geht er immer noch nciht in die ISR. Interrupts global sind an.
setzte. Ich bekomme keinen Impuls kürzer als 2µs hin. In der ISR schalte ich nur einen Pin um: [c]PORTC ^= (1<<PC7);[/c].
-
Thread
HSV RGB Led Dimmer, C Code & Video & Doku
sidestep2.pl?foto=1&Q=para-led&M=1 Macht ca. 3,5 cd bei einem Öffnungswinkel von 100 Grad! Der Preis geht auch noch.
Jetzt geht es! Ich verstehe aber nicht warum!? Folgendes hab ich gemacht. Ich hab im AVR Studio mal nach Fuses gesucht. Da war der interne auf 2 Mhz. Jetzt habe ich das mal auf 8 Mhz hochgestellt, war aber
-
Thread
PSMC 3 Phasen Ansteuerung PIC 16F1788
Zusammenhang bringen mit der PSMC Geschichte... Hat wirklich keiner das MOdul schon zum laufen gebracht? Geht bei jemandem das Beispielprogramm? Gruß PS: hier das Datenblatt http://ww1.microchip.com/downloads/en/DeviceDoc/41675A.pdf auf Seite 289 ist die Registerübersicht.
"push pull setup" BANKSEL TRISC BCF TRISC, 0 ; enable pin drivers BCF TRISC, 1 Bei dir ist PORTC,0 auf INPUT geschaltet !?!?
-
Thread
Array in GCC
! Funktioniert super ! kannst du mir nochsagen wie ich die grösse des arrays ermittle? sizeof() geht jetzt wohl icht mehr. MfG Axos
Offset (i) ) // und PortB Zuweisen PORTB = PRG_RDB(Tabelle_1 + i); // Tabelle_2 nach PortC PORTC = PRG_RDB(Tabelle_2 + i); } for(i=0; i<5; i++) { // Auf PortD werden 5 Zeichen vom Text_1 ausgegeben PORTD = PRG_RDB(Text_1 + i); } } ------------------------
-
Thread
XMega Arbeitsweise richtig verstehen
unter BIT Adressierung verstehe ich sowas wie: PORTC.5=1; wenn ich mache PORTC=0x20; ist das keine BIT Adressierung mehr. Wenn ich nun ein anderen PORT PIN setzen will und den Zusatnd der anderen nicht kenne und unverändert lassen möchte, muss ich
Pull-Up usw. geht mit dem Pin-Control-Register. PORTA.PIN6CTRL = PORT_OPC_PULLUP_gc; etc.
-
Thread
SPI "transmission complete" SPIF Flag
Wohl doch nicht, das geht beim allerersten Byte schief. Nun, vor dem SPDR=LSB muss irgendwie SPSR gelesen werden (ohne dass der C-Compiler es wegoptimiert).
SPSR = (1<<SPIF) o.a. Natürlich geht das nicht, im Datenblatt ist SPIF als 'R'= /readonly/ angegeben. Es wird also nur von der Hardware gesetzt/rückgesetzt.
-
Thread
Denkanstoß beim Zählen eines externes Interrupts/ Atmega 16
diesen nicht auf einen normalen Portpin geben und so quasi auch zählen?(Pin auf Masse oder nicht). Es geht dabei maximal um eine Frequenz von 3-4Hz die der Hall IC bei maximaler Drehzahl erzeugt. Damit hätte ich wieder einen timer frei und könnte somit den Tauchtank im Bereich ist==soll mit PWM ansteuern
{ if (!(PIND & (1<<PIND2))) { ihall_cnt=0; // Pegel auf Low PORTC &= ~( 1 << PC4 ); //Led an PC4 aus } else { ihall_cnt=1; // Pegel auf high PORTC |= (1 << PC4); // Led an PC4 an } if (ihall_cnt!=ihall_cnt_tmp